os/modules/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

62 lines
2 KiB
Nix
Raw Normal View History

2023-11-11 00:04:57 +00:00
{
self,
lib,
inputs,
...
}:
let
mkNixosModule = name: [{ ${name} = import ./${name}; }];
mkBaseImport = name: [ self.nixosModules.${name} ];
# create a list of directory names from given folder
filterModules = dir: builtins.attrNames (lib.attrsets.filterAttrs (n: v: v == "directory") (builtins.readDir dir));
# create nixosModules imports from list
flakeNixosModulesList = modules: lib.attrsets.mergeAttrsList (builtins.concatMap mkNixosModule modules);
flakeNixosBaseImports = modules: lib.lists.flatten (builtins.concatMap mkBaseImport modules);
in
{
# Configuration common to all Linux systems
flake = {
nixosModules = rec {} //
(flakeNixosModulesList (filterModules ./.)) //
{
base.imports = [
self.nixosModules.home-manager
inputs.agenix.nixosModules.default
inputs.musnix.nixosModules.musnix
({
flake,
pkgs,
lib,
unstable,
master,
...
}: {
nixpkgs.overlays = (import ../overlays) ++ [
(prev: next: {
scan2paperless = inputs.scan2paperless.legacyPackages.${prev.system}.scan2paperless;
nixd = inputs.unstable.legacyPackages.${prev.system}.nixd;
factorio-headless = inputs.master.legacyPackages.${prev.system}.factorio-headless;
paperless-ngx = inputs.master.legacyPackages.${prev.system}.paperless-ngx;
waybar = inputs.master.legacyPackages.${prev.system}.waybar;
element-desktop = inputs.master.legacyPackages.${prev.system}.element-desktop;
adlist = inputs.adblock-unbound.packages.${prev.system};
})
];
nix.nixPath = [
"nixpkgs=${inputs.nixpkgs}"
"nixos-config=${../lib/compat/nixos}"
"home-manager=${inputs.home-manager}"
];
})
] ++ (flakeNixosBaseImports (filterModules ./.));
};
};
}