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: If using Debian downstreams on LTS, the best way to get the latest packages is the nix package manager. Ensure it is installed on your system.
- 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 (Debian downstreams):
# Install packages and fonts with nix
nix-env -if packages.nix
# Install Flatpak packages from sysconfig.yaml. Some apps are better to install from official .deb files; check which software distributions are recommended by developers.
flatpak install flathub $(yq '.packages.flatpak[]' sysconfig.yaml)Linux (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.fonts[]' sysconfig.yaml)
paru -S --needed $(yq '.packages.paru.cli[]' sysconfig.yaml)
paru -S --needed $(yq '.packages.paru.gui[]' sysconfig.yaml)
flatpak install flathub $(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