lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

compose.nix (1347B)


      1 { lib }:
      2 {
      3   serviceName,
      4   package,
      5   nativeInputs,
      6   extraPackages ? { },
      7   checks ? { },
      8   apps ? { },
      9   devShells ? { },
     10 }:
     11 assert lib.assertMsg (
     12   builtins.isString serviceName && builtins.match "^[a-z][a-z0-9_]*$" serviceName != null
     13 ) "serviceName must be a lowercase snake-case identifier";
     14 assert lib.assertMsg (lib.isDerivation package) "package must be a derivation";
     15 assert lib.assertMsg (
     16   builtins.isAttrs nativeInputs
     17   && (nativeInputs.schema or null) == "radroots.service.native-inputs.v1"
     18   && builtins.isList (nativeInputs.nativeBuildInputs or null)
     19   && builtins.isList (nativeInputs.buildInputs or null)
     20   && builtins.isAttrs (nativeInputs.environment or null)
     21 ) "nativeInputs must come from mkNativeInputs";
     22 assert lib.assertMsg (builtins.isAttrs extraPackages) "extraPackages must be an attribute set";
     23 assert lib.assertMsg (
     24   !(builtins.hasAttr "default" extraPackages)
     25 ) "extraPackages must not replace packages.default";
     26 assert lib.assertMsg (builtins.isAttrs checks) "checks must be an attribute set";
     27 assert lib.assertMsg (builtins.isAttrs apps) "apps must be an attribute set";
     28 assert lib.assertMsg (builtins.isAttrs devShells) "devShells must be an attribute set";
     29 {
     30   inherit
     31     apps
     32     checks
     33     devShells
     34     nativeInputs
     35     serviceName
     36     ;
     37   packages = {
     38     default = package;
     39   }
     40   // extraPackages;
     41 }