{ lib, config, pkgs, inputs, hostname, username, desktop, hmStateVersion, ... }: {

  home = {
    inherit username;
    stateVersion = hmStateVersion;
    homeDirectory = "/home/${username}";
    sessionPath = [ "$HOME/.local/bin" ];
  };

  imports = [ 
    # Common app configs - Will apply to all users managed by home-manager
    ./common/software/cli/bash.nix
    ./common/software/cli/btop.nix
    ./common/software/cli/git.nix
    ./common/software/cli/kitty.nix
    ./common/software/cli/neofetch.nix
    ./common/software/cli/neovim.nix
    ./common/software/cli/doom-emacs.nix

    # User configs
    ./users/${username}
  ]
  ++ lib.optional (builtins.isString desktop) ./common/software/gui/firefox.nix 
  # ++ lib.optional (builtins.isString desktop) ./common/software/gui/thunderbird.nix
  ++ lib.optional (builtins.isString desktop) ./common/software/gui/vscodium.nix
  ++ lib.optional (builtins.isString desktop) ./hosts/${hostname}/desktops/${desktop}; # Machine-specific desktop configs

  nixpkgs = {
    overlays = [
      inputs.nur.overlay
    ];
  };
}