{ lib, inputs, hostname, username, desktop, hmStateVersion, ... }: {
  imports = [ 
    # Common configs
    # ./common/software/cli/bash.nix
    ./common/software/cli/fish.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
    ./common/software/cli/tmux.nix
    ./common/software/cli/atuin.nix
    ./common/software/cli/gpg.nix
    ./common/software/cli/zoxide.nix
      
    # User configs
    ./users/${username}

    # Theming
    inputs.stylix.homeManagerModules.stylix
    ../stylix

    # Secrets 
    inputs.sops-nix.homeManagerModules.sops
  ]
  ++ 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
  ;

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