diff --git a/src/args/make-python-environment/default.nix b/src/args/make-python-environment/default.nix index 29ce32b9..fa67a3ef 100644 --- a/src/args/make-python-environment/default.nix +++ b/src/args/make-python-environment/default.nix @@ -7,7 +7,7 @@ pythonProjectDir, pythonVersion, preferWheels ? true, - overrides ? (self: super: {}), + overrides ? {}, }: let poetry2nix = let commit = "528d500ea826383cc126a9be1e633fc92b19ce5d"; @@ -18,29 +18,6 @@ }; in import src {pkgs = __nixpkgs__;}; - getPoetryPackages = let - tomlPath = "${pythonProjectDir}/poetry.lock"; - tomlData = builtins.fromTOML (builtins.readFile tomlPath); - tomlPackages = tomlData.package; - packagesNames = builtins.map (pkg: pkg.name) tomlPackages; - extraPackagesLst = builtins.concatLists (builtins.map ( - pkg: - if builtins.hasAttr "extras" pkg - then - builtins.concatLists ( - builtins.attrValues pkg.extras - ) - else [] - ) - tomlPackages); - extraPackagesNames = - builtins.map ( - extra: - builtins.toString (builtins.head (builtins.split " " (__nixpkgs__.lib.toLower extra))) - ) - extraPackagesLst; - in - packagesNames ++ extraPackagesNames; is39 = pythonVersion == "3.9"; is310 = pythonVersion == "3.10"; @@ -55,35 +32,60 @@ } .${pythonVersion}; - overrideWithHome = pkg: super: - super.${pkg}.overridePythonAttrs ( - old: { - preUnpack = - '' - export HOME=$(mktemp -d) - rm -rf /homeless-shelter - '' - + (old.preUnpack or ""); - } - ); - tomlOverrides = self: super: - builtins.listToAttrs ( + overridenPackages = self: super: let + overridePackageHome = pkg: super: + super.${pkg}.overridePythonAttrs ( + old: { + preUnpack = + '' + export HOME=$(mktemp -d) + rm -rf /homeless-shelter + '' + + (old.preUnpack or ""); + } + ); + packages = let + lock = "${pythonProjectDir}/poetry.lock"; + data = builtins.fromTOML (builtins.readFile lock); + main = builtins.map (pkg: pkg.name) data.package; + extras = let + list = builtins.concatLists ( + builtins.map ( + pkg: + if builtins.hasAttr "extras" pkg + then builtins.concatLists (builtins.attrValues pkg.extras) + else [] + ) + data.package + ); + names = + builtins.map ( + extra: + builtins.toString ( + builtins.head ( + builtins.split " " (__nixpkgs__.lib.toLower extra) + ) + ) + ) + list; + in + names; + in + main ++ extras; + overridenHomes = builtins.listToAttrs ( builtins.map ( pkg: { name = pkg; - value = overrideWithHome pkg super; + value = overridePackageHome pkg super; } ) - getPoetryPackages + packages ); - combinedOverrides = self: super: let - toml = tomlOverrides self super; - orig = overrides self super; in - toml // orig; + overridenHomes // (overrides self super); env = poetry2nix.mkPoetryEnv { - overrides = poetry2nix.defaultPoetryOverrides.extend combinedOverrides; + overrides = poetry2nix.defaultPoetryOverrides.extend overridenPackages; inherit preferWheels; projectDir = pythonProjectDir; inherit python;