1
Fork 0
mirror of https://github.com/thegeneralist01/config.git synced 2026-03-07 10:59:55 +01:00
config/lib/system.nix

66 lines
1.3 KiB
Nix

inputs: self: super:
let
inherit (self)
hasSuffix
filesystem
attrValues
filter
getAttrFromPath
hasAttrByPath
;
collectModules = path: filesystem.listFilesRecursive path |> filter (hasSuffix ".nix");
collectInputModules =
packagePath:
(attrValues inputs) |> filter (hasAttrByPath packagePath) |> map (getAttrFromPath packagePath);
specialArgs = inputs // {
inherit inputs;
inherit self;
};
# All modules
modulesCommon = collectModules ../modules/common;
modulesLinux = collectModules ../modules/linux;
modulesDarwin = collectModules ../modules/darwin;
inputModulesNixos = collectInputModules [
"nixosModules"
"default"
];
inputModulesDarwin = collectInputModules [
"darwinModules"
"default"
];
# Overlays
overlays = collectInputModules [
"overlays"
"default"
];
overlayModules = {
nixpkgs.overlays = overlays;
};
in
{
system =
os: configFile:
if os == "darwin" then
super.darwinSystem
else
super.nixosSystem {
inherit specialArgs;
modules =
[
overlayModules
configFile
]
++ modulesCommon
++ (
if os == "darwin" then modulesDarwin ++ inputModulesDarwin else modulesLinux ++ inputModulesNixos
);
};
}