nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 124 lines 2.7 kB view raw
1{ 2 fetchFromGitHub, 3 buildGoModule, 4 stdenvNoCC, 5 nix-update-script, 6 nodejs, 7 lib, 8 pnpm, 9 buf, 10 cacert, 11 grpc-gateway, 12 protoc-gen-go, 13 protoc-gen-go-grpc, 14 protoc-gen-validate, 15}: 16let 17 version = "0.25.0"; 18 src = fetchFromGitHub { 19 owner = "usememos"; 20 repo = "memos"; 21 rev = "v${version}"; 22 hash = "sha256-M1o7orU4xw/t9PjSFXNj7tiYTarBv7kIIj8X0r3QD8s="; 23 }; 24 25 memos-protobuf-gen = stdenvNoCC.mkDerivation { 26 name = "memos-protobuf-gen"; 27 inherit src; 28 29 nativeBuildInputs = [ 30 buf 31 cacert 32 grpc-gateway 33 protoc-gen-go 34 protoc-gen-go-grpc 35 protoc-gen-validate 36 ]; 37 38 buildPhase = '' 39 runHook preBuild 40 pushd proto 41 HOME=$TMPDIR buf generate 42 popd 43 runHook postBuild 44 ''; 45 installPhase = '' 46 runHook preInstall 47 mkdir -p $out/{proto,web/src/types} 48 cp -r {.,$out}/proto/gen 49 cp -r {.,$out}/web/src/types/proto 50 runHook postInstall 51 ''; 52 53 outputHashMode = "recursive"; 54 outputHashAlgo = "sha256"; 55 outputHash = "sha256-lV92s/KLzWs/KSLbsb61FaA9+PEDMLshl/srDcjdRcU="; 56 }; 57 58 memos-web = stdenvNoCC.mkDerivation (finalAttrs: { 59 pname = "memos-web"; 60 inherit version src; 61 pnpmDeps = pnpm.fetchDeps { 62 inherit (finalAttrs) pname version src; 63 sourceRoot = "${finalAttrs.src.name}/web"; 64 fetcherVersion = 1; 65 hash = "sha256-TEWaFWFQ0sHdgfFFvolnwoa4hTaFkzqqyFep56Cevp4="; 66 }; 67 pnpmRoot = "web"; 68 nativeBuildInputs = [ 69 nodejs 70 pnpm.configHook 71 ]; 72 preBuild = '' 73 cp -r {${memos-protobuf-gen},.}/web/src/types/proto 74 ''; 75 buildPhase = '' 76 runHook preBuild 77 pnpm -C web build 78 runHook postBuild 79 ''; 80 installPhase = '' 81 runHook preInstall 82 cp -r web/dist $out 83 runHook postInstall 84 ''; 85 }); 86in 87buildGoModule { 88 pname = "memos"; 89 inherit 90 version 91 src 92 memos-web 93 memos-protobuf-gen 94 ; 95 96 vendorHash = "sha256-xiBxnrjJsskRCcUBGKnrc5s5tuhMFSqRoELcr5ww/XU="; 97 98 preBuild = '' 99 rm -rf server/router/frontend/dist 100 cp -r ${memos-web} server/router/frontend/dist 101 cp -r {${memos-protobuf-gen},.}/proto/gen 102 ''; 103 104 passthru.updateScript = nix-update-script { 105 extraArgs = [ 106 "--subpackage" 107 "memos-web" 108 "--subpackage" 109 "memos-protobuf-gen" 110 ]; 111 }; 112 113 meta = { 114 homepage = "https://usememos.com"; 115 description = "Lightweight, self-hosted memo hub"; 116 changelog = "https://github.com/usememos/memos/releases/tag/${src.rev}"; 117 maintainers = with lib.maintainers; [ 118 indexyz 119 kuflierl 120 ]; 121 license = lib.licenses.mit; 122 mainProgram = "memos"; 123 }; 124}