{ nix-config, lib, inputs, pkgs, ... }:
{

  home.packages = with pkgs; [
    inputs.isd.packages.x86_64-linux.default

    cmake
    cmake-format

    just
    readline
    rlwrap
    yt-dlp
    age
    figlet
    ffmpeg-full
    ouch
    pinentry
    gcr
    gnutar
    libnotify
    unzip
    zip
    tldr
    rich-cli
    gnupg
    imagemagick

    nix-du
    nix-melt
    usbutils
    pciutils
    util-linux
    coreutils
    binutils
    editorconfig-core-c
    exiftool
    libsecret
    shellcheck

    icloudpd
    pkg-config

    numbat

    nurl
    fastfetch
    nvd
    ripgrep-all
    silver-searcher

    age
    manix
    caligula

    dua

    tree
    emoji-picker

    sox
    imgcat
    ghostscript
    playerctl
    tesseract
    dockfmt
    trash-cli
    poppler_utils

    fishPlugins.foreign-env
    fishPlugins.fzf-fish
    fishPlugins.bass
    fishPlugins.autopair
    fishPlugins.forgit
    fishPlugins.colored-man-pages

    television
  ];

  programs = {
    nix-index = {
      enable = true;
      enableFishIntegration = true;
    };
    direnv = {
      enable = true;
      nix-direnv.enable = true;
    };
    fish = {
      enable = true;
      shellAliases = {
        "em" = "emacsclient -n -r";
        "mkdir" = "mkdir -pv";
      };
      interactiveShellInit = ''
      bind --erase \ct
      fzf_configure_bindings --variables=\e\cv
      '';
      plugins = [
        {
          name = "upto";
          src = pkgs.fetchFromGitHub {
            owner = "Markcial";
            repo = "upto";
            rev = "2d1f35453fb55747d50da8c1cb1809840f99a646";
            sha256 = "sha256-Lv2XtP2x9dkIkUUjMBWVpAs/l55Ztu7gIjKYH6ZzK4s=";
          };
        }
      ];
    };
    zoxide = {
      enableFishIntegration = true;
      enable = true;
    };
    starship = {
      enableFishIntegration = true;
      enable = true;
    };
    ripgrep = {
      enable = true;
      package = (pkgs.ripgrep.override {withPCRE2 = true;});
    };
    thefuck = {
      enableFishIntegration = true;
      enable = true;
    };
    wezterm = {
      enable = true;
      package = inputs.wezterm.packages.${pkgs.system}.default;
    };
    bat = {
      enable = true;
    };
    eza = {
      enable = true;
      enableFishIntegration = true;
      git = true;
      icons = "auto";
      colors = "auto";
    };
    fd = {
      enable = true;
    };
    fzf = {
      enable = true;
      enableFishIntegration = false;
    };
    broot = {
      enable = true;
    };
    lazygit.enable = true;
    jq.enable = true;
    rbw = {
      enable = true;
      package = nix-config.packages.x86_64-linux.rbw-latest;
    };
  };

  xdg.configFile."starship.toml".source = ./shell-conf/starship/starship.toml;
  xdg.configFile."wezterm" = {
    recursive = true;
    source = ./shell-conf/wezterm;
  };

  xdg.configFile."rbw".source = ./shell-conf/rbw;
  xdg.configFile."isd_tui/config.yaml".source = ./shell-conf/isd_tui/config.yaml;

  home.file.".config/fish/functions" = {
    source = ./shell-conf/fish/functions;
    recursive = true;
  };

  home.file.".config/fish/completions" = {
    source = ./shell-conf/fish/completions;
    recursive = true;
  };

  home.file.".local/share/flf".source = ./shell-conf/flf;

}
