{ pkgs, hyper, ... }:
{
  imports = [
    ./home-modules/auto-mount.nix
    ./home-modules/bash.nix
    ./home-modules/bitwarden.nix
    ./home-modules/calendar.nix
    ./home-modules/chatterino.nix
    ./home-modules/clipboard.nix
    ./home-modules/color-pallete.nix
    ./home-modules/direnv.nix
    ./home-modules/discord.nix
    ./home-modules/email.nix
    ./home-modules/firefox.nix
    ./home-modules/fish.nix
    ./home-modules/games.nix
    ./home-modules/gestures.nix
    ./home-modules/ghostty.nix
    ./home-modules/gimp.nix
    ./home-modules/git.nix
    ./home-modules/gpg.nix
    ./home-modules/gtk.nix
    ./home-modules/helix.nix
    ./home-modules/hyprland-autoname-workspaces.nix
    ./home-modules/hyprland.nix
    ./home-modules/kitty.nix
    ./home-modules/latex.nix
    ./home-modules/mako.nix
    # ./home-modules/matrix.nix
    # ./home-modules/nm.nix
    ./home-modules/nh.nix
    ./home-modules/nixd.nix
    ./home-modules/nvidia.nix
    ./home-modules/nxgs.nix
    ./home-modules/obs.nix
    ./home-modules/office.nix
    ./home-modules/ollama.nix
    ./home-modules/pandoc.nix
    ./home-modules/pnx.nix
    ./home-modules/programming/c.nix
    ./home-modules/programming/gleam.nix
    ./home-modules/programming/go.nix
    ./home-modules/programming/java.nix
    ./home-modules/programming/js.nix
    ./home-modules/programming/python.nix
    ./home-modules/qt.nix
    ./home-modules/rofi.nix
    ./home-modules/scanning.nix
    ./home-modules/sent.nix
    ./home-modules/sops.nix
    ./home-modules/ssh.nix
    ./home-modules/starship.nix
    ./home-modules/tts.nix
    ./home-modules/vale.nix
    ./home-modules/virt-manager.nix
    ./home-modules/vscode.nix
    ./home-modules/wallpaper-to-colors.nix
    ./home-modules/waybar.nix
    ./home-modules/wlogout.nix
    ./home-modules/yazi.nix
    ./home-modules/zathura.nix
    ./home-modules/zoxide.nix
  ] ++ (if (hyper.host == "NxACE") then [ 
    ./home-modules/nx2site.nix
    ./home-modules/nx2site-backup.nix
  ] else []);
  home.username = hyper.user;
  # home.homeDirectory = hyper.home; # for some reason you cant use hyper.home here
    home.homeDirectory = "/home/${hyper.user}";
  home.stateVersion = pkgs.version;
  home.packages = with pkgs; [
    bat
    brightnessctl
    browsh
    chromium 
    cmake
    dig
    du-dust
    exiftool
    eza
    ffmpeg
    figlet
    fontpreview
    fzf
    glib
    glow
    gnumake
    gsettings-desktop-schemas
    imagemagick
    imv
    jq
    lolcat
    lynx
    mediainfo
    mpv
    neofetch
    pavucontrol
    pdfgrep
    piper-tts
    pipes
    playerctl
    pv
    qbittorrent
    reflex
    ripgrep
    screen
    spicetify-cli
    sssnake
    swww
    systemctl-tui
    tldr
    unstable.spotify 
    w3m
    wev
    wl-clipboard
    xclip
    xfce.thunar
    yt-dlp
  ] ++ (if (hyper.host != "NxACE") then [
    signal-desktop
    obsidian
    zoom-us
    inkscape
  ] else []);

  xdg = {
    enable = true;
    configHome = "${hyper.home}.config";
    cacheHome = "${hyper.home}.cache";
    dataHome = "${hyper.home}.local/share";
    stateHome = "${hyper.home}.local/state";
    mimeApps = {
      enable =  true;
      defaultApplications =  let
          browser = "firefox.desktop";
        in {
          "default-web-browser" = [ browser ];
          "text/html" = [ browser ];
          "text/htm" = [ browser ];
          "x-scheme-handler/http" = [ browser ];
          "x-scheme-handler/https" = [ browser ];
          "x-scheme-handler/about" = [ browser ];
          "x-scheme-handler/unknown" = [ browser ];
          "x-scheme-handler/mailto" = "thunderbird.desktop";
          "image/png" = "imv.desktop";
          "image/jpg" = "imv.desktop";
          "image/jpeg" = "imv.desktop";
          "image/webp" = "imv.desktop";
          "image/gif" = "imv.desktop";
          "application/pdf" = "zathura.desktop";
          "inode/directory" = "thunar.desktop";
        };
    };
  };
  # Wayland, X, etc. support for session vars 
  # systemd.user.sessionVariables = home.sessionVariables;

  # Let Home Manager install and manage itself.
  programs.home-manager.enable = true;
}
