diff options
Diffstat (limited to 'app/cryptpad/build/default.nix')
-rw-r--r-- | app/cryptpad/build/default.nix | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/app/cryptpad/build/default.nix b/app/cryptpad/build/default.nix index 2069a58..96795bc 100644 --- a/app/cryptpad/build/default.nix +++ b/app/cryptpad/build/default.nix @@ -2,20 +2,72 @@ let common = import ./common.nix; pkgs = import common.pkgsSrc {}; nodejs = pkgs.${common.nodejs}; + + bower2nix = + bowerNix = pkgs.stdenv.mkDerivation { + name = "cryptpad-bower-ifd"; + src = common.cryptpadSrc; + + buildPhase = '' + ${pkgs.nodePackages.bower2nix}/bin/bower2nix bower.json bower.nix + ''; + + installPhase = '' + cp bower.nix $out + ''; + + dontFixup = true; + }; + bower = pkgs.buildBowerComponents { + name = "cryptpad-bower"; + generated = bowerNix; + src = common.cryptpadSrc; + }; + + npmNix = pkgs.stdenv.mkDerivation { + name = "cryptpad-npm-ifd"; + src = common.cryptpadSrc; + + buildPhase = '' + ${pkgs.nodePackages.node2nix}/bin/node2nix -l package-lock.json + ''; + + installPhase = '' + mkdir -p $out/ + cp *.nix $out/ + ''; + + dontFixup = true; + }; + npm = (import npmNix { + inherit pkgs nodejs; + }).nodeDependencies; + in pkgs.stdenv.mkDerivation { name = "cryptpad"; - src = ./cryptpad; + src = common.cryptpadSrc; installPhase = '' mkdir -p $out/{bin,opt} - cp -r config customize.dist lib node_modules package.json package-lock.json server.js www $out/opt/ + # copy the source code + cp -r customize.dist lib server.js www $out/opt/ + + # mount node_modules + ln -s ${npm}/lib/node_modules $out/opt/node_modules + + # mount bower, based on the .bowerrc file at the git repo root + ln -s ${bower} $out/opt/www/bower_components + + # cryptpad is bugged with absolute path, this is a workaround to use absolute path as relative path ln -s / $out/opt/root + # start script cat > $out/bin/cryptpad <<EOF - cd $out/opt/ #!${pkgs.bash}/bin/bash + cd $out/opt/ + export PATH="${npm}/bin:$PATH" ${nodejs}/bin/node server.js EOF |