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

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

  home = {
    packages = with pkgs;
      [
        alejandra
        bit
        cargo-edit
        cargo-udeps
        cmake
        duf
        emacs-lsp-booster
        eternal-terminal
        grc
        huniq
        hurl
        keybase
        keychain
        monolith
        nix-output-monitor
        nix-prefetch-scripts
        nil
        nixd
        nodePackages_latest.nodejs
        nurl
        pinentry_mac
        pnpm
        rm-improved
        rnr
        slack
        stylua
        tailspin
        tokei
        typst
        typst-live
        typstfmt
        unrar
        unzip
        upx
        vgrep
        wget
        xcp
        xh

        (emacs30-pgtk.overrideAttrs (old: let
          sources = import ../../../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub;};

          getPatch = name: sources.${name}.src;
        in {
          patches =
            (old.patches or [])
            ++ [
              # Fix OS window role (needed for window managers like yabai)
              (getPatch "fix-window-role")
              # Use poll instead of select to get file descriptors
              (getPatch "poll")
              # Enable rounded window with no decoration
              (getPatch "round-undecorated-frame")
              # Make Emacs aware of OS-level light/dark mode
              (getPatch "system-appearance")
            ];
        }))

        (python312.withPackages (pkgs:
          with pkgs; [
            epc
            orjson
            sexpdata
            six
            setuptools
            paramiko
            rapidfuzz
          ]))
      ]
      ++ (with inputs; [nixvim.packages.${pkgs.system}.default]);

    stateVersion = "24.05";
  };

  programs = {
    bacon.enable = true;
    btop.enable = true;
    bun.enable = true;
    gpg.enable = true;
    skim.enable = false;
    tealdeer.enable = false;
    wezterm.extraConfig = builtins.readFile ./wezterm.lua;

    jujutsu = {
      enable = true;
      settings = {
        user = {
          email = "mars@pupbrained.xyz";
          name = "Mars";
        };
      };
    };

    git = {
      extraConfig.credential.helper = "osxkeychain";
      signing.key = "874E22DF2F9DFCB5";
    };
  };
}
