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

with lib;

let

  xterm-colors = pkgs.writeShellScriptBin "256-xterm-colors"
    # sh
    ''
      for i in {0..255} ; do
        printf "\x1b[38;5;%sm%3d\e[0m " "$i" "$i"
        if (( i == 15 )) || (( i > 15 )) && (( (i-15) % 6 == 0 )); then
            printf "\n";
        fi
      done
    '';

  xterm-background-colors = pkgs.writeShellScriptBin
    "256-xterm-colors-background"
    # sh
    ''
      for i in {0..255} ; do
        printf "\x1b[48;5;%sm%3d\e[0m " "$i" "$i"
        if (( i == 15 )) || (( i > 15 )) && (( (i-15) % 6 == 0 )); then
            printf "\n";
        fi
      done
    '';

  cfg = config.programs.custom.shellTools;

in
{

  options.programs.custom.shellTools.enable =
    mkEnableOption "enable shell tools";

  config = mkIf cfg.enable {
    environment.systemPackages = [ xterm-colors xterm-background-colors ];
  };

}