diff --git a/doc/meta.xml b/doc/meta.xml
index df84915cc09..00e9b8ac67a 100644
--- a/doc/meta.xml
+++ b/doc/meta.xml
@@ -118,6 +118,47 @@ interpretation:
package).
+
+ platforms
+ The list of Nix platform types on which the
+ package is supported. If this attribute is set, the package will
+ refuse to build, and won’t show up in nix-env
+ -qa output, on any platform not listed
+ here. An example is:
+
+
+meta.platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+
+
+ The set lib.platforms defines various common
+ lists of platforms types, so it’s more typical to write:
+
+
+meta.platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+
+
+
+
+
+
+ hydraPlatforms
+ The list of Nix platform types for which the Hydra
+ instance at hydra.nixos.org should build the
+ package. (Hydra is the Nix-based continuous build system.) It
+ defaults to the value of meta.platforms. Thus,
+ the only reason to set meta.hydraPlatforms is
+ if you want hydra.nixos.org to build the
+ package on a subset of meta.platforms, or not
+ at all, e.g.
+
+
+meta.platforms = stdenv.lib.platforms.linux;
+meta.hydraPlatforms = [];
+
+
+
+
+
broken
If set to true, the package is
diff --git a/pkgs/applications/version-management/darcs/default.nix b/pkgs/applications/version-management/darcs/default.nix
index f33e479b3ad..8ec65e50adf 100644
--- a/pkgs/applications/version-management/darcs/default.nix
+++ b/pkgs/applications/version-management/darcs/default.nix
@@ -21,10 +21,13 @@ cabal.mkDerivation (self: {
mv contrib/darcs_completion $out/etc/bash_completion.d/darcs
'';
meta = {
- homepage = "http://darcs.net/";
- description = "a distributed, interactive, smart revision control system";
+ homepage = http://darcs.net/;
+ description = "A distributed, interactive, smart revision control system";
license = "GPL";
- platforms = self.ghc.meta.platforms;
+ # FIXME: this gives an infinite recursion in the "darcs" attribute
+ # in all-packages.nix.
+ #platforms = self.ghc.meta.platforms;
+ platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
maintainers = [ self.stdenv.lib.maintainers.andres ];
};
})
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index 1ade2473627..3e1fc920a59 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -40,9 +40,6 @@
, ...
}:
-assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"
- || stdenv.isArm || stdenv.system == "mips64el-linux";
-
assert stdenv.platform.name == "sheevaplug" -> stdenv.platform.uboot != null;
let
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index 35595a7b8f4..f9239bb5fba 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -21,8 +21,7 @@ stdenv.mkDerivation {
patches =
[ ./version-test.patch ]
- ++ optional (!libsOnly && versionAtLeast kernelDev.version "3.11") ./nvidia-drivers-linux-3.11-incremental.patch
- ;
+ ++ optional (!libsOnly && versionAtLeast kernelDev.version "3.11") ./nvidia-drivers-linux-3.11-incremental.patch;
src =
if stdenv.system == "i686-linux" then
@@ -58,5 +57,7 @@ stdenv.mkDerivation {
homepage = http://www.nvidia.com/object/unix.html;
description = "X.org driver and kernel module for NVIDIA graphics cards";
license = stdenv.lib.licenses.unfreeRedistributable;
+ platforms = stdenv.lib.platforms.linux;
+ hydraPlatforms = [];
};
}
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 083a71548b9..fcd7439e97e 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -55,6 +55,8 @@ let
throw "package ‘${attrs.name}’ has an unfree license, refusing to evaluate"
else if !allowBroken && attrs.meta.broken or false then
throw "you can't use package ‘${attrs.name}’ because it has been marked as broken"
+ else if !allowBroken && attrs.meta.platforms or null != null && !lib.lists.elem result.system attrs.meta.platforms then
+ throw "the package ‘${attrs.name}’ is not supported on ‘${result.system}’"
else
lib.addPassthru (derivation (
(removeAttrs attrs ["meta" "passthru" "crossAttrs"])
diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix
index 3280df09dd5..e2f5309ced3 100644
--- a/pkgs/top-level/release-lib.nix
+++ b/pkgs/top-level/release-lib.nix
@@ -119,14 +119,12 @@ rec {
# May fail as much as it wishes, we will catch the error.
processPackage = attrSet:
- if attrSet ? recurseForDerivations && attrSet.recurseForDerivations then
+ if attrSet.recurseForDerivations or false then
packagesWithMetaPlatform attrSet
- else if attrSet ? recurseForRelease && attrSet.recurseForRelease then
+ else if attrSet.recurseForRelease or false then
packagesWithMetaPlatform attrSet
else
- if attrSet ? meta && attrSet.meta ? platforms
- then attrSet.meta.platforms
- else [];
+ attrSet.meta.hydraPlatforms or (attrSet.meta.platforms or []);
/* Common platform groups on which to test packages. */