Update README with comprehensive documentation

- Enhance overview with features and modern CLI highlights
- Add detailed configuration architecture documentation
- Document Neovim keybindings, plugins, and gruvbox theme
- Document Tmux prefix key, vim navigation, and copy mode
- Document Zsh with Powerlevel10k, vim mode indicators, and aliases
- Add workflow optimization and productivity features
- Include machine configurations and usage examples
- Organize content with clear sections and emoji headers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Yan Lin 2025-07-26 12:02:59 +02:00
parent 4098771120
commit 9f171de0cb

238
README.md
View file

@ -1,8 +1,16 @@
# Personal Nix Configuration # Personal Nix Configuration
A simple Nix configuration for macOS using nix-darwin and home-manager. Largely generated by Claude Code. A comprehensive Nix configuration for macOS using nix-darwin and home-manager, featuring a modern development environment with vim-centric workflows and beautiful aesthetics. Largely generated and maintained with Claude Code.
## Quick Install ## ✨ Features
- **🎨 Beautiful UI**: Gruvbox dark theme across all applications
- **⌨️ Vim-centric**: Consistent vim keybindings throughout the stack
- **🚀 Modern CLI**: Enhanced tools with fuzzy finding, syntax highlighting, and smart completion
- **📦 Modular Design**: Separate configuration files for easy maintenance
- **🔄 Portable**: Reproducible across machines with a single command
## 🚀 Quick Install
Install directly from GitHub without cloning: Install directly from GitHub without cloning:
@ -14,26 +22,228 @@ sudo darwin-rebuild switch --flake github:Logan-Lin/nix-config
home-manager switch --flake github:Logan-Lin/nix-config#yanlin home-manager switch --flake github:Logan-Lin/nix-config#yanlin
``` ```
## What's Included ## 📁 Configuration Architecture
- **nix-darwin**: System-level macOS configuration ```
- **home-manager**: User environment and dotfiles .
- **Neovim**: Configured with treesitter, file explorer, and gruvbox theme ├── flake.nix # Main flake configuration and package definitions
- **Tmux**: Vim-like keybindings with gruvbox colors ├── nvim.nix # Neovim configuration with plugins and keymaps
- **Packages**: LaTeX, Python, btop, fonts, and development tools ├── tmux.nix # Tmux setup with vim-like navigation
├── zsh.nix # Zsh with Powerlevel10k and modern CLI tools
├── p10k.zsh # Powerlevel10k theme configuration (managed by Nix)
└── tmux.sh # Tmux session automation script
```
## Usage ## 🛠️ Software Configurations
### 📝 Neovim
**Theme**: Gruvbox dark with hard contrast
**Leader Key**: `<Space>`
#### Key Features:
- **File Explorer**: nvim-tree with dotfile filtering
- **Syntax Highlighting**: Treesitter with all grammar support
- **Git Integration**: vim-fugitive for git operations
- **Status Line**: lualine with gruvbox theme and relative paths
- **System Clipboard**: Seamless integration for copy/paste
#### Keybindings:
| Key | Mode | Action |
|-----|------|--------|
| `<Space>e` | Normal | Toggle file explorer |
| `<Space>w` | Normal | Save file |
| `<Space>q` | Normal | Quit |
| `<Space>y` | Normal/Visual | Copy to system clipboard |
| `<Space>p` | Normal/Visual | Paste from system clipboard |
| `<Space>gs` | Normal | Git status |
| `<Space>gd` | Normal | Git diff |
| `<Space>gc` | Normal | Git commit |
| `<Space>gp` | Normal | Git push |
### 🖥️ Tmux
**Prefix Key**: `Ctrl+a` (instead of default `Ctrl+b`)
**Theme**: Gruvbox dark with visual prefix indicator
#### Key Features:
- **Prefix Indicator**: Shows `<Prefix>` in status bar when prefix is active
- **Vim-like Navigation**: hjkl for pane movement
- **Smart Splitting**: Maintains current directory when creating panes
- **Copy Mode**: System clipboard integration with pbcopy
#### Keybindings:
| Key | Action |
|-----|--------|
| `Ctrl+a` | Prefix key |
| `Ctrl+a |` | Split window vertically |
| `Ctrl+a -` | Split window horizontally |
| `Ctrl+a h/j/k/l` | Navigate panes (vim-style) |
| `Ctrl+a H/J/K/L` | Resize panes |
| `Ctrl+a r` | Reload tmux config |
| `Ctrl+a Ctrl+a` | Quick pane cycling |
#### Copy Mode (Ctrl+a [):
| Key | Action |
|-----|--------|
| `v` | Begin selection |
| `y` | Copy selection to system clipboard |
| `r` | Toggle rectangle selection |
### 🐚 Zsh with Powerlevel10k
**Theme**: Powerlevel10k lean style with 2-line prompt
**Vim Mode**: Enabled with visual indicators
#### Key Features:
- **Smart Completion**: Case-insensitive with menu selection
- **Autosuggestions**: Fish-like command suggestions
- **Syntax Highlighting**: Real-time command syntax highlighting
- **History Management**: Shared history with deduplication
- **Vim Mode Indicators**: Cursor shape changes and prompt symbols
#### Vim Mode Indicators:
- **Insert Mode**: Line cursor `|` + `` prompt (green)
- **Normal Mode**: Block cursor `█` + `` prompt
- **Fast Switching**: 10ms escape timeout for responsive mode changes
#### Vim Mode Keybindings:
| Key | Mode | Action |
|-----|------|--------|
| `Esc` | Insert | Switch to normal mode |
| `i/a/I/A` | Normal | Switch to insert mode |
| `k/j` | Normal | History search backward/forward |
| `/` | Normal | History incremental search backward |
| `?` | Normal | History incremental search forward |
| `Ctrl+Right/Left` | Insert | Word movement |
#### Aliases:
**Navigation:**
```bash ```bash
# Update and switch configuration l, ll, la # Enhanced ls commands
.., ..., .... # Quick directory navigation
home, config # Jump to common directories
nix-config # Jump to nix configuration
```
**Git:**
```bash
g, gs, ga, gc, gp, gl, gd, gco, gb # Git shortcuts
glog # Beautiful git log with graph
```
**Modern CLI:**
```bash
cat → bat # Syntax highlighted file viewing
find → fd # Fast file finding
grep → rg # Ripgrep for fast searching
top → btop # Beautiful system monitor
```
**Nix:**
```bash
hm # home-manager shortcut
hms # Quick home-manager switch
```
### 🌟 Git Visualization
**Tool**: gitui
**Purpose**: Beautiful, interactive TUI for git operations
Launch with `gitui` in any git repository for:
- Interactive commit graph visualization
- Diff viewing and staging
- Branch management
- Vim-like navigation (j/k for movement, h/l for tabs)
## 📦 Included Packages
### Development Tools
- **Python 3.12**: With pip and virtualenv
- **LaTeX**: Full TeXLive distribution
- **Claude Code**: AI-powered coding assistant
- **Git UI**: Beautiful git graph visualization
### CLI Utilities
- **fzf**: Fuzzy finder for files, commands, and history
- **fd**: Fast, user-friendly alternative to find
- **ripgrep (rg)**: Fast text search
- **bat**: Syntax-highlighted cat replacement
- **btop**: Modern system monitor
- **zoxide**: Smart cd with frecency algorithm
### Fonts
- **Nerd Fonts**: FiraCode and JetBrains Mono with icon support
## 🔄 Usage & Workflow
### Daily Workflow
1. **Terminal**: Beautiful zsh with vim mode and modern tools
2. **Tmux**: Session management with vim navigation
3. **Neovim**: Code editing with git integration
4. **Git UI**: Visual git operations and branch management
### Environment Management
```bash
# Refresh shell environment after nix changes
exec zsh
# Update and rebuild configuration
nix flake update nix flake update
sudo darwin-rebuild switch --flake . sudo darwin-rebuild switch --flake .
home-manager switch --flake .#yanlin home-manager switch --flake .#yanlin
# Quick home-manager rebuild
hms
``` ```
## Machines ### Clipboard Integration
The configuration provides seamless clipboard integration:
- **Neovim**: `<Space>y/p` for system clipboard
- **Tmux**: Copy mode automatically uses system clipboard
- **Terminal**: Standard Cmd+C/V works everywhere
- `iMac` - iMac configuration ## 💻 Machine Configurations
- `mba` - MacBook Air configuration
For now, both machines use the same base configuration with potential for machine-specific customizations. - **`iMac`**: iMac configuration
- **`MacBook-Air`**: MacBook Air configuration
Both machines use the same base configuration with potential for machine-specific customizations.
### Machine-specific Usage:
```bash
# For MacBook Air
sudo darwin-rebuild switch --flake .#MacBook-Air
# For iMac
sudo darwin-rebuild switch --flake .#iMac
```
## 🎯 Workflow Optimization
### Cross-Application Consistency
- **Vim keybindings**: Available in zsh, tmux, and neovim
- **Gruvbox theme**: Consistent dark theme across all applications
- **Leader key patterns**: Space-based shortcuts in neovim
- **System clipboard**: Unified clipboard access across all tools
### Productivity Features
- **Fast fuzzy finding**: fzf integration in zsh and file operations
- **Smart completion**: Context-aware completions with history
- **Visual indicators**: Mode indicators, prefix indicators, and status information
- **Modern replacements**: Enhanced versions of common CLI tools
## 🚀 Getting Started
1. **Install**: Use the quick install commands above
2. **Refresh**: Run `exec zsh` to load the new shell
3. **Configure**: Powerlevel10k will auto-configure on first run
4. **Explore**: Try the keybindings and modern CLI tools
---
*Generated and maintained with [Claude Code](https://claude.ai/code) 🤖*