{ inputs, lib, hostname, username, desktop, ... }: {
  imports = [ 
    # Modules
    inputs.disko.nixosModules.disko

    # Services
    ./common/services/openssh.nix
    ./common/services/promtail.nix
    ./common/services/fail2ban.nix
    ./common/services/telegraf.nix
    ./common/services/tailscale.nix
    ./common/services/gnupg-agent.nix
    ./common/services/opensnitch.nix

    # Software
    ./common/software/cli/clean-hm.nix
    ./common/packages

    # NixOS Modules
    ./common/modules/fonts.nix           # Font Configs
    ./common/modules/networking.nix      # Initial Networking configs
    ./common/modules/nixos.nix           # NixOS related items
    ./common/modules/remote-builders.nix # Add remote builders

    ./users/${username}
    ./hosts/${hostname}
  ] ++ lib.optional (builtins.isString desktop) ./common/desktops/${desktop};

  programs.fish.enable = true;
}