{
  pkgs,
}:
pkgs.writeShellScriptBin "chscheme" ''
selected_scheme=$(/usr/bin/env ls "$(nix-build '<nixpkgs>' -A base16-schemes)"/share/themes | \
    sed 's/\.yaml//g' | \
    fzf --preview 'cat $(nix-build "<nixpkgs>" -A base16-schemes)/share/themes/{}.yaml | \
    while IFS=": " read -r key value; do \
        if [[ $key =~ base0[0-9A-F] ]]; then \
            clean_value=$(echo $value | tr -d "\""); \
            r=$((16#''${clean_value:0:2})); \
            g=$((16#''${clean_value:2:2})); \
            b=$((16#''${clean_value:4:2})); \
            printf "\033[48;2;%d;%d;%dm %-20s %s \033[0m\n" $r $g $b $key $clean_value; \
        fi; \
    done')

if [[ -z "$selected_scheme" ]]; then
    echo "Aborting color scheme change."
    exit 1
fi

echo "$selected_scheme" | xargs -I {} sed -i '/base16scheme\s*=\s*"/s/"[^"]*"/"{}"/' "$FLAKEPATH"/flake.nix
if [ $? -ne 0 ]; then
    echo "Failed to change color scheme."
    exit 1
fi

echo "Successfully changed system color scheme. Rebuild now?"
select choice in "Yes" "No"; do
    case $choice in
        "Yes")
            rebuild
            exit 0
            ;;
        "No")
            echo "Exiting..."
            exit 0
            ;;
    esac
done
''
