No description
  • Nix 96.6%
  • Shell 3.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Benno Lorenz aaf2dec449 rework for canonical dendritic nix
cleaned up comments
2026-07-28 20:42:10 +02:00
docs updated docs 2026-07-16 10:08:14 +02:00
modules rework for canonical dendritic nix 2026-07-28 20:42:10 +02:00
scripts helper scripts 2026-07-23 20:00:11 +02:00
wallpapers initial commit 2026-07-02 15:49:42 +02:00
.gitignore created .gitignore 2026-07-23 20:10:03 +02:00
flake.lock updated flake 2026-07-23 20:11:18 +02:00
flake.nix updated flake 2026-07-23 20:11:18 +02:00
README.md rework for canonical dendritic nix 2026-07-28 20:42:10 +02:00

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.