From 68f71ff8f5c49222b34d5f460ffa1bb5e242d5a8 Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 18 Oct 2025 02:28:14 +0100 Subject: [PATCH 1/3] darwin.mkAppleDerivation: drop support for `noCC` and `noBootstrap` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was only used by `darwin.AvailabilityVersions` setting `noCC`, and is fundamentally incompatible with `finalAttrs.finalPackage`. Better would be to specify `stdenv` outside the derivation attributes, or ideally move this stuff into hooks and helper functions, I think, but for just the one package it doesn’t seem worthwhile. --- .../AvailabilityVersions/package.nix | 2 -- .../apple-source-releases/mkAppleDerivation.nix | 11 +---------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/package.nix b/pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/package.nix index 2625f276923e..dadafd43edcb 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/package.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/package.nix @@ -19,8 +19,6 @@ mkAppleDerivation (finalAttrs: { ./patches/0001-Support-setting-an-upper-bound-on-versions.patch ]; - noCC = true; - nativeBuildInputs = [ unifdef ]; buildPhase = '' diff --git a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix b/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix index d42357f6b245..538b92d32637 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix @@ -8,8 +8,6 @@ in fetchFromGitHub, meson, ninja, - stdenv, - stdenvNoCC, xcodeProjectCheckHook, }: @@ -21,15 +19,8 @@ lib.makeOverridable ( let attrs' = if lib.isFunction attrs then attrs else _: attrs; attrsFixed = lib.fix attrs'; - stdenv' = - if attrsFixed.noCC or false then - stdenvNoCC - else if attrsFixed.noBootstrap or false then - stdenv - else - bootstrapStdenv; in - stdenv'.mkDerivation ( + bootstrapStdenv.mkDerivation ( lib.extends ( self: super: assert super ? releaseName; From 442ded4e97ced8442f1154e6151267864e5f7cfe Mon Sep 17 00:00:00 2001 From: Emily Date: Fri, 17 Oct 2025 21:48:40 +0100 Subject: [PATCH 2/3] darwin.mkAppleDerivation: use `lib.extendMkDerivation` --- .../mkAppleDerivation.nix | 109 ++++++++---------- 1 file changed, 51 insertions(+), 58 deletions(-) diff --git a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix b/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix index 538b92d32637..35131914f120 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix @@ -14,68 +14,61 @@ in let hasBasenamePrefix = prefix: file: lib.hasPrefix prefix (baseNameOf file); in -lib.makeOverridable ( - attrs: - let - attrs' = if lib.isFunction attrs then attrs else _: attrs; - attrsFixed = lib.fix attrs'; - in - bootstrapStdenv.mkDerivation ( - lib.extends ( - self: super: - assert super ? releaseName; - let - inherit (super) releaseName; - info = versions.${releaseName}; - files = lib.filesystem.listFilesRecursive (lib.path.append ./. releaseName); - mesonFiles = lib.filter (hasBasenamePrefix "meson") files; - in - # You have to have at least `meson.build.in` when using xcodeHash to trigger the Meson - # build support in `mkAppleDerivation`. - assert super ? xcodeHash -> lib.length mesonFiles > 0; - { - pname = super.pname or releaseName; - inherit (info) version; +lib.extendMkDerivation { + constructDrv = bootstrapStdenv.mkDerivation; + extendDrvArgs = + self: super: + assert super ? releaseName; + let + inherit (super) releaseName; + info = versions.${releaseName}; + files = lib.filesystem.listFilesRecursive (lib.path.append ./. releaseName); + mesonFiles = lib.filter (hasBasenamePrefix "meson") files; + in + # You have to have at least `meson.build.in` when using xcodeHash to trigger the Meson + # build support in `mkAppleDerivation`. + assert super ? xcodeHash -> lib.length mesonFiles > 0; + { + pname = super.pname or releaseName; + inherit (info) version; - src = super.src or fetchFromGitHub { - owner = "apple-oss-distributions"; - repo = releaseName; - rev = info.rev or "${releaseName}-${info.version}"; - inherit (info) hash; - }; + src = super.src or fetchFromGitHub { + owner = "apple-oss-distributions"; + repo = releaseName; + rev = info.rev or "${releaseName}-${info.version}"; + inherit (info) hash; + }; - strictDeps = true; - __structuredAttrs = true; + strictDeps = true; + __structuredAttrs = true; - meta = { - homepage = "https://opensource.apple.com/releases/"; - license = lib.licenses.apple-psl20; - teams = [ lib.teams.darwin ]; - platforms = lib.platforms.darwin; - } - // super.meta or { }; + meta = { + homepage = "https://opensource.apple.com/releases/"; + license = lib.licenses.apple-psl20; + teams = [ lib.teams.darwin ]; + platforms = lib.platforms.darwin; } - // lib.optionalAttrs (super ? xcodeHash) { - postUnpack = - super.postUnpack or "" - + lib.concatMapStrings ( - file: - if baseNameOf file == "meson.build.in" then - "substitute ${lib.escapeShellArg "${file}"} \"$sourceRoot/meson.build\" --subst-var version\n" - else - "cp ${lib.escapeShellArg "${file}"} \"$sourceRoot/\"${lib.escapeShellArg (baseNameOf file)}\n" - ) mesonFiles; + // super.meta or { }; + } + // lib.optionalAttrs (super ? xcodeHash) { + postUnpack = + super.postUnpack or "" + + lib.concatMapStrings ( + file: + if baseNameOf file == "meson.build.in" then + "substitute ${lib.escapeShellArg "${file}"} \"$sourceRoot/meson.build\" --subst-var version\n" + else + "cp ${lib.escapeShellArg "${file}"} \"$sourceRoot/\"${lib.escapeShellArg (baseNameOf file)}\n" + ) mesonFiles; - xcodeProject = super.xcodeProject or "${releaseName}.xcodeproj"; + xcodeProject = super.xcodeProject or "${releaseName}.xcodeproj"; - nativeBuildInputs = super.nativeBuildInputs or [ ] ++ [ - meson - ninja - xcodeProjectCheckHook - ]; + nativeBuildInputs = super.nativeBuildInputs or [ ] ++ [ + meson + ninja + xcodeProjectCheckHook + ]; - mesonBuildType = "release"; - } - ) attrs' - ) -) + mesonBuildType = "release"; + }; +} From a7f89aca060a6f96359be62f9fa7b44ae85e4e9f Mon Sep 17 00:00:00 2001 From: Emily Date: Sat, 18 Oct 2025 02:11:47 +0100 Subject: [PATCH 3/3] darwin.mkAppleDerivation: use conventional argument names --- .../mkAppleDerivation.nix | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix b/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix index 35131914f120..9feabef5265d 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix @@ -17,22 +17,22 @@ in lib.extendMkDerivation { constructDrv = bootstrapStdenv.mkDerivation; extendDrvArgs = - self: super: - assert super ? releaseName; + finalAttrs: args: + assert args ? releaseName; let - inherit (super) releaseName; + inherit (args) releaseName; info = versions.${releaseName}; files = lib.filesystem.listFilesRecursive (lib.path.append ./. releaseName); mesonFiles = lib.filter (hasBasenamePrefix "meson") files; in # You have to have at least `meson.build.in` when using xcodeHash to trigger the Meson # build support in `mkAppleDerivation`. - assert super ? xcodeHash -> lib.length mesonFiles > 0; + assert args ? xcodeHash -> lib.length mesonFiles > 0; { - pname = super.pname or releaseName; + pname = args.pname or releaseName; inherit (info) version; - src = super.src or fetchFromGitHub { + src = args.src or fetchFromGitHub { owner = "apple-oss-distributions"; repo = releaseName; rev = info.rev or "${releaseName}-${info.version}"; @@ -48,11 +48,11 @@ lib.extendMkDerivation { teams = [ lib.teams.darwin ]; platforms = lib.platforms.darwin; } - // super.meta or { }; + // args.meta or { }; } - // lib.optionalAttrs (super ? xcodeHash) { + // lib.optionalAttrs (args ? xcodeHash) { postUnpack = - super.postUnpack or "" + args.postUnpack or "" + lib.concatMapStrings ( file: if baseNameOf file == "meson.build.in" then @@ -61,9 +61,9 @@ lib.extendMkDerivation { "cp ${lib.escapeShellArg "${file}"} \"$sourceRoot/\"${lib.escapeShellArg (baseNameOf file)}\n" ) mesonFiles; - xcodeProject = super.xcodeProject or "${releaseName}.xcodeproj"; + xcodeProject = args.xcodeProject or "${releaseName}.xcodeproj"; - nativeBuildInputs = super.nativeBuildInputs or [ ] ++ [ + nativeBuildInputs = args.nativeBuildInputs or [ ] ++ [ meson ninja xcodeProjectCheckHook