{
  pkgs,
  inputs,
  ...
}: {
  imports = with inputs; [
    catppuccin.homeManagerModules.catppuccin
    chaotic.homeManagerModules.default
    hyprland.homeManagerModules.default
    nix-colors.homeManagerModules.default
    nix-index-database.hmModules.nix-index

    ./hyprland
    ./screenshot
  ];

  snowfallorg.user = {
    enable = true;
    name = "marshall";
  };

  colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;

  home = {
    packages = with pkgs;
      [
        alejandra
        bitwarden-cli
        bitwarden-desktop
        duf
        eternal-terminal
        equibop
        firefox
        glow
        grc
        jdk21
        killall
        libnotify
        loupe
        mullvad-vpn
        nodejs
        playerctl
        prismlauncher
        (python312.withPackages
          (p:
            with p; [
              epc
              orjson
              sexpdata
              six
              setuptools
              paramiko
              rapidfuzz
            ]))
        telegram-desktop
      ]
      ++ (with inputs; [
        nixvim.packages.${pkgs.system}.default
        zen-browser.packages.${pkgs.system}.default
      ]);

    stateVersion = "25.05";
  };

  dconf.settings = {
    "org/virt-manager/virt-manager/connections" = {
      autoconnect = ["qemu:///system"];
      uris = ["qemu:///system"];
    };
  };

  xdg.enable = true;

  catppuccin = {
    enable = true;
    pointerCursor.enable = true;
    flavor = "mocha";
    accent = "green";
  };

  programs = {
    wezterm.extraConfig = builtins.readFile ./wezterm.lua;

    git = {
      extraConfig.credential.helper = "libsecret";
      signing.key = "F24149297CE98BE0";
    };

    mpv = {
      enable = true;
      scripts = [pkgs.mpvScripts.uosc];
      catppuccin.enable = true;
    };
  };

  systemd.user.startServices = "sd-switch";
}