nix: refactored combinator

This commit is contained in:
Primrose 2024-07-26 15:15:54 +02:00
parent 2ceff90f81
commit c25bfbed5f
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
3 changed files with 167 additions and 195 deletions

View file

@ -1,103 +1,70 @@
{ inputs, withSystem, ... }:
let
mkNixOS =
nixosModulesOf: homeModulesOf:
{
hostname,
system,
extraNixOSConfig ? { },
extraHomeConfig ? { },
...
}:
withSystem system (
{ pkgs, lib, ... }:
let
infoArgs = {
inherit hostname system;
};
specialArgs = {
inherit pkgs;
inherit hostname;
};
in
inputs.nixpkgs.lib.nixosSystem {
inherit specialArgs;
modules = nixosModulesOf infoArgs ++ [
extraNixOSConfig
(lib.attrsets.optionalAttrs (extraHomeConfig != null) {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs;
users.leana.imports = homeModulesOf infoArgs ++ [ extraHomeConfig ];
};
})
];
}
);
mkDarwin =
darwinModulesOf: homeModulesOf:
{
hostname,
system,
extraDarwinConfig ? { },
extraHomeConfig ? { },
...
}:
withSystem system (
{ pkgs, lib, ... }:
let
infoArgs = {
inherit hostname system;
};
specialArgs = {
inherit pkgs;
inherit hostname;
};
in
inputs.nix-darwin.lib.darwinSystem {
inherit specialArgs;
modules = darwinModulesOf infoArgs ++ [
extraDarwinConfig
(lib.attrsets.optionalAttrs (extraHomeConfig != null) {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs;
users.leana.imports = homeModulesOf infoArgs ++ [ extraHomeConfig ];
};
})
];
}
);
mkHomeManager =
homeModulesOf:
{
hostname,
system,
extraHomeConfig ? { },
...
}:
mkSpecialArgs =
{ hostname, system, ... }:
withSystem system (
{ pkgs, ... }:
let
infoArgs = {
inherit hostname system;
};
specialArgs = {
inherit pkgs;
inherit hostname;
};
in
inputs.home-manager.lib.homeManagerConfiguration {
inherit (specialArgs) pkgs;
extraSpecialArgs = specialArgs;
modules = homeModulesOf infoArgs ++ [ extraHomeConfig ];
{
inherit pkgs hostname;
}
);
mkNixOS =
sharedModules:
{
hostname,
system,
modules ? [ ],
}:
let
info = {
inherit hostname system;
};
specialArgs = mkSpecialArgs info;
in
inputs.nixpkgs.lib.nixosSystem {
inherit specialArgs;
modules = sharedModules info ++ modules;
};
mkDarwin =
sharedModules:
{
hostname,
system,
modules ? [ ],
}:
let
info = {
inherit hostname system;
};
specialArgs = mkSpecialArgs info;
in
inputs.nix-darwin.lib.darwinSystem {
inherit specialArgs;
modules = sharedModules info ++ modules;
};
mkHomeManager =
sharedModules:
{
hostname,
system,
modules ? [ ],
}:
let
info = {
inherit hostname system;
};
specialArgs = mkSpecialArgs info;
in
inputs.home-manager.lib.homeManagerConfiguration {
inherit (specialArgs) pkgs;
extraSpecialArgs = specialArgs;
modules = sharedModules info ++ modules;
};
many = func: builtins.mapAttrs (hostname: cfgs: func (cfgs // { inherit hostname; }));
in
{