{ config, pkgs, ... }:
let
  docspell = import ./release.nix;
  full-text-search = {
    enabled = true;
    solr.url = "http://localhost:${toString config.services.solr.port}/solr/docspell";
  };
in
{
  imports = docspell.modules ++ [ ./solr.nix ];

  i18n = {
    defaultLocale = "en_US.UTF-8";
  };
  console.keyMap = "de";

  users.users.root = {
    password = "root";
  };

  nixpkgs = {
    config = {
      packageOverrides = pkgs:
        let
          callPackage = pkgs.lib.callPackageWith(custom // pkgs);
          custom = {
            docspell = callPackage docspell.currentPkg {};
          };
        in custom;
    };
  };

  services.docspell-joex = {
    enable = true;
    waitForTarget = "solr-init.target";
    bind.address = "0.0.0.0";
    base-url = "http://localhost:7878";
    jvmArgs = [ "-J-Xmx1536M" ];
    inherit full-text-search;
  };
  services.docspell-restserver = {
    enable = true;
    bind.address = "0.0.0.0";
    integration-endpoint = {
      enabled = true;
      http-header = {
        enabled = true;
        header-value = "test123";
      };
    };
    openid = [
      { enabled = true;
        display = "Local";
        provider = {
          provider-id = "local";
          client-id = "cid1";
          client-secret = "csecret-1";
          authorize-url = "http:auth";
          token-url = "http:token";
          sign-key = "b64:uiaeuae";
        };
      }
    ];
    inherit full-text-search;
  };

  environment.systemPackages =
    [ pkgs.docspell.server
      pkgs.docspell.joex
      pkgs.jq
      pkgs.telnet
      pkgs.htop
      pkgs.openjdk
    ];


  services.xserver = {
    enable = false;
  };

  networking = {
    hostName = "docspelltest";
    firewall.allowedTCPPorts = [7880];
  };

  system.stateVersion = "21.05";

}
