fix
Some checks are pending
quality / changes (push) Waiting to run
quality / Flake Check (push) Blocked by required conditions
quality / Nix Format Check (push) Blocked by required conditions
quality / Deploy netty (push) Blocked by required conditions

This commit is contained in:
Harivansh Rathi 2026-04-08 18:27:05 -04:00
parent c84611bdf1
commit 856f200244
4 changed files with 134 additions and 102 deletions

View file

@ -14,6 +14,8 @@ in
++ lib.optionals hostConfig.isDarwin (builtins.attrValues customScripts.darwinPackages); ++ lib.optionals hostConfig.isDarwin (builtins.attrValues customScripts.darwinPackages);
home.activation.initializeThemeState = lib.hm.dag.entryAfter [ "writeBoundary" ] '' home.activation.initializeThemeState = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
${customScripts.themeAssetsText}
mkdir -p "${customScripts.theme.paths.stateDir}" \ mkdir -p "${customScripts.theme.paths.stateDir}" \
"${customScripts.theme.paths.fzfDir}" \ "${customScripts.theme.paths.fzfDir}" \
"${customScripts.theme.paths.ghosttyDir}" \ "${customScripts.theme.paths.ghosttyDir}" \
@ -25,36 +27,20 @@ in
mode=$(tr -d '[:space:]' < "${customScripts.theme.paths.stateFile}") mode=$(tr -d '[:space:]' < "${customScripts.theme.paths.stateFile}")
else else
mode="${customScripts.theme.defaultMode}" mode="${customScripts.theme.defaultMode}"
printf '%s\n' "$mode" > "${customScripts.theme.paths.stateFile}"
fi fi
case "$mode" in mode="$(theme_normalize_mode "$mode")"
light) printf '%s\n' "$mode" > "${customScripts.theme.paths.stateFile}"
fzf_target="${customScripts.theme.paths.fzfDir}/cozybox-light" theme_load_mode_assets "$mode"
ghostty_target="${customScripts.theme.paths.ghosttyDir}/cozybox-light"
tmux_target="${customScripts.tmuxConfigs.light}"
lazygit_target="${customScripts.theme.paths.lazygitDir}/config-light.yml"
;;
*)
printf '%s\n' "${customScripts.theme.defaultMode}" > "${customScripts.theme.paths.stateFile}"
fzf_target="${customScripts.theme.paths.fzfDir}/cozybox-dark"
ghostty_target="${customScripts.theme.paths.ghosttyDir}/cozybox-dark"
tmux_target="${customScripts.tmuxConfigs.dark}"
lazygit_target="${customScripts.theme.paths.lazygitDir}/config-dark.yml"
;;
esac
ln -sfn "$fzf_target" "${customScripts.theme.paths.fzfCurrentFile}" ln -sfn "$THEME_FZF_TARGET" "${customScripts.theme.paths.fzfCurrentFile}"
ln -sfn "$ghostty_target" "${customScripts.theme.paths.ghosttyCurrentFile}" ln -sfn "$THEME_GHOSTTY_TARGET" "${customScripts.theme.paths.ghosttyCurrentFile}"
ln -sfn "$tmux_target" "${customScripts.theme.paths.tmuxCurrentFile}" ln -sfn "$THEME_TMUX_TARGET" "${customScripts.theme.paths.tmuxCurrentFile}"
ln -sfn "$lazygit_target" "${customScripts.theme.paths.lazygitCurrentFile}" ln -sfn "$THEME_LAZYGIT_TARGET" "${customScripts.theme.paths.lazygitCurrentFile}"
${lib.optionalString hostConfig.isDarwin '' ${lib.optionalString hostConfig.isDarwin ''
lg_darwin="${config.home.homeDirectory}/Library/Application Support/lazygit" lg_darwin="${config.home.homeDirectory}/Library/Application Support/lazygit"
mkdir -p "$lg_darwin" mkdir -p "$lg_darwin"
case "$mode" in ln -sfn "$THEME_DARWIN_LAZYGIT_TARGET" "$lg_darwin/config.yml"
light) ln -sfn "$lg_darwin/config-light.yml" "$lg_darwin/config.yml" ;;
*) ln -sfn "$lg_darwin/config-dark.yml" "$lg_darwin/config.yml" ;;
esac
''} ''}
# seed wallpapers from static assets if no generated ones exist yet # seed wallpapers from static assets if no generated ones exist yet
@ -66,10 +52,6 @@ in
fi fi
# ensure wallpaper symlink points to active mode # ensure wallpaper symlink points to active mode
case "$mode" in ln -sfn "$THEME_WALLPAPER" "${customScripts.theme.wallpapers.current}"
light) wp_target="${customScripts.theme.wallpapers.light}" ;;
*) wp_target="${customScripts.theme.wallpapers.dark}" ;;
esac
ln -sfn "$wp_target" "${customScripts.theme.wallpapers.current}"
''; '';
} }

