Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 92 lines 1.9 kB view raw
1{ 2 lib, 3 python3, 4 buildNpmPackage, 5 fetchFromGitHub, 6 jq, 7 stdenv, 8}: 9 10let 11 python = python3.override { 12 self = python; 13 packageOverrides = self: super: { 14 # pyCA is incompatible with SQLAlchemy 2.0 15 sqlalchemy = super.sqlalchemy_1_4; 16 }; 17 }; 18 19 frontend = buildNpmPackage rec { 20 pname = "pyca"; 21 version = "4.5"; 22 23 src = fetchFromGitHub { 24 owner = "opencast"; 25 repo = "pyCA"; 26 rev = "v${version}"; 27 sha256 = "sha256-cTkWkOmgxJZlddqaSYKva2wih4Mvsdrd7LD4NggxKQk="; 28 }; 29 30 npmDepsHash = "sha256-0U+semrNWTkNu3uQQkiJKZT1hB0/IfkL84G7/oP8XYY="; 31 32 nativeBuildInputs = [ 33 jq 34 python 35 ]; 36 37 postPatch = '' 38 ${jq}/bin/jq '. += {"version": "${version}"}' < package.json > package.json.tmp 39 mv package.json.tmp package.json 40 ''; 41 42 installPhase = '' 43 mkdir -p $out/static 44 cp -R pyca/ui/static/* $out/static/ 45 ''; 46 }; 47 48in 49python3.pkgs.buildPythonApplication rec { 50 pname = "pyca"; 51 version = "4.5"; 52 pyproject = true; 53 54 src = fetchFromGitHub { 55 owner = "opencast"; 56 repo = "pyCA"; 57 rev = "v${version}"; 58 sha256 = "sha256-cTkWkOmgxJZlddqaSYKva2wih4Mvsdrd7LD4NggxKQk="; 59 }; 60 61 build-system = with python3.pkgs; [ setuptools ]; 62 63 dependencies = with python.pkgs; [ 64 pycurl 65 python-dateutil 66 configobj 67 sqlalchemy 68 sdnotify 69 psutil 70 flask 71 prometheus-client 72 ]; 73 74 postPatch = '' 75 sed -i -e 's#static_folder=.*#static_folder="${frontend}/static")#' pyca/ui/__init__.py 76 ''; 77 78 pythonImportsCheck = [ "pyca" ]; 79 80 passthru = { 81 inherit frontend; 82 }; 83 84 meta = with lib; { 85 broken = stdenv.hostPlatform.isDarwin; 86 description = "Fully functional Opencast capture agent written in Python"; 87 mainProgram = "pyca"; 88 homepage = "https://github.com/opencast/pyCA"; 89 license = licenses.lgpl3; 90 maintainers = with maintainers; [ pmiddend ]; 91 }; 92}