From d7fd0796eae6e1a028aba8292bc07235aec5358e Mon Sep 17 00:00:00 2001 From: Richie Cahill Date: Mon, 20 Jan 2025 12:50:46 -0500 Subject: [PATCH] created nix_builder module --- systems/jeeves/nix_builder.nix | 51 ++++++++++++++++++++++++++++++ systems/jeeves/runner.nix | 57 ++++++---------------------------- 2 files changed, 60 insertions(+), 48 deletions(-) create mode 100644 systems/jeeves/nix_builder.nix diff --git a/systems/jeeves/nix_builder.nix b/systems/jeeves/nix_builder.nix new file mode 100644 index 0000000..5410ad0 --- /dev/null +++ b/systems/jeeves/nix_builder.nix @@ -0,0 +1,51 @@ +{ config, lib, ... }: + +with lib; + +let + vars = import ./vars.nix; +in +{ + options.services.nix_builder.containers = mkOption { + type = types.attrsOf (types.submodule ({ name, ... }: { + options.enable = mkEnableOption "GitHub runner container"; + })); + default = {}; + description = "GitHub runner container configurations"; + }; + + config.containers = mapAttrs (name: cfg: + mkIf cfg.enable { + autoStart = true; + bindMounts = { + "/storage" = { + mountPoint = "/zfs/media/github-runners/${name}"; + isReadOnly = false; + }; + "/secrets".mountPoint = "${vars.storage_secrets}/services/github-runners/${name}"; + }; + config = { config, pkgs, lib, ... }: { + services.github-runners.${name} = { + enable = true; + replace = true; + workDir = "/zfs/media/github-runners/${name}"; + url = "https://github.com/RichieCahill/dotfiles"; + extraLabels = [ "nixos" ]; + tokenFile = "${vars.storage_secrets}/services/github-runners/${name}"; + user = "github-runners"; + group = "github-runners"; + extraPackages = [ pkgs.nixos-rebuild ]; + }; + users = { + users.github-runners = { + isSystemUser = true; + group = "github-runners"; + uid = 601; + }; + groups.github-runners.gid = 601; + }; + system.stateVersion = "24.11"; + }; + } + ) config.services.nix_builder.containers; +} diff --git a/systems/jeeves/runner.nix b/systems/jeeves/runner.nix index c8001f5..9e2aa49 100644 --- a/systems/jeeves/runner.nix +++ b/systems/jeeves/runner.nix @@ -1,8 +1,8 @@ -{ pkgs, ... }: -let - vars = import ./vars.nix; -in { + imports = [ + ./nix_builder.nix + ]; + users = { users.github-runners = { isSystemUser = true; @@ -12,49 +12,10 @@ in groups.github-runners.gid = 601; }; - services.github-runners.nix_builder = { - enable = true; - replace = true; - workDir = "/zfs/media/github-runners/nix_builder/"; - url = "https://github.com/RichieCahill/dotfiles"; - extraLabels = [ "nixos" ]; - tokenFile = "${vars.storage_secrets}/services/github_runners/nix_builder"; - user = "github-runners"; - group = "github-runners"; - extraPackages = [ pkgs.nixos-rebuild ]; - # extraEnvironment - }; - containers.nix-builder-1 = { - autoStart = true; - bindMounts = { - "/test" = { - mountPoint = "/zfs/media/github-runners/nix_builder_1"; - isReadOnly = false; - }; - "/secrets".mountPoint = "${vars.storage_secrets}/services/github_runners/nix_builder_1"; - }; - config = { config, pkgs, lib, ... }: { - users = { - users.github-runners = { - isSystemUser = true; - group = "github-runners"; - uid = 601; - }; - groups.github-runners.gid = 601; - }; - services.github-runners.nix_builder_1 = { - enable = true; - replace = true; - workDir = "/zfs/media/github-runners/nix_builder_1"; - url = "https://github.com/RichieCahill/dotfiles"; - extraLabels = [ "nixos" ]; - tokenFile = "${vars.storage_secrets}/services/github_runners/nix_builder_1"; - user = "github-runners"; - group = "github-runners"; - extraPackages = [ pkgs.nixos-rebuild ]; - }; - system.stateVersion = "24.11"; - }; + services.nix_builder.containers = { + nix-builder-0.enable = true; + nix-builder-1.enable = true; + nix-builder-2.enable = true; }; -} +} \ No newline at end of file