{ lib, stdenv, buildNimPackage, fetchFromGitea, fetchFromGitHub, runCommand , nim-unwrapped, preserves }: let compiler = runCommand "compiler.nimble" { inherit (nim-unwrapped) src; } '' mkdir -p $out tar xf $src --strip-components=1 -C $out ''; npeg = fetchFromGitHub { owner = "zevv"; repo = "npeg"; rev = "0.25.0"; hash = "sha256-E/0hCz0XsoAb/bAksqrKTyi8/FwBdP8kT6uUUAdru68="; }; in buildNimPackage rec { pname = "preserves"; version = "20220625"; src = fetchFromGitea { domain = "git.syndicate-lang.org"; owner = "ehmry"; repo = "${pname}-nim"; rev = version; sha256 = "sha256-ZNgBlIOKyWD0R5wZvGb/0K5tUpz5q5QpET4Qa/kxhkA="; }; propagatedBuildInputs = [ compiler npeg ]; propagatedNativeBuildInputs = lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) preserves; # propagate the utilities of this package for this build platform preConfigure = "substituteInPlace preserves.nimble --replace '# bin ' 'bin '"; postInstall = '' pushd $out/bin for link in preserves_decode preserves_from_json preserves_to_json; do ln -s preserves_encode $link done popd ''; doCheck = true; meta = src.meta // { maintainers = [ lib.maintainers.ehmry ]; license = lib.licenses.unlicense; }; }