From aa1336bb8d8ff501d5977481298b4229d472416e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Jan 2024 16:49:19 +0000 Subject: [PATCH] modules: add common This should define modules that are identical, or very similar. The driving force is to be able to use `my.profiles` on home-manager and NixOS without repeating myself. In the future I might migrate other modules, such as `nixos/system/nix`... --- modules/common/default.nix | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 modules/common/default.nix diff --git a/modules/common/default.nix b/modules/common/default.nix new file mode 100644 index 0000000..d0c90de --- /dev/null +++ b/modules/common/default.nix @@ -0,0 +1,31 @@ +# Modules that are common to various module systems +# Usually with very small differences, if any, between them. +{ lib, type ? null, ... }: +let + allowedTypes = [ + "nixos" + "home" + "darwin" + ]; + + allowedTypesString = lib.concatStringSep ", " (builtins.map lib.escapeNixString allowedTypes); +in +{ + config = { + assertions = [ + { + assertion = type != null; + message = '' + You must provide `type` as part of specialArgs to use the common modules. + It must be one of ${allowedTypesString}. + ''; + } + { + assertion = type != null -> builtins.elem type allowedTypes; + message = '' + `type` specialArgs must be one of ${allowedTypesString}. + ''; + } + ]; + }; +}