View file

@ -13,16 +13,20 @@ let
aquaNeutral = "#689d6a"; aquaNeutral = "#689d6a";
gray = "#928374"; gray = "#928374";
}; };
wallpaperGeneration = { wallpaperGeneration =
view = { let
# Lower zoom shows more terrain in each wallpaper. viewPresets = {
zoom = 11; close = 12;
tileConcurrency = 6; balanced = 11;
wide = 10;
}; };
contours = { densityPresets = {
# Higher levels produce denser contour lines. sparse = 14;
levels = 20; balanced = 20;
dense = 28;
}; };
view = "balanced";
density = "balanced";
candidatePool = { candidatePool = {
maxCached = 24; maxCached = 24;
randomAttempts = 20; randomAttempts = 20;
@ -32,6 +36,29 @@ let
enabled = true; enabled = true;
fontSize = 14; fontSize = 14;
}; };
in
{
inherit
candidatePool
density
label
view
;
presetValues = {
density = densityPresets;
view = viewPresets;
};
resolved = {
candidatePool = candidatePool;
contours = {
levels = densityPresets.${density};
};
label = label;
view = {
tileConcurrency = 6;
zoom = viewPresets.${view};
};
};
}; };
wallpapers = { wallpapers = {
dir = "${config.home.homeDirectory}/Pictures/Screensavers"; dir = "${config.home.homeDirectory}/Pictures/Screensavers";

View file

@ -12,11 +12,71 @@ let
}; };
wallpaperGenConfig = pkgs.writeText "wallpaper-gen-config.json" ( wallpaperGenConfig = pkgs.writeText "wallpaper-gen-config.json" (
builtins.toJSON theme.wallpapers.generation builtins.toJSON theme.wallpapers.generation.resolved
); );
wallpaperPython = pkgs.python3.withPackages (ps: [ ps.pillow ]); wallpaperPython = pkgs.python3.withPackages (ps: [ ps.pillow ]);
lazygitDarwinDir = "${config.home.homeDirectory}/Library/Application Support/lazygit";
modeAssets = {
dark = {
fzf = "${theme.paths.fzfDir}/cozybox-dark";
ghostty = "${theme.paths.ghosttyDir}/cozybox-dark";
tmux = "${tmuxConfigs.dark}";
lazygit = "${theme.paths.lazygitDir}/config-dark.yml";
darwinLazygit = "${lazygitDarwinDir}/config-dark.yml";
wallpaper = theme.wallpapers.dark;
appleDarkMode = "true";
};
light = {
fzf = "${theme.paths.fzfDir}/cozybox-light";
ghostty = "${theme.paths.ghosttyDir}/cozybox-light";
tmux = "${tmuxConfigs.light}";
lazygit = "${theme.paths.lazygitDir}/config-light.yml";
darwinLazygit = "${lazygitDarwinDir}/config-light.yml";
wallpaper = theme.wallpapers.light;
appleDarkMode = "false";
};
};
themeAssetsText = ''
theme_normalize_mode() {
case "$1" in
dark|light) printf '%s\n' "$1" ;;
*) printf '%s\n' '${theme.defaultMode}' ;;
esac
}
theme_load_mode_assets() {
local mode
mode="$(theme_normalize_mode "$1")"
case "$mode" in
light)
THEME_MODE='light'
THEME_FZF_TARGET='${modeAssets.light.fzf}'
THEME_GHOSTTY_TARGET='${modeAssets.light.ghostty}'
THEME_TMUX_TARGET='${modeAssets.light.tmux}'
THEME_LAZYGIT_TARGET='${modeAssets.light.lazygit}'
THEME_DARWIN_LAZYGIT_TARGET='${modeAssets.light.darwinLazygit}'
THEME_WALLPAPER='${modeAssets.light.wallpaper}'
THEME_APPLE_DARK_MODE=${modeAssets.light.appleDarkMode}
;;
*)
THEME_MODE='dark'
THEME_FZF_TARGET='${modeAssets.dark.fzf}'
THEME_GHOSTTY_TARGET='${modeAssets.dark.ghostty}'
THEME_TMUX_TARGET='${modeAssets.dark.tmux}'
THEME_LAZYGIT_TARGET='${modeAssets.dark.lazygit}'
THEME_DARWIN_LAZYGIT_TARGET='${modeAssets.dark.darwinLazygit}'
THEME_WALLPAPER='${modeAssets.dark.wallpaper}'
THEME_APPLE_DARK_MODE=${modeAssets.dark.appleDarkMode}
;;
esac
}
'';
mkScript = mkScript =
{ {
file, file,
@ -107,31 +167,20 @@ let
"@STATE_FILE@" = theme.paths.stateFile; "@STATE_FILE@" = theme.paths.stateFile;
"@FZF_DIR@" = theme.paths.fzfDir; "@FZF_DIR@" = theme.paths.fzfDir;
"@FZF_CURRENT_FILE@" = theme.paths.fzfCurrentFile; "@FZF_CURRENT_FILE@" = theme.paths.fzfCurrentFile;
"@FZF_DARK_FILE@" = "${theme.paths.fzfDir}/cozybox-dark";
"@FZF_LIGHT_FILE@" = "${theme.paths.fzfDir}/cozybox-light";
"@GHOSTTY_DIR@" = theme.paths.ghosttyDir; "@GHOSTTY_DIR@" = theme.paths.ghosttyDir;
"@GHOSTTY_CURRENT_FILE@" = theme.paths.ghosttyCurrentFile; "@GHOSTTY_CURRENT_FILE@" = theme.paths.ghosttyCurrentFile;
"@GHOSTTY_DARK_FILE@" = "${theme.paths.ghosttyDir}/cozybox-dark";
"@GHOSTTY_LIGHT_FILE@" = "${theme.paths.ghosttyDir}/cozybox-light";
"@TMUX_DIR@" = theme.paths.tmuxDir; "@TMUX_DIR@" = theme.paths.tmuxDir;
"@TMUX_CURRENT_FILE@" = theme.paths.tmuxCurrentFile; "@TMUX_CURRENT_FILE@" = theme.paths.tmuxCurrentFile;
"@TMUX_DARK_FILE@" = "${tmuxConfigs.dark}";
"@TMUX_LIGHT_FILE@" = "${tmuxConfigs.light}";
"@TMUX_CONFIG@" = "${config.xdg.configHome}/tmux/tmux.conf"; "@TMUX_CONFIG@" = "${config.xdg.configHome}/tmux/tmux.conf";
"@LAZYGIT_DIR@" = theme.paths.lazygitDir; "@LAZYGIT_DIR@" = theme.paths.lazygitDir;
"@LAZYGIT_CURRENT_FILE@" = theme.paths.lazygitCurrentFile; "@LAZYGIT_CURRENT_FILE@" = theme.paths.lazygitCurrentFile;
"@LAZYGIT_DARK_FILE@" = "${theme.paths.lazygitDir}/config-dark.yml"; "@LAZYGIT_DARWIN_DIR@" = lazygitDarwinDir;
"@LAZYGIT_LIGHT_FILE@" = "${theme.paths.lazygitDir}/config-light.yml"; "@LAZYGIT_DARWIN_FILE@" = "${lazygitDarwinDir}/config.yml";
"@LAZYGIT_DARWIN_DIR@" = "${config.home.homeDirectory}/Library/Application Support/lazygit";
"@LAZYGIT_DARWIN_FILE@" = "${config.home.homeDirectory}/Library/Application Support/lazygit/config.yml";
"@LAZYGIT_DARWIN_DARK_FILE@" = "${config.home.homeDirectory}/Library/Application Support/lazygit/config-dark.yml";
"@LAZYGIT_DARWIN_LIGHT_FILE@" = "${config.home.homeDirectory}/Library/Application Support/lazygit/config-light.yml";
"@WALLPAPER_DIR@" = theme.wallpapers.dir; "@WALLPAPER_DIR@" = theme.wallpapers.dir;
"@WALLPAPER_DARK_FILE@" = theme.wallpapers.dark;
"@WALLPAPER_LIGHT_FILE@" = theme.wallpapers.light;
"@WALLPAPER_CURRENT_FILE@" = theme.wallpapers.current; "@WALLPAPER_CURRENT_FILE@" = theme.wallpapers.current;
"@WALLPAPER_STATIC_DARK@" = "${theme.wallpapers.staticDark}"; "@WALLPAPER_STATIC_DARK@" = "${theme.wallpapers.staticDark}";
"@WALLPAPER_STATIC_LIGHT@" = "${theme.wallpapers.staticLight}"; "@WALLPAPER_STATIC_LIGHT@" = "${theme.wallpapers.staticLight}";
"@THEME_ASSETS_TEXT@" = themeAssetsText;
}; };
}; };
}; };
@ -166,6 +215,7 @@ in
darwinPackages darwinPackages
nettyPackages nettyPackages
theme theme
themeAssetsText
tmuxConfigs tmuxConfigs
; ;

