{
  description = "Fudo Host Configuration";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-21.05";

    fudo-home.url = "path:./nix-home";

    fudo-secrets.url = "path:/state/secrets";
  };

  outputs = { self, nixpkgs, fudo-secrets, fudo-home, ... }: {

    nixosConfigurations = let
      lib = nixpkgs.lib;

      hostlib = import ./lib/hosts.nix { inherit lib; };

      hosts = lib.filterAttrs (hostname: hostOpts:
        hostOpts.nixos-system) (hostlib.base-host-config ./config/hosts);

      build-timestamp = self.sourceInfo.lastModified;
    in lib.mapAttrs (hostname: hostOpts: let
      pkgs = import nixpkgs {
        system = hostOpts.arch;
        config = {
          allowUnfree = true;
          permittedInsecurePackages = [
            "openssh-with-gssapi-8.4p1"
          ];
        };
        overlays = [
          (import ./fudo-pkgs/overlay.nix)
        ];
      };
    in lib.nixosSystem {
      system = hostOpts.arch;

      modules = [
        fudo-home.nixosModule
        fudo-secrets.nixosModule
        (import ./initialize.nix {
          inherit hostname pkgs build-timestamp fudo-secrets;
        })
      ];
    }) hosts;
  };
}