47 lines
1.1 KiB
Nix
47 lines
1.1 KiB
Nix
{
|
|
inputs,
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
prefix = "hosts/";
|
|
collectHostsModules = modules: lib.filterAttrs (name: _: lib.hasPrefix prefix name) modules;
|
|
in
|
|
{
|
|
flake.nixosConfigurations = lib.pipe (collectHostsModules config.flake.modules.nixos) [
|
|
(lib.mapAttrs' (
|
|
name: module:
|
|
let
|
|
specialArgs = {
|
|
inherit inputs;
|
|
hostConfig = module // {
|
|
name = lib.removePrefix prefix name;
|
|
};
|
|
};
|
|
in
|
|
{
|
|
name = lib.removePrefix prefix name;
|
|
value = inputs.nixpkgs.lib.nixosSystem {
|
|
inherit specialArgs;
|
|
modules = module.imports ++ [
|
|
inputs.home-manager.nixosModules.home-manager
|
|
{
|
|
home-manager.extraSpecialArgs = specialArgs;
|
|
}
|
|
];
|
|
};
|
|
}
|
|
))
|
|
];
|
|
|
|
flake.hydraJobs =
|
|
let
|
|
self = inputs.self;
|
|
in
|
|
{
|
|
# hosts = lib.mapAttrs (_: cfg: cfg.config.system.build.toplevel) self.outputs.nixosConfigurations;
|
|
packages = self.packages;
|
|
shells = lib.filterAttrs (name: shell: name == "x86_64-linux") self.devShells;
|
|
};
|
|
}
|