fibe fixed my dude
This commit is contained in:
80
CLAUDE.md
Normal file
80
CLAUDE.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Build Commands
|
||||
|
||||
```bash
|
||||
# Rebuild and switch to main system (default specialization)
|
||||
ns # alias for: nh os switch --specialisation 00-main-system
|
||||
|
||||
# Update flake inputs and commit lock file
|
||||
nu # alias for: (cd ~/nixos-dots && nix flake update --commit-lock-file)
|
||||
|
||||
# Edit configuration in Emacs
|
||||
ne # alias for: emacsclient -c ~/nixos-dots/configuration.nix
|
||||
|
||||
# Direct rebuild commands (if not using nh aliases)
|
||||
sudo nixos-rebuild switch --flake .#mrfluffyPC
|
||||
sudo nixos-rebuild switch --flake .#mrfluffyLaptop
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Multi-Host / Multi-User System
|
||||
|
||||
This is a NixOS flake configuration targeting two machines (`mrfluffyPC`, `mrfluffyLaptop`) with three users (`mrfluffy`, `work`, `game`). The `systemName` variable (`"pc"` or `"laptop"`) is passed through `specialArgs` to enable hardware-conditional configuration.
|
||||
|
||||
### Specializations
|
||||
|
||||
Two boot specializations exist in `configuration.nix`:
|
||||
- **`00-main-system`**: Default desktop environment with Hyprland, full dev tooling
|
||||
- **`01-steam`**: Gaming mode with Gamescope, Steam Big Picture, auto-login to `game` user
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
flake.nix # Flake inputs and nixosConfigurations
|
||||
configuration.nix # Entry point: users, home-manager, specializations
|
||||
hardware-configuration.nix
|
||||
system/ # NixOS modules (boot, hardware, services, packages)
|
||||
├── boot.nix # Bootloader, kernel config (laptop/pc conditional)
|
||||
├── hardware.nix # GPU drivers (Intel for laptop, AMD for PC)
|
||||
├── nixOSPkgs.nix # System packages (~2300 lines)
|
||||
├── services.nix # System services (greetd, pipewire, etc.)
|
||||
└── specialisation/ # Boot mode configs
|
||||
home/ # Home Manager user configs
|
||||
├── mrfluffy.nix # Main user (imports dots/, stylix, services)
|
||||
├── work.nix # Work user
|
||||
├── game.nix # Gaming user
|
||||
├── homePkgs.nix # User packages
|
||||
└── stylix.nix # Unified theming (base16, fonts, cursors)
|
||||
dots/ # Application dotfiles as Nix modules
|
||||
├── hyprland.nix # Primary window manager
|
||||
├── waybar.nix # Status bar
|
||||
├── foot.nix # Terminal
|
||||
├── zsh.nix # Shell config with aliases
|
||||
└── doom/ # Doom Emacs config (raw files)
|
||||
assets/Wallpapers/ # Wallpaper images
|
||||
```
|
||||
|
||||
### Window Manager Selection
|
||||
|
||||
Set in `flake.nix` via `window_manager` variable (options: `"hyprland"`, `"river"`, `"niri"`, `"all"`). Currently set to `"hyprland"`. This variable is passed to modules for conditional WM configuration.
|
||||
|
||||
### Theming
|
||||
|
||||
Stylix + nix-colors provide unified theming across all applications:
|
||||
- Color scheme: `hardcore` (base00: `#141414`)
|
||||
- Configured in `home/stylix.nix`
|
||||
|
||||
### Conditional Hardware Config
|
||||
|
||||
Use the `systemName` variable (`"laptop"` or `"pc"`) for hardware-specific code:
|
||||
```nix
|
||||
let
|
||||
isLaptop = systemName == "laptop";
|
||||
isPc = systemName == "pc";
|
||||
in
|
||||
# ... use lib.mkIf for conditional values
|
||||
```
|
||||
Reference in New Issue
Block a user