complete rework v2

This commit is contained in:
Nickolaj Jepsen 2025-02-03 07:55:17 +01:00
parent 16813aeef9
commit 7409e9ca10
106 changed files with 1522 additions and 403 deletions

53
lib/builder.nix Normal file
View file

@ -0,0 +1,53 @@
args @ {
lib,
withSystem,
inputs,
...
}:
with lib; let
inherit (import ./. args) recursiveMerge;
mkBase = {system ? "x86_64-linux", ...}:
withSystem system (
{
pkgs,
system,
...
}: {
inherit system;
specialArgs = {inherit inputs pkgs;};
modules = [
inputs.disko.nixosModules.disko
inputs.home-manager.nixosModules.home-manager
];
}
);
mkNixos = args:
inputs.nixpkgs.lib.nixosSystem (recursiveMerge [
(mkBase args)
args
]);
in {
mkHosts = root: let
hosts = attrNames (filterAttrs (_: type: type == "directory") (builtins.readDir root));
hostDirs = builtins.listToAttrs (
lib.map (hostName: lib.nameValuePair hostName (lib.path.append root hostName)) hosts
);
hostResolved =
lib.mapAttrs (
_: hostDir: (lib.map (fileName: lib.path.append hostDir fileName) (attrNames (builtins.readDir hostDir)))
)
hostDirs;
hostsConfig = mapAttrs (_: configs: mkNixos {modules = configs;}) hostResolved;
in
hostsConfig;
mkVm = configs:
inputs.nixos-generators.nixosGenerate {
modules = configs;
format = "qcow";
system = "x86_64-linux";
};
}