e0816431a2
Otherwise references to the Python interpreter inside the set are wrong, as demonstrated by: ``` nix with import <nixpkgs> { }; let python' = python3.override { packageOverrides = final: prev: { requests = prev.requests.overridePythonAttrs(old: { version = "1337"; }); }; }; in python'.pkgs.python.pkgs.requests ``` which returns the _non_ overriden requests. And the same with `self`: ``` with import <nixpkgs> { }; let python' = python3.override { self = python'; packageOverrides = final: prev: { requests = prev.requests.overridePythonAttrs(old: { version = "1337"; }); }; }; in python'.pkgs.python.pkgs.requests ``` which returns the overriden requests. This can manifest itself as file collisions when constructing environments or as subtly incorrect dependency graphs.
119 lines
3.9 KiB
Nix
119 lines
3.9 KiB
Nix
{ lib
|
|
, python3
|
|
, callPackage
|
|
, recurseIntoAttrs
|
|
, nixosTests
|
|
, config
|
|
, fetchPypi
|
|
, fetchpatch
|
|
}:
|
|
|
|
# To expose the *srht modules, they have to be a python module so we use `buildPythonModule`
|
|
# Then we expose them through all-packages.nix as an application through `toPythonApplication`
|
|
# https://github.com/NixOS/nixpkgs/pull/54425#discussion_r250688781
|
|
let
|
|
python = python3.override {
|
|
self = python;
|
|
packageOverrides = self: super: {
|
|
srht = self.callPackage ./core.nix { };
|
|
|
|
buildsrht = self.callPackage ./builds.nix { };
|
|
gitsrht = self.callPackage ./git.nix { };
|
|
hgsrht = self.callPackage ./hg.nix { };
|
|
hubsrht = self.callPackage ./hub.nix { };
|
|
listssrht = self.callPackage ./lists.nix { };
|
|
mansrht = self.callPackage ./man.nix { };
|
|
metasrht = self.callPackage ./meta.nix { };
|
|
pastesrht = self.callPackage ./paste.nix { };
|
|
todosrht = self.callPackage ./todo.nix { };
|
|
|
|
scmsrht = self.callPackage ./scm.nix { };
|
|
|
|
# sourcehut is not (yet) compatible with SQLAlchemy 2.x
|
|
sqlalchemy = super.sqlalchemy_1_4;
|
|
|
|
# sourcehut is not (yet) compatible with flask-sqlalchemy 3.x
|
|
flask-sqlalchemy = super.flask-sqlalchemy.overridePythonAttrs (oldAttrs: rec {
|
|
version = "2.5.1";
|
|
format = "setuptools";
|
|
src = fetchPypi {
|
|
pname = "Flask-SQLAlchemy";
|
|
inherit version;
|
|
hash = "sha256-K9pEtD58rLFdTgX/PMH4vJeTbMRkYjQkECv8LDXpWRI=";
|
|
};
|
|
propagatedBuildInputs = with self; [
|
|
flask
|
|
sqlalchemy
|
|
];
|
|
});
|
|
|
|
# flask-sqlalchemy 2.x requires flask 2.x
|
|
flask = super.flask.overridePythonAttrs (oldAttrs: rec {
|
|
version = "2.3.3";
|
|
src = fetchPypi {
|
|
inherit (oldAttrs) pname;
|
|
inherit version;
|
|
hash = "sha256-CcNHqSqn/0qOfzIGeV8w2CZlS684uHPQdEzVccpgnvw=";
|
|
};
|
|
});
|
|
|
|
# flask 2.x requires werkzeug 2.x
|
|
werkzeug = super.werkzeug.overridePythonAttrs (oldAttrs: rec {
|
|
version = "2.3.8";
|
|
src = fetchPypi {
|
|
inherit (oldAttrs) pname;
|
|
inherit version;
|
|
hash = "sha256-VUslfHS763oNJUFgpPj/4YUkP1KlIDUGC3Ycpi2XfwM=";
|
|
};
|
|
# Fixes a test failure with Pytest 8
|
|
patches = (oldAttrs.patches or []) ++ [
|
|
(fetchpatch {
|
|
url = "https://github.com/pallets/werkzeug/commit/4e5bdca7f8227d10cae828f8064fb98190ace4aa.patch";
|
|
hash = "sha256-83doVvfdpymlAB0EbfrHmuoKE5B2LJbFq+AY2xGpnl4=";
|
|
})
|
|
];
|
|
});
|
|
|
|
# sourcehut is not (yet) compatible with factory-boy 3.x
|
|
factory-boy = super.factory-boy.overridePythonAttrs (oldAttrs: rec {
|
|
version = "2.12.0";
|
|
src = fetchPypi {
|
|
pname = "factory_boy";
|
|
inherit version;
|
|
hash = "sha256-+vSNYIoXNfDQo8nL9TbWT5EytUfa57pFLE2Zp56Eo3A=";
|
|
};
|
|
nativeCheckInputs = (with super; [
|
|
django
|
|
mongoengine
|
|
pytestCheckHook
|
|
]) ++ (with self; [
|
|
sqlalchemy
|
|
flask
|
|
flask-sqlalchemy
|
|
]);
|
|
postPatch = "";
|
|
});
|
|
};
|
|
};
|
|
in
|
|
with python.pkgs; recurseIntoAttrs ({
|
|
inherit python;
|
|
coresrht = toPythonApplication srht;
|
|
buildsrht = toPythonApplication buildsrht;
|
|
gitsrht = toPythonApplication gitsrht;
|
|
hgsrht = toPythonApplication hgsrht;
|
|
hubsrht = toPythonApplication hubsrht;
|
|
listssrht = toPythonApplication listssrht;
|
|
mansrht = toPythonApplication mansrht;
|
|
metasrht = toPythonApplication metasrht;
|
|
pagessrht = callPackage ./pages.nix { };
|
|
pastesrht = toPythonApplication pastesrht;
|
|
todosrht = toPythonApplication todosrht;
|
|
passthru.tests = {
|
|
nixos-sourcehut = nixosTests.sourcehut;
|
|
};
|
|
} // lib.optionalAttrs config.allowAliases {
|
|
# Added 2022-10-29
|
|
dispatchsrht = throw "dispatch is deprecated. See https://sourcehut.org/blog/2022-08-01-dispatch-deprecation-plans/ for more information.";
|
|
})
|