58 lines
1.4 KiB
Nix
58 lines
1.4 KiB
Nix
{
|
|
lib,
|
|
nixpkgs,
|
|
inputs,
|
|
self,
|
|
...
|
|
}:
|
|
rec {
|
|
getDirs =
|
|
parentDir:
|
|
lib.mapAttrs (n: v: (import "${parentDir}/${n}")) (
|
|
lib.filterAttrs (n: v: v == "directory") (builtins.readDir parentDir)
|
|
);
|
|
loadInstances =
|
|
dir: extraModules: lib.mapAttrs (n: v: loadInstance extraModules v (getDirs dir)) (getDirs dir);
|
|
loadInstance =
|
|
extraModules: instance: instanceConfigs:
|
|
nixpkgs.lib.nixosSystem {
|
|
specialArgs = {
|
|
inherit inputs instanceConfigs;
|
|
instanceConfig = instance;
|
|
};
|
|
modules =
|
|
instance.modules
|
|
++ extraModules
|
|
++ [
|
|
(
|
|
{ pkgs, ... }:
|
|
{
|
|
|
|
nixpkgs.overlays = [
|
|
(final: prev: {
|
|
inherit (final.unstable.lixPackageSets.latest)
|
|
nixpkgs-review
|
|
nix-direnv
|
|
nix-eval-jobs
|
|
nix-fast-build
|
|
colmena
|
|
;
|
|
})
|
|
];
|
|
|
|
nix.package = pkgs.unstable.lixPackageSets.latest.lix;
|
|
}
|
|
)
|
|
(
|
|
{ pkgs, ... }:
|
|
{
|
|
nixpkgs.overlays = [
|
|
self.overlays.default
|
|
];
|
|
nixpkgs.config.allowUnfree = true;
|
|
networking.hostName = instance.hostName;
|
|
}
|
|
)
|
|
];
|
|
};
|
|
}
|