93 lines
2.2 KiB
Nix
93 lines
2.2 KiB
Nix
{ lib, config, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
username = config.defaultUser or "henrov";
|
|
homeDir = "${config.home.homeDirectory or "/home/${username}"}/MyStuff";
|
|
|
|
# Absolute path to the assets folder
|
|
assetPath = "${flakeRoot}/assets/copy_2_home";
|
|
|
|
# Helper function to recursively list files in a directory
|
|
recursiveFiles = path:
|
|
let
|
|
entries = builtins.attrNames (builtins.readDir path);
|
|
in
|
|
lib.concatMap (name:
|
|
let
|
|
full = "${path}/${name}";
|
|
in
|
|
if builtins.isDir full
|
|
then recursiveFiles full
|
|
else [ full ]
|
|
) entries;
|
|
|
|
# All files in assets folder
|
|
allFiles = recursiveFiles assetPath;
|
|
|
|
# Map files to home.file entries
|
|
homeFiles = lib.genAttrs allFiles (f: let
|
|
relative = lib.replaceStrings [ "${assetPath}/" ] [ "" ] f;
|
|
in {
|
|
name = relative;
|
|
value = { source = f; };
|
|
});
|
|
in
|
|
{
|
|
_module.args.hmUsers = {
|
|
${username} = {
|
|
home.file = lib.mkMerge [
|
|
homeFiles
|
|
];
|
|
};
|
|
};
|
|
}{ lib, config, pkgs, flakeRoot, ... }:
|
|
|
|
let
|
|
username = config.defaultUser or "henrov";
|
|
|
|
# Destination base directory in the user's home
|
|
homeDir = "${config.home.homeDirectory or "/home/${username}"}/MyStuff";
|
|
|
|
# Absolute path to your assets folder
|
|
assetPath = "${flakeRoot}/assets/copy_2_home";
|
|
|
|
# Recursively list all files and directories in assetPath
|
|
recursiveFiles = path:
|
|
let
|
|
entries = builtins.attrNames (builtins.readDir path);
|
|
in
|
|
lib.concatMap (name:
|
|
let
|
|
full = "${path}/${name}";
|
|
in
|
|
if builtins.isDir full
|
|
then recursiveFiles full
|
|
else [ full ]
|
|
) entries;
|
|
|
|
allFiles = recursiveFiles assetPath;
|
|
|
|
# Map files to home.file entries using writable symlinks
|
|
homeFiles = lib.genAttrs allFiles (f:
|
|
let
|
|
# Relative path inside assetPath
|
|
relative = lib.replaceStrings [ "${assetPath}/" ] [ "" ] f;
|
|
target = "${homeDir}/${relative}";
|
|
in {
|
|
name = target;
|
|
value = {
|
|
source = lib.makeOutOfStoreSymlink f;
|
|
};
|
|
}
|
|
);
|
|
in
|
|
{
|
|
_module.args.hmUsers = {
|
|
${username} = {
|
|
home.file = lib.mkMerge [
|
|
homeFiles
|
|
];
|
|
};
|
|
};
|
|
}
|