about summary refs log tree commit diff
path: root/pkgs/development/python-modules/panel/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/panel/default.nix')
-rw-r--r--pkgs/development/python-modules/panel/default.nix30
1 files changed, 27 insertions, 3 deletions
diff --git a/pkgs/development/python-modules/panel/default.nix b/pkgs/development/python-modules/panel/default.nix
index 5628b8cc19e48..fa8dbddd04ec6 100644
--- a/pkgs/development/python-modules/panel/default.nix
+++ b/pkgs/development/python-modules/panel/default.nix
@@ -8,19 +8,39 @@
 , pyct
 , testpath
 , tqdm
+, callPackage
 }:
 
-buildPythonPackage rec {
+let
+  node = callPackage ./node {};
+in buildPythonPackage rec {
   pname = "panel";
   version = "0.11.1";
-  # Version 10 attempts to download models from the web during build-time
-  # https://github.com/holoviz/panel/issues/1819
 
+  # Don't forget to also update the node packages
+  # 1. retrieve the package.json file
+  # 2. nix shell nixpkgs#nodePackages.node2nix
+  # 3. node2nix
   src = fetchPypi {
     inherit pname version;
     sha256 = "ce531e5c0c8a8ae74d523762aeb1666650caebbe1867aba16129d29791e921f9";
   };
 
+  # Since 0.10.0 panel attempts to fetch from the web.
+  # We avoid this:
+  # - we use node2nix to fetch assets
+  # - we disable bundling (which also tries to fetch assets)
+  # Downside of disabling bundling is that in an airgapped environment
+  # one may miss assets.
+  # https://github.com/holoviz/panel/issues/1819
+  preBuild = ''
+    substituteInPlace setup.py --replace "bundle_resources()" ""
+    pushd panel
+    ln -s ${node.nodeDependencies}/lib/node_modules
+    export PATH="${node.nodeDependencies}/bin:$PATH"
+    popd
+  '';
+
   propagatedBuildInputs = [
     bokeh
     param
@@ -34,6 +54,10 @@ buildPythonPackage rec {
   # infinite recursion in test dependencies (hvplot)
   doCheck = false;
 
+  passthru = {
+    inherit node; # For convenience
+  };
+
   meta = with lib; {
     description = "A high level dashboarding library for python visualization libraries";
     homepage = "https://pyviz.org";