clan template: reduce autogenerate code to a minimum

This commit is contained in:
Jörg Thalheim
2023-08-29 15:00:03 +02:00
committed by Mic92
parent bf19e51c9f
commit a4e182debf
6 changed files with 41 additions and 59 deletions

View File

@@ -0,0 +1,28 @@
{ nixpkgs, clan, lib }:
{ directory # The directory containing the machines subdirectory
, specialArgs ? { } # Extra arguments to pass to nixosSystem i.e. useful to make self available
, machines ? { } # allows to include machine-specific modules i.e. machines.${name} = { ... }
}:
let
machinesDirs =
if builtins.pathExists (directory + /machines)
then builtins.readDir (directory + /machines)
else { };
machineSettings = machineName:
if builtins.pathExists (directory + /machines/${machineName}/settings.json)
then builtins.fromJSON (builtins.readFile (directory + /machines/${machineName}/settings.json))
else { };
nixosConfigurations = lib.mapAttrs
(name: _mod:
nixpkgs.lib.nixosSystem {
modules = [
(machineSettings name)
(machines.${name} or { })
] ++ lib.attrValues clan.clanModules;
specialArgs = specialArgs;
})
machinesDirs;
in
nixosConfigurations