Skip to content
wcollinsPublic

About

⚡️ Carpin all them linux diems

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

  __| | ___ | |_ / _(_) | ___  ___
 / _` |/ _ \| __| |_| | |/ _ \/ __|
| (_| | (_) | |_|  _| | |  __/\__ \
 \__,_|\___/ \__|_| |_|_|\___||___/

License: MIT Platform Shell: Zsh Editor: Neovim

macOS and Debian dotfiles managed with GNU Stow. Everforest theme everywhere.

Ghostty + Neovim + Tmux + Zsh + Starship — consistent Everforest Dark palette across everything.

Quick Start

GNU Stow is required on both platforms. setup.sh auto-detects the OS.

macOS

Requires Homebrew (brew install stow).

git clone https://github.com/wcollins/dotfiles.git ~/dotfiles
cd ~/dotfiles

./setup.sh                            # symlink packages into ~
./setup.sh --dry-run                  # preview first

brew bundle install --file=brew/Brewfile  # install CLI tools, fonts, Ghostty

Debian

Requires sudo access. setup.sh runs scripts/install-packages.sh automatically — installs CLI tools via apt plus alternative installers for Starship, mise, lazygit, Neovim 0.11+ (AppImage when apt's version is older), etc.

git clone https://github.com/wcollins/dotfiles.git ~/dotfiles
cd ~/dotfiles
sudo apt install -y stow

./setup.sh --profile desktop          # daily-driver: GUI, Ghostty, Nerd Fonts
./setup.sh --profile server           # headless / CLI-only (default if --profile omitted)
./setup.sh --profile wsl              # Windows Subsystem for Linux
./setup.sh --profile desktop --dry-run  # preview first

Note

Install Zap for zsh plugin management. Tmux plugins install with <prefix> + I after first launch.

Tip

On Linux, setup offers to make zsh your default login shell (Make zsh your default shell? [Y/n], default Yes). Installing the zsh package doesn't change your login shell on its own, so accept this to have the config load on a fresh box — then log out and back in. It's idempotent and skipped under --dry-run or non-interactive runs.

What's Inside

Each directory is a GNU Stow package — files mirror their target location under $HOME.

Package What it configures
brew Brewfile — fzf, ripgrep, eza, lazygit, bat, zoxide, and more (macOS only)
ghostty Ghostty terminal — Everforest Dark Hard, JetBrains Mono Nerd Font, cursor smear shader
git Git config with SSH commit signing, diff-so-fancy, aliases
nvim Neovim with lazy.nvim
secrets 1Password CLI secrets loader (configurable vault/item)
starship Starship prompt with Everforest palette
tmux Tmux (prefix C-a), vim-tmux-navigator, tmux-yank, TPM
zsh Zsh with Zap, fzf + zoxide integration, aliases, functions

Local Overrides

Machine-specific config goes in these files (gitignored via *.local):

File Purpose
~/.zshrc.local Shell customizations
~/.gitconfig.local Git settings (SSH signing key goes here)

Post-Install

Hugo LAN preview

Run hugo-lan from a Hugo site directory. It prompts for this machine's LAN IPv4 address, then starts hugo server -D on that address at port 1313. Enter an address assigned to the hosting machine, not the device viewing the site. Open the printed URL from another device on your LAN. Drafts are included. Press Ctrl-C to stop; blank input or Ctrl-D cancels the prompt.

Zsh loads the function automatically. To use it immediately in either Bash or Zsh, source the shared helpers:

source ~/dotfiles/shared/functions.sh
cd ~/code/blog
hugo-lan

To load it in every Bash session, add source "$HOME/dotfiles/shared/functions.sh" to your local ~/.bashrc. No machine-specific IP is stored in the repository.

Run the helper checks with bash scripts/test-hugo-lan.sh.

Initial configuration

  • Set your SSH signing key in ~/.gitconfig.local
  • Create ~/.zshrc.local for machine-specific shell config
  • Install tmux plugins: open tmux, press C-a then I
  • For 1Password secrets: create ~/.secrets with OP_SERVICE_ACCOUNT_TOKEN, then run secrets --load
  • On Linux, if you accepted the default-shell prompt, log out and back in (or open a new terminal) so zsh becomes active

License

MIT - Do whatever you want with it

Acknowledgments

Standing on the shoulders of giants and inspired by countless dotfile repos across GitHub. Evolved from my original archive-dotfiles project that went through many years of iteration and taught many lessons in the pre-AI world. Shoutout to Alex Perkins for convincing me to try Ghostty.


💡 Remember

"Perfection is achieved not when there is nothing more to add,
but when there is nothing left to take away."

                                 - Antoine de Saint-Exupéry

About

⚡️ Carpin all them linux diems

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages