- platformMask = lib.optionals stdenv.isDarwin [ "mad" "pulse" "jack" "nfs" "smb" ]
- ++ lib.optionals (!stdenv.isLinux) [ "alsa" "systemd" ];
- features_ = lib.subtractLists platformMask fl;
+ platformMask = lib.optionals stdenv.isDarwin [ "mad" "pulse" "jack" "nfs" "smbclient" ]
+ ++ lib.optionals (!stdenv.isLinux) [ "alsa" "systemd" "syslog" ];
+
+ knownFeatures = builtins.attrNames featureDependencies;
+ platformFeatures = lib.subtractLists platformMask knownFeatures;
+
+ features_ = if (features == null )
+ then platformFeatures
+ else
+ let unknown = lib.subtractLists knownFeatures features; in
+ if (unknown != [])
+ then throw "Unknown feature(s): ${lib.concatStringsSep " " unknown}"
+ else
+ let unsupported = lib.subtractLists platformFeatures features; in
+ if (unsupported != [])
+ then throw "Feature(s) ${lib.concatStringsSep " " unsupported} are not supported on ${stdenv.hostPlatform.system}"
+ else features;