{ pkgs ? import {} }: let odoo_version = "14.0"; python_version = "3.7"; pyproject = pkgs.writeText "pyproject.toml" '' [tool.poetry] name = "Odoo" version = "${odoo_version}" description = "Odoo is a suite of web based open source business apps." authors = ["Odoo SA"] [tool.poetry.dependencies] python = "^${python_version}" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" ''; newPoetry = pkgs.poetry.override { python = pkgs.python36; }; in pkgs.mkShell { buildInputs = [ pkgs.perl pkgs.gcc pkgs.libjpeg pkgs.libxslt pkgs.pkg-config pkgs.postgresql_11 pkgs.cyrus_sasl pkgs.openldap pkgs.zlib pkgs.file pkgs.libxml2 newPoetry ]; shellHook = '' NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -isystem ${pkgs.cyrus_sasl.dev}/include/sasl -isystem ${pkgs.libxml2.dev}/include/libxml2/" check_valid() { expression="$1" expression=''${expression/sys_platform/\$sys_platform} expression=''${expression/python_version/\$python_version} expression=''${expression/"== '"/"eq '"} expression=''${expression/"!= '"/"ne '"} #echo "my \$python_version='${python_version}' ; my \$sys_platform='linux'; exit !($expression)" perl -e "my \$python_version='${python_version}' ; my \$sys_platform='linux'; exit !($expression)" } buildPoetry() { cat "${pyproject}" > pyproject.toml rm -f poetry.lock requirements=$(cat requirements.txt | grep -v "^#" | while read i; do if echo "$i" | grep -q ";"; then a="$(echo $i | sed -e "s/.*; *//")" check_valid "$a" && echo "$i" | sed -e "s/ *;.*//"; else echo "$i" fi done) # Add mock -- since 14.0 # add openupgradelib (for openupgrade) poetry add $requirements mock openupgradelib } ''; }