aboutsummaryrefslogtreecommitdiff
path: root/app/cryptpad/build
diff options
context:
space:
mode:
Diffstat (limited to 'app/cryptpad/build')
-rw-r--r--app/cryptpad/build/common.nix10
-rw-r--r--app/cryptpad/build/default.nix58
2 files changed, 65 insertions, 3 deletions
diff --git a/app/cryptpad/build/common.nix b/app/cryptpad/build/common.nix
index 61d02fa..7ed1d55 100644
--- a/app/cryptpad/build/common.nix
+++ b/app/cryptpad/build/common.nix
@@ -5,5 +5,15 @@
url ="https://github.com/NixOS/nixpkgs/archive/2f06b87f64bc06229e05045853e0876666e1b023.tar.gz";
sha256 = "sha256:1d7zg96xw4qsqh7c89pgha9wkq3rbi9as3k3d88jlxy2z0ns0cy2";
};
+ cryptpadSrc = builtins.fetchGit {
+ url = "https://github.com/xwiki-labs/cryptpad";
+ ref = "refs/tags/4.14.1";
+ rev = "5979aafdee90aab232658374b11aca8331fd0421";
+ };
+ bower2nixSrc = builtins.fetchGit {
+ url = "";
+ ref = "";
+ rev = "";
+ }
nodejs = "nodejs-slim-16_x";
}
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