cornflake/hosts/mkHost.nix

74 lines
1.6 KiB
Nix

inputs:
{
system,
hostname,
users,
systemModules,
}:
let
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
};
in
{
nixos = inputs.nixpkgs.lib.nixosSystem {
modules =
systemModules
++ (map (
u:
{ pkgs, ... }:
{
users.users.${u.username} = import (if u ? userNixos then u.userNixos else u.nixos) {
inherit pkgs;
};
}
) (builtins.filter (u: u ? userNixos || u ? nixos) users))
++ [
{
users.users = builtins.listToAttrs (
map (u: {
name = u.username;
value = {
isNormalUser = true;
description = "";
extraGroups = [
"networkmanager"
"wheel"
];
};
}) users
);
}
];
inherit system;
specialArgs = {
inherit inputs hostname;
users = map (u: u.username) users;
};
};
home-manager = builtins.listToAttrs (
map (u: {
name = "${u.username}@${hostname}";
value = inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit inputs hostname;
username = u.username;
};
modules = [
{
home = {
username = u.username;
homeDirectory = "/home/${u.username}";
};
programs.home-manager.enable = true;
}
(import ../system/home-manager)
]
++ (if u ? homeModule then u.homeModule else [ u.home ]);
};
}) users
);
}