nixos/agents.md

2.4 KiB

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
  • Always carefully inspect the NixOS wiki for instructions before adding new applications to the repo
  • 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):

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:
    git add . && git commit -m "description"
    git push origin master
    
  5. Update target systems:
    ssh <hostname> 'cd ~/src/nixos && git pull && sudo nixos-rebuild switch --flake .#'
    

Bulk Updates

# 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

# 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