Change:
Describe the bug Reproduction  Expected behavior No errors Notify maintainers Metadata Maintainer information:
The version of biber that we ship corresponds to . ships with texlive 2018 (tectonic-typesetting/tectonic-staging). And doesn't yet have a builtin solution for biber tectonic-typesetting/tectonic. You can try overriding biber to version 2.11, which should be compatible. cc as maintainer of
I would also appreciate a fix for this. I tried overriding to version 2.11, but that didn't help (similar version incompatibility), at least not on the current unstable channel or on 20.03 to match with the date of message. The version in the current derivation seems to be 3.3, which dates back to 2016, so it looks like updating would make more sense.
I marked this as stale due to inactivity. &rarr;
I've just encountered this issue too.
Which version of nixpkgs are you using? What is the output of:
Currently biber expects while nixpkgs (as well as texlive) contains . For me the override suggested in works with no issue; e.g. with home-manager: Although this works on my end, I hope this could be upstreamed to nixpkgs itself so that we can make use of the hydra cache with no need to locally rebuild tectonic; cc maintainers: Thank you very much!
Tectonic is tracking this issue in . In general, we sort of rely on Tectonic's bundles to follow texlive releases. That's why we don't embed such hardcoding of the version in Tectonic - since Tectonic could update it's bundle without an update to Tectonic itself, which could fix such an issue if it arises after a Tectonic release. Perhaps also the following Tectonic nixpkgs update will help:
Indeed... Is it then possible to create some package without the dependency, so that we can install the appropriate versions of and separately, without the need to recompile the package? :thinking: Thanks!
You have a point. I was the one who introduced the wrapping of with in ... I tend to think now that it shouldn't be that way, especially with this frequent issue of incompatibility. I pushed that as well to .
Wow nice! Thank you very much!
I have hence created a wrapper so that one can combine the two into a single package, where the -specific biber is renamed to prevent conflict with the texlive biber: I am far from proficient in nix, so the package is created following along with the previous revision of . It can be used e.g. as an override: I don't know whether it's good to upstream this or not. In any case, I think it may be useful to others like me, so it would be good to share this here haha.
Update: I am now trying to upstream a more polished solution via . would you be interested in a review? :pleading_face: The PR will close this issue.

