1{ lib }:
2
3let
4 inherit (lib) mkIf versionAtLeast versionOlder;
5in
6{
7
8 # Keeping these around in case we decide to change this horrible implementation :)
9 option = x: x // { optional = true; };
10
11 yes = {
12 tristate = "y";
13 optional = false;
14 };
15 no = {
16 tristate = "n";
17 optional = false;
18 };
19 module = {
20 tristate = "m";
21 optional = false;
22 };
23 unset = {
24 tristate = null;
25 optional = false;
26 };
27 freeform = x: {
28 freeform = x;
29 optional = false;
30 };
31
32 # Common patterns/legacy used in common-config/hardened/config.nix
33 whenHelpers = version: {
34 whenAtLeast = ver: mkIf (versionAtLeast version ver);
35 whenOlder = ver: mkIf (versionOlder version ver);
36 # range is (inclusive, exclusive)
37 whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh);
38 };
39
40}