Skip to content

Commit 2ef2a03

Browse files
committed
Update README to reflect current project structure
- Updated directory structure to match actual files - Removed VS Code references, replaced with editor-agnostic approach - Updated installation commands to show both rick and macbook configs - Added new Linux modules (aws.nix, github.nix, ramdisk.nix, etc.) - Replaced outdated version manager section with modern features - Updated common tasks with correct file paths - Minor formatting improvements to Claude Code instructions
1 parent 8d4c841 commit 2ef2a03

File tree

2 files changed

+74
-46
lines changed

2 files changed

+74
-46
lines changed

README.md

Lines changed: 73 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,48 @@ Here's how I've organized everything:
3030
├── flake.lock # Lock file for flake dependencies
3131
├── nix.conf # Global Nix settings
3232
├── Vagrantfile # Legacy Vagrant configuration (kept for reference)
33+
├── CLAUDE.md # Claude Code project instructions
34+
├── COMMIT_CONVENTION.md # Git commit message conventions
35+
├── LICENSE # MIT license
36+
├── renovate.json # Renovate dependency updates
3337
├── common/ # Shared configuration
3438
│ ├── default.nix # Common packages and settings
39+
│ ├── home-packages.nix # Shared packages for all systems
3540
│ ├── claude-code/ # Claude Code integration
36-
│ │ ├── default.nix # Claude Code and MCP server setup
41+
│ │ ├── default.nix # Claude Code setup
3742
│ │ ├── settings.json # Claude Code settings
3843
│ │ ├── CLAUDE.md # Claude Code instructions
3944
│ │ └── commands/ # Custom Claude Code commands
45+
│ │ ├── breakdown-linear-issue.md
46+
│ │ ├── bugfix.md
47+
│ │ ├── process-task.md
48+
│ │ ├── refactor.md
49+
│ │ └── linear/ # Linear integration commands
4050
│ └── zsh/ # Shared ZSH configuration
4151
│ ├── default.nix # ZSH module definition
4252
│ ├── default.omp.json # Oh-My-Posh theme
4353
│ └── shared.nix # Shared ZSH settings
4454
├── systems/ # Architecture-specific configurations
4555
│ ├── aarch64-darwin/ # Apple Silicon macOS configurations
4656
│ │ ├── default.nix # Main configuration for macOS
57+
│ │ ├── home.nix # Home Manager configuration
4758
│ │ ├── homebrew.nix # Homebrew packages and settings
4859
│ │ ├── defaults.nix # macOS system preferences
4960
│ │ ├── dock.nix # Dock configuration
5061
│ │ ├── git.nix # macOS-specific Git setup
5162
│ │ └── zed/ # Zed editor configuration
63+
│ │ ├── default.nix
64+
│ │ └── settings.json
5265
│ └── aarch64-linux/ # ARM Linux configurations
53-
│ ├── ec2.nix # EC2-specific Home Manager configuration
66+
│ ├── default.nix # Common Linux system configuration
5467
│ ├── vagrant.nix # Legacy VM configuration
55-
│ ├── default.nix # System configuration
68+
│ ├── ec2.nix # EC2-specific Home Manager configuration
69+
│ ├── aws.nix # AWS-specific configurations
5670
│ ├── git.nix # Linux-specific Git configuration
71+
│ ├── github.nix # GitHub CLI and integrations
72+
│ ├── ramdisk.nix # RAM disk configurations
73+
│ ├── rclone.nix # Cloud storage sync configurations
74+
│ ├── user-scripts.nix # Custom user scripts
5775
│ └── zsh.nix # Linux-specific ZSH setup
5876
├── overlays/ # Custom Nix overlays
5977
│ └── tfenv.nix # Terraform Version Manager overlay
@@ -102,8 +120,11 @@ Setting up on macOS with Apple Silicon is pretty straightforward:
102120

103121
3. Apply it to your Mac:
104122
```bash
105-
# For the rick configuration (your actual hostname)
123+
# For the rick configuration (replace with your hostname)
106124
darwin-rebuild switch --flake ~/.config/nix#rick
125+
126+
# Or use the generic macbook configuration
127+
darwin-rebuild switch --flake ~/.config/nix#macbook
107128
```
108129

109130
### 🌩️ Cloud Deployment with Packer {#-cloud-deployment-with-packer}
@@ -139,7 +160,7 @@ Want to use this on multiple Macs? No problem! You can have different settings f
139160
dockApps = [
140161
"/Applications/Safari.app"
141162
"/Applications/Mail.app"
142-
"/Applications/Visual Studio Code.app"
163+
"/Applications/Zed.app"
143164
];
144165
};
145166
```
@@ -160,17 +181,20 @@ darwin-rebuild switch --flake ~/.config/nix#rick
160181
```
161182

162183
**Included MCP servers:**
184+
163185
- **context7**: Documentation and context retrieval
164186
- **code-reasoning**: Code analysis and reasoning capabilities
165187
- **sequential-thinking**: Step-by-step problem solving
166188

