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 = common.cryptpadSrc; installPhase = '' mkdir -p $out/{bin,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 <