Skip to content

kylelundstedt/dotfiles

Repository files navigation

Dotfiles Installation

  • Compatible with macOS and Linux (Ubuntu)
  • Managed using Stow
  • Primary IDE: Cursor (AI-powered code editor)

Quick Installation

One-line install (macOS & Linux)

curl -fsSL https://raw.githubusercontent.com/kylelundstedt/dotfiles/master/install.sh | bash

Or manually:

git clone https://github.com/kylelundstedt/dotfiles ~/dotfiles
cd ~/dotfiles
./install.sh

The install script will:

  • ✅ Prompt you for Git name and email (if not already configured)
  • ✅ Install Homebrew (if not present)
  • ✅ Install all CLI tools from Brewfile
  • ✅ Set up your shell configuration (zsh + Starship prompt)
  • ✅ Stow all dotfiles to your home directory
  • ✅ Create local config templates (AWS, SSH) from examples

Post-Installation Steps

1. Git Configuration

The install script will prompt you for your Git name and email during installation. If you need to update it later, edit ~/dotfiles/git/.gitconfig_common and re-run ./install.sh or manually stow: stow git

2. Customize Local Configs (Optional)

The install script automatically creates local config files from examples. Customize them as needed:

  • AWS Config: ~/dotfiles/aws/.aws/config

    • Update SSO URLs, account IDs, and regions
  • SSH Config: ~/dotfiles/ssh/.ssh/config

    • Add your SSH hosts and configurations

Note: These local configs are gitignored and won't be committed to the repository.


Repository Layout

The repository uses GNU Stow for symlink management. Each directory represents a "package" that gets stowed:

Directory Purpose Stow Target Platform
1Password/ 1Password CLI config ~/.config/op/ macOS
aws/ AWS CLI configuration ~/.aws/ Both
cursor/ Cursor IDE settings & extensions ~/Library/Application Support/Cursor/ macOS
git/ Git configuration with OS-specific includes ~/ Both
homebrew/ Brewfile for macOS packages ~/ macOS
nushell/ Nushell shell configuration ~/Library/Application Support/nushell/ Both
python/ Python package requirements & install script ~/ Both
ssh/ SSH client configuration ~/.ssh/ Both
starship/ Starship prompt configuration ~/.config/ Both
zsh/ Zsh shell configuration ~/ Both

Git Configuration Architecture

The git configuration uses conditional includes for OS-specific settings:

~/.gitconfig                 # Main config with includeIf directives
├── ~/.gitconfig_common      # Shared configuration
├── ~/.gitconfig_local       # User-specific (name, email) - gitignored
├── ~/.gitconfig_macos       # macOS-specific (1Password SSH signing)
└── ~/.gitconfig_linux       # Linux-specific (nano editor)

What Gets Installed

macOS

  • All CLI tools from homebrew/Brewfile (including casks and Mac App Store apps)
  • Shell: zsh with Starship prompt
  • Git configuration with macOS-specific settings (1Password SSH signing)

Linux

  • CLI tools from homebrew/Brewfile (excluding macOS-only packages)
  • Shell: zsh with Starship prompt
  • Git configuration with Linux-specific settings

Tool Reference

Core Utilities Replacement

  • catbat (syntax highlighting)
  • lsexa (better file listing)
  • grepripgrep (faster search)
  • cdzoxide (smart directory jumping)

Shell Environment Stack

  1. Nushell - Primary shell with structured data handling
  2. Starship - Cross-shell prompt with git integration
  3. Atuin - Encrypted shell history sync across devices
  4. Zoxide - Smart cd replacement with frecency algorithm
  5. Carapace - Universal completion engine
  6. Direnv - Directory-based environment variables

Development Tools

  • Cursor: AI-powered code editor (primary IDE)
  • 1Password CLI: Secure secret management
  • Git: Multi-OS configuration with SSH signing via 1Password
  • AWS CLI v2: Cloud resource management
  • DuckDB: Embedded analytics database

Platform-Specific Tips

macOS Considerations

  • Homebrew installs to /opt/homebrew/ on Apple Silicon
  • 1Password SSH agent integration requires specific socket path
  • Terminal app set to Warp via terminal.external.osxExec
  • Some GUI apps installed via mas (Mac App Store CLI)

Linux Considerations

  • Shell change requires chsh -s /usr/bin/zsh
  • DuckDB installed manually for ARM64 architecture
  • Carapace installed via Fury.io APT repository
  • Tailscale with IP forwarding configuration for exit nodes

Cross-Platform Compatibility

  • Nushell configuration works identically on both platforms
  • Starship prompt configuration shared between platforms
  • Git includes OS-specific configs automatically
  • Python UV setup creates platform-agnostic virtual environments

Configuration Reload Commands

# Reload shell configuration
source ~/.zshrc  # or source ~/.config/nushell/config.nu for Nushell

# Update Homebrew packages (macOS)
brew bundle --file=~/dotfiles/homebrew/Brewfile

# Sync Atuin history
atuin sync

Troubleshooting

Shell Not Switching to Zsh

Check if zsh is in /etc/shells and use chsh -s $(which zsh)

1Password CLI Not Working

Verify permissions: chmod 700 ~/.config/op and ensure 1Password desktop app is running

Starship Not Loading

Ensure starship binary is in PATH and initialization script exists

Git SSH Signing Issues

Verify 1Password SSH agent is running and identityagent path is correct in .gitconfig_macos

Homebrew Package Installation Failures

Run brew doctor and ensure Xcode Command Line Tools are installed: xcode-select --install

Testing on Linux

To test the Linux installation path locally, you can use a one-off Docker container that mimics a fresh environment.

This command uses the official uv image (which has Python, Curl, and Git) but mimics a clean start by ensuring dependencies are installed before running the script:

docker run --rm -it ghcr.io/astral-sh/uv:python3.12-bookworm bash -c "apt-get update && apt-get install -y sudo zsh && curl -fsSL https://raw.githubusercontent.com/kylelundstedt/dotfiles/master/install.sh | bash; exec zsh -l"

Alternatively, you can use the included test script if you have OrbStack installed:

./test-linux.sh

This uses OrbStack's Linux VM to verify the installation works on Linux.


Thanks

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published