make home configs work
This commit is contained in:
parent
f0c21b2e79
commit
30f81b2b79
29 changed files with 2131 additions and 2033 deletions
124
config.nix
Normal file
124
config.nix
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
inputs@{
|
||||
nixpkgs,
|
||||
deploy-rs,
|
||||
self,
|
||||
pkgsForSystem,
|
||||
...
|
||||
}:
|
||||
|
||||
rec {
|
||||
configs =
|
||||
configs: builtins.foldl' (acc: val: nixpkgs.lib.recursiveUpdate (config val) acc) { } configs;
|
||||
config =
|
||||
{
|
||||
hostname,
|
||||
capabilities,
|
||||
type,
|
||||
home-only ? null,
|
||||
extra-modules ? [ ],
|
||||
system ? "x86_64-linux",
|
||||
deploy-hostname ? hostname,
|
||||
deploy-options ? {
|
||||
user = if builtins.isNull home-only then "root" else home-only;
|
||||
sshUser = if builtins.isNull home-only then "jana" else home-only;
|
||||
},
|
||||
home-manager ? builtins.isNull home-only,
|
||||
stateVersion ? "26.05",
|
||||
}:
|
||||
with nixpkgs.lib;
|
||||
let
|
||||
inherit (nixpkgs) lib;
|
||||
matches-capabilities =
|
||||
# all requirements are contained in the machine capabilities
|
||||
requirements: lib.all (req: builtins.elem req capabilities) requirements;
|
||||
program =
|
||||
{
|
||||
requirements ? [ ],
|
||||
home-config,
|
||||
system-config ? { },
|
||||
}:
|
||||
# if (matches-capabilities requirements) then
|
||||
if (true) then
|
||||
{
|
||||
inherit home-config system-config;
|
||||
}
|
||||
else
|
||||
{
|
||||
# home-config = _: { };
|
||||
};
|
||||
specialArgsForHomeSystem =
|
||||
{
|
||||
system,
|
||||
type,
|
||||
capabilities,
|
||||
}:
|
||||
home-only: {
|
||||
pkgs = pkgsForSystem system;
|
||||
flakes = inputs;
|
||||
inherit inputs;
|
||||
inherit (inputs.secrets.packages.${system}) secrets;
|
||||
machine = {
|
||||
inherit
|
||||
type
|
||||
capabilities
|
||||
stateVersion
|
||||
home-only
|
||||
program
|
||||
;
|
||||
};
|
||||
};
|
||||
specialArgsForSystem = system: specialArgsForHomeSystem system null;
|
||||
|
||||
specialArgs = specialArgsForSystem {
|
||||
inherit system type capabilities;
|
||||
};
|
||||
modules =
|
||||
extra-modules
|
||||
++ [ ./hosts/${hostname}/configuration.nix ]
|
||||
++ (
|
||||
if builtins.isNull home-only then
|
||||
[ ./defaults/machine-config.nix ]
|
||||
else
|
||||
[ ./defaults/machine-or-home-config.nix ]
|
||||
)
|
||||
++ (
|
||||
if home-manager then
|
||||
[
|
||||
inputs.home-manager.nixosModules.default
|
||||
{
|
||||
home-manager.extraSpecialArgs = specialArgs;
|
||||
}
|
||||
]
|
||||
else
|
||||
[ ]
|
||||
);
|
||||
in
|
||||
{
|
||||
deploy.nodes.${hostname} = {
|
||||
hostname = deploy-hostname;
|
||||
fastConnection = true;
|
||||
profiles.system = {
|
||||
path =
|
||||
if (builtins.isNull home-only) then
|
||||
deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.${hostname}
|
||||
else
|
||||
deploy-rs.lib.x86_64-linux.activate.home-manager self.nixosConfigurations.${hostname};
|
||||
}
|
||||
// deploy-options;
|
||||
};
|
||||
|
||||
nixosConfigurations.${hostname} =
|
||||
if builtins.isNull home-only then
|
||||
(nixosSystem {
|
||||
inherit system modules specialArgs;
|
||||
})
|
||||
else
|
||||
inputs.home-manager.lib.homeManagerConfiguration {
|
||||
extraSpecialArgs = specialArgsForHomeSystem {
|
||||
inherit system type capabilities;
|
||||
} home-only;
|
||||
inherit modules;
|
||||
pkgs = pkgsForSystem system;
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue