ANIX is the human-facing management layer for Abora and NixOS. It provides shorter, safer commands for common NixOS tasks — profiles, snapshots, rebuilds, rollbacks, desktop changes, and system settings — while still calling the standard NixOS toolchain underneath. ANIX does not replace NixOS; it makes the day-to-day workflow less rough.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/AnimatedGTVR/abora-os/llms.txt
Use this file to discover all available pages before exploring further.
Mental Model
ANIX operates on three levels at once:- Config — it edits a small
anix.nixfile in/etc/nixos/that declares your preferences declaratively. - Snapshots — it keeps a local Git history of
/etc/nixos/so you always have a recovery point before risky operations. - Rebuilds — it calls
nixos-rebuildunder the hood, adding a dry-build preview step and a confirmation prompt before switching.
anix switch nix gaming is the safer front-end for:
Quick Start
Built-in Named Profiles
Abora ships with five named flake profiles you can switch between without writing any Nix yourself:| Profile | Purpose |
|---|---|
stable | Standard Abora install, follows the stable channel |
minimal | Lightweight headless or console-only configuration |
gaming | Adds Steam, GameMode, and gaming-oriented packages |
creator | Adds creative apps: Blender, Inkscape, Krita, OBS, and more |
developer | Adds developer tooling: editors, compilers, containers, and Git extras |
anix switch nix <profile>.
Core Commands
Inspection
- Status and info
- Settings
- Features
Profile Operations
- Preview
- Activate
- Rollback
Snapshots and Maintenance
Snapshot Safety Model
ANIX takes a conservative approach to system changes:Snapshot unsaved config
Before any
switch, test, boot, or rollback operation, ANIX checks
for unsaved changes in /etc/nixos/. If changes exist, it offers to create
a local Git snapshot first.Dry-build preview
When you run
anix switch nix <profile> without --now, ANIX runs a
nixos-rebuild dry-build first. This catches syntax errors and evaluates
the full package closure before anything is activated.Closure diff
After the dry-build, ANIX compares the new and current package closures
with
nix store diff-closures, so you can see exactly what will be added
or removed.Confirm and switch
Only after the preview is shown does ANIX prompt for confirmation. Running
with
--now skips the preview and confirmation in one step.Snapshots are local Git commits by default. ANIX warns you about possible
secrets in your config before committing. Pushing to a remote is opt-in:
Graphical Helper
anix --gui opens an interactive helper. If a graphical session is available and zenity is installed, it presents a point-and-click interface. Otherwise it falls back to a grouped numbered terminal menu covering the same operations.
ANIX NixOS Module Reference
ANIX ships as a NixOS module (nix/modules/anix.nix). All options are declared under the anix.* namespace.
Core
| Option | Type | Default | Purpose |
|---|---|---|---|
anix.enable | bool | false | Enable the ANIX configuration layer |
anix.hostname | string or null | null | Hostname override for networking.hostName |
anix.timezone | string or null | null | Timezone override, e.g. America/New_York |
anix.keyboard.console | string or null | null | TTY keymap, e.g. us, de |
anix.keyboard.xkb | string or null | null | Graphical desktop keyboard layout |
anix.desktop | enum or null | null | Desktop profile (Abora OS only) |
anix.wallpaper | string or null | null | Wallpaper filename (Abora OS only) |
Packages and Shell
| Option | Type | Default | Purpose |
|---|---|---|---|
anix.packages | list of packages | [] | Extra system packages in the ANIX layer |
anix.fonts | list of packages | [] | Extra font packages |
anix.allowUnfree | bool | true | Allow unfree packages like Discord and Steam |
anix.experimentalNix | bool | true | Enable nix-command and flakes |
anix.shell | bash, zsh, fish, or null | null | Default shell for normal users |
Services
| Option | Type | Default | Purpose |
|---|---|---|---|
anix.services.bluetooth | bool | true | Enable Bluetooth hardware support |
anix.services.printing | bool | true | Enable CUPS printing |
anix.services.openssh | bool | false | Enable the OpenSSH server |
anix.services.flatpak | bool | true | Enable Flatpak integration |
anix.services.audio | bool | true | Enable PipeWire audio (with ALSA and PulseAudio compat) |
Power
| Option | Type | Default | Purpose |
|---|---|---|---|
anix.power.thermald | bool | true | Enable thermald for thermal management |
anix.power.tlp | bool | false | Enable TLP laptop power management |
Nix Store and Garbage Collection
| Option | Type | Default | Purpose |
|---|---|---|---|
anix.trustedUsers | list of strings | [] | Users added to nix.settings.trusted-users |
anix.autoOptimiseStore | bool | true | Enable automatic Nix store optimisation |
anix.garbageCollect.enable | bool | false | Enable scheduled garbage collection |
anix.garbageCollect.dates | string | "weekly" | Systemd calendar expression for GC |
anix.garbageCollect.options | string | "--delete-older-than 14d" | Options passed to nix-collect-garbage |
TinyPM Bootstrap
| Option | Type | Default | Purpose |
|---|---|---|---|
anix.tinypm.enable | bool | true | Auto-install TinyPM on first user login via a systemd user service |
anix.tinypm.flavor | string | "abora" | TinyPM flavor passed to the installer |
Example: anix.nix
The following is a representativeanix.nix with common values set.
anix.nix, rebuild with:
ANIX Doctor Checks
anix doctor verifies the full ANIX and NixOS management layer.
| Check | What is verified |
|---|---|
nix command available | nix is on PATH |
nixos-rebuild available | nixos-rebuild is on PATH |
config directory exists | /etc/nixos/ is present |
flake.nix exists | flake.nix is in the config directory |
flake outputs evaluate | nix flake show succeeds |
config is a Git repo | Snapshot history is initialized |
config repo is clean | No unsaved changes |
ANIX config exists | anix.nix is present |
ANIX config preflight | No syntax or option errors |
ANIX desktop valid | Desktop value matches supported list |
system generation profile | /nix/var/nix/profiles/system exists |
anix doctor --fix to automatically create the config directory, initialise the snapshot repo, and write a default anix.nix where safely possible.