{ config, lib, ... }:

with lib;

mkIf (elem "zsh" config.machine.conffiles) {
  programs.zsh = {
    enable = true;
    autosuggestions.enable = true;
    syntaxHighlighting.enable = true;
    shellAliases = {
      cat = ''bat --paging=never --theme="Solarized (dark)"'';
      less = ''bat --paging=always --style=changes --color=always --theme="Solarized (dark)"'';
      ls = "exa";
      l = "exa -abgHhl@ --git --color=always --group-directories-first";
      tree = "exa --tree --color=always";
      ustrip = "sed -e '/\.service\|\.timer\|\.target\|\.socket\|\.slice\|\.scope\|\.path\|\.mount\|\.device)/!d' -e 's/loaded.*$//g' -e 's/^  \|^● //g'";
      lsunits = "systemctl list-units | ustrip";
    };

    shellInit = ''
      function ll()  { exa -abgHhl@ --git --color=always --group-directories-first $@ | bat --paging=always --style=changes --color=always --theme="Solarized (dark)" }
      function lln() { exa -abgHhl@ --git --color=always --group-directories-first $@ | bat --paging=always --style=changes --color=always --theme="Solarized (dark)" -n }
      function lszip() { unzip -l $@ 2>&1 | sed -e "1,3d" -e "s/^.*:.. *//g" | head --lines=-2 }
      function rwhich() { realpath $(which $@) }
      function cdf() { cd $(rwhich $@ | sed "s/$@$//") }
      function sfu() { lsunits | rg -i $@ }
      function map() { for f in "$\{@:2\}"; do; eval $1 \"$f\"; done }
    '';

    ohMyZsh = {
      enable = true;
      plugins = [ "cabal" "docker" "gitfast" "python" "pip" "sudo" "systemd" "man" ];
      theme = "gentoo";
    };
  };
}