From 5291925fd2486175e781669412fa5a525da7602a Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Mon, 23 Mar 2020 01:47:12 +0200 Subject: [PATCH] nixos: Introduce nix.buildLocation option Allow to specify where package build will happens. It helps big packages (like browsers) not to overflow tmpfs. --- nixos/modules/services/misc/nix-daemon.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix index 0c2407e1dd2..022ddad8f36 100644 --- a/nixos/modules/services/misc/nix-daemon.nix +++ b/nixos/modules/services/misc/nix-daemon.nix @@ -430,6 +430,16 @@ in ''; }; + buildLocation = mkOption { + type = types.str; + default = "/tmp"; + example = "/var/buildroot"; + description = '' + Temporary directory, which used to unpack and build source packages. + (by default /tmp is used, which commonly reside on tmpfs, + and big packages (like browsers) can just not fit there) + ''; + }; }; }; @@ -476,7 +486,9 @@ in ++ optionals cfg.distributedBuilds [ pkgs.gzip ]; environment = cfg.envVars - // { CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"; } + // { CURL_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"; + TMPDIR = cfg.buildLocation; + } // config.networking.proxy.envVars; unitConfig.RequiresMountsFor = "/nix/store"; @@ -490,6 +502,8 @@ in restartTriggers = [ nixConf ]; }; + systemd.tmpfiles.rules = [ "d ${cfg.buildLocation} 0775 root root -" ]; + # Set up the environment variables for running Nix. environment.sessionVariables = cfg.envVars // { NIX_PATH = cfg.nixPath;