{ lib, config, pkgs, inputs, hostname, system, username, desktop, theme, hmStateVersion, ... }: {
  imports = [ 
    # Common configs
    ./common/software/cli/bash.nix
    ./common/software/cli/git.nix
    ./common/software/cli/nixvim-base.nix
    ./common/software/cli/ssh.nix
    ./common/software/cli/btop.nix
    ./common/software/cli/starship.nix

    # User configs
    ./users/${username}

    # Theming
    inputs.stylix.homeManagerModules.stylix
    ../stylix/${theme}
  ]
  ++ lib.optional (builtins.isString desktop) ./common/software/gui                    # GUI packages
  ++ lib.optional (builtins.isString desktop) ./common/desktops/${desktop}             # Machine-agnostic desktop configs
  ++ lib.optional (builtins.isString desktop) ./hosts/${hostname}/desktops/${desktop}  # Machine-specific desktop configs
  ;

  home = {
    inherit username;
    stateVersion = hmStateVersion;
    homeDirectory = "/home/${username}";
    sessionPath = [ "$HOME/.local/bin" ];
  };
  
  nixpkgs = {
    overlays = [
      # Currently in use in the Firefox config
      inputs.nur.overlay
    ];
  };
}