{ pkgs, lib, config, ... }:

let

  # why not just use functions normally? ctrl-alt-e is why!
  _tmpfn_name_ = "_tmpfn_ex4aiNgu_"; # pwgen ftw
  mkArgsAlias = alias: ''${_tmpfn_name_}() { unset -f ${_tmpfn_name_}; ${alias}; }; ${_tmpfn_name_}'';

in

{
  programs.tealdeer.enable = true;
  programs.tealdeer.settings.updates.auto_update = true;

  home.packages = lib.filter (x: x != null) (with pkgs; [
    wakeonlan
    android-tools # adb

    xclip # fairly minimal

    #tldr
    stress # brrr
    retry # retry command with optional backoff
    glances # yet another htop
    # bottom # yet another htop
    # axel aria aria2 # brrr
    # silver-searcher # 'ag'
    # comby # ast-based source code rewrite
    gron     # grep-able json
    fastgron # grep-able json
    # xq   # faster jq alternatives (borken build)
    gojq # faster jq alternatives
    # yq # jq wrapper with more formats, includes yq (yaml), xq (xml) and tomlq
    (pkgs.linkFarm yq {
      # jq wrapper with more formats, includes yq (yaml), xq (xml) and tomlq
      "bin/yq" = lib.getExe' pkgs.yq "yq";
      "bin/tomlq" = lib.getExe' pkgs.yq "tomlq";
      # "bin/xq" = lib.getExe' pkgs.yq "xq"; # conflict with the speedy xq
    })
    fx # jq tui viewer
    ijq # interactive jq
    #fq # jq for binaries
    xh # "friendly fast curl"
    # mdq # markdown queries
    (pkgs.xan or null) # a jq for csv, zsv
    # xee # xml xpath queries
    pkgs.unstable.just # justfile
    gum
    mprocs
    systemctl-tui
    # sysz
    duf # df alternative
    #dust # better du
    hexyl # better hexdump
    #xplr # tui file explorer
    aha # ansi colors to html
    (pkgs.colorized-logs or unstable.colorized-logs) # ansi2txt, pipetty
    viu # kitty icat/chafa alternative
  ]);

  #TODO: sshuttle "vpn"

  home.shellAliases.icat = "viu";
}
