5.6 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.deploy-rs-target |
NixOS |
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.deploy-rs-target enables OpenSSH and provisions the nixdeploy
service account with the narrowly scoped passwordless commands required for
deploy-rs activation and rollback confirmation.
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.