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:
parent
4098771120
commit
9f171de0cb
1 changed files with 224 additions and 14 deletions
238
README.md
238
README.md
|
|
@ -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) 🤖*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue