39 lines
1023 B
Nix
39 lines
1023 B
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.stylePreview;
|
|
|
|
styleScript = pkgs.writeShellScriptBin "style" ''
|
|
# Display current Stylix base16 theme colors
|
|
PALETTE="$HOME/.config/stylix/palette.json"
|
|
|
|
if [ ! -f "$PALETTE" ]; then
|
|
echo "Error: Stylix palette not found at $PALETTE"
|
|
exit 1
|
|
fi
|
|
|
|
# Extract scheme name
|
|
SCHEME=$(${pkgs.jq}/bin/jq -r '.scheme // "Unknown"' "$PALETTE")
|
|
echo -e "\033[1m$SCHEME\033[0m"
|
|
echo
|
|
|
|
# Display each base color with name and swatch
|
|
for i in 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F; do
|
|
hex=$(${pkgs.jq}/bin/jq -r ".base$i" "$PALETTE")
|
|
r=$((16#''${hex:0:2}))
|
|
g=$((16#''${hex:2:2}))
|
|
b=$((16#''${hex:4:2}))
|
|
printf "base%s \033[48;2;%d;%d;%dm \033[0m #%s\n" "$i" "$r" "$g" "$b" "$hex"
|
|
done
|
|
'';
|
|
in
|
|
{
|
|
options.stylePreview = {
|
|
enable = lib.mkEnableOption "style command for previewing Stylix theme colors";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.packages = [ styleScript ];
|
|
};
|
|
}
|