Flaresolverr update step 1

This commit is contained in:
Luj 2023-10-11 14:45:54 +02:00
parent f4cb5ab46d
commit 8553291a5c
3 changed files with 83 additions and 45 deletions

View file

@ -1,46 +1,51 @@
{ pkgs, lib, stdenv, python3 }:
with pkgs;
{ lib, stdenv, python3, chromium, xvfb-run, xorgserver, makeWrapper, chromedriver, fetchFromGitHub, substituteAll }:
let
python_env = pkgs.python3.withPackages
(p: with p; [ bottle waitress selenium func-timeout requests websockets xvfbwrapper ]);
python_env = python3.withPackages
(p: with p; [ bottle waitress selenium func-timeout requests websockets xvfbwrapper webtest certifi prometheus-client ]);
in
stdenv.mkDerivation
rec {
stdenv.mkDerivation rec {
pname = "flaresolverr";
version = "3.1.2";
version = "3.3.6";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "v${version}";
sha256 = "sha256-36ILIyMTzm9pK9aakfZHfsHWy9xHtFez8QGZuIJ04vM=";
sha256 = "sha256-lSOw63yjFdi32N44r3A8Ggvexpov9CnaEP7fD7EBdKc=";
};
buildInputs = [ pkgs.makeWrapper ];
buildInputs = [ makeWrapper ];
nativeBuildInputs = [ chromedriver ];
patches = [ ./flaresolverr.patch ];
postPatch = ''
substituteInPlace src/utils.py \
--replace "CHANGEME" "${pkgs.chromedriver}/bin/chromedriver"
'';
patches = [
(substituteAll {
src = ./chromedriver_path.patch;
chromedriver_path = "${chromedriver}/bin/chromedriver";
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp -r . $out/share
cp -r src $out/share/flaresolverr
cp package.json $out/share/flaresolverr
runHook postInstall
'';
postFixup = ''
makeWrapper ${python_env}/bin/python $out/bin/flaresolverr \
--prefix PATH : ${lib.makeBinPath [ pkgs.chromium pkgs.xvfb-run xorg.xorgserver pkgs.chromedriver ]} \
--add-flags $out/share/src/flaresolverr.py \
--chdir $out/share/
--prefix PATH : ${lib.makeBinPath [ chromium xvfb-run xorgserver chromedriver ]} \
--add-flags $out/share/flaresolverr/flaresolverr.py \
--chdir $out/share/flaresolverr
'';
meta.platforms = [ "x86_64-linux" ];
meta = with lib; {
description = "Proxy server to bypass Cloudflare protection";
homepage = "https://github.com/FlareSolverr/FlareSolverr";
license = licenses.mit;
maintainers = with maintainers; [ julienmalka ];
# Flaresolverr will not run without chromedriver and xvfb-run
platforms = lib.intersectLists chromedriver.meta.platforms xvfb-run.meta.platforms;
};
}