diff --git a/lib/modules.nix b/lib/modules.nix index 137dde71..e715116b 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -1,6 +1,7 @@ { inputs, pkgs, lib, ... }: rec { + # Conveniance wrapper for mkOption with boolean type mkBoolOpt = def: desc: lib.mkOption { type = lib.types.bool; @@ -8,9 +9,11 @@ rec { description = desc; }; + # Like mkIf but the predicate is inverted mkElse = pred: do: (lib.mkIf (!pred) do); + # Creates a symlink if it doesn't exist mkLink = src: dest: '' if [ ! -L "${dest}" ]; then @@ -18,10 +21,31 @@ rec { fi ''; + # Removes a symlink if it exists mkUnlink = dest: '' if [ -L "${dest}" ]; then rm ${dest} fi ''; + + # TODO + mkMultiOptStr = { }: + { + + }; + + # TODO + mkMultiOptPkg = { }: + { + + }; + + # Returns true if base contains element + contains = base: element: + lib.any (x: x == element) base; + + # Returns base without occurences of elements that are also in remove + without = base: remove: + lib.filter (x: !(contains remove x)) base; }