My modular dotfiles configuration for macOS (Homebrew) and Linux (Arch and Debian downstreams like Ubuntu and Pop!_OS) using GNU Stow for symlink management.
Each tool's configuration is organized in its own directory, making it easy to install or remove specific components as needed.
Some of the configurations included:
- Nushell: Modern shell configuration with custom scripts and completions
- Neovim: Text editor configuration with plugins and custom settings
- Git: Version control system configuration and aliases
- Tmux: Terminal multiplexer configuration
- Starship: Cross-shell prompt with custom theming
- Zellij: Terminal workspace manager configuration
- Atuin: Shell history sync and search configuration
- Fastfetch: System information tool configuration
- Hammerspoon: macOS automation and window management (macOS only)
- Startup: macOS launch agent configurations (macOS only)
Important
macOS: Ensure you have Homebrew installed on your system.
Linux (Arch-based): Install at least cli and system packages from sysconfig.yaml.
- Clone the repository:
git clone https://github.com/vimkin/dotfiles.git ~/dotfiles
cd ~/dotfiles- Install dependencies and configure:
macOS:
# Install everything (CLI, GUI app, App Store apps, fonts) at once with Homebrew
brew bundle installLinux (Arch-based):
sudo pacman -S --needed $(yq '.packages.pacman.cli[]' sysconfig.yaml)
sudo pacman -S --needed $(yq '.packages.pacman.gui[]' sysconfig.yaml)
sudo pacman -S --needed $(yq '.packages.pacman.system[]' sysconfig.yaml)
sudo pacman -S --needed $(yq '.packages.pacman.fonts[]' sysconfig.yaml)
shelly aur install $(yq '.packages.aur.cli[]' sysconfig.yaml)
shelly aur install $(yq '.packages.aur.gui[]' sysconfig.yaml)
shelly flatpak install $(yq '.packages.flatpak[]' sysconfig.yaml)- Run the bootstrap script:
nu ./bootstrap.nuThe above command will:
‼️ Set Nushell as the default shell- Set up rustup and install Rust toolchains
- Use GNU Stow to create symlinks for each configuration module (nushell, nvim, etc.)
- Clone and link additional Nushell scripts from the community repository
For selective installation, use Stow directly:
stow nushell # Install only Nushell config
stow nvim # Install only Neovim config
stow starship # Install only Starship config