ankisyncd-rs: add package for anki-sync-server-rs

the current ankisyncd server is obsolete and does not work with modern anki clients,
the new version of the ankisyncd python server might work but is hard to build
This commit is contained in:
Dominique Martinet 2023-04-02 17:26:28 +09:00
parent 453da3c28f
commit 5c7df30c0a
3 changed files with 4059 additions and 0 deletions

4005
pkgs/servers/ankisyncd-rs/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,52 @@
{ lib, runCommand, fetchFromGitHub, rustPlatform, protobuf }:
let
pname = "ankisyncd-rs";
version = "1.1.3";
# anki-sync-server-rs expects anki sources in the 'anki' folder
# of its own source tree, with a patch applied (mostly to make
# some modules public): prepare our own 'src' manually
src = runCommand "anki-sync-server-rs-src" {
src = fetchFromGitHub {
owner = "ankicommunity";
repo = "anki-sync-server-rs";
rev = version;
hash = "sha256-y7X4jsPBykdpWXXaybdy6+XL3F2wZ9c9NvFornCes3M=";
};
} ''
cp -r "$src/." "$out"
chmod +w "$out"
cp -r "${ankiSrc}" "$out/anki"
chmod -R +w "$out/anki"
patch -d "$out/anki" -Np1 < "$src/anki_patch/d9d36078f17a2b4b8b44fcb802eb274911ebabe7_anki_rslib.patch"
'';
# Note we do not use anki.src because the patch in ankisyncd's
# sources expect a fixed version, so we pin it here.
ankiSrc = fetchFromGitHub {
owner = "ankitects";
repo = "anki";
rev = "2.1.60";
hash = "sha256-hNrf6asxF7r7QK2XO150yiRjyHAYKN8OFCFYX0SAiwA=";
fetchSubmodules = true;
};
in rustPlatform.buildRustPackage {
inherit pname version src;
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"csv-1.1.6" = "sha256-w728ffOVkI+IfK6FbmkGhr0CjuyqgJnPB1kutMJIUYg=";
};
};
nativeBuildInputs = [ protobuf ];
meta = with lib; {
description = "Standalone unofficial anki sync server";
homepage = "https://github.com/ankicommunity/anki-sync-server-rs";
license = with licenses; [ agpl3Only ];
maintainers = with maintainers; [ martinetd ];
};
}

View File

@ -244,6 +244,8 @@ with pkgs;
python3 = python39;
};
ankisyncd-rs = callPackage ../servers/ankisyncd-rs { };
ariang = callPackage ../servers/ariang { };
mov-cli = callPackage ../applications/video/mov-cli { };