mirror of
https://codeberg.org/leana8959/.files.git
synced 2025-12-06 14:49:14 +00:00
nix: use attrSet to achive variadic function call
This commit is contained in:
parent
457d196041
commit
173e1440c1
2 changed files with 80 additions and 48 deletions
|
|
@ -3,24 +3,32 @@ localFlake:
|
|||
{ inputs, ... }:
|
||||
let
|
||||
mkNixOS =
|
||||
nixosModulesOf: homeModulesOf: name: sys: hmOpts:
|
||||
localFlake.withSystem sys (
|
||||
nixosModulesOf: homeModulesOf:
|
||||
{
|
||||
hostname,
|
||||
system,
|
||||
extraNixOSConfig ? { },
|
||||
extraHomeConfig ? { },
|
||||
...
|
||||
}@args:
|
||||
localFlake.withSystem system (
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
args = {
|
||||
specialArgs = {
|
||||
inherit pkgs;
|
||||
hostname = name;
|
||||
inherit hostname;
|
||||
};
|
||||
in
|
||||
inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = args;
|
||||
modules = nixosModulesOf name sys ++ [
|
||||
inherit specialArgs;
|
||||
modules = nixosModulesOf args ++ [
|
||||
extraNixOSConfig
|
||||
{
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = args;
|
||||
users.leana.imports = homeModulesOf name sys ++ [ hmOpts ];
|
||||
extraSpecialArgs = specialArgs;
|
||||
users.leana.imports = homeModulesOf args ++ [ extraHomeConfig ];
|
||||
};
|
||||
}
|
||||
];
|
||||
|
|
@ -28,24 +36,32 @@ let
|
|||
);
|
||||
|
||||
mkDarwin =
|
||||
darwinModulesOf: homeModulesOf: name: sys: hmOpts:
|
||||
localFlake.withSystem sys (
|
||||
darwinModulesOf: homeModulesOf:
|
||||
args@{
|
||||
hostname,
|
||||
system,
|
||||
extraDarwinConfig ? { },
|
||||
extraHomeConfig ? { },
|
||||
...
|
||||
}:
|
||||
localFlake.withSystem system (
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
args = {
|
||||
specialArgs = {
|
||||
inherit pkgs;
|
||||
hostname = name;
|
||||
inherit hostname;
|
||||
};
|
||||
in
|
||||
inputs.nix-darwin.lib.darwinSystem {
|
||||
specialArgs = args;
|
||||
modules = darwinModulesOf name sys ++ [
|
||||
inherit specialArgs;
|
||||
modules = darwinModulesOf args ++ [
|
||||
extraDarwinConfig
|
||||
{
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = args;
|
||||
users.leana.imports = homeModulesOf name sys ++ [ hmOpts ];
|
||||
extraSpecialArgs = specialArgs;
|
||||
users.leana.imports = homeModulesOf args ++ [ extraHomeConfig ];
|
||||
};
|
||||
}
|
||||
];
|
||||
|
|
@ -53,22 +69,29 @@ let
|
|||
);
|
||||
|
||||
mkHomeManager =
|
||||
homeModulesOf: name: sys: hmOpts:
|
||||
localFlake.withSystem sys (
|
||||
homeModulesOf:
|
||||
args@{
|
||||
hostname,
|
||||
system,
|
||||
extraHomeConfig ? { },
|
||||
...
|
||||
}:
|
||||
localFlake.withSystem system (
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
args = {
|
||||
specialArgs = {
|
||||
inherit pkgs;
|
||||
hostname = name;
|
||||
inherit hostname;
|
||||
};
|
||||
in
|
||||
inputs.home-manager.lib.homeManagerConfiguration {
|
||||
inherit (args) pkgs;
|
||||
extraSpecialArgs = args;
|
||||
modules = homeModulesOf name sys ++ [ hmOpts ];
|
||||
inherit (specialArgs) pkgs;
|
||||
extraSpecialArgs = specialArgs;
|
||||
modules = homeModulesOf args ++ [ extraHomeConfig ];
|
||||
}
|
||||
);
|
||||
many = func: builtins.mapAttrs (name: hmOpts: func name hmOpts.system (hmOpts.settings or { }));
|
||||
|
||||
many = func: builtins.mapAttrs (hostname: cfgs: func (cfgs // { inherit hostname; }));
|
||||
in
|
||||
{
|
||||
_module.args = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue