summary refs log tree commit diff
diff options
context:
space:
mode:
authorBjørn Forsman <bjorn.forsman@gmail.com>2015-10-04 16:11:28 +0200
committerBjørn Forsman <bjorn.forsman@gmail.com>2015-10-04 20:04:00 +0200
commit67723df930d74ecda8c8a66740df7c5650da8e6a (patch)
tree9e9550f7639a6d29ed80055557e5313c60ad1705
parentf91c5bcc7a1e171ea19c55cdf45bb3de9bcaf396 (diff)
downloadnixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.tar
nixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.tar.gz
nixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.tar.bz2
nixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.tar.lz
nixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.tar.xz
nixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.tar.zst
nixlib-67723df930d74ecda8c8a66740df7c5650da8e6a.zip
nixos/jenkins: rework environment handling
Jenkins gets (by default) an additional environment of

  { NIX_REMOTE = "daemon"; }

This has the following problems:

  1. NIX_REMOTE disappears when users specify additional environment
     variables, because defaults have low merge priority.
  2. nix cannot be used without additional NIX_PATH envvar, which is
     currently missing.
  3. If you try to use HTTPS, you'll see that jenkins lacks
     SSL_CERT_FILE envvar, causing it to fail.

This commit adds config.environment.sessionVariables and NIX_REMOTE to
the set of variables that are always there for jenkins, making nix and
HTTPS work out of the box.

services.jenkins.environment is now empty by default.
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/default.nix16
1 files changed, 11 insertions, 5 deletions
diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix
index 95d2aecfac7d..cf13c73ab4df 100644
--- a/nixos/modules/services/continuous-integration/jenkins/default.nix
+++ b/nixos/modules/services/continuous-integration/jenkins/default.nix
@@ -65,11 +65,14 @@ in {
       };
 
       environment = mkOption {
-        default = { NIX_REMOTE = "daemon"; };
+        default = { };
         type = with types; attrsOf str;
         description = ''
           Additional environment variables to be passed to the jenkins process.
-          The environment will always include JENKINS_HOME.
+          This setting will merge with everything in
+          <option>config.environment.sessionVariables</option>,
+          JENKINS_HOME and NIX_REMOTE. This option takes precedence and can
+          override any previously set environment variable.
         '';
       };
 
@@ -106,9 +109,12 @@ in {
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
 
-      environment = {
-        JENKINS_HOME = cfg.home;
-      } // cfg.environment;
+      environment =
+        config.environment.sessionVariables //
+        { JENKINS_HOME = cfg.home;
+          NIX_REMOTE = "daemon";
+        } //
+        cfg.environment;
 
       path = cfg.packages;