Files
nixos/CLAUDE.md
2025-09-05 17:34:50 -04:00

2.8 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

System Overview

This is a NixOS system configuration repository using Nix flakes with home-manager integration. The configuration manages multiple machines:

  • xps13: Dell XPS 13 laptop with Hyprland desktop environment
  • Titan: Server configuration
  • Athena: Server configuration

Architecture

The configuration is organized using a modular structure:

  • flake.nix: Main flake configuration defining system inputs and outputs for all machines
  • modules/: Shared configuration modules
    • configuration-common.nix: Common system settings shared across machines
    • configuration-[machine].nix: Machine-specific system configurations
    • hardware-configuration-[machine].nix: Hardware-specific configurations
    • home-manager-common.nix: Common home-manager packages and settings
    • hyprland.nix: Hyprland window manager configuration
    • waybar.nix: Waybar status bar configuration
  • home-[machine].nix: Machine-specific home-manager configurations
  • home/: User dotfiles and configuration files
  • secrets/: SOPS encrypted secrets

Key Technologies

  • NixOS: Declarative Linux distribution
  • Nix Flakes: Modern Nix package management with lockfile
  • Home Manager: Dotfile and user environment management
  • SOPS: Secret management with encryption
  • Disko: Declarative disk partitioning
  • Hyprland: Wayland compositor (xps13 only)
  • Neovim: Custom neovim configuration from external git repository

Common Commands

System Management

# Build and switch to new configuration (requires sudo)
sudo nixos-rebuild switch --flake .#[machine-name]

# Build without switching (test configuration)
nixos-rebuild build --flake .#[machine-name]

# Test configuration (temporary, reverts on reboot)
sudo nixos-rebuild test --flake .#[machine-name]

# Check flake for errors
nix flake check

# Update flake inputs
nix flake update

# Show available system generations
nixos-rebuild list-generations

Machine-Specific Examples

# XPS 13 laptop
sudo nixos-rebuild switch --flake .#xps13

# Titan server
sudo nixos-rebuild switch --flake .#Titan

# Athena server  
sudo nixos-rebuild switch --flake .#Athena

Development

# Enter development shell with nix tools
nix develop

# Format nix files
nix fmt

Important Notes

  • All machines use the username th3r00t
  • Neovim configuration is managed externally from git.th3r00t.net/th3r00t/nvim-config.git
  • SOPS is used for secret management - encrypted files are in secrets/
  • Hardware configurations are machine-specific and auto-generated
  • The flake uses nixos-unstable channel
  • Custom overlays are defined in flake.nix for package modifications