vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / nar-serve.nix
blobea5be25a4d26b2304f88b283d933066dc6012d4c
1 { config, pkgs, lib, ... }:
3 let
4   inherit (lib) mkOption types;
5   cfg = config.services.nar-serve;
6 in
8   meta = {
9     maintainers = with lib.maintainers; [ rizary zimbatm ];
10   };
11   options = {
12     services.nar-serve = {
13       enable = lib.mkEnableOption "serving NAR file contents via HTTP";
15       package = lib.mkPackageOption pkgs "nar-serve" { };
17       port = mkOption {
18         type = types.port;
19         default = 8383;
20         description = ''
21           Port number where nar-serve will listen on.
22         '';
23       };
25       cacheURL = mkOption {
26         type = types.str;
27         default = "https://cache.nixos.org/";
28         description = ''
29           Binary cache URL to connect to.
31           The URL format is compatible with the nix remote url style, such as:
32           - http://, https:// for binary caches via HTTP or HTTPS
33           - s3:// for binary caches stored in Amazon S3
34           - gs:// for binary caches stored in Google Cloud Storage
35         '';
36       };
38       domain = mkOption {
39         type = types.str;
40         default = "";
41         description = ''
42           When set, enables the feature of serving <nar-hash>.<domain>
43           on top of <domain>/nix/store/<nar-hash>-<pname>.
45           Useful to preview static websites where paths are absolute.
46         '';
47       };
48     };
49   };
51   config = lib.mkIf cfg.enable {
52     systemd.services.nar-serve = {
53       description = "NAR server";
54       after = [ "network.target" ];
55       wantedBy = [ "multi-user.target" ];
57       environment.PORT = toString cfg.port;
58       environment.NAR_CACHE_URL = cfg.cacheURL;
60       serviceConfig = {
61         Restart = "always";
62         RestartSec = "5s";
63         ExecStart = lib.getExe cfg.package;
64         DynamicUser = true;
65       };
66     };
67   };