0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-13 21:50:33 +03:00

memos: 0.13.2 -> 0.24.2, move to by-name, adopt

special thanks to @tecosaur for https://github.com/NixOS/nixpkgs/issues/257131#issuecomment-2643372737, which i used as inspiration for my changes

Co-authored-by: TEC <git@tecosaur.net>
This commit is contained in:
kuflierl 2025-05-08 01:26:14 +02:00
parent f1ecab6995
commit 29373c41f0
No known key found for this signature in database
GPG key ID: 0B3842DA5392223D
6 changed files with 145 additions and 6070 deletions

View file

@ -0,0 +1,23 @@
diff --git a/plugin/httpgetter/html_meta_test.go b/plugin/httpgetter/html_meta_test.go
index d0b0d903..d1668db1 100644
--- a/plugin/httpgetter/html_meta_test.go
+++ b/plugin/httpgetter/html_meta_test.go
@@ -2,7 +2,6 @@ package httpgetter
import (
"errors"
- "strings"
"testing"
"github.com/stretchr/testify/require"
@@ -30,10 +29,4 @@ func TestGetHTMLMetaForInternal(t *testing.T) {
if _, err := GetHTMLMeta("http://localhost"); !errors.Is(err, ErrInternalIP) {
t.Errorf("Expected error for resolved internal IP, got %v", err)
}
-
- // test for redirected internal IP
- // 49.232.126.226:1110 will redirects to 127.0.0.1
- if _, err := GetHTMLMeta("http://49.232.126.226:1110"); !(errors.Is(err, ErrInternalIP) && strings.Contains(err.Error(), "redirect")) {
- t.Errorf("Expected error for redirected internal IP, got %v", err)
- }
}

View file

@ -0,0 +1,122 @@
{
fetchFromGitHub,
buildGoModule,
stdenvNoCC,
nix-update-script,
nodejs,
lib,
pnpm,
buf,
cacert,
grpc-gateway,
protoc-gen-go,
protoc-gen-go-grpc,
protoc-gen-validate,
}:
let
version = "0.24.2";
src = fetchFromGitHub {
owner = "usememos";
repo = "memos";
rev = "v${version}";
hash = "sha256-DWOJ6+lUTbOzMLsfTDNZfhgNomajNCnNi7U1A+tqXm4=";
};
protobufsGenerated = stdenvNoCC.mkDerivation {
name = "memos-protobuf-gen";
inherit src;
nativeBuildInputs = [
buf
cacert
grpc-gateway
protoc-gen-go
protoc-gen-go-grpc
protoc-gen-validate
];
buildPhase = ''
runHook preBuild
pushd proto
HOME=$TMPDIR buf generate
popd
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{proto,web/src/types}
cp -r {.,$out}/proto/gen
cp -r {.,$out}/web/src/types/proto
runHook postInstall
'';
outputHashMode = "recursive";
outputHashAlgo = "sha256";
outputHash = "sha256-u+Wq/fXvWTjXdhC2h6RCsn7pjdFJ+gUdTPRvrn9cZ+k=";
};
frontend = stdenvNoCC.mkDerivation (finalAttrs: {
pname = "memos-web";
inherit version src;
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
sourceRoot = "${finalAttrs.src.name}/web";
hash = "sha256-lopCa7F/foZ42cAwCxE+TWAnglTZg8jY8eRWmeck/W8=";
};
pnpmRoot = "web";
nativeBuildInputs = [
nodejs
pnpm.configHook
];
preBuild = ''
cp -r {${protobufsGenerated},.}/web/src/types/proto
'';
buildPhase = ''
runHook preBuild
pnpm -C web build
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -r web/dist $out
runHook postInstall
'';
});
in
buildGoModule {
pname = "memos";
inherit version src;
vendorHash = "sha256-hdL4N0tg/lYGTeiKl9P2QsV8HTxlvHfsSqsqq/C0cg8=";
preBuild = ''
rm -rf server/router/frontend/dist
cp -r ${frontend} server/router/frontend/dist
cp -r {${protobufsGenerated},.}/proto/gen
'';
patches = [
# to be removed in next release (test was removed upstream as part of a bigger commit)
./nixbuild-check.patch
];
passthru.updateScript = nix-update-script {
extraArgs = [
"--subpackage"
"memos-web"
"--subpackage"
"memos-protobuf-gen"
];
};
meta = {
homepage = "https://usememos.com";
description = "Lightweight, self-hosted memo hub";
maintainers = with lib.maintainers; [
indexyz
kuflierl
];
license = lib.licenses.mit;
mainProgram = "memos";
};
}

