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

  home = {
    inherit username;
    stateVersion = hmStateVersion;
    homeDirectory = "/home/${username}";
    sessionPath = [ "$HOME/.local/bin" ];
    pointerCursor = {
      gtk.enable = true;
      package = pkgs.catppuccin-cursors.mochaLight;
      name = "Catppuccin-Mocha-Light-Cursors";
      size = 22;
    };
  };

  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
    ];
  };
}