{
  config,
  lib,
  pkgs,
  ...
}: {
  home = {
    username = "chase";
    homeDirectory = "/home/chase";
    preferXdgDirectories = true;
    file = {
      "scripts" = {
        source = config.lib.file.mkOutOfStoreSymlink ./scripts;
        recursive = true;
      };
    };
    sessionPath = [
      "$HOME/scripts"
    ];
    sessionVariables = {
      SSH_AUTH_SOCK = /home/chase/.bitwarden-ssh-agent.sock;
      ELECTRON_OZONE_PLATFORM_HINT = "wayland";
    };
    shellAliases = {
      gs = "git status";
      "..." = "cd ../..";
    };
  };

  xdg = {
    enable = true;
    userDirs.enable = true;
    configFile = {
      "emacs/early-init.el" = {
        source = config.lib.file.mkOutOfStoreSymlink ./emacs/early-init.el;
      };
      "emacs/init.el" = {
        source = config.lib.file.mkOutOfStoreSymlink ./emacs/init.el;
      };
    };
  };

  catppuccin = {
    enable = true;
    flavor = "mocha";
  };

  #  programs.bash = {
  #    enable = true;
  #    enableCompletion = true;
  #    historyIgnore = [
  #      "ls"
  #      "ls -a"
  #      "ls -l"
  #      "ls -la"
  #      "cd"
  #      "exit"
  #    ];
  #  };

  programs.zsh = {
    enable = true;
    enableCompletion = true;
    autosuggestion.enable = true;
    history = {
      append = true;
      extended = true;
      ignoreDups = true;
      ignorePatterns = [
        "ls *"
        "cd *"
        "gs"
        "exit"
      ];
    };
    syntaxHighlighting.enable = true;
  };

  programs.bat.enable = true;

  programs.btop.enable = true;

  programs.emacs = {
    enable = true;
    package = lib.mkDefault pkgs.emacs-nox;
  };

  programs.fastfetch = {
    enable = true;
    settings = {
      logo = {
        source = "nixos_small";
      };
      display = {
        size = {
          binaryPrefix = "si";
        };
        color = "blue";
        separator = ": ";
      };
      modules = [
        "title"
        "separator"
        "os"
        "host"
        "uptime"
        "kernel"
        "packages"
        "lm"
        "de"
        "wm"
        "shell"
        "terminal"
        "terminalfont"
        {
          key = "Display";
          type = "display";
        }
        "cpu"
        "gpu"
        "memory"
        "swap"
        "disk"
        "datetime"
        "colors"
        "break"
        "player"
        "media"
      ];
    };
  };

  programs.git = {
    enable = true;
    userName = "chase";
    userEmail = "chase@cathoderaytube.net";
    extraConfig = {
      init.defaultBranch = "main";
    };
  };

  programs.git-credential-oauth.enable = true;

  programs.gpg = {
    enable = true;
    homedir = "${config.xdg.dataHome}/gnupg";
  };

  programs.htop.enable = true;

  programs.rmpc = {
    enable = true;
    config = ''
      (
        enable_config_hot_reload: true,
         )
    '';
  };

  programs.starship = {
    enable = true;
    enableBashIntegration = true;
    enableZshIntegration = true;
    settings = {
      line_break = {
        disabled = true;
      };
      username = {
        style_user = "bold blue";
        format = "[$user]($style)@";
        show_always = true;
      };
      hostname = {
        style = "bold cyan";
        format = "[$ssh_symbol$hostname]($style) ";
        ssh_only = false;
      };
      directory = {
        style = "bold green";
      };
    };
  };

  programs.texlive.enable = true;

  programs.yazi = {
    enable = true;
    enableBashIntegration = true;
    enableZshIntegration = true;
  };

  programs.yt-dlp = {
    enable = true;
    settings = {
      cookies-from-browser = "firefox";
      write-description = true;
      write-info-json = true;
      embed-info-json = true;
      embed-chapters = true;
      embed-metadata = true;
      write-subs = true;
      embed-subs = true;
      sub-langs = "en.*,ja";
      write-thumbnail = true;
      embed-thumbnail = true;
      sponsorblock-mark = "all";
    };
  };

  home.packages = with pkgs; [
    aspell
    aspellDicts.en
    aspellDicts.en-computers
    aspellDicts.en-science
    ffmpeg
    font-awesome
    fortune
    imagemagick
    lm_sensors
    lolcat
    nerd-fonts.blex-mono
  ];
}
