{ self, nixpkgs, home-manager, deploy-rs, ... }@inputs:
let
  mkTree = import ./tree.nix { inherit (nixpkgs) lib; };
  tree = mkTree {
    inherit inputs;
    folder = ./.;
    config = {
      "hosts/*/services".functor.enable = true;
      "profiles/*".functor.enable = true;
      "users/*".functor.enable = true;
      "home/*".functor.enable = true;
      "home/apps/*".functor.enable = true;
      "home/programming/languages/*".functor.enable = true;
      "modules/nixos" = {
        functor = {
          enable = true;
          external = [ ];
        };
      };
      "modules/home" = {
        functor = {
          enable = true;
          external = [ ];
        };
      };
    };
  };
in {
  #legacyPackages.tree = tree;
  nixosConfigurations = import ./hosts ({ inherit tree; } // inputs);

  deploy.nodes.lappy = {
    hostname = "lappy.tailscale-internal.owo.monster";
    profiles.system = {
      user = "root";
      path = deploy-rs.lib.x86_64-linux.activate.nixos
        self.nixosConfigurations.lappy;
    };
  };
  deploy.nodes.hetzner-vm = {
    hostname = "hetzner-vm.tailscale-internal.owo.monster";
    username = "root";
    profiles.system = {
      user = "root";
      path = deploy-rs.lib.x86_64-linux.activate.nixos
        self.nixosConfigurations.hetzner-vm;
    };
  };
}