refactor: hosts' systems & modules

This commit is contained in:
TheGeneralist 2025-08-02 17:07:19 +02:00
parent 0e465f6c84
commit 37c4eeaca6
Signed by: thegeneralist01
SSH key fingerprint: SHA256:pp9qddbCNmVNoSjevdvQvM5z0DHN7LTa8qBMbcMq/R4
7 changed files with 77 additions and 125 deletions

View file

@ -28,10 +28,6 @@
url = "github:oxalica/nil";
inputs.nixpkgs.follows = "nixpkgs";
};
# wrapper-manager = {
# url = "github:viperML/wrapper-manager";
# inputs.nixpkgs.follows = "nixpkgs";
# };
#nix.url = "github:DeterminateSystems/nix-src";
};
@ -40,7 +36,8 @@
inherit (nixpkgs.lib) attrsToList const groupBy listToAttrs mapAttrs;
#nix.enable = false;
lib = nixpkgs.lib // nix-darwin.lib;
lib' = nixpkgs.lib.extend (_: _: nix-darwin.lib);
lib = lib'.extend <| import ./lib inputs;
targetHost = readDir ./hosts
|> mapAttrs (name: const <| import ./hosts/${name} lib inputs self)

View file

@ -1,30 +1 @@
lib: inputs: self: lib.darwinSystem {
specialArgs = inputs // { inherit inputs; inherit self; };
modules = [
# Extensions: nixosModules, darwinModules, overlays
({ pkgs, lib, inputs, ... }: let
inherit (lib) attrValues hasAttrByPath getAttrFromPath filter;
collect = packagePath: (attrValues inputs)
|> filter (hasAttrByPath packagePath)
|> map (getAttrFromPath packagePath);
modules = collect [ "darwinModules" "default" ];
extensions = {
nixpkgs.overlays = collect [ "overlays" "default" ];
imports = modules;
};
in extensions)
./configuration.nix
# Modules
({ pkgs, ... }: let
inherit (lib) filter hasSuffix;
commonModules = lib.filesystem.listFilesRecursive ../../modules/common |> filter (hasSuffix ".nix");
darwinModules = lib.filesystem.listFilesRecursive ../../modules/darwin |> filter (hasSuffix ".nix");
in {
imports = commonModules ++ darwinModules;
})
];
}
lib: inputs: self: lib.system "darwin" ./configuration.nix

View file

@ -1,30 +1 @@
lib: inputs: self: lib.nixosSystem {
specialArgs = inputs // { inherit inputs; inherit self; };
modules = [
# Extensions: nixosModules, darwinModules, overlays
({ pkgs, lib, inputs, ... }: let
inherit (lib) attrValues hasAttrByPath getAttrFromPath filter;
collect = packagePath: (attrValues inputs)
|> filter (hasAttrByPath packagePath)
|> map (getAttrFromPath packagePath);
modules = collect [ "nixosModules" "default" ];
extensions = {
nixpkgs.overlays = collect [ "overlays" "default" ];
imports = modules;
};
in extensions)
./configuration.nix
# Modules
({ pkgs, ... }: let
inherit (lib) filter hasSuffix;
commonModules = lib.filesystem.listFilesRecursive ../../modules/common |> filter (hasSuffix ".nix");
linuxModules = lib.filesystem.listFilesRecursive ../../modules/linux |> filter (hasSuffix ".nix");
in {
imports = commonModules ++ linuxModules;
})
];
}
lib: inputs: self: lib.system "linux" ./configuration.nix

View file

@ -1,30 +1 @@
lib: inputs: self: lib.darwinSystem {
specialArgs = inputs // { inherit inputs; inherit self; };
modules = [
# Extensions: nixosModules, darwinModules, overlays
({ pkgs, lib, inputs, ... }: let
inherit (lib) attrValues hasAttrByPath getAttrFromPath filter;
collect = packagePath: (attrValues inputs)
|> filter (hasAttrByPath packagePath)
|> map (getAttrFromPath packagePath);
modules = collect [ "darwinModules" "default" ];
extensions = {
nixpkgs.overlays = collect [ "overlays" "default" ];
imports = modules;
};
in extensions)
./configuration.nix
# Modules
({ pkgs, ... }: let
inherit (lib) filter hasSuffix;
commonModules = lib.filesystem.listFilesRecursive ../../modules/common |> filter (hasSuffix ".nix");
darwinModules = lib.filesystem.listFilesRecursive ../../modules/darwin |> filter (hasSuffix ".nix");
in {
imports = commonModules ++ darwinModules;
})
];
}
lib: inputs: self: lib.system "darwin" ./configuration.nix

View file

@ -1,30 +1 @@
lib: inputs: self: lib.nixosSystem {
specialArgs = inputs // { inherit inputs; inherit self; };
modules = [
# Extensions: nixosModules, darwinModules, overlays
({ pkgs, lib, inputs, ... }: let
inherit (lib) attrValues hasAttrByPath getAttrFromPath filter;
collect = packagePath: (attrValues inputs)
|> filter (hasAttrByPath packagePath)
|> map (getAttrFromPath packagePath);
modules = collect [ "nixosModules" "default" ];
extensions = {
nixpkgs.overlays = collect [ "overlays" "default" ];
imports = modules;
};
in extensions)
./configuration.nix
# Modules
({ pkgs, ... }: let
inherit (lib) filter hasSuffix;
commonModules = lib.filesystem.listFilesRecursive ../../modules/common |> filter (hasSuffix ".nix");
linuxModules = lib.filesystem.listFilesRecursive ../../modules/linux |> filter (hasSuffix ".nix");
in {
imports = commonModules ++ linuxModules;
})
];
}
lib: inputs: self: lib.system "linux" ./configuration.nix

5
lib/default.nix Normal file
View file

@ -0,0 +1,5 @@
inputs: self: super:
let
system = import ./system.nix inputs self super;
in
system

66
lib/system.nix Normal file
View file

@ -0,0 +1,66 @@
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
);
};
}