settei/hosts/default.nix

73 lines
1.5 KiB
Nix

{
config,
}:
let
inputs = builtins.mapAttrs (_: input: input.result) config.inputs;
in
{
includes = [
./kazuki
./hijiri-vm
./hijiri
# TODO: Custom installer ISO
# ./installer
./ude
./kogata
./youko
];
config.configBuilders =
let
sharedOptions = {
_file = ./default.nix;
settei.sane-defaults.allSshKeys = config.assets.sshKeys.user;
settei.flake-qol.inputs = inputs // {
settei = inputs.self;
};
};
baseNixos = inputs.nixpkgs.lib.nixosSystem {
modules = [
config.nixosModules.combined
sharedOptions
];
specialArgs.configurationName = "base";
};
baseDarwin = inputs.darwin.lib.darwinSystem {
modules = [
config.darwinModules.combined
sharedOptions
];
specialArgs.configurationName = "base";
};
in
{
nixos =
name: module:
baseNixos.extendModules {
modules = [
module
config.extraHostConfigs.${name} or { }
];
specialArgs.configurationName = name;
};
darwin =
name: module:
let
eval = baseDarwin._module.args.extendModules {
modules = [
module
config.extraHostConfigs.${name} or { }
];
specialArgs.configurationName = name;
};
in
eval
// {
system = eval.config.system.build.toplevel;
};
};
}