From 361f5ef709be30abfa261ae8cb5a73bfd37df405 Mon Sep 17 00:00:00 2001 From: yuri Date: Thu, 27 Jul 2023 21:59:24 +0200 Subject: [PATCH] Generate hosts for hydra --- flake.lock | 8 +++---- flake.nix | 44 ++++++++++++++++++++++++---------- helper.nix | 25 +++++++++++++++++++ hosts/hydra/default.nix | 1 - hosts/nixos-coturn/default.nix | 1 - 5 files changed, 61 insertions(+), 18 deletions(-) create mode 100644 helper.nix diff --git a/flake.lock b/flake.lock index f4f6d2d..ad39d0d 100644 --- a/flake.lock +++ b/flake.lock @@ -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" } diff --git a/flake.nix b/flake.nix index 4b4fdc0..c8ae23e 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; @@ -32,7 +34,7 @@ }; }; - generateColmenaHost = name: host : { + generateColmenaHost = name: host: { deployment = { targetHost = "${name}.${host.site}.grzb.de"; targetUser = "colmena-deploy"; @@ -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,18 +56,35 @@ }; } // 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 = { base-proxmox = nixos-generators.nixosGenerate { @@ -78,5 +97,6 @@ format = "proxmox"; }; }; + }; } diff --git a/helper.nix b/helper.nix new file mode 100644 index 0000000..07a3e8e --- /dev/null +++ b/helper.nix @@ -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); +} diff --git a/hosts/hydra/default.nix b/hosts/hydra/default.nix index c33a964..aeffee1 100644 --- a/hosts/hydra/default.nix +++ b/hosts/hydra/default.nix @@ -2,7 +2,6 @@ { imports = [ ./configuration.nix - ./secrets.nix ./hydra.nix ./nix-serve.nix ./nginx.nix diff --git a/hosts/nixos-coturn/default.nix b/hosts/nixos-coturn/default.nix index 63c719c..1036572 100644 --- a/hosts/nixos-coturn/default.nix +++ b/hosts/nixos-coturn/default.nix @@ -2,7 +2,6 @@ { imports = [ ./configuration.nix - ./secrets.nix ./coturn.nix ]; }