nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 makeWrapper,
6 nodejs,
7 pnpm_10,
8 fetchPnpmDeps,
9 pnpmConfigHook,
10 testers,
11}:
12let
13 pnpm = pnpm_10;
14in
15stdenv.mkDerivation (finalAttrs: {
16 pname = "zenn-cli";
17 version = "0.2.10";
18
19 src = fetchFromGitHub {
20 owner = "zenn-dev";
21 repo = "zenn-editor";
22 tag = finalAttrs.version;
23 hash = "sha256-wItKDLAJHIyxUUaLIFM+sNYWtXKWC4P6GkCKn2Wh2JA=";
24 };
25
26 nativeBuildInputs = [
27 nodejs
28 pnpmConfigHook
29 pnpm_10
30 makeWrapper
31 ];
32
33 pnpmWorkspaces = [ "zenn-cli..." ];
34
35 pnpmDeps = fetchPnpmDeps {
36 inherit (finalAttrs)
37 pname
38 version
39 src
40 pnpmWorkspaces
41 ;
42 pnpm = pnpm_10;
43 fetcherVersion = 1;
44 hash = "sha256-WXsS5/J08n/dWV5MbyX4vK7j1mfiUoLdzwmzyqoX3FA=";
45 };
46
47 preBuild = ''
48 echo VITE_EMBED_SERVER_ORIGIN="https://embed.zenn.studio" > packages/zenn-cli/.env
49 '';
50
51 buildPhase = ''
52 runHook preBuild
53
54 pnpm build --no-daemon
55
56 runHook postBuild
57 '';
58
59 installPhase = ''
60 runHook preInstall
61
62 mkdir -p $out/{bin,lib/packages}
63 rm -r node_modules packages/zenn-cli/node_modules
64 pnpm install --filter=zenn-cli --prod --ignore-scripts
65 cp -r node_modules $out/lib
66 cp -r packages/zenn-cli $out/lib/packages/zenn-cli
67
68 makeWrapper "${lib.getExe nodejs}" "$out/bin/zenn" \
69 --add-flags "$out/lib/packages/zenn-cli/dist/server/zenn.js"
70
71 runHook postInstall
72 '';
73
74 passthru = {
75 tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
76 };
77
78 meta = {
79 description = "Preview Zenn content locally";
80 homepage = "https://github.com/zenn-dev/zenn-editor";
81 changelog = "https://github.com/zenn-dev/zenn-editor/releases/tag/${finalAttrs.version}";
82 license = lib.licenses.mit;
83 maintainers = with lib.maintainers; [ natsukium ];
84 mainProgram = "zenn";
85 platforms = nodejs.meta.platforms;
86 };
87})