# ooks-io/ooknet architecture

> Architecture diagram of the GitHub repository ooks-io/ooknet, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ooks-io/ooknet
- Repository: https://github.com/ooks-io/ooknet
- Video tour (about a minute): https://gitdiagram.com/ooks-io/ooknet/video

## Overview

This is a personal Nix flake monorepo for declaratively configuring a multi-platform host fleet and its user environments, services, and related tools. The documented main workflow is host declarations mapped by builders into system configurations, which import per-host settings and reusable role/profile modules. The README also identifies packages, development environments, a website, and project templates as product capabilities. Some subsystem links are documented rather than verified in sampled source; uncertain wiring is omitted.

Main entry points: [`hosts`](https://github.com/ooks-io/ooknet/tree/main/hosts) (Per-host settings), [`outputs/builder`](https://github.com/ooks-io/ooknet/tree/main/outputs/builder) (Configuration builder), [`outputs/modules/home-manager`](https://github.com/ooks-io/ooknet/tree/main/outputs/modules/home-manager) (Home-Manager outputs), [`modules/nixos/server`](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server) (Server role)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_fleet["Fleet assembly"]
  node_host_data["Host declarations"]
  node_host_builder["Configuration builder"]
  node_host_outputs["Host outputs"]
  node_host_config["Per-host settings"]
  node_system_result["Built configurations"]
end

subgraph group_systems["System roles"]
  node_nixos_base["NixOS base"]
  node_hardware["Hardware profiles"]
  node_workstation["Workstation role"]
  node_server_role["Server role"]
  node_installer["Installer images"]
  node_darwin["macOS role"]
end

subgraph group_users["User environments"]
  node_home_common["Shared home modules"]
  node_home_console["Console profiles"]
  node_home_nixos["Desktop profiles"]
  node_home_manager["Home-Manager outputs"]
end

subgraph group_services["Server services"]
  node_server_services["Service collection"]
  node_webserver["Web serving"]
end

subgraph group_extras["Project capabilities"]
  node_packages["Custom packages"]
  node_devshells["Development environments"]
  node_website["Personal website"]
  node_templates["Project templates"]
end

node_maintainer(("Fleet maintainer"))

node_maintainer -->|"declares hosts"| node_host_data
node_host_data -->|"configures builds"| node_host_builder
node_host_builder -->|"builds outputs"| node_host_outputs
node_host_builder -->|"imports host"| node_host_config
node_host_builder -->|"produces systems"| node_system_result
node_host_config -->|"selects modules"| node_nixos_base
node_host_config -->|"selects hardware"| node_hardware
node_host_config -->|"selects role"| node_workstation
node_host_config -->|"selects role"| node_server_role
node_host_config -->|"selects image"| node_installer
node_host_config -->|"selects platform"| node_darwin
node_workstation -->|"uses profiles"| node_home_manager
node_home_manager -->|"configures home"| node_home_common
node_home_manager -->|"configures home"| node_home_console
node_home_manager -->|"configures home"| node_home_nixos
node_server_role -->|"enables services"| node_server_services
node_server_role -->|"configures web"| node_webserver
node_maintainer -->|"uses packages"| node_packages
node_maintainer -->|"uses environments"| node_devshells
node_server_services -.->|"hosts website"| node_website
node_maintainer -->|"bootstraps projects"| node_templates

click node_host_data "https://github.com/ooks-io/ooknet/tree/main/outputs/ook"
click node_host_builder "https://github.com/ooks-io/ooknet/tree/main/outputs/builder"
click node_host_outputs "https://github.com/ooks-io/ooknet/tree/main/outputs/hosts"
click node_host_config "https://github.com/ooks-io/ooknet/tree/main/hosts"
click node_nixos_base "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/base"
click node_hardware "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/hardware"
click node_workstation "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/workstation"
click node_server_role "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server"
click node_installer "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/image"
click node_darwin "https://github.com/ooks-io/ooknet/tree/main/modules/darwin"
click node_home_common "https://github.com/ooks-io/ooknet/tree/main/modules/home/common"
click node_home_console "https://github.com/ooks-io/ooknet/tree/main/modules/home/console"
click node_home_nixos "https://github.com/ooks-io/ooknet/tree/main/modules/home/nixos"
click node_home_manager "https://github.com/ooks-io/ooknet/tree/main/outputs/modules/home-manager"
click node_server_services "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server/services"
click node_webserver "https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server/webserver"
click node_packages "https://github.com/ooks-io/ooknet/tree/main/outputs/pkgs"
click node_devshells "https://github.com/ooks-io/ooknet/tree/main/outputs/devshells"
click node_website "https://github.com/ooks-io/ooknet/tree/main/outputs/pkgs/website"
click node_templates "https://github.com/ooks-io/ooknet/tree/main/outputs/templates"
click node_system_result "https://github.com/ooks-io/ooknet/tree/main/outputs/builder"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_host_data,node_host_builder,node_host_outputs,node_host_config,node_system_result toneBlue
class node_nixos_base,node_hardware,node_workstation,node_server_role,node_installer,node_darwin toneAmber
class node_home_common,node_home_console,node_home_nixos,node_home_manager toneMint
class node_server_services,node_webserver toneRose
class node_packages,node_devshells,node_website,node_templates,node_maintainer toneIndigo
```

## Components

### Fleet assembly

- [Host declarations](https://github.com/ooks-io/ooknet/tree/main/outputs/ook): `outputs/ook`
- [Configuration builder](https://github.com/ooks-io/ooknet/tree/main/outputs/builder): `outputs/builder`
- [Host outputs](https://github.com/ooks-io/ooknet/tree/main/outputs/hosts): `outputs/hosts`
- [Per-host settings](https://github.com/ooks-io/ooknet/tree/main/hosts): `hosts`
- [Built configurations](https://github.com/ooks-io/ooknet/tree/main/outputs/builder): `outputs/builder`

### System roles

- [NixOS base](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/base): `modules/nixos/base`
- [Hardware profiles](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/hardware): `modules/nixos/hardware`
- [Workstation role](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/workstation): `modules/nixos/workstation`
- [Server role](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server): `modules/nixos/server`
- [Installer images](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/image): `modules/nixos/image`
- [macOS role](https://github.com/ooks-io/ooknet/tree/main/modules/darwin): `modules/darwin`

### User environments

- [Shared home modules](https://github.com/ooks-io/ooknet/tree/main/modules/home/common): `modules/home/common`
- [Console profiles](https://github.com/ooks-io/ooknet/tree/main/modules/home/console): `modules/home/console`
- [Desktop profiles](https://github.com/ooks-io/ooknet/tree/main/modules/home/nixos): `modules/home/nixos`
- [Home-Manager outputs](https://github.com/ooks-io/ooknet/tree/main/outputs/modules/home-manager): `outputs/modules/home-manager`

### Server services

- [Service collection](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server/services): `modules/nixos/server/services`
- [Web serving](https://github.com/ooks-io/ooknet/tree/main/modules/nixos/server/webserver): `modules/nixos/server/webserver`

### Project capabilities

- [Custom packages](https://github.com/ooks-io/ooknet/tree/main/outputs/pkgs): `outputs/pkgs`
- [Development environments](https://github.com/ooks-io/ooknet/tree/main/outputs/devshells): `outputs/devshells`
- [Personal website](https://github.com/ooks-io/ooknet/tree/main/outputs/pkgs/website): `outputs/pkgs/website`
- [Project templates](https://github.com/ooks-io/ooknet/tree/main/outputs/templates): `outputs/templates`

### Other components

- **Fleet maintainer**

## Connections

- Fleet maintainer → Host declarations: declares hosts
- Host declarations → Configuration builder: configures builds
- Configuration builder → Host outputs: builds outputs
- Configuration builder → Per-host settings: imports host
- Configuration builder → Built configurations: produces systems
- Per-host settings → NixOS base: selects modules
- Per-host settings → Hardware profiles: selects hardware
- Per-host settings → Workstation role: selects role
- Per-host settings → Server role: selects role
- Per-host settings → Installer images: selects image
- Per-host settings → macOS role: selects platform
- Workstation role → Home-Manager outputs: uses profiles
- Home-Manager outputs → Shared home modules: configures home
- Home-Manager outputs → Console profiles: configures home
- Home-Manager outputs → Desktop profiles: configures home
- Server role → Service collection: enables services
- Server role → Web serving: configures web
- Fleet maintainer → Custom packages: uses packages
- Fleet maintainer → Development environments: uses environments
- Service collection → Personal website: hosts website
- Fleet maintainer → Project templates: bootstraps projects
