let
  inherit (import <fysiweb>) lib pkgs;
in

rec {
  source = system-name: pkgs.krops.lib.evalSource [
    {
      fysiweb.file = {
        path = toString <fysiweb>;
        filters = [
          { type = "exclude"; pattern = "/.git"; }
        ]
        ++
        map
          (pattern: { type = "exclude"; inherit pattern; })
          (lib.filter
            (lib.hasPrefix "/")
            (lib.splitString "\n"
              (builtins.readFile <fysiweb/.gitignore>)))
        ;
      };
      overlay.file = {
        path = toString ./.;
        filters = [
          { type = "exclude"; pattern = "/.git"; }
        ]
        ++
        map
          (pattern: { type = "exclude"; inherit pattern; })
          (lib.filter
            (lib.hasPrefix "/")
            (lib.splitString "\n"
              (builtins.readFile ./.gitignore)))
        ;
      };
      nixos-config.symlink = "overlay/systems/${system-name}/configuration.nix";
      nixpkgs.git = {
        url = "https://github.com/NixOS/nixpkgs";
        ref = (lib.importJSON <fysiweb/nixpkgs.json>).rev;
        shallow = true;
      };
      system-secrets =
        let
          path = ./secrets/per-system + "/${system-name}";
        in
        if builtins.pathExists path then
          {
            pass.dir = toString path;
            pass.name = ".";
          }
        else
          { file = "/var/empty"; };
    }
  ];
}