Skip to content

walkeratmind/dotfiles

Repository files navigation

🏠 Dotfiles

Personal dotfiles and system configuration managed with chezmoi

linux macos chezmoi shell-script neovim

πŸš€ Features

  • Chezmoi-powered with secret management and machine-specific overrides
  • External Neovim configs - Multiple Neovim setups from separate repository
  • Automated setup scripts - Complete system bootstrapping for macOS
  • Brew/Apt duality - supports both Homebrew and Apt packages
  • Universal symlinks where needed (via Chezmoi templates)

🌟 macOS-Specific Features

  • Automated Homebrew setup via brewinstall.sh
  • System preferences configuration via macconfig.sh
  • Application installation and setup via macapps.sh
  • Font management for development environments
  • Bat syntax highlighting with custom themes

πŸ› οΈ Tooling Stack

graph TD
    A[Chezmoi] --> B[Linux Configs]
    A --> C[macOS Configs]
    A --> F[External Repos]
    B --> D[APT Packages]
    C --> E[Homebrew Scripts]
    F --> G[Neovim Main]
    F --> H[Neovim LazyVim]
    A --> I[Shared Configs]
    I --> J[Zsh/Shell]
    I --> L[Development Tools]
Loading

File Structure πŸ“‚ (Chezmoi-managed)

~/.local/share/chezmoi/
β”œβ”€β”€ .chezmoiexternal.toml    # External repository management
β”œβ”€β”€ .chezmoiignore          # Files to exclude from home
β”œβ”€β”€ chezmoi.toml            # Configuration matrix
β”œβ”€β”€ home/                   # Dotfiles source (to be moved to root)
β”‚   β”œβ”€β”€ dot_config/         # ~/.config/ - Application configs
β”‚   β”œβ”€β”€ dot_curlrc          # ~/.curlrc - curl configuration
β”‚   β”œβ”€β”€ dot_env             # ~/.env - Environment variables
β”‚   β”œβ”€β”€ dot_gitconfig       # ~/.gitconfig - Git configuration
β”‚   β”œβ”€β”€ dot_gitmessage      # ~/.gitmessage - Git commit template
β”‚   β”œβ”€β”€ dot_ideavimrc       # ~/.ideavimrc - IntelliJ Vim plugin
β”‚   β”œβ”€β”€ dot_shellrc.d/      # ~/.shellrc.d/ - Shell modules
β”‚   β”œβ”€β”€ dot_tmux.conf       # ~/.tmux.conf - tmux configuration
β”‚   β”œβ”€β”€ dot_zprofile        # ~/.zprofile - Zsh profile
β”‚   β”œβ”€β”€ dot_zshrc           # ~/.zshrc - Zsh configuration
β”‚   └── dot_zshrc.d/        # ~/.zshrc.d/ - Zsh modules
└── scripts/                # Setup and maintenance scripts
    β”œβ”€β”€ setup.sh            # Main setup orchestrator
    β”œβ”€β”€ brewinstall.sh      # Homebrew packages installation
    β”œβ”€β”€ macconfig.sh        # macOS system preferences
    β”œβ”€β”€ macapps.sh          # macOS applications setup
    β”œβ”€β”€ fontinstall.sh      # Programming fonts installation
    β”œβ”€β”€ bat-theme.sh        # Bat syntax highlighting
    β”œβ”€β”€ extras/             # Additional utilities
    └── programs/           # Program-specific configurations

🎯 External Configurations

Neovim Setup

Managed via .chezmoiexternal.toml from walkeratmind/nvim:

  • Main Config: ~/.config/nvim - Personal Neovim setup
  • LazyVim Config: ~/.config/nvim-lazy - LazyVim distribution
# Switch between configurations
nvim                          # Main config
NVIM_APPNAME=nvim-lazy nvim   # LazyVim config

⚑ Setup

Prerequisites

# Install Chezmoi
sh -c "$(curl -fsLS get.chezmoi.io)"

Bootstrap (Both Platforms)

# Initialize and apply dotfiles
chezmoi init --apply walkeratmind/dotfiles

# This will automatically:
# βœ… Install dotfiles to home directory
# βœ… Pull external Neovim configurations
# βœ… Exclude project files (README, scripts) from home

Platform-Specific Setup

macOS Complete Setup:

# Navigate to chezmoi source
cd ~/.local/share/chezmoi

# Run automated setup
./scripts/setup.sh              # Main orchestrator
./scripts/brewinstall.sh        # Install Homebrew packages
./scripts/macconfig.sh          # Configure macOS preferences
./scripts/macapps.sh            # Install macOS applications
./scripts/fontinstall.sh        # Install programming fonts
./scripts/bat-theme.sh          # Configure bat theme

Linux:

# Manual package installation based on your distro
# Configurations will work cross-platform

πŸ”§ Maintenance

Task Command
Add new config chezmoi add ~/.config/foo
Edit managed file chezmoi edit ~/.zshrc
Sync changes chezmoi apply
Update externals chezmoi apply --refresh-externals
Diff changes chezmoi diff
Check status chezmoi status

External Repository Updates

# Update Neovim configs (respects refreshPeriod)
chezmoi apply

# Force update external repos (ignores refreshPeriod)
chezmoi -R apply

πŸ› οΈ Configuration Highlights

Shell Environment

Nushell

  • Nushell with custom aliases
  • command: sm for session manager for both zellij and tmux
  • command: pm for project navigation and switch similar to tmux-sesionizer using fzf. Inspired from zellij-sessionizer
    • you can check dot_config/nushell/integrations/project-manager.nu and modify/add paths for your projects directory.

ZSH

  • Zsh with modular configuration (dot_zshrc.d/)
  • Shell modules in dot_shellrc.d/ for cross-shell compatibility
  • Environment management via dot_env and dot_zprofile

Development Tools

  • Git with custom config and commit templates
  • tmux for terminal multiplexing
  • curl with personalized settings
  • IntelliJ IDEA Vim plugin configuration

External Dependencies

  • Neovim configurations from separate repository
  • Cross-platform compatibility maintained through Chezmoi templates
  • Automated updates with configurable refresh periods

πŸ“š References

With gratitude to these inspirations:


⭐ Star this repo if you find it helpful!

Ready for both Linux tinkering and macOS productivity πŸš€

About

dotfiles and automation βš™οΈ scripts for Linux πŸ’»οΈπŸ”„οΈ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published