76 lines
2.3 KiB
Markdown
76 lines
2.3 KiB
Markdown
# NixOS Repository Quick Reference
|
|
|
|
## Quick Commands
|
|
- **Test build**: `nixos-rebuild build --flake .#<system>`
|
|
- **List systems**: `nix flake show`
|
|
- **Commit**: `git add files && git commit -m "msg"`
|
|
|
|
## Systems
|
|
- **warp**: Server + nginx + forgejo
|
|
- **skip**: Server + nginx only
|
|
- **framework/aurora/labrizor**: Desktop systems
|
|
|
|
## Key Files
|
|
- `flake.nix`: System definitions
|
|
- `systems/<name>.nix`: Hardware/boot configs
|
|
- `servers/<name>.nix`: Service configs
|
|
- `users/<name>.nix`: User configs
|
|
|
|
## Testing Workflow
|
|
1. Always `git status` first - affects flake evaluation
|
|
2. Stage changes (`git add`) before building - prevents Nix store issues
|
|
3. Test with `nixos-rebuild build --flake .#<system>`
|
|
4. Check success message: `"Done. The new configuration is /nix/store/..."`
|
|
|
|
## Important
|
|
- Server configs may contain hardcoded credentials - use agenix or systemd credentials for production
|
|
- Both warp and skip build successfully
|
|
- Repository root: `/home/jsutter/src/nixos`
|
|
|
|
## Remote System Management
|
|
|
|
### Access Systems
|
|
SSH to machines using hostnames (resolve via local `/etc/hosts` or DNS):
|
|
```bash
|
|
ssh <hostname> # Replace with actual system name
|
|
```
|
|
|
|
### Make Configuration Changes
|
|
1. **Check current systems:** View `flake.nix` for available system configurations
|
|
2. **Edit local config:** `cd ~/src/nixos && vim [relevant_file]`
|
|
3. **Test build:** `nixos-rebuild build --flake .#<system-name>`
|
|
4. **Commit and push changes:**
|
|
```bash
|
|
git add . && git commit -m "description"
|
|
git push origin master
|
|
```
|
|
5. **Update target systems:**
|
|
```bash
|
|
ssh <hostname> 'cd ~/src/nixos && git pull && sudo nixos-rebuild switch --flake .#'
|
|
```
|
|
|
|
### Bulk Updates
|
|
```bash
|
|
# Update multiple systems
|
|
for host in host1 host2 host3; do
|
|
ssh $host 'cd ~/src/nixos && git pull && sudo nixos-rebuild switch --flake .#' &
|
|
done
|
|
wait # Wait for all updates to complete
|
|
```
|
|
|
|
### Quick Management
|
|
```bash
|
|
# Check service status
|
|
ssh <hostname> 'systemctl status <service>'
|
|
|
|
# View logs
|
|
ssh <hostname> 'journalctl -u <service> -f'
|
|
|
|
# Rebuild if build fails
|
|
ssh <hostname> 'cd ~/src/nixos && git pull && sudo nixos-rebuild switch --flake .#'
|
|
```
|
|
|
|
### Repository
|
|
- **Central:** https://git.symbiotrip.com/jsutter/nixos
|
|
- **Config reference:** Check `flake.nix` for system names and module structure
|
|
- **Update workflow:** Local edit → Push → Remote pull → Rebuild
|