View file

@ -1,61 +0,0 @@
{
fetchFromGitHub,
buildGoModule,
jq,
buildNpmPackage,
lib,
makeWrapper,
}:
let
version = "0.13.2";
src = fetchFromGitHub {
owner = "usememos";
repo = "memos";
rev = "v${version}";
hash = "sha256-lcOZg5mlFPp04ZCm5GDhQfSwE2ahSmGhmdAw+pygK0A=";
};
frontend = buildNpmPackage {
pname = "memos-web";
inherit version;
src = "${src}/web";
npmDepsHash = "sha256-36UcHE98dsGvYQWLIc/xgP8Q0IyJ7la0Qoo3lZqUcmw=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
'';
installPhase = ''
cp -r dist $out
'';
};
in
buildGoModule {
pname = "memos";
inherit version src;
# check will unable to access network in sandbox
doCheck = false;
vendorHash = "sha256-UM/xeRvfvlq+jGzWpc3EU5GJ6Dt7RmTbSt9h3da6f8w=";
# Inject frontend assets into go embed
prePatch = ''
rm -rf server/dist
cp -r ${frontend} server/dist
'';
passthru = {
updateScript = ./update.sh;
};
meta = with lib; {
homepage = "https://usememos.com";
description = "Lightweight, self-hosted memo hub";
maintainers = with maintainers; [ indexyz ];
license = licenses.mit;
mainProgram = "memos";
};
}

File diff suppressed because it is too large Load diff

View file

@ -1,56 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p nix wget nix-prefetch-github moreutils jq prefetch-npm-deps nodejs
set -euo pipefail
TARGET_VERSION_REMOTE=$(curl -s https://api.github.com/repos/usememos/memos/releases/latest | jq -r ".tag_name")
TARGET_VERSION=${TARGET_VERSION_REMOTE#v}
if [[ "$UPDATE_NIX_OLD_VERSION" == "$TARGET_VERSION" ]]; then
echo "memos is up-to-date: ${UPDATE_NIX_OLD_VERSION}"
exit 0
fi
extractVendorHash() {
original="${1?original hash missing}"
result="$(nix-build -A memos.goModules 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)"
[ -z "$result" ] && { echo "$original"; } || { echo "$result"; }
}
replaceHash() {
old="${1?old hash missing}"
new="${2?new hash missing}"
awk -v OLD="$old" -v NEW="$new" '{
if (i=index($0, OLD)) {
$0 = substr($0, 1, i-1) NEW substr($0, i+length(OLD));
}
print $0;
}' ./pkgs/servers/memos/default.nix | sponge ./pkgs/servers/memos/default.nix
}
# change version number
sed -e "s/version =.*;/version = \"$TARGET_VERSION\";/g" \
-i ./pkgs/servers/memos/default.nix
# update hash
SRC_HASH="$(nix-instantiate --eval -A memos.src.outputHash | tr -d '"')"
NEW_HASH="$(nix-prefetch-github usememos memos --rev v$TARGET_VERSION | jq -r .hash)"
replaceHash "$SRC_HASH" "$NEW_HASH"
GO_HASH="$(nix-instantiate --eval -A memos.vendorHash | tr -d '"')"
EMPTY_HASH="$(nix-instantiate --eval -A lib.fakeHash | tr -d '"')"
replaceHash "$GO_HASH" "$EMPTY_HASH"
replaceHash "$EMPTY_HASH" "$(extractVendorHash "$GO_HASH")"
# update src yarn lock
SRC_FILE_BASE="https://raw.githubusercontent.com/usememos/memos/v$TARGET_VERSION"
trap 'rm -rf ./pkgs/servers/memos/package.json' EXIT
pushd ./pkgs/servers/memos
wget -q "$SRC_FILE_BASE/web/package.json"
npm install --package-lock-only
NPM_HASH=$(prefetch-npm-deps ./package-lock.json)
popd
sed -i -E -e "s#npmDepsHash = \".*\"#npmDepsHash = \"$NPM_HASH\"#" ./pkgs/servers/memos/default.nix

View file

@ -1125,8 +1125,6 @@ with pkgs;
};
};
memos = callPackage ../servers/memos { };
mkosi = python3Packages.callPackage ../tools/virtualization/mkosi { inherit systemd; };
mkosi-full = mkosi.override { withQemu = true; };