2 { pkgs, lib, config, inputs, hostName, ... }:
 
   4   inherit (config) networking;
 
   5   inherit (config.security) gnupg;
 
   6   inherit (config.services) nginx nix-serve;
 
   7   inherit (config.users) users groups;
 
  11 nix.settings.trusted-users = [ users."nix-serve".name ];
 
  12 users.users."nix-serve" = {
 
  14   group = groups."nix-serve".name;
 
  15   extraGroups = [ groups."keys".name ];
 
  17 users.groups."nix-serve" = {};
 
  18 security.gnupg.secrets."nix/binary-cache-key/1" = {
 
  19   user = users."nix-serve".name;
 
  21     before = [ "nix-serve.service" ];
 
  22     wantedBy = [ "nix-serve.service" ];
 
  25 services.nix-serve = {
 
  27   secretKeyFile = gnupg.secrets."nix/binary-cache-key/1".path;
 
  28   bindAddress = "127.0.0.1";
 
  30 nix.settings.allowed-users = [ users."nix-ssh".name ];
 
  33   keys = map lib.readFile [
 
  34     (inputs.secrets + "/members/ssh/julm-losurdo.pub")
 
  35     (inputs.secrets + "/members/ssh/julm-oignon.pub")
 
  36     (inputs.secrets + "/members/ssh/sevy-patate.pub")
 
  40 systemd.services.nginx.after = ["wireguard-wg-intra.service"];
 
  41 services.nginx = let virtualHost = priority:
 
  44       #access_log /var/log/nginx/${domain}/${srv}/access.json json buffer=32k;
 
  45       #error_log  /var/log/nginx/${domain}/${srv}/error.log warn;
 
  47       error_log  /dev/null crit;
 
  49     locations."/nix-cache-info" = {
 
  50       # cache.nixos.org has priority 40
 
  51       return = ''200 "StoreDir: ${builtins.storeDir}\nWantMassQuery: 1\nPriority: ${toString priority}\n"'';
 
  53         ${nginx.configs.https_add_headers}
 
  54         add_header Content-Type text/plain;
 
  57     locations."/".extraConfig = ''
 
  58       proxy_pass http://localhost:${toString nix-serve.port};
 
  59       proxy_set_header Host $host;
 
  60       proxy_set_header X-Real-IP $remote_addr;
 
  61       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
  65   # cache.nixos.org has priority over extracache
 
  66   virtualHosts."nix-extracache.${hostName}.wg" = virtualHost 60 // {
 
  67     listenAddresses = [ "nix-extracache.${hostName}.wg" ];
 
  70   # localcache has priority over cache.nixos.org
 
  71   virtualHosts."nix-localcache.${hostName}.wg" = virtualHost 30 // {
 
  72     listenAddresses = [ "nix-localcache.${hostName}.wg" ];
 
  76 systemd.services.nginx = {
 
  78     LogsDirectory = lib.mkForce ["nginx/${domain}/${srv}"];