meta.license claimed gpl2Plus. share/COPYING.md and share/COPYRIGHT in the 1.10.18 tarball both
state the MIT License, Copyright (c) 2020-2024 Posit Software, PBC.
Upstream installs its man page as share/man/quarto-man.man, which nixpkgs then gzipped in place;
man(1) only searches manN subdirectories, so `man quarto` never resolved. The file is already roff
and needs no conversion.
passthru.tests.quarto-check invoked the top-level quarto attribute, so quartoMinimal ran the test
against full quarto instead of itself; finalAttrs.finalPackage makes each override test its own
build and drops the quarto self-reference from the function arguments.
versionCheckHook runs the binary with --ignore-environment, which surfaced that bin/quarto shells
out to dirname, basename, uname, cat, readlink and mkdir. coreutils joins which on the wrapper's
PATH suffix so the launcher no longer depends on the caller's PATH.
updateScript follows pkgs/by-name/bu/bun/package.nix and loops meta.platforms with
--source-key=sources.$platform.
Validation: `nix-build -A quarto` runs versionCheckPhase successfully; `nix-build -A quartoMinimal`;
`man -l result/share/man/man1/quarto.1.gz` renders; `quarto.meta.license.spdxId` evaluates to MIT;
quartoMinimal.tests.quarto-check references quartoMinimal's own store path; the update script
exits cleanly on 1.10.18 being current.
From some reason, with `.qdz` files being symlinks, our `unzip` utility
is needed. Otherwise, the build log shows errors like this:
```
Error copying file from /build/arria_lite-25.1std.0.1129.qdz/arria_lite-25.1std.0.1129.qdz to /nix/store/ksrxnhim0pgdny1dnqrjhdl5imvvvyhd-quartus-prime-lite-unwrapped-25.1std.0.1129/arria_lite-25.1std.0.1129.qdz:
/build/arria_lite-25.1std.0.1129.qdz/arria_lite-25.1std.0.1129.qdz does not exist
```
The diff in derivations was tested using [`nix-diff`][1], and consists
of just a few `cp` commands taking a different order, and a 1-2 less
empty lines.
Also, simplify devices support assertion.
[1]: https://github.com/Mic92/nix-diff-rs
installPhase deleted the whole bin/tools directory, which also removed typst-gather and
deno_dom/libplugin.so. Neither has a nixpkgs substitute, so `quarto call typst-gather` failed the
existsSync check in architectureToolsPath() and the DENO_DOM_PLUGIN exported by bin/quarto pointed
at a nonexistent file. External consumers that build the path themselves, such as the VS Code
visual editor, also broke (#268427, partially #256074).
bin/tools/$ARCH_DIR is now rebuilt: deno, pandoc, typst, esbuild and dart-sass become symlinks to
the nixpkgs builds, the two binaries without a substitute are kept and patchelfed, and
bin/tools/pandoc is restored for the pre-1.4 layout. On darwin the non-host architecture tree and
the AppleDouble files are dropped from the universal macos asset.
which moves from nativeBuildInputs, where it was unreachable at runtime, to a PATH suffix on the
wrapper, so quarto's internal `async function which(cmd)` helper resolves (#393246). A suffix keeps
the user's own PATH ahead of it.
strictDeps also requires bashNonInteractive as an explicit host dependency: without it
patchShebangs --host cannot resolve bin/.quarto-wrapped's `#!/usr/bin/env bash`, leaving the
launcher dependent on a bash from the caller's PATH.
Validation: `nix-build -A quarto`, `-A quartoMinimal`; `quarto call typst-gather --help` exits 0
(errored before); bin/tools/{pandoc,x86_64/{deno,pandoc,typst,esbuild,dart-sass/sass}} resolve and
typst-gather + deno_dom/libplugin.so are present; auto-patchelf reports 0 unsatisfied dependencies;
bin/.quarto-wrapped keeps its patched bash-5.3p15 interpreter.
meta.platforms was lib.platforms.all while src hardcoded quarto-${version}-linux-amd64.tar.gz, so
every non-x86_64-linux system fetched an x86-64 Linux tarball. Upstream ships linux-amd64,
linux-arm64 and a universal macos asset for every release.
passthru.sources follows the pattern in pkgs/by-name/bu/bun/package.nix so update-source-version
--source-key keeps working, and meta.platforms is now derived from its attribute names.
x86_64-darwin is omitted because nixpkgs 26.11 dropped it (pkgs/top-level/default.nix:82).
The macos asset unpacks flat rather than into a versioned directory, hence the conditional
sourceRoot.
Validation: `nix-instantiate --eval --strict -A quarto.meta.platforms`, `quarto.src.url` and
`quarto.sourceRoot` evaluated for each of x86_64-linux, aarch64-linux and aarch64-darwin;
`nix-build -A quarto` on x86_64-linux.
Upstream 1.10 moves the pinned deno from 2.7.14 to 2.9.4 and typst to 0.15.1, and adds the
`typst-gather` command. Release notes: https://github.com/quarto-dev/quarto-cli/releases/tag/v1.10.18
Hash taken from the release's own quarto-1.10.18-checksums.txt and converted with `nix hash to-sri`.
Validation: `nix-build -A quarto`, `./result/bin/quarto --version` prints 1.10.18.
Also migrates away from them with these commands, using ast-grep 0.43.0
with these commands in bash (assisted by ChatGPT):
```bash
for old in extractType1 extractType2; do
ast-grep \
--lang nix \
--pattern "\$TOOLS.$old" \
--rewrite '$TOOLS.extract' \
--update-all \
pkgs
done
ast-grep \
--lang nix \
--pattern '$TOOLS.wrapType1' \
--rewrite '$TOOLS.wrapType2' \
--update-all \
pkgs
```
Assisted-by: GPT-5.6-Sol Medium via ChatGPT
dropped 0002-sync-node-packages.patch (as upstream now pins @tauri-apps/* exactly),
fixed appindicator glob for the nested fetchCargoVendor layout,
and mainProgram now follows upstream's capitalized mainBinaryName.
Assisted-by: Claude Code (claude-opus-4-8)
Nixpkgs updated setuptools to major version 82 which no longer supports
`pkg_resources`. Dropping the `__init__.py` file in the Python
subdirectory is sufficient to switch to the native namespace package
structure.