My solution:
let
nixFilesInDirectory = directory:
(
map (file: "${directory}/${file}")
(
builtins.filter
(
nodeName:
(builtins.isList (builtins.match ".+\.nix$" nodeName)) &&
# checking that it is NOT a directory by seeing
# if the node name forcefully used as a directory is an invalid path
(!builtins.pathExists "${directory}/${nodeName}/.")
)
(builtins.attrNames (builtins.readDir directory))
)
);
nixFilesInDirectories = directoryList:
(
builtins.concatMap
(directory: nixFilesInDirectory directory)
(directoryList)
);
# ...
in {
imports = nixFilesInDirectories ([
"${./programs}"
"${./programs/terminal-niceties}"
]);
# ...
}
snippet from the full source code: quazar-omega/home-manager-config (L5-L26)
credits:
I'm trying out Nix Home Manager and learning its features little by little.
I've been trying to split my app configurations into their own files now and saw that many do the following:
- Make a directory containing all the app specific configurations:
programs/
└── helix.nix
- Make a catch-all file
default.nix
that selectively imports the files inside:
programs/
├── default.nix
└── helix.nix
Content:
{
imports = [
./helix.nix
];
}
- Import the directory (picking up the
default.nix
) within the home-manager configuration:
{
# some stuff...
imports = [
./programs
];
# some other stuff...
}
I'd like to avoid having to write each and every file I'll create into the imports of default.nix
, that kinda defeats the point of separating it if I'll have to specify everything anyway, so is there a way to do so? I haven't found different ways to do this in various Nix discussions.
Example I'm looking at: https://github.com/fufexan/dotfiles/blob/main/home/terminal/default.nix
My own repository: https://codeberg.org/quazar-omega/home-manager-config
Good because there's enthusiasm for being able to use YouTube music without paying the subscription, but I agree that it's a shame everyone seems to be more into doing everything by themselves rather than contributing to a single piece of software and keeping it stable, featureful, but most importantly working.
Up to now I probably switched apps 6 times: Vimusic -> Innertune -> Innertune fork -> SpMp -> Rimusic -> Harmony Music (Plus others that I just tried for a few days at most)