From 64205ebebcbeb290bc526ede14764bd0db56fd2f Mon Sep 17 00:00:00 2001 From: Jakob Lechner Date: Thu, 16 Nov 2023 01:32:43 +0000 Subject: [PATCH] Rewrite dynamic-colors script in Python --- home-manager/modules/dynamic-colors.nix | 56 ++++++++++++++++++++----- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/home-manager/modules/dynamic-colors.nix b/home-manager/modules/dynamic-colors.nix index 23b2568..87c8918 100644 --- a/home-manager/modules/dynamic-colors.nix +++ b/home-manager/modules/dynamic-colors.nix @@ -1,21 +1,55 @@ { nixosConfig, lib, pkgs, ... }: let - dynamic-colors = pkgs.writeShellScriptBin "dynamic-colors" /* bash */ '' - case "''$1" in - light|dark) - if [ -e "''$HOME/.config/alacritty/alacritty-''$1.yml" ]; then - ln -sf "''$HOME/.config/alacritty/alacritty-''$1.yml" "$HOME/.config/alacritty/alacritty.yml" - fi - ;; - *) - echo "unknown command ''$1" >&2 - exit 1 - esac + dynamic-colors = pkgs.writers.writePython3Bin "dynamic-colors" { } '' + import os + import pathlib + import sys + + + config = [ + ( + '~/.config/alacritty', + 'alacritty-light.yml', + 'alacritty-dark.yml', + 'alacritty.yml', + ) + ] + + + def main(): + command, = sys.argv[1:] + for directory, light_file, dark_file, config_file in config: + directory = pathlib.Path(directory).expanduser() + dst = directory.joinpath(config_file) + + if command in ('light', 'dark'): + if dst.exists() and dst.is_symlink: + os.remove(dst) + + src = { + 'light': light_file, + 'dark': dark_file, + }[command] + + os.symlink(src, dst) + + else: + if dst.exists(): + continue + + os.symlink(light_file, dst) + + + if __name__ == '__main__': + main() ''; in { home.packages = [ dynamic-colors ]; + home.activation.dynamic-colors = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + $DRY_RUN_CMD ${dynamic-colors}/bin/dynamic-colors install + ''; }