Skip to content

LazyRen/dotfiles

Repository files navigation

dotfiles

Personal dotfiles managed with GNU Stow.

Stack

Tool Purpose
AeroSpace Tiling window manager
Fish Shell
Ghostty Terminal emulator
Homebrew Package manager
Starship Prompt
Yazi File manager
Zellij Terminal multiplexer

macOS Apps

App Purpose
BetterTouchTool Keyboard/trackpad customization
Karabiner-Elements Key remapping

See keybindings.md for a full keybinding reference across all apps.

Color Palette

Defined in themes/ as YAML files. Set active theme in config.yaml:

theme: onedark           # or catppuccin-mocha

Available themes:

Template files (.tmpl) generate app configs with theme colors. Affected apps: Ghostty, Zellij, Yazi, Bat.

Re-apply theme after changes:

./setup.sh --theme

Terminal Screenshot

Color Hex Preview
Black #282c34 #282c34
Red #e06c75 #e06c75
Green #98c379 #98c379
Yellow #e5c07b #e5c07b
Blue #61afef #61afef
Magenta #c678dd #c678dd
Cyan #56b6c2 #56b6c2
White #abb2bf #abb2bf
Bright Black #5c6370 #5c6370
Bright Red #e57373 #e57373
Bright Green #b5d8a0 #b5d8a0
Bright Yellow #efd9a8 #efd9a8
Bright Blue #82b1ff #82b1ff
Bright Magenta #b392f0 #b392f0
Bright Cyan #80ccd5 #80ccd5
Bright White #e1e4e8 #e1e4e8
Foreground #abb2bf #abb2bf
Background #282c34 #282c34
Selection #3e4451 #3e4451

Install

git clone https://github.com/LazyRen/dotfiles.git
cd dotfiles
# Edit config.yaml to enable/disable apps before running
./setup.sh

config.yaml controls which apps are installed. Comment out any app to skip it.

setup.sh will:

  1. Render theme templates from themes/<name>.yaml into app configs
  2. Install Homebrew packages from brew/list.yaml
  3. Symlink configured apps to $HOME via stow
  4. Run per-app setup.sh hooks (fisher plugins, yazi packages, zellij plugins, etc.)

Re-run after pulling config-only changes:

./setup.sh --skip-brew

Apply theme only (no brew, stow, or hooks):

./setup.sh --theme

Structure

config.yaml          # Apps to install + active theme
brew/list.yaml       # Homebrew formulas, casks, and link targets
setup.sh             # Main installer
themes/              # Color theme definitions (YAML)

# Stow packages (symlinked to $HOME)
aerospace/           # AeroSpace tiling window manager config
atuin/               # Atuin shell history config
bat/                 # Bat syntax highlighter config
fish/                # Fish shell config, functions, fisher plugins
ghostty/             # Ghostty terminal config
karabiner/           # Karabiner-Elements key remapping
starship/            # Starship prompt config
yazi/                # Yazi file manager config and plugins
zellij/              # Zellij multiplexer config, layouts, plugins

# macOS-specific (hook-only, not stowed)
os/mac/              # macOS defaults, xcode-select, app imports

# App config imports (not stowed, referenced by os/mac/setup.sh)
bettertouchtool/     # BetterTouchTool preset

Each directory mirrors $HOME for stow (e.g., fish/.config/fish/~/.config/fish/). Nested paths like os/mac are hook-only — they run setup.sh but are not stowed.

Adding a new app

  1. Create <app>/.config/<app>/ with your config files
  2. Add - <app> to config.yaml
  3. Run ./setup.sh

If the app needs post-stow setup, add an executable setup.sh in the app directory and create a .stow-local-ignore file (see fish/.stow-local-ignore for reference).

macOS Setup

os/mac/setup.sh configures macOS system preferences via defaults write, including:

  • Appearance, Dock, Mission Control, Finder
  • Keyboard repeat, function keys, shortcuts (desktop switching, input sources, Spotlight)
  • Trackpad gestures, accessibility (drag lock)
  • Screenshots location, window management
  • Imports BetterTouchTool preset

SSH Terminfo

Ghostty uses xterm-ghostty as its TERM value, in case remote hosts won't recognize by default. Copy the terminfo entry before connecting:

infocmp -x | ssh <user@address> -- tic -x -

See Ghostty SSH documentation for details.

Local config

Fish supports per-machine overrides via ~/.config/fish/conf.d/local.fish. This file is gitignored and created automatically by fish/setup.sh on fresh clones. Edit it freely — changes stay local and won't appear in git status.

About

Dev. environment setups & settings

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors