{ config, lib, ... }: { # Karabiner-Elements destroys file-level symlinks (unlink + rewrite), but # directory-level symlinks survive. Point ~/.config/karabiner at the repo # directory so changes are tracked in git and Karabiner can write freely. home.activation.karabinerConfig = lib.hm.dag.entryAfter [ "writeBoundary" ] '' karabiner_link="${config.home.homeDirectory}/.config/karabiner" karabiner_src="/Users/rathi/Documents/GitHub/nix/config/karabiner" if [ -L "$karabiner_link" ]; then # Already a symlink - nothing to do : elif [ -d "$karabiner_link" ]; then # Real directory exists - remove it, replace with symlink rm -rf "$karabiner_link" ln -s "$karabiner_src" "$karabiner_link" else ln -s "$karabiner_src" "$karabiner_link" fi ''; }