A comprehensive development environment configuration using Nix Darwin, Go-based configuration management, and containerized development tools.
- macOS (Apple Silicon recommended)
- Nix package manager
- Git
- Docker (for containerized Neovim)
-
Clone the repository:
git clone <repository-url> cd dotfiles
-
Set up Nix Darwin system (recommended):
cd asagi/ task init # First-time setup task apply # Apply configuration
dotfiles/
├── asagi/ # Primary Nix Darwin configuration
├── homem/ # Legacy Go-based configuration manager
├── yamabuki/ # Containerized Neovim environment
└── Taskfile.yml # Legacy task automation
Modern Nix Darwin configuration for macOS
- Target: Apple Silicon Macs (aarch64-darwin)
- Features: Declarative system configuration, package management, modular shell setup
- Status: ✅ Active
Key Components:
- Nix Darwin system configuration
- Home Manager integration
- Modular Zsh configuration with automatic loading
- SKK Japanese input support
- Development tools: Claude Code, .NET 9 SDK, Rust, Go Task
Quick Commands:
cd asagi/
task apply # Apply changes (requires sudo)
task build # Test build without applying
task validate # Comprehensive validation
Go-based dotfiles synchronization system
- Language: Go 1.22.7
- Features: Type-safe file operations, multi-tool configuration management
- Status:
⚠️ Deprecated
Architecture:
- 5 executable entry points (nix, nvim, vscode, wezterm, zsh)
- Type-safe path handling with custom types
- Comprehensive test coverage (70.6% handlers, 87.1% path utilities)
Development Commands:
task fmt # Format Go code
task test # Run tests with coverage
task build # Build all binaries
Containerized Neovim development environment
- Base: Alpine Linux with Neovim
- Features: Lua-based plugin system, portable development environment
- Status: ✅ Active for development
Usage:
cd yamabuki/
docker build -t nvimc .
docker run -it --rm -v "$PWD":/workspace nvimc
System Packages (via Asagi):
- Claude Code - AI-powered development assistant
- .NET 9 SDK - Cross-platform development
- Git & GitHub CLI - Version control
- Go Task - Task automation
- Rust toolchain - Systems programming
- Hyperfine - Command-line benchmarking
- Tree - Directory visualization
Homebrew Casks:
- WezTerm - GPU-accelerated terminal
- AquaSKK - Japanese input method
Modular Zsh Setup:
- Automatic loading of all
.zsh
files - Organized by purpose (basic/, command/)
- Oh My Zsh integration with kennethreitz theme
- Enhanced with autosuggestions and syntax highlighting
Directory Structure:
configs/zsh/
├── basic/
│ ├── alias.zsh # System aliases
│ ├── editor.zsh # Editor configuration
│ ├── option.zsh # Shell options
│ └── path.zsh # PATH modifications
└── command/
├── docker/ # Docker-specific settings
└── git/ # Git aliases and functions
-
System Updates:
cd asagi/ task update # Update dependencies task apply # Apply changes
-
Configuration Changes:
- Edit files in
asagi/configs/
- Test with
task build
- Apply with
task apply
- Edit files in
-
Container Development:
cd yamabuki/ docker run -it --rm -v "$PWD":/workspace nvimc
Edit asagi/home.nix
:
home.packages = with pkgs; [
# existing packages...
your-new-package
];
Create new .zsh
files in asagi/configs/zsh/
:
- Files are automatically sourced
- Organize by purpose (basic/ for core, command/ for tool-specific)
- Nix Darwin manages system-level configuration
- Home Manager handles user-space configuration
- Modular imports organize configuration by tool
- Automatic loading reduces manual configuration management
The legacy Go system demonstrates type-safe configuration management:
FilePath
- Guarantees file existenceDirectoryPath
- Guarantees directory existenceNonExistentDirectoryPath
- Safe for creation operations
All systems support environment variable expansion (e.g., $HOME
, $ZSH
) for portability across different user environments.
- ✅ Current: Asagi (Nix Darwin) - Primary development system
⚠️ Deprecated: Homem (Go) - Legacy system, reference only- ✅ Specialized: Yamabuki (Container) - Development environment
- Sudo permissions: Some commands require manual execution
- Nix Darwin not found: Run
task init
first - Container issues: Ensure Docker is running
- Check existing documentation in each project directory
- Review CLAUDE.md for Claude Code specific guidance
- Examine Taskfile.yml for available commands
This repository is open source and available for use. Note that configurations may change without notice - use at your own risk.