From fd2801d7eddf636d9b8e2392a211699b4a8c9a3e Mon Sep 17 00:00:00 2001 From: ChUrl Date: Mon, 8 Aug 2022 23:34:54 +0200 Subject: [PATCH] add convenience functions to modules mylib --- lib/modules.nix | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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; }