5.4 KiB
Profiles
Profiles are host-selectable compositions of independently owned units. They describe why a group of units is enabled; application, service, system, and hardware configuration remains in its owning unit.
Layers
| Namespace | Purpose | Compatibility |
|---|---|---|
base |
Invariants required by every host | NixOS and macOS |
interface |
Command-line and graphical ways to operate a host | Per-profile |
platform |
NixOS foundation and physical or virtual hardware shape | NixOS |
workload |
Optional activities performed on a host | Per-profile |
networking |
Network roles and topology | Per-profile |
security |
Optional security and secret-management policies | Per-profile |
base contains the shared Nix foundation plus the universally available CLI
tools (Atuin, tealdeer, trippy, and xh). A unit belongs there only when it is
required on every supported host.
Compatibility
| Profile | Supported host class |
|---|---|
base |
NixOS, macOS |
interface.cli |
NixOS, macOS with Home Manager |
interface.gui |
NixOS, macOS with Home Manager |
interface.macos |
macOS |
interface.linux-desktop |
NixOS with Home Manager |
interface.labwc |
NixOS with Home Manager |
interface.niri |
NixOS with Home Manager |
platform.nixos |
NixOS |
platform.desktop |
Physical NixOS desktop |
platform.intel-nvidia-desktop |
Intel/NVIDIA physical NixOS desktop |
platform.laptop |
Physical NixOS laptop |
platform.thinkpad-x1 |
Intel ThinkPad X1 running NixOS |
platform.vm |
UEFI QEMU NixOS guest with NFS client support |
workload.development |
NixOS, macOS with Home Manager |
workload.game |
NixOS, macOS |
workload.machine-learning |
NixOS with Home Manager |
workload.personal |
NixOS, macOS with Home Manager |
workload.remote-access |
NixOS, macOS |
workload.camera |
NixOS |
workload.server |
NixOS, macOS with Home Manager |
networking.tailscale-client |
NixOS, macOS |
networking.tailscale-subnet-router |
NixOS |
security.fingerprint |
NixOS, macOS |
security.secrets |
NixOS, macOS |
security.secure-boot |
NixOS |
security.tpm-storage |
NixOS with a host-defined LUKS device |
Select independent concerns independently in hosts/default.nix. For example,
a NixOS desktop can combine interface.labwc and interface.niri to provide
both sessions while sharing interface.linux-desktop and interface.gui.
The shared Linux desktop profile provides the common desktop applications and
session-independent services; both session profiles select ly. The laptop
platform selects niri as Ly's default session, while the desktop platform
selects labwc. A daily-use macOS development machine can combine
interface.macos, workload.development, and workload.personal. Hardware
support does not implicitly select an interface or workload.
workload.machine-learning provides the Hugging Face Hub CLI for hosts used
to download and publish machine learning models and datasets.
workload.personal provides Pear Desktop on both NixOS and macOS. Home Manager
enables performance improvements, synced lyrics, tracker blocking, the album
color theme, and custom output-device selection while preserving user-owned
settings such as the selected device.
workload.personal provides ActivityWatch for local activity tracking. On
NixOS, its server and Wayland-compatible watcher run as Home Manager user
services. On macOS, the Homebrew cask starts at login.
On NixOS, workload.game provides Steam with Valve Proton and Proton-GE,
Protontricks, Wayland-compatible Steam Input, GameMode, Gamescope, and MangoHud.
Enabling Steam also activates the 32-bit graphics and PipeWire support required
by older games. On macOS the same profile currently provides the portable game
applications that support that host class.
security.tpm-storage deliberately does not own a disk identifier. A host that
selects it must define boot.initrd.luks.devices.cryptroot.device in its
machine-specific NixOS module.