A comprehensive dotfiles repository for managing configuration files and system packages across multiple machines using GNU Stow.
If you just want to apply existing configurations:
# Clone the repository
git clone <your-repo-url> ~/workspace/dotfiles
cd ~/workspace/dotfiles
# For Arch Linux (Nickel)
yay -S --needed - < nickel/pkglist.txt
stow -t ~ nickel
# For macOS (Silver)
brew install --force $(cat silver/pkglist.txt)
stow -t ~ silverFor Arch Linux:
- Fresh Arch Linux installation
yayAUR helper installedgitandstowpackages
For macOS:
- macOS Sequoia
- Homebrew installed (if using brew packages)
stowinstalled via Homebrew
# Create workspace directory
mkdir -p ~/workspace
cd ~/workspace
# Clone your dotfiles repository
git clone <your-repo-url> dotfiles
cd dotfilesFor Nickel (Arch Linux):
# Install all packages from the package list
# The --needed flag skips already installed packages
yay -S --needed - < nickel/pkglist.txtFor Silver (macOS):
# Install all packages from the package list
brew install --force $(cat silver/pkglist.txt)# Apply configurations for your specific system
# This will create symlinks from your home directory to the dotfiles
# For Nickel (Arch Linux)
stow -t ~ nickel
# For Silver (macOS)
stow -t ~ silver
# To see what would be linked without actually doing it:
# stow -n -t ~ nickel # dry runPost-installation steps:
-
Shell Configuration:
- Restart your terminal or run
source ~/.zshrc - Zsh should now use your custom configuration with themes and plugins
- Restart your terminal or run
-
Hyprland (Nickel only):
- Your Hyprland window manager configuration will be active
- Includes custom keybindings, animations, and window rules
- Waybar, dunst, and other components are pre-configured
-
Neovim:
- Your Neovim configuration with plugins will be available
- Run
:checkhealthin Neovim to verify everything is working
-
Git:
- Your Git configuration is automatically applied
- Verify with
git config --list
To add a new configuration file to your dotfiles:
# 1. Move the file to the appropriate system directory
mv ~/.config/new-app/config ~/workspace/dotfiles/nickel/.config/new-app/config
# 2. Create the symlink using stow
cd ~/workspace/dotfiles
stow -t ~ nickel
# 3. Commit the changes
git add .
git commit -m "Add new-app configuration"
git pushWhen you install new packages, update your package list:
# For Arch Linux (Nickel)
yay -Qqe > nickel/pkglist.txt
# Commit the updated package list
git add nickel/pkglist.txt
git commit -m "Update package list"
git pushTo sync changes across machines:
# Pull latest changes
git pull
# Re-apply configurations (handles new files)
stow -R -t ~ nickel # or silver
# Install any new packages
yay -S --needed - < nickel/pkglist.txt # For Arch Linux
brew install --force $(cat silver/pkglist.txt) # For macOSHardware: ThinkPad T14 Gen 1
OS: Arch Linux
DE/WM: Hyprland
Terminal: Alacritty
Shell: Zsh with custom configuration
Key Components:
- Hyprland window manager with custom animations and workflows
- Waybar status bar with custom styling
- Dunst notification system
- Rofi application launcher
- Neovim with extensive plugin configuration
- Custom Zsh setup with starship prompt
Hardware: MacBook (Main macOS Laptop) OS: macOS Sequoia Terminal: Ghostty Shell: Zsh
Key Components:
- Neovim configuration optimized for macOS
- tmux configuration
- Git configuration
- Custom Zsh setup
- Package management via Homebrew with pkglist.txt
dotfiles/
βββ nickel/ # Arch Linux configurations
β βββ .config/
β β βββ hypr/ # Hyprland WM config
β β βββ waybar/ # Status bar config
β β βββ nvim/ # Neovim configuration
β β βββ zsh/ # Zsh configuration
β β βββ alacritty/ # Terminal config
β β βββ dunst/ # Notifications
β βββ .zshrc # Main zsh config
β βββ .gitconfig # Git configuration
β βββ .tmux.conf # tmux configuration
β βββ pkglist.txt # Arch packages list
βββ silver/ # macOS configurations
β βββ .config/
β β βββ nvim/ # Neovim for macOS
β β βββ ghostty/ # Terminal config
β β βββ btop/ # System monitor
β βββ .zshrc # Zsh for macOS
β βββ .gitconfig # Git config
β βββ .tmux.conf # tmux config
β βββ pkglist.txt # Homebrew packages list
βββ README.md # This file
Stow conflicts:
# If stow complains about existing files, backup and remove them:
mv ~/.zshrc ~/.zshrc.backup
stow -t ~ nickelPermission issues:
# Make sure you own the target directories
sudo chown -R $USER:$USER ~/.configMissing dependencies:
# Verify all packages installed correctly
yay -Qqe | grep -f nickel/pkglist.txtGit configuration:
# Update git configuration if needed
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"