{ lib, pkgs, ... }:

{

  clerie.nixfiles.enable = true;

  clerie.system-auto-upgrade.enable = true;

  nix.settings = {
    trusted-users = [ "@wheel" "@guests" ];
    auto-optimise-store = true;
    # Keep buildtime dependencies
    keep-outputs = true;
    # Build local, when caches are broken
    fallback = true;
  };

  nix.gc = lib.mkDefault {
    automatic = true;
    dates = "weekly";
    options = "--delete-older-than 30d";
  };


  nix.settings = {
    experimental-features = [
      "flakes"
      "nix-command"
    ];
    substituters = [
      "https://nix-cache.clerie.de"
    ];
    trusted-public-keys = [
      "nix-cache.clerie.de:bAt1GJTS9BOTcXFWj3nURrSlcjqikCev9yDvqArMP5g="
    ];
  };

  # Pin current nixpkgs channel and flake registry to the nixpkgs version
  # the host got build with
  nix.nixPath = lib.mkForce [ "nixpkgs=${lib.cleanSource pkgs.path}" ];
  nix.registry = {
    "nixpkgs" = lib.mkForce {
       from = {
         type = "indirect";
         id = "nixpkgs";
       };
       to = {
         type = "path";
         path = lib.cleanSource pkgs.path;
       };
       exact = true;
    };
    "templates" = {
       from = {
         type = "indirect";
         id = "templates";
       };
       to = {
         type = "git";
         url = "https://git.clerie.de/clerie/flake-templates.git";
       };
    };
  };

  documentation.doc.enable = false;

  environment.systemPackages = with pkgs; [
    nix-remove-result-links
  ];
}