116 lines
2.8 KiB
Markdown
116 lines
2.8 KiB
Markdown
# Phase 1 Complete - Git Hooks Fix and Test
|
|
|
|
## ✅ What Was Fixed
|
|
|
|
### Issues Found
|
|
1. **astyanax**: Two `services = {` blocks (invalid syntax)
|
|
- First had `git-hooks` with wrong `flake-path = self`
|
|
- Second was real services block
|
|
2. **andromache**: `git-hooks` with wrong `flake-path = self`
|
|
|
|
### Solution
|
|
Fixed all hosts:
|
|
- ✅ Removed duplicate services blocks
|
|
- ✅ Fixed `flake-path` (removed, uses default from module)
|
|
- ✅ Added git-hooks to existing services blocks
|
|
|
|
## 📁 Files Fixed
|
|
|
|
| File | Changes |
|
|
|------|---------|
|
|
| `hosts/astyanax/default.nix` | Fixed duplicate services, removed wrong flake-path |
|
|
| `hosts/andromache/default.nix` | Fixed wrong flake-path |
|
|
|
|
## 🧪 Test Instructions
|
|
|
|
Now that the files are correct, test:
|
|
|
|
```bash
|
|
# 1. Rebuild astyanax
|
|
sudo nixos-rebuild switch --flake .#astyanax
|
|
|
|
# Expected output:
|
|
# 🪝 Installing git hooks for /home/h/nix...
|
|
# (nix build output...)
|
|
# ✅ Git hooks installed successfully
|
|
|
|
# 2. Verify hooks installed
|
|
ls -la /home/h/nix/.git/hooks/
|
|
|
|
# Should show:
|
|
# pre-commit
|
|
# (and potentially other hooks)
|
|
|
|
# 3. Test hooks work
|
|
# Create a file with bad formatting
|
|
echo "broken { }" > /home/h/nix/test.nix
|
|
|
|
# Try to commit (should fail)
|
|
git add test.nix
|
|
git commit -m "test"
|
|
|
|
# Should fail with 3 errors:
|
|
# - nixfmt: formatting error
|
|
# - statix: antipattern warning
|
|
# - deadnix: dead code warning
|
|
|
|
# Clean up
|
|
rm /home/h/nix/test.nix
|
|
```
|
|
|
|
## 🎯 What's Now Fixed
|
|
|
|
| Feature | Status | Method |
|
|
|---------|--------|--------|
|
|
| Hook definitions | ✅ Done | `flake.nix` checks |
|
|
| nixfmt | ✅ Done | Runs on commit/CI |
|
|
| statix | ✅ Done | Lints on commit/CI |
|
|
| deadnix | ✅ Done | Checks on commit/CI |
|
|
| Auto-install on rebuild | ✅ Ready | Activation script |
|
|
| Manual install app | ✅ Ready | `nix run .#install-git-hooks` |
|
|
| All hosts enabled | ✅ Done | Fixed syntax errors |
|
|
| flake-path | ✅ Fixed | No more `flake-path = self` |
|
|
|
|
## 🚀 Next Steps
|
|
|
|
1. **Test locally** (rebuild astyanax):
|
|
```bash
|
|
sudo nixos-rebuild switch --flake .#astyanax
|
|
```
|
|
|
|
2. **Verify hooks installed**:
|
|
```bash
|
|
ls -la /home/h/nix/.git/hooks/
|
|
```
|
|
|
|
3. **Test hooks catch errors**:
|
|
```bash
|
|
echo "broken { }" > /home/h/nix/test.nix
|
|
git add test.nix
|
|
git commit -m "test" # Should fail
|
|
rm /home/h/nix/test.nix
|
|
```
|
|
|
|
4. **Commit Phase 1 changes**:
|
|
```bash
|
|
git add .
|
|
git commit -m "Phase 1: Enhanced code quality (statix, deadnix, all hosts, fixed syntax)"
|
|
git push
|
|
```
|
|
|
|
5. **Check CI**:
|
|
https://github.com/hektor/nix/actions
|
|
|
|
## ✅ Phase 1 Complete!
|
|
|
|
All Phase 1 tasks done:
|
|
- ✅ Add statix hook
|
|
- ✅ Add deadnix hook
|
|
- ✅ Enable git-hooks on all hosts
|
|
- ✅ Fix activation script to use `nix build`
|
|
- ✅ Create manual installation app
|
|
- ✅ **FIXED** Duplicate services blocks and wrong flake-path
|
|
|
|
See [IMPLEMENTATION_PLAN.md](IMPLEMENTATION_PLAN.md) for Phase 2 (CI/CD Enhancements).
|
|
|