- Nix 96.6%
- Shell 3.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| docs | ||
| modules | ||
| scripts | ||
| wallpapers | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
arkonOS
A minimal, developer-focused NixOS configuration built with the dendritic pattern. It runs a niri and noctalia desktop and loads home-manager as a NixOS module.
Prerequisites
- NixOS with flakes enabled
nh— NixOS helper (pretty rebuilds with nvd diffs)
Setup
Clone to ~/arkonOS — the scripts default to that path:
git clone <repo-url> ~/arkonOS
Usage
arkcli (after first build)
After the first build, arkcli is available system-wide:
arkcli switch # rebuild and activate
arkcli boot # build + set next boot entry
arkcli build # dry-build only
arkcli update # update all flake inputs
arkcli update --switch # update inputs then activate
arkcli gc # remove old user generations
arkcli gc --system # remove old system generations (sudo)
arkcli gc --all # nh clean all
arkcli switch myhost # target a specific host
Set ARKON_FLAKE to override the flake path (default: ~/arkonOS):
ARKON_FLAKE=/other/path arkcli switch
scripts/ (bootstrap / pre-build)
Raw scripts to use before the first build, or without root:
| Script | What it does |
|---|---|
scripts/switch [host] |
nh os switch — rebuild + activate |
scripts/boot [host] |
nh os boot — build + set next boot entry |
scripts/build [host] |
nh os build — dry-build only |
scripts/update [--switch] |
nix flake update; --switch to also activate |
scripts/gc [--system|--all] |
garbage-collect the store |
Structure
import-tree auto-imports every .nix file under modules/. To add a feature,
add a file. There is no import list to edit.
flake.nix # inputs + flake-parts entry point
modules/
parts.nix # declares the systems and the arkon.modules bundle option
hosts/
voyager/
system.nix # defines nixosConfigurations.voyager from the bundles
configuration.nix # host identity: hostname, hostId, hardware import
hardware.nix # nixos-generate-config hardware scan
features/ # one file per feature (boot, audio, niri, nvf, …)
wallpapers/ # wallpaper assets (used by features/wallpapers.nix)
scripts/ # nh helper scripts
Each feature file is one flake-parts module. It merges its NixOS config into the
arkon.modules.nixos.workstation bundle and its home-manager config into the
arkon.modules.homeManager.benno bundle. A cross-class feature sets both in the
same file. The bundles are deferredModules, so many files merge under one
bundle name. Host and home assembly then reference a single bundle instead of a
hand-maintained import list.
Nix flakes see only git-tracked files. After you create a feature file, run
git add on it before you build.
Documentation
Task-oriented guides live in docs/:
- Adding a module — create and wire in NixOS (system-wide) and home-manager (per-user) modules.
- Adding a host — add a new machine and control which system / home-manager modules it uses.
- YubiKey registration (FIDO2) — enrol a key for login, sudo, and screen-unlock, plus KWallet auto-unlock.