# floatdrop/nnn-starter architecture

> Architecture diagram of the GitHub repository floatdrop/nnn-starter, 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/floatdrop/nnn-starter
- Repository: https://github.com/floatdrop/nnn-starter

## Overview

nnn-starter is an opinionated NixOS desktop configuration: users set machine-specific values, then build and switch a NixOS configuration to get a themed Niri + Noctalia Wayland desktop and developer-ready tools. Its documented layers are the flake/host configuration, system modules, home modules, and the shared Kanagawa theme. The README documents the Niri keybindings and major included applications. Source excerpts were unavailable, so arrows reflect documented configuration and launch relationships, not inspected Nix imports or runtime calls.

Main entry points: [`modules/nixos/default.nix`](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/default.nix) (System module set), [`modules/home/default.nix`](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/default.nix) (Home module set), [`hosts/nnn/default.nix`](https://github.com/floatdrop/nnn-starter/blob/main/hosts/nnn/default.nix) (Host settings), [`flake.nix`](https://github.com/floatdrop/nnn-starter/blob/main/flake.nix) (Flake configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Configuration entry"]
  node_flake["Flake configuration<br/>[flake.nix]"]
  node_host["Host settings<br/>[default.nix]"]
  node_local["Local identity<br/>[local.nix]"]
  node_hardware["Hardware config"]
end

subgraph group_system["NixOS system"]
  node_systembase["System module set<br/>[default.nix]"]
  node_boot["Boot configuration<br/>[boot.nix]"]
  node_hardwaremodule["System hardware<br/>[hardware.nix]"]
  node_network["Networking<br/>[networking.nix]"]
  node_audio["Audio<br/>[audio.nix]"]
  node_users["System users<br/>[users.nix]"]
  node_desktopmodule["Desktop services<br/>[desktop.nix]"]
end

subgraph group_home["Home environment"]
  node_homebase["Home module set<br/>[default.nix]"]
  node_apps["Desktop applications<br/>[apps.nix]"]
  node_cli["CLI tools<br/>[cli.nix]"]
  node_shell["Zsh and prompt<br/>[zsh.nix]"]
  node_terminal["Ghostty terminal<br/>[ghostty.nix]"]
  node_editor["Neovim editor<br/>[neovim.nix]"]
end

subgraph group_desktop["Desktop and theme"]
  node_nixri_sys["Niri system setup<br/>[niri.nix]"]
  node_noctalia_sys["Noctalia system setup<br/>[noctalia.nix]"]
  node_stylix["System theming<br/>[stylix.nix]"]
  node_palette["Kanagawa palette<br/>[kanagawa.yaml]"]
  node_niri_home["Niri keybindings<br/>[niri.nix]"]
end

node_user(("Machine user"))
node_rebuild["NixOS rebuild"]

node_user -->|"sets identity"| node_local
node_user -->|"generates config"| node_hardware
node_user -->|"runs"| node_rebuild
node_rebuild -->|"evaluates and switches"| node_flake
node_flake -->|"selects host"| node_host
node_flake -->|"configures system"| node_systembase
node_host -->|"reads settings"| node_local
node_host -->|"uses hardware"| node_hardware
node_host -->|"configures home"| node_homebase
node_systembase -->|"configures"| node_boot
node_systembase -->|"configures"| node_hardwaremodule
node_systembase -->|"configures"| node_network
node_systembase -->|"configures"| node_audio
node_systembase -->|"configures"| node_users
node_systembase -->|"configures"| node_desktopmodule
node_systembase -->|"configures"| node_nixri_sys
node_systembase -->|"configures"| node_noctalia_sys
node_systembase -->|"configures"| node_stylix
node_stylix -->|"uses scheme"| node_palette
node_homebase -->|"configures bindings"| node_niri_home
node_homebase -->|"configures apps"| node_apps
node_homebase -->|"configures tools"| node_cli
node_homebase -->|"configures shell"| node_shell
node_homebase -->|"configures terminal"| node_terminal
node_homebase -->|"configures editor"| node_editor
node_niri_home -->|"launches terminal"| node_terminal
node_niri_home -->|"launches apps"| node_apps

click node_flake "https://github.com/floatdrop/nnn-starter/blob/main/flake.nix"
click node_host "https://github.com/floatdrop/nnn-starter/blob/main/hosts/nnn/default.nix"
click node_local "https://github.com/floatdrop/nnn-starter/blob/main/local.nix"
click node_hardware "https://github.com/floatdrop/nnn-starter/blob/main/hosts/nnn/hardware-configuration.nix"
click node_systembase "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/default.nix"
click node_boot "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/boot.nix"
click node_hardwaremodule "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/hardware.nix"
click node_network "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/networking.nix"
click node_audio "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/audio.nix"
click node_users "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/users.nix"
click node_desktopmodule "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/desktop.nix"
click node_nixri_sys "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/niri.nix"
click node_noctalia_sys "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/noctalia.nix"
click node_stylix "https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/stylix.nix"
click node_palette "https://github.com/floatdrop/nnn-starter/blob/main/themes/kanagawa.yaml"
click node_homebase "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/default.nix"
click node_niri_home "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/niri.nix"
click node_apps "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/apps.nix"
click node_cli "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/cli.nix"
click node_shell "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/zsh.nix"
click node_terminal "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/ghostty.nix"
click node_editor "https://github.com/floatdrop/nnn-starter/blob/main/modules/home/neovim.nix"

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_flake,node_host,node_local,node_hardware,node_user toneBlue
class node_systembase,node_boot,node_hardwaremodule,node_network,node_audio,node_users,node_desktopmodule toneAmber
class node_homebase,node_apps,node_cli,node_shell,node_terminal,node_editor toneMint
class node_nixri_sys,node_noctalia_sys,node_stylix,node_palette,node_niri_home toneRose
class node_rebuild toneIndigo
```

## Components

### Configuration entry

- [Flake configuration](https://github.com/floatdrop/nnn-starter/blob/main/flake.nix): `flake.nix`
- [Host settings](https://github.com/floatdrop/nnn-starter/blob/main/hosts/nnn/default.nix): `hosts/nnn/default.nix`
- [Local identity](https://github.com/floatdrop/nnn-starter/blob/main/local.nix): `local.nix`
- [Hardware config](https://github.com/floatdrop/nnn-starter/blob/main/hosts/nnn/hardware-configuration.nix): `hosts/nnn/hardware-configuration.nix`

### NixOS system

- [System module set](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/default.nix): `modules/nixos/default.nix`
- [Boot configuration](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/boot.nix): `modules/nixos/boot.nix`
- [System hardware](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/hardware.nix): `modules/nixos/hardware.nix`
- [Networking](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/networking.nix): `modules/nixos/networking.nix`
- [Audio](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/audio.nix): `modules/nixos/audio.nix`
- [System users](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/users.nix): `modules/nixos/users.nix`
- [Desktop services](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/desktop.nix): `modules/nixos/desktop.nix`

### Home environment

- [Home module set](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/default.nix): `modules/home/default.nix`
- [Desktop applications](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/apps.nix): `modules/home/apps.nix`
- [CLI tools](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/cli.nix): `modules/home/cli.nix`
- [Zsh and prompt](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/zsh.nix): `modules/home/zsh.nix`
- [Ghostty terminal](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/ghostty.nix): `modules/home/ghostty.nix`
- [Neovim editor](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/neovim.nix): `modules/home/neovim.nix`

### Desktop and theme

- [Niri system setup](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/niri.nix): `modules/nixos/niri.nix`
- [Noctalia system setup](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/noctalia.nix): `modules/nixos/noctalia.nix`
- [System theming](https://github.com/floatdrop/nnn-starter/blob/main/modules/nixos/stylix.nix): `modules/nixos/stylix.nix`
- [Kanagawa palette](https://github.com/floatdrop/nnn-starter/blob/main/themes/kanagawa.yaml): `themes/kanagawa.yaml`
- [Niri keybindings](https://github.com/floatdrop/nnn-starter/blob/main/modules/home/niri.nix): `modules/home/niri.nix`

### Other components

- **Machine user**
- **NixOS rebuild**

## Connections

- Machine user → Local identity: sets identity
- Machine user → Hardware config: generates config
- Machine user → NixOS rebuild: runs
- NixOS rebuild → Flake configuration: evaluates and switches
- Flake configuration → Host settings: selects host
- Flake configuration → System module set: configures system
- Host settings → Local identity: reads settings
- Host settings → Hardware config: uses hardware
- Host settings → Home module set: configures home
- System module set → Boot configuration: configures
- System module set → System hardware: configures
- System module set → Networking: configures
- System module set → Audio: configures
- System module set → System users: configures
- System module set → Desktop services: configures
- System module set → Niri system setup: configures
- System module set → Noctalia system setup: configures
- System module set → System theming: configures
- System theming → Kanagawa palette: uses scheme
- Home module set → Niri keybindings: configures bindings
- Home module set → Desktop applications: configures apps
- Home module set → CLI tools: configures tools
- Home module set → Zsh and prompt: configures shell
- Home module set → Ghostty terminal: configures terminal
- Home module set → Neovim editor: configures editor
- Niri keybindings → Ghostty terminal: launches terminal
- Niri keybindings → Desktop applications: launches apps
