Skip to content

Introduction to Denix Modules ​

A Denix module is the same as a NixOS, Home Manager, or Nix-Darwin module, but its attribute set is wrapped in the delib.module function.

No Limitations ​

This means that you can use all three types of modules simultaneously, although it's unlikely you'll need anything other than the first option:

Denix Module ​

nix
{delib, ...}:
delib.module {
  name = "...";
}

Denix Module with NixOS/Home Manager/Nix-Darwin Module ​

nix
{delib, ...}:
delib.module {
  name = "...";
} // {

}

NixOS/Home Manager/Nix-Darwin Module Only ​

nix
{

}

Simplicity and Cleanliness ​

Denix modules tend to look simpler and cleaner compared to NixOS/Home Manager/Nix-Darwin modules, due to the following reasons:

  1. Simple yet fully functional option declaration (see Options).
  2. Built-in logic for separating configurations based on the value of ${delib.module :: name}.enable: always, ifEnabled, ifDisabled.
  3. Shared options but separated configurations for NixOS, Home Manager, Nix-Darwin, and custom options.