{ self, pkgs, ... }:
{
  home.packages = with pkgs; [

    # essentials
    (wpa_supplicant_gui.overrideAttrs (prev: {
      # better desktop application name. "wpa_gui" kinda sucks
      postInstall = prev.postInstall + ''

       substituteInPlace $out/share/applications/wpa_gui.desktop --replace "Name=wpa_gui" "Name=Manage Wifi"
      '';
    })) # manage wifi
    pcmanfm
    xdg-utils # used for xdg-open
    snapper-gui

    # graphics
    evince # pdf viewer
    gimp
    ffmpeg

    # sound
    pavucontrol
    x32edit

    # bluetooth
    blueman

    # internet
    google-chrome

    # messaging
    discord
    tdesktop
    element-desktop
    gomuks # alternative matrix client

    # games
    prismlauncher # minecraft, but it actually works # not anymore lol
    superTuxKart

    # yubikey and password stuff
    yubikey-manager
    yubikey-manager-qt
    yubioath-flutter
    bitwarden
    pass

    # misc
    asciinema
    neofetch # obligatory
    virt-manager
    jetbrains.idea-community
    powerline-fonts
    croc # send files anywhere

    # programming languages
    cargo
    rustc
    rustfmt
    gcc
    self.packages.x86_64-linux.adguardian-term

    # libs
    libyubikey
    libfido2
    # (pkgs.texlive.combine {
    #   inherit (pkgs.texlive) scheme-medium;
    # })
  ];

  services.kdeconnect = {
    enable = true;
    indicator = true;
  };

  xdg.mimeApps = {
    enable = true;
    defaultApplications =
      let
        image-viewers = [ "imv.desktop" "gimp.desktop" "swappy.desktop" "org.qutebrowser.qutebrowser.desktop" "google-chrome.desktop" ];
        browsers = [ "google-chrome.desktop" "org.qutebrowser.qutebrowser.desktop" ];
      in
      {
        "application/pdf" = [ "org.gnome.Evince.desktop" ];
        "image/png" = image-viewers;
        "image/jpg" = image-viewers;
        "image/jpeg" = image-viewers;
        "image/tiff" = image-viewers;
        "image/gif" = image-viewers;
        "image/webp" = image-viewers;
        "image/ico" = image-viewers;
        "x-scheme-handler/http" = browsers;
        "x-scheme-handler/https" = browsers;
      };
  };
}