2023-08-25 07:13:55 +08:00
|
|
|
{
|
2023-09-24 23:23:35 +08:00
|
|
|
lib, stdenv, mkPnpmPackage, fetchFromGitHub, fetchurl, nodejs_20, writeShellScript, buildFHSEnv,
|
2023-09-01 21:05:26 +08:00
|
|
|
bash, cypress, vips, pkg-config
|
2023-08-25 07:13:55 +08:00
|
|
|
}:
|
|
|
|
let
|
2023-09-01 21:05:26 +08:00
|
|
|
pname = "misskey";
|
2023-11-05 23:17:45 +08:00
|
|
|
version = "2023.11.0";
|
2023-08-25 07:13:55 +08:00
|
|
|
src = fetchFromGitHub
|
2023-09-01 21:05:26 +08:00
|
|
|
{
|
|
|
|
owner = "CHN-beta";
|
|
|
|
repo = "misskey";
|
2023-11-05 23:17:45 +08:00
|
|
|
rev = "aa182cd92ea5dc446f4d1ae2bf942bf46c645811";
|
|
|
|
sha256 = "hotUhy4Rhm4QWO7oYH3UENr7LewF+/dC8rsaKD0y2uc=";
|
2023-09-01 21:05:26 +08:00
|
|
|
fetchSubmodules = true;
|
|
|
|
};
|
|
|
|
originalPnpmPackage = mkPnpmPackage
|
|
|
|
{
|
|
|
|
inherit pname version src;
|
|
|
|
nodejs = nodejs_20;
|
2023-09-30 10:54:41 +08:00
|
|
|
copyPnpmStore = true;
|
2023-09-01 21:05:26 +08:00
|
|
|
};
|
|
|
|
startScript = writeShellScript "misskey"
|
|
|
|
''
|
|
|
|
export PATH=${lib.makeBinPath [ bash nodejs_20 nodejs_20.pkgs.pnpm nodejs_20.pkgs.gulp cypress ]}:$PATH
|
|
|
|
export CYPRESS_RUN_BINARY="${cypress}/bin/Cypress"
|
|
|
|
export NODE_ENV=production
|
|
|
|
pnpm run migrateandstart
|
|
|
|
'';
|
2023-09-24 23:23:35 +08:00
|
|
|
re2 = stdenv.mkDerivation rec
|
|
|
|
{
|
|
|
|
pname = "re2";
|
2023-11-05 23:17:45 +08:00
|
|
|
version = "1.20.5";
|
2023-09-24 23:23:35 +08:00
|
|
|
srcs =
|
|
|
|
[
|
|
|
|
(fetchurl
|
|
|
|
{
|
2023-11-05 23:17:45 +08:00
|
|
|
url = "https://github.com/uhop/node-re2/releases/download/1.20.5/linux-x64-120.br";
|
|
|
|
sha256 = "07hwfgb7yw7pad2svkmx8qapc490xxxk0bbbx51h3kajckw98b9w";
|
2023-09-24 23:23:35 +08:00
|
|
|
})
|
|
|
|
(fetchurl
|
|
|
|
{
|
2023-11-05 23:17:45 +08:00
|
|
|
url = "https://github.com/uhop/node-re2/releases/download/1.20.5/linux-x64-120.gz";
|
|
|
|
sha256 = "0c3z7bw4b1hgafv4n86pkg3z627zsmlzaghbzpyb81pilf1hzn8z";
|
2023-09-24 23:23:35 +08:00
|
|
|
})
|
|
|
|
(fetchurl
|
|
|
|
{
|
2023-11-05 23:17:45 +08:00
|
|
|
url = "https://github.com/uhop/node-re2/releases/download/1.20.5/linux-x64-115.br";
|
|
|
|
sha256 = "17sbfx0dbfqc42qsxbqnn94a3vsih4mc06d8svbarvx5b5x0mg31";
|
2023-09-24 23:23:35 +08:00
|
|
|
})
|
|
|
|
(fetchurl
|
|
|
|
{
|
2023-11-05 23:17:45 +08:00
|
|
|
url = "https://github.com/uhop/node-re2/releases/download/1.20.5/linux-x64-115.gz";
|
|
|
|
sha256 = "1lnmad2vqhjck0fjs55z74jm9psl1p81g84k2nn9gxbqnk2lxsjd";
|
2023-09-24 23:23:35 +08:00
|
|
|
})
|
|
|
|
(fetchurl
|
|
|
|
{
|
2023-11-05 23:17:45 +08:00
|
|
|
url = "https://github.com/uhop/node-re2/releases/download/1.20.5/linux-x64-108.br";
|
|
|
|
sha256 = "1c605zipadwbd8z3mzvjzw4x9v89jdq19m4hmd6bqbrcz3qbgg4n";
|
2023-09-24 23:23:35 +08:00
|
|
|
})
|
|
|
|
(fetchurl
|
|
|
|
{
|
2023-11-05 23:17:45 +08:00
|
|
|
url = "https://github.com/uhop/node-re2/releases/download/1.20.5/linux-x64-108.gz";
|
|
|
|
sha256 = "0sqsn3rdlg8abqcn7i9gyhpsd1znfj1x2bxm1nj222g0svp1mry3";
|
2023-09-24 23:23:35 +08:00
|
|
|
})
|
|
|
|
];
|
|
|
|
phases = [ "installPhase" ];
|
|
|
|
installPhase =
|
|
|
|
''
|
|
|
|
mkdir -p $out/${version}
|
|
|
|
for i in $srcs
|
|
|
|
do
|
|
|
|
cp $i $out/${version}/''${i#*-}
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
};
|
2023-08-25 18:25:34 +08:00
|
|
|
in
|
2023-09-24 21:42:40 +08:00
|
|
|
stdenv.mkDerivation rec
|
2023-09-01 21:05:26 +08:00
|
|
|
{
|
2023-09-25 16:33:18 +08:00
|
|
|
inherit version src pname;
|
2023-09-24 21:42:40 +08:00
|
|
|
buildInputs =
|
2023-09-24 23:23:35 +08:00
|
|
|
[
|
|
|
|
bash nodejs_20 nodejs_20.pkgs.typescript nodejs_20.pkgs.pnpm nodejs_20.pkgs.gulp cypress vips pkg-config
|
|
|
|
];
|
2023-09-24 21:42:40 +08:00
|
|
|
nativeBuildInputs = buildInputs;
|
2023-09-01 21:05:26 +08:00
|
|
|
CYPRESS_RUN_BINARY = "${cypress}/bin/Cypress";
|
|
|
|
NODE_ENV = "production";
|
2023-09-24 23:23:35 +08:00
|
|
|
RE2_DOWNLOAD_MIRROR = "${re2}";
|
|
|
|
RE2_DOWNLOAD_SKIP_PATH = "true";
|
2023-09-01 21:05:26 +08:00
|
|
|
configurePhase =
|
|
|
|
''
|
|
|
|
export HOME=$NIX_BUILD_TOP # Some packages need a writable HOME
|
|
|
|
export npm_config_nodedir=${nodejs_20}
|
2023-08-25 07:13:55 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
runHook preConfigure
|
2023-08-25 07:13:55 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
store=$(pnpm store path)
|
|
|
|
mkdir -p $(dirname $store)
|
2023-08-25 07:13:55 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
cp -f ${originalPnpmPackage.passthru.patchedLockfileYaml} pnpm-lock.yaml
|
2023-09-30 10:54:41 +08:00
|
|
|
cp -RL ${originalPnpmPackage.passthru.pnpmStore} $store
|
2023-09-01 21:05:26 +08:00
|
|
|
chmod -R +w $store
|
|
|
|
pnpm install --frozen-lockfile --offline
|
2023-08-25 07:13:55 +08:00
|
|
|
|
2023-09-01 21:05:26 +08:00
|
|
|
runHook postConfigure
|
|
|
|
'';
|
|
|
|
buildPhase =
|
|
|
|
''
|
|
|
|
runHook preBuild
|
|
|
|
pnpm run build
|
|
|
|
runHook postBuild
|
|
|
|
'';
|
|
|
|
installPhase =
|
|
|
|
''
|
|
|
|
runHook preInstall
|
|
|
|
mkdir -p $out
|
|
|
|
mv * .* $out
|
|
|
|
mkdir -p $out/bin
|
|
|
|
cp ${startScript} $out/bin/misskey
|
|
|
|
mkdir -p $out/files
|
|
|
|
runHook postInstall
|
|
|
|
'';
|
2023-09-25 16:33:18 +08:00
|
|
|
passthru =
|
|
|
|
{
|
|
|
|
inherit originalPnpmPackage startScript re2;
|
|
|
|
};
|
2023-09-01 21:05:26 +08:00
|
|
|
}
|