Skip to content

AlexLombry/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

256 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

Dotfiles Manager

Personal macOS dotfiles managed with GNU Stow and Just.

Fresh machine setup

Step 1 — Bootstrap

Run this in a terminal. It installs Xcode CLT and clones the repo to ~/dotfiles:

curl -fsSL https://raw.githubusercontent.com/AlexLombry/dotfiles/refs/heads/main/install/init.sh | zsh

Step 2 — Install everything

Open a new terminal, then:

cd ~/dotfiles && ./install/install.sh

This installs Oh My Zsh, Homebrew, Mise, Just, and GNU Stow — then runs just setup automatically.

Step 3 — Restart your terminal

Shell config and custom NeoVim setup are now symlinked. Open a fresh terminal session to pick up all changes.


What just setup does

Step Task What it does
1 check Verifies prerequisites (Homebrew, Just, Stow, Xcode CLT)
2 stow-fresh Symlinks all packages into $HOME using --adopt (first-time only)
3 os Applies optimized macOS system defaults (install/macos.sh)
4 brew Installs grouped packages and apps from install/BrewFile
5 mise Installs language runtimes (Python, Node, Ruby) via mise
6 completions Generates uv/uvx shell completions into ~/.zsh/completions/
7 init-shell Generates static initialization for starship and zoxide for faster startup

Web interface

A local web UI is available for managing symlinks without touching the CLI.

cd ~/dotfiles/web && npm install   # first time only
just web                           # → http://localhost:3131

What it does:

  • Scans all stow packages and shows each file as linked / missing / conflict
  • Dry-run preview, backup-before-overwrite, install, and remove — per package or all at once
  • Streams real-time output for every just command via a built-in terminal panel
  • Backup history with one-click rollback

Timestamped conflict backups land in backup/YYYY-MM-DD.../ and are git-ignored.


Day-to-day commands

just              # List all available tasks
just check        # Verify if all prerequisites are installed
just stow         # Re-apply symlinks (safe re-run, e.g. after adding a dotfile)
just stow-fresh   # First-time stow with --adopt (clean machine only)
just stow-check   # Dry-run check for symlinks
just unstow       # Remove all symlinks
just doctor       # Diagnose stow conflicts, brew drift, stale caches
just brew         # Sync Homebrew packages with BrewFile
just mise         # Reinstall/update language runtimes
just init-shell   # Regenerate static shell init files
just backup-agent # Install/reload the backup_secure LaunchAgent
just update       # Update all package managers (brew, mise, mas…)
just bench        # Measure zsh startup time (3 runs)
just os           # Re-apply macOS system defaults
just completions  # Regenerate uv/uvx completions
just gpg-pass     # Store GPG backup password in macOS Keychain

To stow or unstow a single package:

stow -d ~/dotfiles/stow -t ~ zsh        # Symlink only zsh
stow -d ~/dotfiles/stow -t ~ -D config  # Remove symlinks for config

NeoVim

This project uses a custom NeoVim configuration located in stow/config/.config/nvim. It is automatically symlinked during the stow process. It uses lazy.nvim for plugin management.


Work config

~/.zshrc sources ~/.work.zsh for work-specific aliases and environment variables. This file is tracked in the repo via the work stow package (stow/work/.work.zsh) and symlinked to ~/.work.zsh during just stow.

About

Public dotfiles configuration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors