From b6f3c4d0753f0f42a0b4c44c5b1f5d7ddeb06d5e Mon Sep 17 00:00:00 2001 From: Tadeo Kondrak Date: Mon, 25 Jan 2021 12:19:33 -0700 Subject: [PATCH] vapoursynth-editor: allow adding plugins without rebuilding --- .../libraries/vapoursynth/editor.nix | 80 +++++++++++-------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/pkgs/development/libraries/vapoursynth/editor.nix b/pkgs/development/libraries/vapoursynth/editor.nix index f9ebed19752..26a1a6d6808 100644 --- a/pkgs/development/libraries/vapoursynth/editor.nix +++ b/pkgs/development/libraries/vapoursynth/editor.nix @@ -1,43 +1,59 @@ -{ lib, mkDerivation, fetchFromBitbucket +{ lib, stdenv, mkDerivation, fetchFromBitbucket, makeWrapper, runCommand , python3, vapoursynth , qmake, qtbase, qtwebsockets }: -mkDerivation rec { - pname = "vapoursynth-editor"; - version = "R19"; +let + unwrapped = mkDerivation rec { + pname = "vapoursynth-editor"; + version = "R19"; - src = fetchFromBitbucket { - owner = "mystery_keeper"; - repo = pname; - rev = lib.toLower version; - sha256 = "1zlaynkkvizf128ln50yvzz3b764f5a0yryp6993s9fkwa7djb6n"; + src = fetchFromBitbucket { + owner = "mystery_keeper"; + repo = pname; + rev = lib.toLower version; + sha256 = "1zlaynkkvizf128ln50yvzz3b764f5a0yryp6993s9fkwa7djb6n"; + }; + + nativeBuildInputs = [ qmake ]; + buildInputs = [ qtbase vapoursynth qtwebsockets ]; + + dontWrapQtApps = true; + + preConfigure = "cd pro"; + + preFixup = '' + cd ../build/release* + mkdir -p $out/bin + for bin in vsedit{,-job-server{,-watcher}}; do + mv $bin $out/bin + wrapQtApp $out/bin/$bin + done + ''; + + passthru = { inherit withPlugins; }; + + meta = with lib; { + description = "Cross-platform editor for VapourSynth scripts"; + homepage = "https://bitbucket.org/mystery_keeper/vapoursynth-editor"; + license = licenses.mit; + maintainers = with maintainers; [ tadeokondrak ]; + platforms = platforms.all; + }; }; - nativeBuildInputs = [ qmake ]; - buildInputs = [ qtbase vapoursynth qtwebsockets ]; - - dontWrapQtApps = true; - - preConfigure = "cd pro"; - - preFixup = '' - cd ../build/release* + withPlugins = plugins: let + vapoursynthWithPlugins = vapoursynth.withPlugins plugins; + in runCommand "${unwrapped.name}-with-plugins" { + buildInputs = [ makeWrapper ]; + passthru = { withPlugins = plugins': withPlugins (plugins ++ plugins'); }; + } '' mkdir -p $out/bin for bin in vsedit{,-job-server{,-watcher}}; do - mv $bin $out/bin - - wrapQtApp $out/bin/$bin \ - --prefix PYTHONPATH : ${vapoursynth}/${python3.sitePackages} \ - --prefix LD_LIBRARY_PATH : ${vapoursynth}/lib + makeWrapper ${unwrapped}/bin/$bin $out/bin/$bin \ + --prefix PYTHONPATH : ${vapoursynthWithPlugins}/${python3.sitePackages} \ + --prefix LD_LIBRARY_PATH : ${vapoursynthWithPlugins}/lib done ''; - - meta = with lib; { - description = "Cross-platform editor for VapourSynth scripts"; - homepage = "https://bitbucket.org/mystery_keeper/vapoursynth-editor"; - license = licenses.mit; - maintainers = with maintainers; [ tadeokondrak ]; - platforms = platforms.all; - }; -} +in + withPlugins []