52 lines
1.5 KiB
Markdown
52 lines
1.5 KiB
Markdown
|
|
# home/ - Home Manager Configurations
|
||
|
|
|
||
|
|
User-level configurations managed by home-manager.
|
||
|
|
|
||
|
|
## Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
home/
|
||
|
|
├── common/ # Shared home-manager config
|
||
|
|
│ └── default.nix # Overlays, nix-colors, allowUnfree
|
||
|
|
├── features/ # Modular, toggle-able features
|
||
|
|
│ ├── cli/ # Shell tools (see features/AGENTS.md)
|
||
|
|
│ ├── coding/ # Dev tools
|
||
|
|
│ └── desktop/ # GUI, Hyprland, theming
|
||
|
|
└── m3tam3re/ # Per-host user configs
|
||
|
|
├── home.nix # Shared user config (git, ssh, packages)
|
||
|
|
└── m3-<host>.nix # Host-specific (imports features, monitor layouts)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Per-Host Config Pattern
|
||
|
|
|
||
|
|
Each `m3-<host>.nix`:
|
||
|
|
1. Imports `../common`, `./home.nix`, and needed `../features/*`
|
||
|
|
2. Enables specific features via `features.<category>.<name>.enable`
|
||
|
|
3. Overrides host-specific settings (monitors, default apps)
|
||
|
|
|
||
|
|
Example:
|
||
|
|
```nix
|
||
|
|
{
|
||
|
|
imports = [../common ./home.nix ../features/cli ../features/desktop];
|
||
|
|
|
||
|
|
features.cli.nushell.enable = true;
|
||
|
|
features.desktop.hyprland.enable = true;
|
||
|
|
|
||
|
|
wayland.windowManager.hyprland.settings.monitor = ["DP-1,2560x1440,0x0,1"];
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Theming
|
||
|
|
|
||
|
|
Uses nix-colors (Dracula scheme). Access colors:
|
||
|
|
```nix
|
||
|
|
"#${config.colorScheme.palette.base00}" # Background
|
||
|
|
"#${config.colorScheme.palette.base05}" # Foreground
|
||
|
|
```
|
||
|
|
|
||
|
|
## Adding New User Config
|
||
|
|
|
||
|
|
1. Create `m3tam3re/m3-<newhost>.nix`
|
||
|
|
2. Import needed features
|
||
|
|
3. Add to `flake.nix` homeConfigurations (standalone) or host's home-manager.users
|