Generate colmena and hydraJobs outputs from the same hosts attribute set

This commit is contained in:
yuri 2023-07-31 15:03:52 +02:00
parent 29fe1fbeca
commit a1e39754f9
3 changed files with 15 additions and 6 deletions

View file

@ -10,7 +10,7 @@
outputs = { self, nixpkgs, nixpkgs-unstable, nixos-generators, ... }@inputs: let
hosts = import ./hosts.nix inputs;
helper = (import ./helper.nix) inputs;
helper = import ./helper.nix inputs;
in {
colmena = {
meta = {

View file

@ -20,7 +20,12 @@
modules,
...
}:
(nixpkgs.lib.filterAttrs (name: host: (builtins.substring 0 1 name) != "_") (hostNixpkgs.lib.nixosSystem {
let
# Filter attritubes starting with _ to avoid infinite recursion when building with hydra
# TODO: Why does this happen?
filter = name: host: (builtins.substring 0 1 name) != "_";
in
(nixpkgs.lib.filterAttrs filter (hostNixpkgs.lib.nixosSystem {
inherit system modules;
})).config.system.build.toplevel;
})).config.system.build.toplevel; # Builds the entire NixOS system, see: https://nixos.org/manual/nixos/stable/#sec-building-parts
}

View file

@ -1,23 +1,27 @@
{ nixpkgs, nixpkgs-unstable, ... }:
let
# Set of environment specific modules
environments = {
"proxmox" = [
./configuration/proxmox-vm
./configuration/proxmox-vm/hardware-configuration.nix
];
};
#
generateDefaults = hosts: builtins.mapAttrs (name: {
hostNixpkgs ? nixpkgs,
system ? "x86_64-linux",
# pkgs is explicitly defined so that overlays for each host can easily be created
pkgs ? hostNixpkgs.legacyPackages.${system},
environment ? "proxmox",
site
}: {
inherit hostNixpkgs system pkgs environment site;
# define common and host modules and additionally add environment specific modules
modules = [
./configuration/common
./hosts/${name}
] ++ (if environments ? ${environment} then environments.${environment} else []);
] ++ environments.${environment};
}) hosts;
in
generateDefaults {