at 23.11-beta 1.6 kB view raw
1{ config, lib, ... }: 2 3{ 4 options = { 5 examples = lib.mkOption { type = lib.types.attrs; }; 6 assertion = lib.mkOption { type = lib.types.bool; }; 7 }; 8 9 config = { 10 examples = with lib.gvariant; { 11 bool = true; 12 float = 3.14; 13 int32 = mkInt32 (- 42); 14 uint32 = mkUint32 42; 15 int16 = mkInt16 (-42); 16 uint16 = mkUint16 42; 17 int64 = mkInt64 (-42); 18 uint64 = mkUint64 42; 19 array1 = [ "one" ]; 20 array2 = mkArray [ (mkInt32 1) ]; 21 array3 = mkArray [ (mkUint32 2) ]; 22 emptyArray = mkEmptyArray type.uint32; 23 string = "foo"; 24 escapedString = '' 25 '\ 26 ''; 27 tuple = mkTuple [ (mkInt32 1) [ "foo" ] ]; 28 maybe1 = mkNothing type.string; 29 maybe2 = mkJust (mkUint32 4); 30 variant = mkVariant "foo"; 31 dictionaryEntry = mkDictionaryEntry (mkInt32 1) [ "foo" ]; 32 }; 33 34 assertion = 35 let 36 mkLine = n: v: "${n} = ${toString (lib.gvariant.mkValue v)}"; 37 result = lib.concatStringsSep "\n" (lib.mapAttrsToList mkLine config.examples); 38 in 39 (result + "\n") == '' 40 array1 = @as ['one'] 41 array2 = @ai [1] 42 array3 = @au [@u 2] 43 bool = true 44 dictionaryEntry = @{ias} {1,@as ['foo']} 45 emptyArray = @au [] 46 escapedString = '\'\\\n' 47 float = 3.140000 48 int16 = @n -42 49 int32 = -42 50 int64 = @x -42 51 maybe1 = @ms nothing 52 maybe2 = just @u 4 53 string = 'foo' 54 tuple = @(ias) (1,@as ['foo']) 55 uint16 = @q 42 56 uint32 = @u 42 57 uint64 = @t 42 58 variant = <'foo'> 59 ''; 60 }; 61}