diff --git a/lib/generators.nix b/lib/generators.nix
index aab4498f9c6..14332981583 100644
--- a/lib/generators.nix
+++ b/lib/generators.nix
@@ -176,51 +176,51 @@ rec {
else abort "toPretty: should never happen (v = ${v})";
# PLIST handling
+ toPLIST = {}: v: let
+ pprExpr = ind: x: with builtins;
+ if isNull x then "" else
+ if isBool x then pprBool ind x else
+ if isInt x then pprInt ind x else
+ if isString x then pprStr ind x else
+ if isList x then pprList ind x else
+ if isAttrs x then pprAttrs ind x else
+ abort "pprExpr: should never happen (v = ${v})";
- toPLIST = x: ''
+ pprLiteral = ind: x: ind + x;
+
+ pprBool = ind: x: pprLiteral ind (if x then "" else "");
+ pprInt = ind: x: pprLiteral ind "${toString x}";
+ pprStr = ind: x: pprLiteral ind "${x}";
+ pprKey = ind: x: pprLiteral ind "${x}";
+
+ pprIndent = ind: pprExpr "\t${ind}";
+
+ pprItem = ind: libStr.concatMapStringsSep "\n" (pprIndent ind);
+
+ pprList = ind: x: libStr.concatStringsSep "\n" [
+ (pprLiteral ind "")
+ (pprItem ind x)
+ (pprLiteral ind "")
+ ];
+
+ pprAttrs = ind: x: libStr.concatStringsSep "\n" [
+ (pprLiteral ind "")
+ (pprAttr ind x)
+ (pprLiteral ind "")
+ ];
+
+ pprAttr = let attrFilter = name: value: name != "_module" && value != null;
+ in ind: x: libStr.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList
+ (name: value: lib.optional (attrFilter name value) [
+ (pprKey "\t${ind}" name)
+ (pprExpr "\t${ind}" value)
+ ]) x));
+
+ in ''
- '' + pprExpr "" x
- + "\n";
-
- pprExpr = ind: x: with builtins;
- if isNull x then "" else
- if isBool x then pprBool ind x else
- if isInt x then pprInt ind x else
- if isString x then pprStr ind x else
- if isList x then pprList ind x else
- if isAttrs x then pprAttrs ind x else
- throw "invalid plist type";
-
- pprLiteral = ind: x: ind + x;
-
- pprBool = ind: x: pprLiteral ind (if x then "" else "");
- pprInt = ind: x: pprLiteral ind "${toString x}";
- pprStr = ind: x: pprLiteral ind "${x}";
- pprKey = ind: x: pprLiteral ind "${x}";
-
- pprIndent = ind: pprExpr "\t${ind}";
-
- pprItem = ind: libStr.concatMapStringsSep "\n" (pprIndent ind);
-
- pprList = ind: x: libStr.concatStringsSep "\n" [
- (pprLiteral ind "")
- (pprItem ind x)
- (pprLiteral ind "")
- ];
-
- pprAttrs = ind: x: libStr.concatStringsSep "\n" [
- (pprLiteral ind "")
- (pprAttr ind x)
- (pprLiteral ind "")
- ];
-
- attrFilter = name: value: name != "_module" && value != null;
-
- pprAttr = ind: x: libStr.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList (name: value: lib.optional (attrFilter name value) [
- (pprKey "\t${ind}" name)
- (pprExpr "\t${ind}" value)
- ]) x));
+ ${pprExpr "" v}
+ '';
}
diff --git a/pkgs/development/tools/xcbuild/platform.nix b/pkgs/development/tools/xcbuild/platform.nix
index e3fb83edc67..502c3bcdbc8 100644
--- a/pkgs/development/tools/xcbuild/platform.nix
+++ b/pkgs/development/tools/xcbuild/platform.nix
@@ -286,11 +286,11 @@ let
in
runCommand "MacOSX.platform" {} ''
- install -D ${writeText "Info.plist" (toPLIST Info)} $out/Info.plist
- install -D ${writeText "version.plist" (toPLIST Version)} $out/version.plist
- install -D ${writeText "Architectures.xcspec" (toPLIST Architectures)} $out/Developer/Library/Xcode/Specifications/Architectures.xcspec
- install -D ${writeText "PackageTypes.xcspec" (toPLIST PackageTypes)} $out/Developer/Library/Xcode/Specifications/PackageTypes.xcspec
- install -D ${writeText "ProductTypes.xcspec" (toPLIST ProductTypes)} $out/Developer/Library/Xcode/Specifications/ProductTypes.xcspec
+ install -D ${writeText "Info.plist" (toPLIST {} Info)} $out/Info.plist
+ install -D ${writeText "version.plist" (toPLIST {} Version)} $out/version.plist
+ install -D ${writeText "Architectures.xcspec" (toPLIST {} Architectures)} $out/Developer/Library/Xcode/Specifications/Architectures.xcspec
+ install -D ${writeText "PackageTypes.xcspec" (toPLIST {} PackageTypes)} $out/Developer/Library/Xcode/Specifications/PackageTypes.xcspec
+ install -D ${writeText "ProductTypes.xcspec" (toPLIST {} ProductTypes)} $out/Developer/Library/Xcode/Specifications/ProductTypes.xcspec
mkdir -p $out/Developer/SDKs/
cd $out/Developer/SDKs/
diff --git a/pkgs/development/tools/xcbuild/sdk.nix b/pkgs/development/tools/xcbuild/sdk.nix
index 2d43347da03..5fdfe587722 100644
--- a/pkgs/development/tools/xcbuild/sdk.nix
+++ b/pkgs/development/tools/xcbuild/sdk.nix
@@ -24,6 +24,6 @@ in
runCommand "MacOSX${version}.sdk" {
inherit version;
} ''
- install -D ${writeText "SDKSettings.plist" (toPLIST SDKSettings)} $out/SDKSettings.plist
- install -D ${writeText "SystemVersion.plist" (toPLIST SystemVersion)} $out/System/Library/CoreServices/SystemVersion.plist
+ install -D ${writeText "SDKSettings.plist" (toPLIST {} SDKSettings)} $out/SDKSettings.plist
+ install -D ${writeText "SystemVersion.plist" (toPLIST {} SystemVersion)} $out/System/Library/CoreServices/SystemVersion.plist
''
diff --git a/pkgs/development/tools/xcbuild/toolchain.nix b/pkgs/development/tools/xcbuild/toolchain.nix
index d8c80b53831..ed5730abddf 100644
--- a/pkgs/development/tools/xcbuild/toolchain.nix
+++ b/pkgs/development/tools/xcbuild/toolchain.nix
@@ -24,7 +24,7 @@ runCommand "nixpkgs.xctoolchain" {
nativeBuildInputs = [ makeWrapper ];
} (''
mkdir -p $out
- install -D ${writeText "ToolchainInfo.plist" (toPLIST ToolchainInfo)} $out/ToolchainInfo.plist
+ install -D ${writeText "ToolchainInfo.plist" (toPLIST {} ToolchainInfo)} $out/ToolchainInfo.plist
mkdir -p $out/usr/include
mkdir -p $out/usr/lib