From f7e48890cde24463f584c973cce80cfce2f2caa1 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sat, 14 Sep 2024 19:47:41 +0200 Subject: [PATCH] pkgs/overlays/unstable: factor out adding unstable package set to different file --- pkgs/overlays/unstable-from-source.nix | 30 ++++++++++++++++++++++++++ pkgs/overlays/unstable.nix | 22 +++---------------- 2 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 pkgs/overlays/unstable-from-source.nix diff --git a/pkgs/overlays/unstable-from-source.nix b/pkgs/overlays/unstable-from-source.nix new file mode 100644 index 0000000..128da58 --- /dev/null +++ b/pkgs/overlays/unstable-from-source.nix @@ -0,0 +1,30 @@ +{ + unstableSource, +}: + +self: super: + +let + useUnstable = self.config.useUnstable or true; + + unstablePkgsForNixpkgs = nixpkgs: import unstableSource { + # localSystem -> pkgs.stdenv.buildPlatform + localSystem = nixpkgs.stdenv.buildPlatform; + # crossSystem -> pkgs.stdenv.hostPlatform or pkgs.stdenv.targetPlatform ?? + # passing below + # config -> pkgs.config + config = nixpkgs.config; + # overlays -> partial of pkgs.overlays + overlays = nixpkgs.overlays; + # crossOverlays -> partial of pkgs.overlays + # crossOverlays are merged to overlays, not sure what issues that might raise. + # ignoring. + } // (if nixpkgs.stdenv.buildPlatform == nixpkgs.stdenv.hostPlatform then {} else { + # workaround for some odd structured packages that changes behaviour + # when crossSystem is passed. + crossSystem = nixpkgs.stdenv.hostPlatform; + }); +in +{ + unstable = if useUnstable then unstablePkgsForNixpkgs self else self; +} diff --git a/pkgs/overlays/unstable.nix b/pkgs/overlays/unstable.nix index 1cf4bae..297b3ae 100644 --- a/pkgs/overlays/unstable.nix +++ b/pkgs/overlays/unstable.nix @@ -24,26 +24,10 @@ let ]; nixpkgsRevision = (builtins.readFile "${unstablePkgsExprs}/.git-revision"); - unstablePkgsForNixpkgs = nixpkgs: import unstablePkgsExprs { - # localSystem -> pkgs.stdenv.buildPlatform - localSystem = nixpkgs.stdenv.buildPlatform; - # crossSystem -> pkgs.stdenv.hostPlatform or pkgs.stdenv.targetPlatform ?? - # passing below - # config -> pkgs.config - config = nixpkgs.config; - # overlays -> partial of pkgs.overlays - overlays = nixpkgs.overlays; - # crossOverlays -> partial of pkgs.overlays - # crossOverlays are merged to overlays, not sure what issues that might raise. - # ignoring. - } // (if nixpkgs.stdenv.buildPlatform == nixpkgs.stdenv.hostPlatform then {} else { - # workaround for some odd structured packages that changes behaviour - # when crossSystem is passed. - crossSystem = nixpkgs.stdenv.hostPlatform; - }); in -{ - unstable = if useUnstable then unstablePkgsForNixpkgs self else self; +import ./unstable-from-source.nix { + unstableSource = unstablePkgsExprs; +} self super // { unstableVersion = self.lib.optionalString useUnstable nixpkgsVersion; unstableRevision = self.lib.optionalString useUnstable nixpkgsRevision; }