From 9ed3f8ca3c4d1dd3a3ad848d51e80901fd1826c2 Mon Sep 17 00:00:00 2001 From: Xe Date: Thu, 6 Oct 2022 20:50:25 +0000 Subject: [PATCH] allow kos-mos to use ccache Signed-off-by: Xe --- hardware/alrest/jenkins-agent.nix | 79 +++++++++++++++++++++++++++++++ hosts/kos-mos/default.nix | 2 + 2 files changed, 81 insertions(+) create mode 100644 hardware/alrest/jenkins-agent.nix diff --git a/hardware/alrest/jenkins-agent.nix b/hardware/alrest/jenkins-agent.nix new file mode 100644 index 0000000..767700d --- /dev/null +++ b/hardware/alrest/jenkins-agent.nix @@ -0,0 +1,79 @@ +{ config, lib, pkgs, ... }: +with lib; +let + cfg = config.within.services.jenkinsAgent; + masterCfg = config.services.jenkins; +in { + options = { + within.services.jenkinsAgent = { + # todo: + # * assure the profile of the jenkins user has a JRE and any specified packages. This would + # enable ssh agents. + # * Optionally configure the node as a jenkins ad-hoc agent. This would imply configuration + # properties for the master node. + enable = mkOption { + type = types.bool; + default = false; + description = '' + If true the system will be configured to work as a jenkins agent. + If the system is also configured to work as a jenkins master then this has no effect. + In progress: Currently only assures the jenkins user is configured. + ''; + }; + + user = mkOption { + default = "jenkins-agent"; + type = types.str; + description = '' + User the jenkins agent should execute under. + ''; + }; + + group = mkOption { + default = "jenkins-agent"; + type = types.str; + description = '' + If the default agent user "jenkins" is configured then this is + the primary group of that user. + ''; + }; + + home = mkOption { + default = "/var/lib/jenkins-agent"; + type = types.path; + description = '' + The path to use as JENKINS_HOME. If the default user "jenkins" is configured then + this is the home of the "jenkins" user. + ''; + }; + + javaPackage = mkOption { + default = pkgs.jdk; + defaultText = literalExpression "pkgs.jdk"; + description = '' + Java package to install. + ''; + type = types.package; + }; + }; + }; + + config = mkIf (cfg.enable && !masterCfg.enable) { + users.groups = optionalAttrs (cfg.group == "jenkins-agent") { + jenkins-agent.gid = config.ids.gids.jenkins; + }; + + users.users.jenkins = { + description = "jenkins user"; + createHome = true; + home = cfg.home; + group = cfg.group; + useDefaultShell = true; + }; + + programs.java = { + enable = true; + package = cfg.javaPackage; + }; + }; +} diff --git a/hosts/kos-mos/default.nix b/hosts/kos-mos/default.nix index 3b33ece..c8ec249 100644 --- a/hosts/kos-mos/default.nix +++ b/hosts/kos-mos/default.nix @@ -7,6 +7,8 @@ environment.systemPackages = with pkgs; [ nodejs-14_x ]; services.tailscale.port = 15428; + nix.sandboxPaths = [ "/var/cache/ccache" ]; + networking.hostName = "kos-mos"; networking.hostId = "472479d4"; }