98 lines
2.8 KiB
Markdown
98 lines
2.8 KiB
Markdown
# Helm Environment Overview
|
|
|
|
## Box NAS Server (`box` / `mossnet.lan`)
|
|
|
|
### Hardware
|
|
- NVMe boot drive (LUKS encrypted)
|
|
- 3x 4TB drives in ZFS RAIDZ1 pool (`tank`) - ~7.14TB usable
|
|
|
|
### ZFS Datasets
|
|
| Dataset | Mountpoint | Purpose |
|
|
|---------|------------|---------|
|
|
| `tank/data/media` | `/tank/media` | Media library (music, photos, tv, movies) |
|
|
| `tank/data/books` | `/tank/books` | Calibre library |
|
|
| `tank/data/podcasts` | `/tank/podcasts` | Podcast storage |
|
|
| `tank/data/new-music` | `/tank/new-music` | Incoming music from seedbox |
|
|
| `tank/data/backup` | `/tank/backup` | PostgreSQL backups |
|
|
| `tank/data/archive` | `/tank/archive` | Old data (memories, old-home-dirs, etc.) |
|
|
|
|
### Services
|
|
- **Immich** - Photo management (`/tank/media/photos`)
|
|
- **Gonic** - Music streaming (`/tank/media/music`)
|
|
- **Calibre-server/Calibre-web** - Ebook management (`/tank/books`)
|
|
- **Jellyfin** - Media streaming
|
|
- **Lidarr** - Music management (runs as `headphones:audio`)
|
|
- **Radicale** - CalDAV/CardDAV
|
|
- **Syncthing** - File sync
|
|
- **PostgreSQL** - Database
|
|
- **Taskserver** - Taskwarrior sync
|
|
|
|
---
|
|
|
|
## Repository Structure
|
|
|
|
```
|
|
helm/
|
|
├── flake.nix # Main flake - defines all hosts
|
|
├── hosts/
|
|
│ ├── box/
|
|
│ │ ├── default.nix # Box host config, imports profiles
|
|
│ │ ├── configuration.nix # Hardware/boot config
|
|
│ │ └── disko.nix # Disk/ZFS layout
|
|
│ ├── profiles/ # NixOS service profiles
|
|
│ │ ├── sync/music/ # get-music-sync service
|
|
│ │ ├── headphones/ # Lidarr config
|
|
│ │ ├── jellyfin/
|
|
│ │ ├── monitoring/
|
|
│ │ └── ...
|
|
├── home/
|
|
│ ├── dev/
|
|
│ │ └── default.nix # Home-manager config for box
|
|
│ └── profiles/
|
|
│ ├── beets/ # Beets music library config
|
|
│ ├── cli/
|
|
│ ├── nvim/
|
|
│ ├── git/
|
|
│ └── opencode/
|
|
├── secrets/ # Agenix encrypted secrets
|
|
└── modules/ # Custom NixOS modules
|
|
```
|
|
|
|
---
|
|
|
|
## Deployment
|
|
|
|
```bash
|
|
# Deploy to a host
|
|
deploy .#box
|
|
deploy .#curve
|
|
deploy .#helix
|
|
deploy .#lituus
|
|
|
|
# SSH access to box
|
|
ssh anish@mossnet.lan
|
|
```
|
|
|
|
---
|
|
|
|
## Key Users/Groups
|
|
|
|
| User | Group | Purpose |
|
|
|------|-------|---------|
|
|
| `anish` | `users`, `wheel`, `audio`, `video`, `docker` | Primary user |
|
|
| `headphones` | `audio` | Lidarr service |
|
|
| `gonic` | `audio` | Gonic music streaming |
|
|
| `immich` | `immich` | Photo management |
|
|
| `calibre-server` | `calibre-server` | Ebook server |
|
|
|
|
---
|
|
|
|
## Hosts
|
|
|
|
| Host | Description |
|
|
|------|-------------|
|
|
| `box` | NAS server (mossnet.lan) |
|
|
| `curve` | Workstation |
|
|
| `helix` | Workstation |
|
|
| `lituus` | VPS/Server |
|