lol
at 24.11-pre 45 lines 1.6 kB view raw
1{ lib, config, ... }: 2let 3 inherit (config.generic.types) majorMinorVersion majorMinorPatchBuildVersion; 4 inherit (lib) options types; 5in 6{ 7 options.generic.releases = options.mkOption { 8 description = "A collection of packages targeting different platforms"; 9 type = 10 let 11 Package = options.mkOption { 12 description = "A package for a specific platform"; 13 example = { 14 version = "8.0.3.4"; 15 minCudaVersion = "10.2"; 16 maxCudaVersion = "10.2"; 17 hash = "sha256-LxcXgwe1OCRfwDsEsNLIkeNsOcx3KuF5Sj+g2dY6WD0="; 18 }; 19 type = types.submodule { 20 # TODO(@connorbaker): Figure out how to extend option sets. 21 freeformType = types.attrsOf types.anything; 22 options = { 23 version = options.mkOption { 24 description = "The version of the package"; 25 type = majorMinorPatchBuildVersion; 26 }; 27 minCudaVersion = options.mkOption { 28 description = "The minimum CUDA version supported"; 29 type = majorMinorVersion; 30 }; 31 maxCudaVersion = options.mkOption { 32 description = "The maximum CUDA version supported"; 33 type = majorMinorVersion; 34 }; 35 hash = options.mkOption { 36 description = "The hash of the tarball"; 37 type = types.str; 38 }; 39 }; 40 }; 41 }; 42 in 43 types.attrsOf (types.listOf Package.type); 44 }; 45}