mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 07:08:12 +09:00
102 lines
6.5 KiB
Markdown
102 lines
6.5 KiB
Markdown
# 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.minimal` | NixOS, macOS with Home Manager |
|
|
| `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.photography` | NixOS 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.
|
|
|
|
`interface.minimal` provides SSH client access and key generation, Nano, htop,
|
|
btop, fastfetch, unzip, wget, Direnv, Git, GnuPG, nh, Zellij, and Zsh for remote
|
|
administration. `interface.cli` includes that baseline and adds the configured
|
|
Neovim, Yazi, and the remaining interactive command-line tools.
|
|
|
|
`workload.machine-learning` provides the Hugging Face Hub CLI for hosts used
|
|
to download and publish machine learning models and datasets.
|
|
|
|
`workload.photography` provides darktable with AI support from the locked
|
|
unstable package set. Its ONNX Runtime uses CUDA when the NVIDIA hardware unit
|
|
is enabled, and CPU inference otherwise. Keep the default CUDA capabilities
|
|
and forward compatibility to reuse the CUDA binary cache; these targets include
|
|
galleria's RTX 3060 Ti. OpenCL drivers remain owned by hardware units.
|
|
|
|
`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.
|