nix: expose modular configuration combinators

This commit is contained in:
Primrose 2024-07-13 13:39:17 +02:00
parent 61678660ff
commit 457d196041
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
3 changed files with 85 additions and 63 deletions

View file

@ -0,0 +1,82 @@
localFlake:
{ inputs, ... }:
let
mkNixOS =
nixosModulesOf: homeModulesOf: name: sys: hmOpts:
localFlake.withSystem sys (
{ pkgs, ... }:
let
args = {
inherit pkgs;
hostname = name;
};
in
inputs.nixpkgs.lib.nixosSystem {
specialArgs = args;
modules = nixosModulesOf name sys ++ [
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = args;
users.leana.imports = homeModulesOf name sys ++ [ hmOpts ];
};
}
];
}
);
mkDarwin =
darwinModulesOf: homeModulesOf: name: sys: hmOpts:
localFlake.withSystem sys (
{ pkgs, ... }:
let
args = {
inherit pkgs;
hostname = name;
};
in
inputs.nix-darwin.lib.darwinSystem {
specialArgs = args;
modules = darwinModulesOf name sys ++ [
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = args;
users.leana.imports = homeModulesOf name sys ++ [ hmOpts ];
};
}
];
}
);
mkHomeManager =
homeModulesOf: name: sys: hmOpts:
localFlake.withSystem sys (
{ pkgs, ... }:
let
args = {
inherit pkgs;
hostname = name;
};
in
inputs.home-manager.lib.homeManagerConfiguration {
inherit (args) pkgs;
extraSpecialArgs = args;
modules = homeModulesOf name sys ++ [ hmOpts ];
}
);
many = func: builtins.mapAttrs (name: hmOpts: func name hmOpts.system (hmOpts.settings or { }));
in
{
_module.args = {
inherit
many
mkNixOS
mkDarwin
mkHomeManager
;
};
}