nix/moduler/features
2026-04-02 10:58:37 +02:00
..
standard huge refactor 2026-04-02 10:58:37 +02:00
default.nix huge refactor 2026-04-02 10:58:37 +02:00
README.md huge refactor 2026-04-02 10:58:37 +02:00

Feature Profiles

This directory provides a profile + overrides model for host configuration.

Imports

Use this in host imports:

(modulesDirectory + /features/standard)

features/standard imports:

  • features profile module
  • services/users
  • services/network
  • services/system
  • services/sound
  • programs/base
  • programs/git
  • programs/dev

Profile Selection

Set one profile per host:

features.profile = "desktop";

Supported values:

  • custom
  • desktop
  • laptop
  • server
  • camera

Profiles set mkDefault values, so you can override any option per host.

Common Overrides

Base packages

features.base = {
  enable = true;
  preset = "minimal";
  packages.captureEnable = true;
};

Dev tools

features.dev = {
  enable = true;
  preset = "minimal";
  cloud.aws.enable = false;
  cloud.azure.enable = false;
};

Network

features.network = {
  enable = true;
  netbird.enable = false;
  tooling.enable = false;
};

Sound/Bluetooth

features.sound = {
  enable = true;
  bluetooth.enable = false;
};

Git defaults

features.git = {
  enable = true;
  userName = "myuser";
  userEmail = "me@example.com";
};

Users

features.users = {
  enable = true;
  name = "fw";
  fullName = "Fredrik Wastring";
  extraGroups = [ "wheel" "networkmanager" ];
};

Notes

  • If you only import features/default.nix, profile defaults are applied only for options that exist in imported modules.
  • features/standard is the easiest option for hosts that should expose all common feature knobs.