{ pkgs, ... }:

let
  checkinator = pkgs.callPackage ./checkinator.nix {};

  name = "checkinator-web";
  user = name;
  group = name;
  socket_dir = "/run/${name}/";

  python = pkgs.python3.withPackages (ppackages: with ppackages;  [
    checkinator
    pkgs.python3Packages.gunicorn
  ]);

  prepare = pkgs.writeShellScriptBin "${name}-prepare" ''
    rm -rf /mnt/secrets/${name}
    ${pkgs.coreutils}/bin/install --owner=${user} --mode=500 --directory /mnt/secrets/${name}
    ${pkgs.coreutils}/bin/install --owner=${user} --mode=400 -t /mnt/secrets/${name} \
      /etc/nixos/secrets/${name}/secrets.yaml \
      /etc/nixos/secrets/${name}/ca.pem \
      /etc/nixos/secrets/${name}/cert.pem \
      /etc/nixos/secrets/${name}/key.pem

    ${pkgs.coreutils}/bin/mkdir -m 700 -p /var/checkinator-web/
    ${pkgs.coreutils}/bin/chown ${user} /var/checkinator-web/

    mkdir -p --mode=700 ${socket_dir}
    chown ${user} ${socket_dir}
    chmod 700 ${socket_dir}
    ${pkgs.acl}/bin/setfacl -m "u:nginx:rx" ${socket_dir}
  '';

  config = builtins.toFile "${name}-config.yaml" (pkgs.lib.generators.toYAML {} {
    # local sqlite db for storing user and MAC 
    DB = "/var/checkinator-web/at.db";
    
    # debug option interpreted by flask app
    DEBUG = false;
    
    # url to member wiki page
    # "${login}" string is replaced by member login (uid)
    WIKI_URL = "https://wiki.hackerspace.pl/people:\${login}:start";
    
    CLAIMABLE_PREFIXES = [
      "10.8.0."
      "2a0d:eb00:4242:0:"
    ];
    CLAIMABLE_EXCLUDE = [ ];
    
    SPACEAUTH_CONSUMER_KEY = "checkinator";
    SECRETS_FILE = "/mnt/secrets/checkinator-web/secrets.yaml";
    
    SPECIAL_DEVICES = {
      kektops = [ "90:e6:ba:84" ];
      esps = [
         "ec:fa:bc" "dc:4f:22" "d8:a0:1d" "b4:e6:2d" "ac:d0:74" "a4:7b:9d"
         "a0:20:a6" "90:97:d5" "68:c6:3a" "60:01:94" "5c:cf:7f" "54:5a:a6"
         "30:ae:a4" "2c:3a:e8" "24:b2:de" "24:0a:c4" "18:fe:34" "38:2b:78"
         "bc:dd:c2" "cc:50:e3" "84:0d:8e"
      ];
      vms = [
        "52:54:00" # craptrap VMs
      ];
    };
    
    PROXY_FIX = true;
    
    GRPC_TLS_CERT_DIR = "/mnt/secrets/checkinator-web";
    GRPC_TLS_CA_CERT = "/mnt/secrets/checkinator-web/ca.pem";
    GRPC_TLS_ADDRESS = "[::1]:2847";
  });
in {
  users.users."${user}" = {
    group           = "${group}";
    isSystemUser = true;
    uid = 1002;
  };
  users.groups."${group}" = {};

  systemd.services."${name}" = {
    description = "Hackerspace Checkinator web interface";
    wantedBy    = [ "multi-user.target" ];

    serviceConfig.User = "${user}";
    serviceConfig.Type = "simple";
      
    environment = {
      CHECKINATOR_WEB_CONFIG=config;
    };

    serviceConfig.ExecStartPre = [
      ''!${prepare}/bin/${name}-prepare''
      "${pkgs.writeShellScript "checkinator-dbsetup"  ''
        if [ ! -e "/var/checkinator-web/at.db" ]
        then
          ${pkgs.sqlite}/bin/sqlite3 /var/checkinator-web/at.db < ${checkinator}/dbsetup.sql
        fi
      ''}"
    ];
    serviceConfig.workingDirectory = checkinator;
    serviceConfig.ExecStart = "${python}/bin/gunicorn -b unix:${socket_dir}/web.sock at.webapp:app";
    serviceConfig.ExecStopPost = [
      ''!${pkgs.coreutils}/bin/rm -rf /mnt/secrets/${name}''
    ];

  };

  services.nginx.virtualHosts."at.hackerspace.pl" = {
    forceSSL = true;
    enableACME = true;

    locations."/static/" = {
      alias = "${checkinator}/static/";
    };
    locations."/" = {
      proxyPass = "http://unix://${socket_dir}/web.sock";
      extraConfig = ''
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Host $host:$server_port;
	proxy_set_header X-Forwarded-Server $host;
	proxy_set_header X-Forwarded-Proto $scheme;
      '';
    };
  };
}