167189
The configuration automatically:
190+
168191
- Installs Claude Code via npm
169192
- Configures MCP servers as user-scoped (available across all projects)
170193
- Sets up custom commands and workflows
171194
- Manages settings and documentation
172195

173196
**Claude Code features:**
197+
174198
- Custom commands for Linear integration
175199
- Sophisticated development workflows
176200
- Automated code quality checks
@@ -179,6 +203,7 @@ The configuration automatically:
179203
### 🖥️ Local Development Options
180204

181205
While this configuration previously included Vagrant VM setup, the focus has shifted to:
206+
182207
- **Direct macOS development** with Nix managing dependencies
183208
- **Cloud development** using EC2 instances with Tailscale
184209
- **Claude Code integration** for AI-enhanced development
@@ -192,7 +217,6 @@ Want to take your development environment to the cloud? Here's how to set up you
192217
> **Note**: As an alternative to manual setup, consider using the Packer template in `packer/aws-ec2.pkr.hcl` to automatically build an AMI with Nix pre-configured. See the [Cloud Deployment with Packer](#-cloud-deployment-with-packer) section.
193218
194219
1. Launch an Ubuntu EC2 instance:
195-
196220
- Use Ubuntu Server 22.04 LTS or newer (ARM64 for Graviton instances)
197221
- Recommended: t4g.medium or better for decent performance
198222
- You can keep the instance completely private in a private subnet
@@ -219,7 +243,6 @@ Want to take your development environment to the cloud? Here's how to set up you
219243
```
220244

221245
3. Install Tailscale on your local machine:
222-
223246
- macOS: `brew install tailscale`
224247
- Visit https://tailscale.com/download for other platforms
225248
- Run `tailscale up` and authenticate
@@ -250,7 +273,6 @@ Want to take your development environment to the cloud? Here's how to set up you
250273
```
251274

252275
6. Create EC2-specific configuration:
253-
254276
- Modify your `flake.nix` to add an EC2 configuration:
255277

256278
```nix
@@ -318,17 +340,12 @@ Want to take your development environment to the cloud? Here's how to set up you
318340
nix run home-manager/master -- switch --flake ~/.config/nix#ec2 --impure
319341
```
320342

321-
8. Connect with VS Code:
322-
323-
- Install the "Remote - SSH" extension in VS Code
324-
- Add a new SSH configuration by editing your SSH config file:
325-
```
326-
Host ec2-dev
327-
HostName ec2-hostname.tailnet.ts.net
328-
User ubuntu
329-
ForwardAgent yes
343+
8. Connect with your editor:
344+
- Use SSH to connect to your development environment:
345+
```bash
346+
ssh ubuntu@ec2-hostname.tailnet.ts.net
330347
```
331-
- Connect to "ec2-dev" from the Remote SSH extension
348+
- Or configure your editor's remote development features
332349
- Open your projects folder and enjoy your cloud development environment!
333350
334351
9. To update your configuration:
@@ -346,22 +363,22 @@ With this Tailscale-powered setup, you get all the benefits of a cloud developme
346363
- Get consistent development environments across your entire team
347364
- Access your environment securely from anywhere
348365

349-
### 🔧 Version Manager Setup
350-
351-
I've set up two super handy version managers in the VM that make switching between different versions of tools a breeze:
366+
### 🔧 Additional Features
352367

353-
1. **tfenv** - For all your Terraform needs:
354-
355-
```bash
356-
# Grab any Terraform version you want
357-
tfenv install 1.5.0
368+
This configuration includes several advanced features:
358369

359-
# Switch versions with a single command
360-
tfenv use 1.5.0
370+
#### 🌟 Enhanced Linux Development
371+
- **AWS Integration**: Pre-configured AWS CLI with profile support
372+
- **GitHub CLI**: Seamless GitHub integration with authentication
373+
- **RAM Disk Support**: High-performance temporary storage configurations
374+
- **Cloud Storage**: Rclone integration for syncing with cloud providers
375+
- **Custom Scripts**: User-defined scripts for workflow automation
361376

362-
# See what you've got installed
363-
tfenv list
364-
```
377+
#### 🛠️ Specialized Configurations
378+
- **Renovate**: Automated dependency updates via `renovate.json`
379+
- **Commit Conventions**: Standardized commit message format via `COMMIT_CONVENTION.md`
380+
- **Zed Editor**: Modern editor configuration with settings
381+
- **Linear Integration**: Custom Claude Code commands for Linear workflow
365382

366383
## 🔄 Usage
367384

@@ -375,8 +392,11 @@ Keeping everything up to date is super simple:
375392
# Pull latest changes
376393
git pull
377394
378-
# Apply configuration
395+
# Apply configuration (replace with your hostname)
379396
darwin-rebuild switch --flake ~/.config/nix#rick
397+
398+
# Or use the generic configuration
399+
darwin-rebuild switch --flake ~/.config/nix#macbook
380400
```
381401

382402
#### ☁️ EC2 Instance:
@@ -402,15 +422,19 @@ Tweaking things is easy:
402422

403423
Here's how to do all the usual stuff:
404424
405-
- 📦 Adding packages everywhere: Just edit `common/default.nix`
425+
- 📦 Adding packages everywhere: Edit `common/home-packages.nix`
406426
- 🍎 Adding Mac-only packages: Edit `systems/aarch64-darwin/default.nix`
407427
- 🍺 Need a GUI app via Homebrew? Edit `systems/aarch64-darwin/homebrew.nix`
408428
- ⚙️ Tweaking macOS settings: Look in `systems/aarch64-darwin/defaults.nix`
409-
- 📱 Changing dock icons: Find your host in `flake.nix`
429+
- 📱 Changing dock icons: Edit `systems/aarch64-darwin/dock.nix`
410430
- 🤖 Configuring Claude Code: Edit `common/claude-code/default.nix`
411431
- ☁️ Adding stuff to your EC2 instance: Edit `systems/aarch64-linux/ec2.nix`
432+
- 🔧 AWS-specific configurations: Edit `systems/aarch64-linux/aws.nix`
433+
- 🐙 GitHub CLI setup: Edit `systems/aarch64-linux/github.nix`
434+
- 💾 RAM disk configurations: Edit `systems/aarch64-linux/ramdisk.nix`
435+
- ☁️ Cloud storage sync: Edit `systems/aarch64-linux/rclone.nix`
436+
- 📜 Custom user scripts: Edit `systems/aarch64-linux/user-scripts.nix`
412437
- ⚡ Modifying AWS EC2 image: Edit `packer/aws-ec2.pkr.hcl`
413-
- 🔄 Adding a custom tool: Create a new file in `overlays/` and add it to `flake.nix`
414438
- 🔧 Pre-commit hooks: Edit `.pre-commit-config.yaml`
415439
416440
### ☁️ AWS Configuration
@@ -494,25 +518,31 @@ I've set things up so I can easily manage:
494518

495519
This configuration focuses exclusively on ARM64 architecture (aarch64), optimized for Apple Silicon Macs and ARM-based Linux environments like ARM EC2 instances.
496520

497-
### 📦 Custom Nix Overlays
498-
499-
Sometimes the standard Nix packages don't have exactly what you need, or they're not up to date. That's where my custom overlays come in:
521+
### 📦 Modern Development Workflow
500522

501-
- **tfenv**: My go-to for managing multiple Terraform versions
523+
This configuration emphasizes a streamlined development approach:
502524

503-
These make life so much easier when you're working across multiple projects with different requirements.
525+
- **Declarative Configuration**: All system and development tools managed through Nix
526+
- **Cross-Platform Consistency**: Shared configuration between macOS and Linux environments
527+
- **AI-Enhanced Development**: Deep Claude Code integration with custom commands
528+
- **Cloud-Native Ready**: Built-in support for AWS, GitHub, and cloud storage
529+
- **Automated Maintenance**: Renovate for dependency updates, pre-commit hooks for quality
504530

505531
## 💡 Tips and Tricks
506532

507533
Here are a few things I've learned along the way:
508534
509535
- 🔄 **Nix + Homebrew Harmony**: Keep an eye on your PATH - I've set Homebrew to take precedence, but you might want to adjust this
510536

511-
- 🖥️ **VS Code Remote SSH**: The Remote SSH extension makes working in the VM feel just like working locally
537+
- 🖥️ **Remote Development**: SSH-based remote development works seamlessly with modern editors
538+
539+
- 🌐 **Browser Integration**: When you run commands like `gh auth login`, browser links will open automatically on your host machine
540+
541+
- 🤖 **Claude Code Commands**: Use the custom commands in `common/claude-code/commands/` for Linear integration and development workflows
512542

513-
- 🌐 **Browser Integration**: When you're in VS Code and run something like `gh auth login`, browser links will open automatically on your host machine
543+
- 🔧 **Tailscale Networking**: Secure networking between your devices without exposing services to the internet
514544

515-
- 🔧 **Multiple Terraform Versions**: Use tfenv to easily switch between different versions of Terraform for various projects
545+
- 📦 **Shared vs Specific**: Use `common/home-packages.nix` for tools you want everywhere, platform-specific configs for specialized tools
516546

517547
## 📄 License
518548

common/claude-code/CLAUDE.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ These are not suggestions. Fix ALL issues before continuing.
2929
```
3030

3131
**ALWAYS use context7 MCP** to read current documentation for:
32-
3332
- Framework/library versions and APIs
3433
- Best practices and patterns
3534
- Breaking changes or deprecations
@@ -38,7 +37,6 @@ These are not suggestions. Fix ALL issues before continuing.
3837
Say: "Let me check the latest docs and research the codebase before implementing."
3938

4039
2. **Planning Phase**
41-
4240
- Document your approach
4341
- Identify edge cases
4442
- Consider security implications
@@ -125,7 +123,7 @@ When stuck:
125123

126124
- Create a temporary scratchpad in comments
127125
- Document decisions and progress
128-
- Summarize before context gets long
126+
- Summarize before compaction occurs
129127

130128
### When context fills up:
131129

0 commit comments

Comments
 (0)