mirror of
https://github.com/spacebarchat/server.git
synced 2026-03-30 07:30:00 +00:00
nix: cache builds
This commit is contained in:
124
default.nix
124
default.nix
@@ -22,51 +22,49 @@ let
|
||||
)
|
||||
);
|
||||
};
|
||||
in
|
||||
pkgs.stdenv.mkDerivation {
|
||||
pname = "spacebar-server-ts";
|
||||
nodejs = pkgs.nodejs_24;
|
||||
version = "1.0.0-" + rVersion;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Spacebar server, a FOSS reimplementation of the Discord backend.";
|
||||
homepage = "https://github.com/spacebarchat/server";
|
||||
license = licenses.agpl3Plus;
|
||||
platforms = platforms.all;
|
||||
mainProgram = "start-bundle";
|
||||
maintainers = with maintainers; [ RorySys ];
|
||||
};
|
||||
revsFile = pkgs.writeText "spacebar-server-rev.json" (
|
||||
builtins.toJSON {
|
||||
rev = self.sourceInfo.rev or self.sourceInfo.dirtyRev;
|
||||
shortRev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
|
||||
lastModified = self.sourceInfo.lastModified;
|
||||
}
|
||||
);
|
||||
|
||||
src = filteredSrc;
|
||||
dontStrip = true;
|
||||
srcHash = builtins.substring 11 32 (toString filteredSrc);
|
||||
unwrapped = pkgs.stdenv.mkDerivation {
|
||||
pname = "spacebar-server-ts-unwrapped";
|
||||
nodejs = pkgs.nodejs_24;
|
||||
version = "1.0.0-" + srcHash;
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
nodejs
|
||||
makeWrapper
|
||||
(pkgs.python3.withPackages (ps: with ps; [ setuptools ]))
|
||||
];
|
||||
meta = with lib; {
|
||||
description = "Spacebar server, a FOSS reimplementation of the Discord backend.";
|
||||
homepage = "https://github.com/spacebarchat/server";
|
||||
license = licenses.agpl3Plus;
|
||||
platforms = platforms.all;
|
||||
mainProgram = "start-bundle";
|
||||
maintainers = with maintainers; [ RorySys ];
|
||||
};
|
||||
|
||||
configurePhase = ''
|
||||
cp -r --no-preserve=ownership,timestamps ${pkgs.callPackage ./node-modules.nix { }} node_modules
|
||||
chown $USER:$GROUP node_modules -R
|
||||
chmod +w node_modules -R
|
||||
'';
|
||||
src = filteredSrc;
|
||||
dontStrip = true;
|
||||
|
||||
buildPhase = ''
|
||||
npm run build:tsgo
|
||||
'';
|
||||
nativeBuildInputs = with pkgs; [
|
||||
nodejs
|
||||
(pkgs.python3.withPackages (ps: with ps; [ setuptools ]))
|
||||
];
|
||||
|
||||
installPhase =
|
||||
let
|
||||
revsFile = pkgs.writeText "spacebar-server-rev.json" (
|
||||
builtins.toJSON {
|
||||
rev = self.sourceInfo.rev or self.sourceInfo.dirtyRev;
|
||||
shortRev = self.sourceInfo.shortRev or self.sourceInfo.dirtyShortRev;
|
||||
lastModified = self.sourceInfo.lastModified;
|
||||
}
|
||||
);
|
||||
in
|
||||
''
|
||||
configurePhase = ''
|
||||
cp -r --no-preserve=ownership,timestamps ${pkgs.callPackage ./node-modules.nix { }} node_modules
|
||||
chown $USER:$GROUP node_modules -R
|
||||
chmod +w node_modules -R
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
npm run build:tsgo
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
# set -x
|
||||
|
||||
@@ -80,19 +78,49 @@ pkgs.stdenv.mkDerivation {
|
||||
echo "Installing package into $out"
|
||||
mkdir -p $out
|
||||
cp -r assets dist node_modules package.json $out/
|
||||
cp ${revsFile} $out/.rev
|
||||
|
||||
# Create wrappers for start scripts
|
||||
echo "Creating wrappers for start scripts"
|
||||
for i in dist/**/start.js
|
||||
do
|
||||
makeWrapper ${pkgs.nodejs_24}/bin/node $out/bin/start-`dirname ''${i/dist\//}` --prefix NODE_PATH : $out/node_modules --add-flags --enable-source-maps --add-flags $out/$i
|
||||
done
|
||||
makeWrapper ${pkgs.nodejs_24}/bin/node $out/bin/apply-migrations --prefix NODE_PATH : $out/node_modules --add-flags --enable-source-maps --add-flags $out/dist/apply-migrations.js
|
||||
|
||||
# set +x
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.tests = pkgs.testers.runNixOSTest (import ./nix/tests/test-bundle-starts.nix self);
|
||||
};
|
||||
in
|
||||
pkgs.stdenv.mkDerivation {
|
||||
pname = "spacebar-server-ts";
|
||||
nodejs = unwrapped.nodejs;
|
||||
version = "1.0.0-" + rVersion;
|
||||
meta = unwrapped.meta;
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
# this isnt a real builder, we dont need these at all
|
||||
dontUnpack = true;
|
||||
dontBuild = true;
|
||||
dontPatch = true;
|
||||
dontConfigure = true;
|
||||
dontStrip = true;
|
||||
dontFixup = true;
|
||||
|
||||
installPhase = ''
|
||||
# Copy outputs
|
||||
echo "Installing package into $out"
|
||||
mkdir -p $out
|
||||
cp -r --no-preserve=ownership,timestamps ${unwrapped}/. $out/
|
||||
|
||||
# add version info
|
||||
cp ${revsFile} $out/.rev
|
||||
|
||||
# Create wrappers for start scripts
|
||||
echo "Creating wrappers for start scripts"
|
||||
for i in dist/**/start.js
|
||||
do
|
||||
makeWrapper ${pkgs.nodejs_24}/bin/node $out/bin/start-`dirname ''${i/dist\//}` --prefix NODE_PATH : $out/node_modules --add-flags --enable-source-maps --add-flags $out/$i
|
||||
done
|
||||
makeWrapper ${pkgs.nodejs_24}/bin/node $out/bin/apply-migrations --prefix NODE_PATH : $out/node_modules --add-flags --enable-source-maps --add-flags $out/dist/apply-migrations.js
|
||||
'';
|
||||
|
||||
passthru.tests = pkgs.testers.runNixOSTest (import ./nix/tests/test-bundle-starts.nix self);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user