poetry2nix/overrides.nix

134 lines
3.5 KiB
Nix
Raw Normal View History

{
pkgs ? import <nixpkgs> { },
lib ? pkgs.lib,
}:
let
addSetupTools = self: super: drv: drv.overrideAttrs(old: {
2019-06-17 16:27:16 +01:00
buildInputs = old.buildInputs ++ [
self.setuptools_scm
2019-06-17 16:27:16 +01:00
];
});
2019-06-17 16:27:16 +01:00
renameLiteral = pname: (self: super: drv: drv.overrideAttrs(old: {
src = old.src.override { inherit pname; };
}));
renameUnderscore = self: super: drv: drv.overrideAttrs(old: {
src = old.src.override { pname = builtins.replaceStrings ["-"] ["_"] old.pname; };
});
renameCapital = let
capitalise = s: let
len = builtins.stringLength s;
first = lib.toUpper (builtins.substring 0 1 s);
in first + builtins.substring 1 len s;
in self: super: drv: drv.overrideAttrs(old: {
src = old.src.override { pname = capitalise old.pname; };
});
# Chain multiple overrides into a single one
composeOverrides = overrides:
(self: super: drv: builtins.foldl' (drv: override: override self super drv) drv overrides);
getAttrDefault = attribute: set: default:
if builtins.hasAttr attribute set
then builtins.getAttr attribute set
else default;
in {
2019-06-17 16:27:16 +01:00
babel = renameCapital;
django-bakery = self: super: drv: drv.overrideAttrs(old: {
configurePhase = ''
if ! test -e LICENSE; then
touch LICENSE
fi
'' + old.configurePhase;
});
vat-moss = renameUnderscore;
2019-10-15 16:37:34 +01:00
django = composeOverrides [
renameCapital
(self: super: drv: drv.overrideAttrs(old: {
propagatedNativeBuildInputs = (getAttrDefault "propagatedNativeBuildInputs" old [])
++ [ pkgs.gettext ];
2019-10-15 16:37:34 +01:00
}))
];
cffi = self: super: drv: drv.overrideAttrs(old: {
buildInputs = old.buildInputs ++ [ pkgs.libffi ];
});
2019-10-15 17:56:18 +01:00
configparser = addSetupTools;
cryptography = self: super: drv: drv.overrideAttrs(old: {
buildInputs = old.buildInputs ++ [ pkgs.openssl ];
});
django-compressor = renameUnderscore;
django-csp = renameUnderscore;
django-context-decorator = renameUnderscore;
markdown = renameCapital;
pyyaml = renameLiteral "PyYAML";
pillow = let
pillowOverride = self: super: drv: drv.overrideAttrs(old: {
nativeBuildInputs = [ pkgs.pkgconfig ]
++ old.nativeBuildInputs;
buildInputs = with pkgs; [ freetype libjpeg zlib libtiff libwebp tcl lcms2 ]
++ old.buildInputs;
});
in composeOverrides [ renameCapital pillowOverride ];
pytest = addSetupTools;
2019-06-17 16:27:16 +01:00
six = addSetupTools;
py = addSetupTools;
2019-06-17 16:27:16 +01:00
zipp = addSetupTools;
importlib-metadata = composeOverrides [ renameUnderscore addSetupTools ];
2019-06-17 16:27:16 +01:00
typing-extensions = renameUnderscore;
2019-06-17 16:27:16 +01:00
pluggy = addSetupTools;
2019-06-17 16:27:16 +01:00
jsonschema = addSetupTools;
2019-06-24 16:23:02 +01:00
python-dateutil = addSetupTools;
numpy = self: super: drv: drv.overrideAttrs(old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.gfortran ];
buildInputs = old.buildInputs ++ [ pkgs.openblasCompat ];
});
2019-06-24 16:23:02 +01:00
psycopg2-binary = self: super: drv: drv.overrideAttrs(old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.postgresql ];
});
lxml = self: super: drv: drv.overrideAttrs(old: {
nativeBuildInputs = with pkgs; old.nativeBuildInputs ++ [ pkgconfig libxml2.dev libxslt.dev ];
buildInputs = with pkgs; old.buildInputs ++ [ libxml2 libxslt ];
2019-06-24 16:23:02 +01:00
});
shapely = self: super: drv: drv.overrideAttrs(old: {
buildInputs = old.buildInputs ++ [ pkgs.geos self.cython ];
inherit (super.shapely) patches GEOS_LIBRARY_PATH;
});
lockfile = self: super: drv: drv.overrideAttrs(old: {
propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.pbr ];
});
2019-10-15 17:56:18 +01:00
keyring = addSetupTools;
2019-06-17 16:27:16 +01:00
}