I am trying to make a Nix flake which will use poetry2nix for building a poetry project the code is
{
description = "searx : flake";
inputs.nixpkgs.url = github:NixOS/nixpkgs/nixos-20.03;
outputs = { self, nixpkgs }: {
defaultPackage.x86_64-linux =
with import nixpkgs { system = "x86_64-linux";
buildInputs = [
nixpkgs.python39
nixpkgs.git
nixpkgs.openssl
nixpkgs.python39Packages.pip
nixpkgs.uwsgi
nixpkgs.python39Packages.virtualenv
nixpkgs.poetry
];
};
pkgs.poetry2nix.mkPoetryApplication {
projectDir = ./.;
src = pkgs.fetchgit {
url = "https://github.com/searx/searx.git";
rev = "ae122ea943f77600fd97556503c483dcd92e1e63";
sha256 = "sIJ+QXwUdsRIpg6ffUS3ItQvrFy0kmtI8whaiR7qEz4=";
};
};
};
However the Nix flake starts pulling python3.7 and breaks with following error
ERROR: Could not find a version that satisfies the requirement importlib-metadata; python_version < "3.8" (from click==8.0.1) (from versions: none)
> ERROR: No matching distribution found for importlib-metadata; python_version < "3.8" (from click==8.0.1)
Equivalent default.nix pulls python 3.9 and builds successfully. I believe if flake could be pinned to python3.9 it will be able to build this. Is this possible?
You can pass another python
to mkPoetryApplication
.
pkgs.poetry2nix.mkPoetryApplication {
projectDir = ./.;
python = pkgs.python39;
# ... your code ...
}