Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

max/dotfiles

Repository files navigation

dotfiles

Personal dotfiles managed by chezmoi for a consistent development environment across machines.

Overview

This repository contains configuration files for my development workflow, featuring:

  • Fish shell with intelligent history and directory navigation
  • Neovim with a fully-configured LazyVim setup
  • Ghostty terminal with automatic Zellij multiplexing
  • Git with GPG commit signing via 1Password

All configurations use the Gruvbox color scheme with automatic light/dark mode switching based on system appearance.

Prerequisites

Before installation, ensure you have:

  • macOS (primary target; Linux support via templating)
  • Homebrew package manager: brew.sh
  • 1Password with SSH agent enabled (for GPG signing)
  • Berkeley Mono font (for Ghostty): berkeleygraphics.com

Recommended Tools

These tools are configured but need to be installed separately:

brew install fish neovim git bat btop atuin zoxide ghostty
brew install --cask 1password
# For automatic dark mode switching (macOS)
brew install cormacrelf/tap/dark-notify

Quick Start

Initial Setup

Install chezmoi and apply dotfiles in one command:

sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply mschoening

During setup, you'll be prompted for:

  • Name: Your full name (for Git commits)
  • Email: Your email address (for Git commits)
  • GPG Key ID: Optional, for commit signing via 1Password

Update Existing Installation

Pull and apply the latest changes:

chezmoi update

What's Included

Shell Environment

  • fish (fishshell.com)
    • atuin: Encrypted shell history sync
    • zoxide: Smart directory jumping (z command)
    • Custom PATH: Homebrew, Bun, local bins

Editor

  • nvim (neovim.io)
    • LazyVim distribution with sensible defaults
    • Gruvbox Hard colorscheme with automatic light/dark switching
    • Custom keymap: kj in insert mode → <Esc>
    • Plugins configured in lua/plugins/

Terminal

  • ghostty (ghostty.org)

    • Berkeley Mono Variable font
    • Auto-launches Zellij session "main"
    • Automatic light/dark theme switching
  • zellij (zellij.dev)

    • Compact layout
    • Automatic light/dark theme switching

Version Control

  • git
    • GPG commit signing via 1Password (macOS)
    • Templated configuration using chezmoi variables
    • User info populated from setup prompts

CLI Utilities

  • bat: Syntax-highlighted cat replacement
  • btop: Modern system monitor

Automatic Dark Mode

This setup includes automatic theme switching across Ghostty, Neovim, and Zellij based on macOS system appearance.

How It Works

  • Ghostty: Native support for light/dark theme switching
  • Neovim: Uses the dark-notify plugin to watch system appearance
  • Zellij: Automated via dark-notify and a background service

Manual Theme Switching

If you prefer manual control or need to test:

~/.local/bin/toggle-zellij-theme.sh light
~/.local/bin/toggle-zellij-theme.sh dark

Ghostty and Neovim will automatically follow system appearance without manual intervention.

Customization

Modifying Configurations

Important: Never edit files in ~/.config directly. Always edit the source files in this repository.

# Edit a file (opens source in $EDITOR)
chezmoi edit ~/.config/nvim/init.lua
# Preview changes before applying
chezmoi diff
# Apply changes
chezmoi apply

Adding New Dotfiles

# Add an existing config file to chezmoi
chezmoi add ~/.config/newapp/config.toml
# Commit and push
chezmoi cd
git add .
git commit -m "Add newapp configuration"
git push

Template Variables

Templates use Go's text/template syntax and can access variables from .chezmoi.toml.tmpl:

  • {{ .user.name }}: Your name
  • {{ .user.email }}: Your email
  • {{ .gpg.keyid }}: GPG key ID
  • {{ .chezmoi.os }}: Operating system (darwin, linux, etc.)

Example OS-specific configuration:

{{ if eq .chezmoi.os "darwin" }}
# macOS-specific settings
{{ end }}

Repository Structure

~/.local/share/chezmoi/ # Source directory
├── .chezmoi.toml.tmpl # Template prompts
├── dot_config/ # Maps to ~/.config/
│ ├── fish/
│ ├── nvim/
│ ├── ghostty/
│ ├── zellij/
│ └── git/
└── README.md

Troubleshooting

Check What Would Change

chezmoi diff

View Rendered Template

chezmoi cat ~/.config/git/config

Re-run Setup Prompts

chezmoi init

Resources

About

My personal dotfiles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /