1
0
Fork 0
This commit is contained in:
Lukas Wurzinger 2025-05-11 22:49:04 +02:00
parent be9fb9278e
commit b8af0e9761
No known key found for this signature in database
165 changed files with 1815 additions and 1431 deletions

97
lib.nix
View file

@ -9,72 +9,59 @@ lib: _: {
])
paths;
mkIfElse = condition: trueContent: falseContent:
mkIfElse =
condition: trueContent: falseContent:
lib.mkMerge [
(lib.mkIf condition trueContent)
(lib.mkIf (!condition) falseContent)
];
mkSecrets = secrets: let
mkSecret = {
name,
secret,
}:
secret
// {
file = ./secrets/${name}.age;
};
in
builtins.mapAttrs (name: secret: mkSecret {inherit name secret;}) secrets;
mkSecrets =
secrets:
let
mkSecret =
{
name,
secret,
}:
secret
// {
file = ./secrets/${name}.age;
};
in
builtins.mapAttrs (name: secret: mkSecret { inherit name secret; }) secrets;
genNixosConfigurations = {
inputs,
extraModules ? _: [],
}: let
modulesDir = ./modules;
commonDir = ./common;
classesDir = ./classes;
hostsDir = ./hosts;
genNixosConfigurations =
inputs:
let
modulesDir = ./modules;
profilesDir = ./profiles;
commonDir = ./common;
hostsDir = ./hosts;
commonNixosSystem = {
class,
name,
}:
lib.nixosSystem {
specialArgs = {
inherit (inputs) self;
inherit inputs lib;
attrName = name;
commonNixosSystem =
name:
lib.nixosSystem {
specialArgs = {
inherit (inputs) self;
inherit inputs lib;
attrName = name;
};
modules =
(lib.findModules [
modulesDir
profilesDir
commonDir
(hostsDir + /${name})
]);
};
modules =
(lib.findModules [
modulesDir
commonDir
./classes/${class}
(classesDir + /${class})
(hostsDir + /${class}/${name})
])
++ [
{networking.hostName = lib.mkDefault name;}
]
++ (extraModules {inherit class name;});
};
dirsIn = dir:
lib.pipe dir [
hosts = lib.pipe hostsDir [
builtins.readDir
(lib.filterAttrs (_: type: type == "directory"))
builtins.attrNames
];
in
lib.pipe (dirsIn hostsDir) [
(classes:
builtins.concatMap (
class: map (name: {inherit class name;}) (dirsIn (hostsDir + /${class}))
)
classes)
(map (args: lib.nameValuePair args.name (commonNixosSystem args)))
builtins.listToAttrs
];
in
lib.genAttrs hosts commonNixosSystem;
}