commit 5c56d99d6fc824e10eaa569d872ba621afc3cbb5 Author: Jonas H Date: Fri Feb 27 22:16:10 2026 +0100 Initial dotfiles setup with dot-add helper diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f425c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Stow metadata +.stow-local-ignore diff --git a/dot-add b/dot-add new file mode 100755 index 0000000..2c5a374 --- /dev/null +++ b/dot-add @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# dot-add: Move a config file into the dotfiles repo and stow it. +# +# Usage: dot-add +# +# Example: dot-add sway ~/.config/sway/config +# dot-add alacritty ~/.config/alacritty/alacritty.toml + +set -euo pipefail + +DOTFILES_DIR="$(cd "$(dirname "$0")" && pwd)" + +if [[ $# -ne 2 ]]; then + echo "Usage: dot-add " + echo " package: name for the stow package (e.g. sway, alacritty)" + echo " file: path to the file (absolute or relative to HOME)" + exit 1 +fi + +PACKAGE="$1" +FILE="$(realpath "$2")" + +if [[ ! -e "$FILE" ]]; then + echo "Error: '$FILE' does not exist" + exit 1 +fi + +if [[ ! "$FILE" == "$HOME/"* ]]; then + echo "Error: file must be under \$HOME ($HOME)" + exit 1 +fi + +# Relative path from HOME (e.g. .config/sway/config) +REL="${FILE#$HOME/}" + +DEST_DIR="$DOTFILES_DIR/$PACKAGE/$(dirname "$REL")" +DEST="$DOTFILES_DIR/$PACKAGE/$REL" + +mkdir -p "$DEST_DIR" +mv "$FILE" "$DEST" +echo "Moved: $FILE -> $DEST" + +# Stow the package (restow if already stowed) +stow --dir="$DOTFILES_DIR" --target="$HOME" --restow "$PACKAGE" +echo "Stowed: $PACKAGE" +echo "" +echo "Next steps:" +echo " cd ~/dotfiles" +echo " git add $PACKAGE/$REL" +echo " git commit -m 'add $REL'"