diff --git a/home/fhauser/applications/default.nix b/home/fhauser/applications/default.nix index dd1ba3e..f6b97d9 100644 --- a/home/fhauser/applications/default.nix +++ b/home/fhauser/applications/default.nix @@ -90,28 +90,35 @@ modem-manager-gui ]; - #TODO: Write module - activation.statefulConfigSymlinks = - config.lib.dag.entryAfter [ "writeBoundary" ] '' - set -eo pipefail + #TODO: Write module + activation.statefulConfigSymlinks = + config.lib.dag.entryAfter [ "writeBoundary" ] '' + set -eo pipefail - STATEFUL_CONFS=( - ".config/spotify" - ".mozilla" - ".password-store" - ) - for STATEFUL_CONF in ''${STATEFUL_CONFS[@]}; do - if [ -e "$STATEFUL_CONF" ] && [ ! -h "$STATEFUL_CONF" ]; then - echo "File $STATEFUL_CONF already exists, exiting!" >&2 - exit 1 + STATEFUL_ROOT="$HOME/.stateful" + if [ ! -d "$STATEFUL_ROOT" ]; then + $DRY_RUN_CMD mkdir "$STATEFUL_ROOT" fi - if [ -h "$STATEFUL_CONF" ]; then - rm "$STATEFUL_CONF" - fi + STATEFUL_CONFS=( + ".config/spotify" + ".mozilla" + ".password-store" + ) + for STATEFUL_CONF in ''${STATEFUL_CONFS[@]}; do + if [ -e "$STATEFUL_CONF" ] && [ ! -h "$STATEFUL_CONF" ]; then + echo "File $STATEFUL_CONF already exists, exiting!" >&2 + exit 1 + fi - $DRY_RUN_CMD ln -s $VERBOSE_ARG "$HOME/.stateful/$STATEFUL_CONF" "$HOME/$STATEFUL_CONF" - done - ''; + if [ -h "$STATEFUL_CONF" ]; then + $DRY_RUN_CMD rm "$STATEFUL_CONF" + fi + + STATEFUL_CONF_DIR="$STATEFUL_ROOT/$STATEFUL_CONF" + $DRY_RUN_CMD mkdir -p "$STATEFUL_CONF_DIR" + $DRY_RUN_CMD ln -s $VERBOSE_ARG "$STATEFUL_CONF_DIR" "$HOME/$STATEFUL_CONF" + done + ''; }; }