View file

@ -14,6 +14,8 @@ read_mode() {
echo "@DEFAULT_MODE@" echo "@DEFAULT_MODE@"
} }
@THEME_ASSETS_TEXT@
set_wallpaper() { set_wallpaper() {
if [[ "$(uname -s)" == "Darwin" ]] && command -v osascript >/dev/null 2>&1; then if [[ "$(uname -s)" == "Darwin" ]] && command -v osascript >/dev/null 2>&1; then
if [[ -f "@WALLPAPER_CURRENT_FILE@" ]]; then if [[ -f "@WALLPAPER_CURRENT_FILE@" ]]; then
@ -31,43 +33,18 @@ set_wallpaper() {
link_mode_assets() { link_mode_assets() {
local mode="$1" local mode="$1"
local fzf_target theme_load_mode_assets "$mode"
local ghostty_target mode="$THEME_MODE"
local tmux_target
local apple_dark_mode
case "$mode" in
dark)
fzf_target="@FZF_DARK_FILE@"
ghostty_target="@GHOSTTY_DARK_FILE@"
tmux_target="@TMUX_DARK_FILE@"
lazygit_target="@LAZYGIT_DARK_FILE@"
wallpaper="@WALLPAPER_DARK_FILE@"
apple_dark_mode=true
;;
light)
fzf_target="@FZF_LIGHT_FILE@"
ghostty_target="@GHOSTTY_LIGHT_FILE@"
tmux_target="@TMUX_LIGHT_FILE@"
lazygit_target="@LAZYGIT_LIGHT_FILE@"
wallpaper="@WALLPAPER_LIGHT_FILE@"
apple_dark_mode=false
;;
*)
echo "invalid mode: $mode" >&2
exit 1
;;
esac
mkdir -p "@STATE_DIR@" "@FZF_DIR@" "@GHOSTTY_DIR@" "@TMUX_DIR@" "@LAZYGIT_DIR@" "@WALLPAPER_DIR@" mkdir -p "@STATE_DIR@" "@FZF_DIR@" "@GHOSTTY_DIR@" "@TMUX_DIR@" "@LAZYGIT_DIR@" "@WALLPAPER_DIR@"
printf '%s\n' "$mode" > "@STATE_FILE@" printf '%s\n' "$mode" > "@STATE_FILE@"
ln -sfn "$fzf_target" "@FZF_CURRENT_FILE@" ln -sfn "$THEME_FZF_TARGET" "@FZF_CURRENT_FILE@"
ln -sfn "$ghostty_target" "@GHOSTTY_CURRENT_FILE@" ln -sfn "$THEME_GHOSTTY_TARGET" "@GHOSTTY_CURRENT_FILE@"
ln -sfn "$tmux_target" "@TMUX_CURRENT_FILE@" ln -sfn "$THEME_TMUX_TARGET" "@TMUX_CURRENT_FILE@"
ln -sfn "$lazygit_target" "@LAZYGIT_CURRENT_FILE@" ln -sfn "$THEME_LAZYGIT_TARGET" "@LAZYGIT_CURRENT_FILE@"
if [[ -f "$wallpaper" ]]; then if [[ -f "$THEME_WALLPAPER" ]]; then
ln -sfn "$wallpaper" "@WALLPAPER_CURRENT_FILE@" ln -sfn "$THEME_WALLPAPER" "@WALLPAPER_CURRENT_FILE@"
fi fi
if command -v tmux >/dev/null 2>&1 && tmux start-server >/dev/null 2>&1; then if command -v tmux >/dev/null 2>&1 && tmux start-server >/dev/null 2>&1; then
@ -76,13 +53,9 @@ link_mode_assets() {
if [[ "$(uname -s)" == "Darwin" ]] && command -v osascript >/dev/null 2>&1; then if [[ "$(uname -s)" == "Darwin" ]] && command -v osascript >/dev/null 2>&1; then
mkdir -p "@LAZYGIT_DARWIN_DIR@" mkdir -p "@LAZYGIT_DARWIN_DIR@"
if [[ "$mode" == "dark" ]]; then ln -sfn "$THEME_DARWIN_LAZYGIT_TARGET" "@LAZYGIT_DARWIN_FILE@"
ln -sfn "@LAZYGIT_DARWIN_DARK_FILE@" "@LAZYGIT_DARWIN_FILE@"
else
ln -sfn "@LAZYGIT_DARWIN_LIGHT_FILE@" "@LAZYGIT_DARWIN_FILE@"
fi
osascript -e "tell application \"System Events\" to tell appearance preferences to set dark mode to ${apple_dark_mode}" >/dev/null 2>&1 || true osascript -e "tell application \"System Events\" to tell appearance preferences to set dark mode to ${THEME_APPLE_DARK_MODE}" >/dev/null 2>&1 || true
set_wallpaper set_wallpaper