grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / web-apps / pgpkeyserver-lite.nix
blobf1e5f022c3792a1cb78067340c859c31f58f1a30
1 { config, lib, options, pkgs, ... }:
3 with lib;
5 let
7   cfg = config.services.pgpkeyserver-lite;
8   sksCfg = config.services.sks;
9   sksOpt = options.services.sks;
11   webPkg = cfg.package;
17   options = {
19     services.pgpkeyserver-lite = {
21       enable = mkEnableOption "pgpkeyserver-lite on a nginx vHost proxying to a gpg keyserver";
23       package = mkPackageOption pkgs "pgpkeyserver-lite" { };
25       hostname = mkOption {
26         type = types.str;
27         description = ''
28           Which hostname to set the vHost to that is proxying to sks.
29         '';
30       };
32       hkpAddress = mkOption {
33         default = builtins.head sksCfg.hkpAddress;
34         defaultText = literalExpression "head config.${sksOpt.hkpAddress}";
35         type = types.str;
36         description = ''
37           Which IP address the sks-keyserver is listening on.
38         '';
39       };
41       hkpPort = mkOption {
42         default = sksCfg.hkpPort;
43         defaultText = literalExpression "config.${sksOpt.hkpPort}";
44         type = types.int;
45         description = ''
46           Which port the sks-keyserver is listening on.
47         '';
48       };
49     };
50   };
52   config = mkIf cfg.enable {
54     services.nginx.enable = true;
56     services.nginx.virtualHosts = let
57       hkpPort = builtins.toString cfg.hkpPort;
58     in {
59       ${cfg.hostname} = {
60         root = webPkg;
61         locations = {
62           "/pks".extraConfig = ''
63             proxy_pass         http://${cfg.hkpAddress}:${hkpPort};
64             proxy_pass_header  Server;
65             add_header         Via "1.1 ${cfg.hostname}";
66           '';
67         };
68       };
69     };
70   };