summary refs log tree commit diff
path: root/nixos/modules/services/continuous-integration
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 /nixos/modules/services/continuous-integration
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.
Diffstat (limited to 'nixos/modules/services/continuous-integration')
-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;