89 lines
1.8 KiB
Nix
89 lines
1.8 KiB
Nix
|
{ lib, ... }:
|
||
|
|
||
|
rec {
|
||
|
genHostName = hostname: { config.networking.hostName = hostname; };
|
||
|
|
||
|
genHome =
|
||
|
{
|
||
|
inputs,
|
||
|
users,
|
||
|
src,
|
||
|
...
|
||
|
}:
|
||
|
[ inputs.home-manager.nixosModules.home-manager ]
|
||
|
++ (map (user: { home-manager.users.${user} = import (src + "/users/${user}/home.nix"); }) users);
|
||
|
|
||
|
genSops =
|
||
|
{
|
||
|
inputs,
|
||
|
users,
|
||
|
src,
|
||
|
...
|
||
|
}:
|
||
|
[ inputs.sops-nix.nixosModules.sops ]
|
||
|
++ (map (user: {
|
||
|
sops.secrets."${user}/user-password" = {
|
||
|
sopsFile = src + "/users/${user}/secrets.yaml";
|
||
|
neededForUsers = true;
|
||
|
};
|
||
|
}) users);
|
||
|
|
||
|
genUsers =
|
||
|
{ users, src, ... }:
|
||
|
(map (
|
||
|
user:
|
||
|
{
|
||
|
config,
|
||
|
lib,
|
||
|
pkgs,
|
||
|
...
|
||
|
}@args:
|
||
|
{
|
||
|
users.users.${user} = import (src + "/users/${user}") (args // { name = user; });
|
||
|
}
|
||
|
) users);
|
||
|
|
||
|
genWrapper =
|
||
|
var: func: args:
|
||
|
lib.optionals var (func args);
|
||
|
|
||
|
nonX86 = {
|
||
|
config.nixpkgs = {
|
||
|
config.allowUnsupportedSystem = true;
|
||
|
buildPlatform = "x86_64-linux";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
constructSystem =
|
||
|
{
|
||
|
hostname,
|
||
|
users,
|
||
|
inputs,
|
||
|
src,
|
||
|
home ? true,
|
||
|
iso ? [ ],
|
||
|
modules ? [ ],
|
||
|
server ? true,
|
||
|
sops ? true,
|
||
|
system ? "x86_64-linux",
|
||
|
|
||
|
}@args:
|
||
|
|
||
|
lib.nixosSystem {
|
||
|
inherit system;
|
||
|
specialArgs = inputs;
|
||
|
modules =
|
||
|
[
|
||
|
inputs.nixos-modules.nixosModule
|
||
|
(genHostName hostname)
|
||
|
(src + "/systems/${hostname}/hardware.nix")
|
||
|
(src + "/systems/${hostname}/configuration.nix")
|
||
|
]
|
||
|
++ modules
|
||
|
++ (lib.rad-dev.fileList src "modules")
|
||
|
++ genWrapper sops genSops args
|
||
|
++ genWrapper home genHome args
|
||
|
++ genWrapper true genUsers args;
|
||
|
};
|
||
|
}
|