yeah i use some ai lol, sorry
This commit is contained in:
parent
34299f5614
commit
a0789edb6e
1 changed files with 105 additions and 0 deletions
105
CLAUDE.md
Normal file
105
CLAUDE.md
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Architecture
|
||||
|
||||
This is a unified NixOS and Home Manager configuration using the **trivionomicon doctrine system** as a git subtree.
|
||||
|
||||
### Directory Structure
|
||||
|
||||
- `home/` - Home Manager user configuration
|
||||
- `modules/` - User-level feature modules (terminal, neovim, firefox, ai, etc.)
|
||||
- `platforms/` - User-specific configs per host (`fabian@t14`, `fabian@posixlycorrect`, `fabian@vps`)
|
||||
- `sys/` - NixOS system configuration
|
||||
- `modules/` - System-level feature modules (audio, graphics, networking, etc.)
|
||||
- `platforms/` - Machine-specific configs (`t14`, `posixlycorrect`, `vps`)
|
||||
- `pkgs/` - Custom package overlays and nixpkgs configuration
|
||||
- `trivionomicon/` - Shared doctrine framework (git subtree)
|
||||
- `doctrine/` - Core library (`mkModule`, `mkSystemFlake`)
|
||||
- `modules/` - Shared modules usable by any host
|
||||
|
||||
### Namespace Conventions
|
||||
|
||||
- `config.local.*` - Home Manager modules (user level)
|
||||
- `config.local.sys.*` - NixOS modules (system level)
|
||||
- `config.trivium.*` - Trivionomicon shared modules
|
||||
|
||||
### Module Patterns
|
||||
|
||||
**Simple module** (single layer):
|
||||
```nix
|
||||
{config, lib, pkgs, ...}:
|
||||
with lib; let
|
||||
cfg = config.local.programs.terminal;
|
||||
in {
|
||||
options.local.programs.terminal = { enable = mkEnableOption "..."; };
|
||||
config = mkIf cfg.enable { ... };
|
||||
}
|
||||
```
|
||||
|
||||
### Platform Configuration
|
||||
|
||||
Each host has paired directories:
|
||||
- `sys/platforms/{hostname}/` - Machine-specific NixOS config
|
||||
- `home/platforms/{user}@{hostname}/` - User-specific Home Manager config
|
||||
|
||||
The `flake.nix` uses `trivionomicon.lib.mkSystemFlake` to auto-generate configurations from these platform directories.
|
||||
|
||||
## Trivionomicon System
|
||||
|
||||
The trivionomicon is a shared NixOS/Home Manager module framework maintained collaboratively. It lives as a git subtree at `trivionomicon/` and provides unified modules that work across both NixOS and Home Manager contexts.
|
||||
|
||||
### Core Functions
|
||||
|
||||
- **`mkDoctrine`** - Creates namespace context with the "trivium" prefix and hm/sys awareness
|
||||
- **`mkModule`** - Composes hm.nix + sys.nix + options.nix into a unified module
|
||||
- **`mkSystemFlake`** - Auto-generates flake outputs from platform directories
|
||||
|
||||
### Module Structure
|
||||
|
||||
```
|
||||
moduleName/
|
||||
├── default.nix # Entry: calls doctrine.lib.mkModule
|
||||
├── options.nix # Options split by hm/sys keys
|
||||
├── hm.nix # Home Manager implementation (optional)
|
||||
└── sys.nix # NixOS implementation (optional)
|
||||
```
|
||||
|
||||
### Available Modules
|
||||
|
||||
Modules are located at `trivionomicon/modules`.
|
||||
|
||||
### Git Subtree Workflow
|
||||
|
||||
#### Commit separation (critical):
|
||||
Never create commits that include both:
|
||||
- Changes inside `trivionomicon/`
|
||||
- Changes outside `trivionomicon/` (home/, sys/, pkgs/, flake.nix, etc.)
|
||||
|
||||
The trivionomicon is a shared project. Each commit touching `trivionomicon/` must contain only trivionomicon changes so it can be cleanly pushed upstream.
|
||||
|
||||
#### Commit message conventions:
|
||||
- If a module was modified: `trivionomicon/modules/<module name>: one line summary of changes`
|
||||
|
||||
Similar layout if something other than a module was modified.
|
||||
|
||||
#### Sync changes with the shared repository:
|
||||
```bash
|
||||
# Pull updates
|
||||
git subtree pull --prefix=trivionomicon forgejo@git.posixlycorrect.com:deepState/trivionomicon.git master
|
||||
|
||||
# Push changes back
|
||||
git subtree push --prefix=trivionomicon forgejo@git.posixlycorrect.com:deepState/trivionomicon.git master
|
||||
```
|
||||
|
||||
## Key Files
|
||||
|
||||
- `pkgs/config/unfree.nix` - Allowlist for unfree packages (add packages here when needed)
|
||||
- `pkgs/default.nix` - Package overlays and overrides
|
||||
- `trivionomicon/doctrine/lib/` - Core doctrine functions for module composition
|
||||
|
||||
## Restrictions
|
||||
|
||||
Never use any `nix`, `home-manager`, `nixos-rebuild` or `nix-collect-garbage` commands.
|
||||
Ask before using any `git` commands.
|
||||
Loading…
Add table
Add a link
Reference in a new issue