1
0
Fork 0
puter/lib.nix

81 lines
1.8 KiB
Nix
Raw Normal View History

2024-09-15 14:16:32 +02:00
lib: _: {
2025-01-04 23:51:35 +01:00
findModules = paths:
builtins.concatMap (path:
lib.pipe path [
2024-09-15 14:16:32 +02:00
(lib.fileset.fileFilter (
2024-12-24 19:29:19 +01:00
file: file.hasExt "nix"
2024-09-15 14:16:32 +02:00
))
lib.fileset.toList
])
2025-01-04 23:51:35 +01:00
paths;
2024-09-15 14:16:32 +02:00
2025-03-01 22:21:00 +01:00
mkIfElse = condition: trueContent: falseContent:
lib.mkMerge [
(lib.mkIf condition trueContent)
(lib.mkIf (!condition) falseContent)
];
2024-12-01 04:05:16 +01:00
mkSecrets = secrets: let
mkSecret = {
name,
secret,
}:
secret
// {
file = ./secrets/${name}.age;
};
in
builtins.mapAttrs (name: secret: mkSecret {inherit name secret;}) secrets;
genNixosConfigurations = {
inputs,
2024-12-14 08:42:24 +01:00
extraModules ? _: [],
2024-12-01 04:05:16 +01:00
}: let
2025-01-04 23:51:35 +01:00
modulesDir = ./modules;
2024-12-01 04:05:16 +01:00
commonDir = ./common;
classesDir = ./classes;
hostsDir = ./hosts;
commonNixosSystem = {
class,
name,
}:
lib.nixosSystem {
specialArgs = {
2024-12-30 22:52:20 +01:00
inherit (inputs) self;
2024-12-01 04:05:16 +01:00
inherit inputs lib;
attrName = name;
};
modules =
(lib.findModules [
2025-01-04 23:51:35 +01:00
modulesDir
2024-12-01 04:05:16 +01:00
commonDir
./classes/${class}
2024-12-24 19:29:19 +01:00
(classesDir + /${class})
(hostsDir + /${class}/${name})
2024-12-01 04:05:16 +01:00
])
++ [
{networking.hostName = lib.mkDefault name;}
]
2024-12-14 08:42:24 +01:00
++ (extraModules {inherit class name;});
2024-12-01 04:05:16 +01:00
};
dirsIn = dir:
2025-03-09 16:37:21 +01:00
lib.pipe dir [
builtins.readDir
2024-12-01 04:05:16 +01:00
(lib.filterAttrs (_: type: type == "directory"))
builtins.attrNames
];
in
lib.pipe (dirsIn hostsDir) [
(classes:
builtins.concatMap (
2024-12-24 19:29:19 +01:00
class: map (name: {inherit class name;}) (dirsIn (hostsDir + /${class}))
2024-12-01 04:05:16 +01:00
)
classes)
2024-12-01 16:43:53 +00:00
(map (args: lib.nameValuePair args.name (commonNixosSystem args)))
2024-12-01 04:05:16 +01:00
builtins.listToAttrs
];
2024-09-15 14:16:32 +02:00
}