66 lines
1.3 KiB
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
|
|
);
|
|
};
|
|
}
|