Generate hosts for hydra

This commit is contained in:
yuri 2023-07-27 21:59:24 +02:00
parent 2673483143
commit 361f5ef709
5 changed files with 61 additions and 18 deletions

View file

@ -38,16 +38,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1689679375,
"narHash": "sha256-LHUC52WvyVDi9PwyL1QCpaxYWBqp4ir4iL6zgOkmcb8=",
"lastModified": 1690538549,
"narHash": "sha256-FfScFHxidupVGPw9BrQOHz/SoFLRjoNmVC5ymS+g8xU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "684c17c429c42515bafb3ad775d2a710947f3d67",
"rev": "de5ca86149b0c4ff8bf69782cd25896fff0254e1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}

View file

@ -1,13 +1,15 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nixos-generators, ... }: {
outputs = { self, nixpkgs, nixos-generators, ... }@inputs: let
helper = (import ./helper.nix) inputs;
in {
hosts = {
hydra = {
site = "vs";
@ -43,7 +45,7 @@
./configuration/proxmox-vm
./configuration/proxmox-vm/hardware-configuration.nix
./hosts/${name}
];
] ++ nixpkgs.lib.optional (builtins.pathExists ./hosts/${name}/secrets.nix) ./hosts/${name}/secrets.nix;
};
colmena = {
@ -54,17 +56,34 @@
};
} // builtins.mapAttrs (self.generateColmenaHost) self.hosts;
hydraJobs = {
nixConfigurations.nitter = let system = "x86_64-linux";
in nixpkgs.lib.nixosSystem {
inherit system;
nixosConfigurations = nixpkgs.lib.mapAttrs (name: config: let
nodeNixpkgs = self.outputs.colmena.meta.nodeNixpkgs.${name} or self.outputs.colmena.meta.nixpkgs;
nodeNixos = import (nodeNixpkgs.path + "/nixos/lib/eval-config.nix");
in nodeNixos {
modules = [
./configuration/common
./configuration/proxmox-vm
./hosts/nitter
#self.outputs.colmena.defaults
config
#inputs.colmena.nixosModules.deploymentOptions
{
_module.args.name = nixpkgs.lib.mkForce name;
_module.args.nodes = self.outputs.nixosConfigurations;
#nixpkgs.overlays = nixpkgs.lib.attrValues self.overlays;
}
];
inherit (nodeNixpkgs) system;
}
) (builtins.removeAttrs self.outputs.colmena ["meta" "defaults"]);
hydraJobs = {
nixosConfigurations = nixpkgs.lib.mapAttrs (_: config: config.config.system.build.toplevel) self.outputs.nixosConfigurations;
};
/*
nixosConfigurations = (builtins.mapAttrs (helper.mapToNixosConfigurations) self.hosts);
hydraJobs = {
nixConfigurations = helper.buildHosts self.nixosConfigurations;
};
*/
# Generate a base VM image for Proxmox with `nix build .#base-proxmox`
packages.x86_64-linux = {
@ -78,5 +97,6 @@
format = "proxmox";
};
};
};
}

25
helper.nix Normal file
View file

@ -0,0 +1,25 @@
{ nixpkgs, ... }@inputs:
rec {
generateNixosSystem = name: {
system ? "x86_64-linux",
group ? null,
modules ? [],
site
}: let
localNixpkgs = nixpkgs.lib.attrByPath [ "nixpkgs-${name}" ] nixpkgs inputs;
in localNixpkgs.lib.nixosSystem {
system = system;
modules = modules ++ [
./configuration/common
./configuration/proxmox-vm
./configuration/proxmox-vm/hardware-configuration.nix
./hosts/${name}
];
};
mapToNixosConfigurations = name: host: generateNixosSystem name host;
filterUnderscore = hosts: (nixpkgs.lib.filterAttrs (name: host: (builtins.substring 0 1 name) != "_") hosts);
buildHosts = hosts: builtins.mapAttrs (name: host: host.config.system.build.toplevel) (filterUnderscore hosts);
}

View file

@ -2,7 +2,6 @@
{
imports = [
./configuration.nix
./secrets.nix
./hydra.nix
./nix-serve.nix
./nginx.nix

View file

@ -2,7 +2,6 @@
{
imports = [
./configuration.nix
./secrets.nix
./coturn.nix
];
}