nixos: Introduce nix.buildLocation option

Allow to specify where package build will happens.
It helps big packages (like browsers) not to overflow tmpfs.
This commit is contained in:
Alexander V. Nikolaev 2020-03-23 01:47:12 +02:00
parent 192485f8fa
commit 5291925fd2

View file

@ -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 <filename>/tmp</filename> 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;