Discussion:
githubId = 53131727; name = "Bryan Albuquerque"; }; <ins> bryango = { name = "Bryan Lai"; email = "bryanlais@gmail.com"; github = "bryango"; githubId = 26322692; }; </ins> bryanhonof = { name = "Bryan Honof"; email = "bryanhonof@gmail.com";

<ins> /* This package, `biber-for-tectonic`, provides a compatible version of `biber` as an optional runtime dependency of `tectonic`. The development of tectonic is slowing down recently, such that its `biber` dependency has been lagging behind the one in the nixpkgs `texlive` bundle. See: https://github.com/tectonic-typesetting/tectonic/discussions/1122 It is now feasible to track the biber dependency in nixpkgs, as the version bump is not very frequent, and it would provide a more complete user experience of tectonic in nixpkgs. */ { lib , fetchFromGitHub , fetchpatch , biber }: let version = "2.17"; in ( biber.override { /* It is necessary to first override the `version` data here, which is passed to `buildPerlModule`, and then to `mkDerivation`. If we simply do `biber.overrideAttrs` the resulting package `name` would be incorrect, since it has already been preprocessed by `buildPerlModule`. */ texlive.pkgs.biber.texsource = { inherit version; inherit (biber) pname meta; }; } ).overrideAttrs (prevAttrs: { src = fetchFromGitHub { owner = "plk"; repo = "biber"; rev = "v${version}"; hash = "sha256-Tt2sN2b2NGxcWyZDj5uXNGC8phJwFRiyH72n3yhFCi0="; }; patches = [ # Perl>=5.36.0 compatibility (fetchpatch { url = "https://patch-diff.githubusercontent.com/raw/plk/biber/pull/411.patch"; hash = "sha256-osgldRVfe3jnMSOMnAMQSB0Ymc1s7J6KtM2ig3c93SE="; }) ]; meta = prevAttrs.meta // { maintainers = with lib.maintainers; [ doronbehar bryango ]; }; }) </ins>

<ins> /* This file provides the `tectonic-unwrapped` package. On the other hand, the `tectonic` package is defined in `./wrapper.nix`, by wrapping - [`tectonic-unwrapped`](./default.nix) i.e. this package, and - [`biber-for-tectonic`](./biber.nix), which provides a compatible version of `biber`. */ </ins> { lib , stdenv , fetchFromGitHub

cargoHash = "sha256-1WjZbmZFPB1+QYpjqq5Y+fDkMZNmWJYIxmMFWg7Tiac="; <del> nativeBuildInputs = [ pkg-config makeBinaryWrapper ]; </del> <ins> nativeBuildInputs = [ pkg-config ]; </ins> buildInputs = [ icu fontconfig harfbuzz openssl ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ ApplicationServices Cocoa Foundation ]);

# workaround for https://github.com/NixOS/nixpkgs/issues/166205 NIX_LDFLAGS = lib.optionalString (stdenv.cc.isClang && stdenv.cc.libcxx != null) " -l${stdenv.cc.libcxx.cxxabi.libName}"; <del> postInstall = lib.optionalString stdenv.isLinux '' </del> <ins> postInstall = '' # Makes it possible to automatically use the V2 CLI API ln -s $out/bin/tectonic $out/bin/nextonic '' + lib.optionalString stdenv.isLinux '' </ins> substituteInPlace dist/appimage/tectonic.desktop  --replace Exec=tectonic Exec=$out/bin/tectonic install -D dist/appimage/tectonic.desktop -t $out/share/applications/ install -D dist/appimage/tectonic.svg -t $out/share/icons/hicolor/scalable/apps/ <del> ln -s $out/bin/tectonic $out/bin/nextonic </del> ''; doCheck = true;

changelog = "https://github.com/tectonic-typesetting/tectonic/blob/tectonic@${version}/CHANGELOG.md"; license = with licenses; [ mit ]; mainProgram = "tectonic"; <del> maintainers = with maintainers; [ lluchs doronbehar ]; </del> <ins> maintainers = with maintainers; [ lluchs doronbehar bryango ]; </ins> }; }

<ins> { lib , symlinkJoin , tectonic-unwrapped , biber-for-tectonic , makeWrapper }: symlinkJoin { name = "${tectonic-unwrapped.pname}-wrapped-${tectonic-unwrapped.version}"; paths = [ tectonic-unwrapped ]; nativeBuildInputs = [ makeWrapper ]; passthru = { unwrapped = tectonic-unwrapped; biber = biber-for-tectonic; }; # Replace the unwrapped tectonic with the one wrapping it with biber postBuild = '' rm $out/bin/{tectonic,nextonic} '' # Ideally, we would have liked to also pin the version of the online TeX # bundle that Tectonic's developer distribute, so that the `biber` version # and the `biblatex` version distributed from there are compatible. # However, that is not currently possible, due to lack of upstream support # for specifying this in runtime, there were 2 suggestions sent upstream # that suggested a way of improving the situation: # # - https://github.com/tectonic-typesetting/tectonic/pull/1132 # - https://github.com/tectonic-typesetting/tectonic/pull/1131 # # The 1st suggestion seems more promising as it'd allow us to simply use # makeWrapper's --add-flags option. However, the PR linked above is not # complete, and as of currently, upstream hasn't even reviewed it, or # commented on the idea. # # Note also that upstream has announced that they will put less time and # energy for the project: # # https://github.com/tectonic-typesetting/tectonic/discussions/1122 # # Hence, we can be rather confident that for the near future, the online # TeX bundle won't be updated and hence the biblatex distributed there # won't require a higher version of biber. + '' makeWrapper ${lib.getBin tectonic-unwrapped}/bin/tectonic $out/bin/tectonic  --prefix PATH : "${lib.getBin biber-for-tectonic}/bin" ln -s $out/bin/tectonic $out/bin/nextonic ''; meta = tectonic-unwrapped.meta // { description = "Tectonic TeX/LaTeX engine, wrapped with a compatible biber"; maintainers = with lib.maintainers; [ doronbehar bryango ]; }; } </ins>

biber = callPackage ../tools/typesetting/biber { }; <ins> biber-for-tectonic = callPackage ../tools/typesetting/tectonic/biber.nix { }; </ins> biber-ms = callPackage ../tools/typesetting/biber-ms { }; biblatex-check = callPackage ../tools/typesetting/biblatex-check { };

tecla = callPackage ../development/libraries/tecla { }; <del> tectonic = callPackage ../tools/typesetting/tectonic { </del> <ins> tectonic = callPackage ../tools/typesetting/tectonic/wrapper.nix { }; tectonic-unwrapped = callPackage ../tools/typesetting/tectonic { </ins> harfbuzz = harfbuzzFull; };