From 91745d869ef4a3ce50027e712deeb1173b4376f7 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 20 May 2026 18:58:21 -0300 Subject: [PATCH 1/3] ruby/gem-config: add prawn-gmagick prawn-gmagick is a Prawn extension that uses GraphicsMagick to embed image formats Prawn's built-in code does not understand (notably WebP). The gem ships a C extension that links against libGraphicsMagick via pkg-config, so graphicsmagick and pkg-config must be in scope at build time. --- pkgs/development/ruby-modules/gem-config/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix index 3cf941cdca06..5f39b10a5f47 100644 --- a/pkgs/development/ruby-modules/gem-config/default.nix +++ b/pkgs/development/ruby-modules/gem-config/default.nix @@ -892,6 +892,11 @@ in buildFlags = [ "--without-imlib2-config" ]; }; + prawn-gmagick = attrs: { + buildInputs = [ graphicsmagick ]; + nativeBuildInputs = [ pkg-config ]; + }; + psych = attrs: { buildInputs = [ libyaml ]; }; From bbd78c81604020414139581fb5750c202dda8e9b Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 20 May 2026 18:58:30 -0300 Subject: [PATCH 2/3] asciidoctor-with-extensions: add 'prawn-gmagick' gem Enables WebP image embedding in asciidoctor-pdf. Without prawn-gmagick, the embedder falls back to Prawn's native support (PNG/JPEG only) and emits 'image file is an unrecognised format; install prawn-gmagick gem to add support for WEBP image format' for any other format. prawn-gmagick relies on GraphicsMagick; build inputs are wired up via gem-config. --- .../as/asciidoctor-with-extensions/Gemfile | 1 + .../asciidoctor-with-extensions/Gemfile.lock | 39 ++++----- .../as/asciidoctor-with-extensions/gemset.nix | 79 +++++++++++-------- 3 files changed, 67 insertions(+), 52 deletions(-) diff --git a/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile b/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile index 148ef6846b2b..ac66194cf035 100644 --- a/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile +++ b/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile @@ -9,6 +9,7 @@ gem 'asciidoctor-pdf' gem 'asciidoctor-reducer' gem 'asciidoctor-revealjs' gem 'coderay' +gem 'prawn-gmagick' gem 'pygments.rb' gem 'rouge' gem 'text-hyphen' diff --git a/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile.lock b/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile.lock index 38b0dcc0a794..248f299686d5 100644 --- a/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile.lock +++ b/pkgs/by-name/as/asciidoctor-with-extensions/Gemfile.lock @@ -2,8 +2,8 @@ GEM remote: https://rubygems.org/ specs: Ascii85 (2.0.1) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) afm (1.0.0) asciidoctor (2.0.26) asciidoctor-bibtex (0.9.0) @@ -12,7 +12,7 @@ GEM citeproc-ruby (~> 1) csl-styles (~> 1) latex-decode (~> 0.2) - asciidoctor-diagram (3.1.0) + asciidoctor-diagram (3.2.1) asciidoctor (>= 1.5.7, < 3.x) rexml asciidoctor-epub3 (2.3.0) @@ -55,33 +55,33 @@ GEM citeproc (~> 1.0, >= 1.0.9) csl (~> 1.6) coderay (1.1.3) - concurrent-ruby (1.3.5) + concurrent-ruby (1.3.6) csl (1.6.0) namae (~> 1.0) rexml csl-styles (1.0.1.11) csl (~> 1.0) - css_parser (1.21.1) + css_parser (1.22.0) addressable - date (3.5.0) - ffi (1.17.2) - forwardable (1.3.3) + date (3.5.1) + ffi (1.17.4) + forwardable (1.4.0) gepub (1.0.17) nokogiri (>= 1.8.2, < 2.0) rubyzip (> 1.1.1, < 2.4) hashery (2.1.2) - json (2.16.0) - latex-decode (0.4.0) + json (2.19.5) + latex-decode (0.4.2) logger (1.7.0) matrix (0.4.3) mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2025.0924) + mime-types-data (3.2026.0414) mini_portile2 (2.8.9) namae (1.2.0) racc (~> 1.7) - nokogiri (1.18.10) + nokogiri (1.19.3) mini_portile2 (~> 2.8.2) racc (~> 1.4) observer (0.1.2) @@ -90,7 +90,7 @@ GEM time uri pdf-core (0.9.0) - pdf-reader (2.15.0) + pdf-reader (2.15.1) Ascii85 (>= 1.0, < 3.0, != 2.0.0) afm (>= 0.2.1, < 2) hashery (~> 2.0) @@ -100,6 +100,8 @@ GEM prawn (2.4.0) pdf-core (~> 0.9.0) ttfunk (~> 1.7) + prawn-gmagick (0.0.9) + prawn (>= 0.15, < 3.0) prawn-icon (3.0.0) prawn (>= 1.1.0, < 3.0.0) prawn-svg (0.34.2) @@ -112,14 +114,14 @@ GEM prawn-templates (0.1.2) pdf-reader (~> 2.0) prawn (~> 2.2) - public_suffix (6.0.2) + public_suffix (7.0.5) pygments.rb (4.0.0) racc (1.8.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) rexml (3.4.4) - rouge (4.6.1) + rouge (4.7.0) ruby-rc4 (0.1.5) rubyzip (2.3.2) sass (3.7.4) @@ -127,11 +129,11 @@ GEM sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - stringio (3.1.8) + stringio (3.2.0) text-hyphen (1.5.0) thread_safe (0.3.6) - tilt (2.6.1) - time (0.4.1) + tilt (2.7.0) + time (0.4.2) date treetop (1.6.18) polyglot (~> 0.3) @@ -152,6 +154,7 @@ DEPENDENCIES asciidoctor-reducer asciidoctor-revealjs coderay + prawn-gmagick pygments.rb rouge text-hyphen diff --git a/pkgs/by-name/as/asciidoctor-with-extensions/gemset.nix b/pkgs/by-name/as/asciidoctor-with-extensions/gemset.nix index 9b396bb6b7b0..63fae273899a 100644 --- a/pkgs/by-name/as/asciidoctor-with-extensions/gemset.nix +++ b/pkgs/by-name/as/asciidoctor-with-extensions/gemset.nix @@ -5,10 +5,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0cl2qpvwiffym62z991ynks7imsm87qmgxf0yfsmlwzkgi9qcaa6"; + sha256 = "1by7h2lwziiblizpd5yx87jsq8ppdhzvwf08ga34wzqgcv1nmpvz"; type = "gem"; }; - version = "2.8.7"; + version = "2.9.0"; }; afm = { groups = [ "default" ]; @@ -66,10 +66,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "15sc6yb4qyxy4v3bki26xn0j4k8rgjjiz3nwrxsprn6f0y6ysbp3"; + sha256 = "113658j129myfg5y41zf94pkkfy8ysqvxdr2da2gf9x6y98x0cp4"; type = "gem"; }; - version = "3.1.0"; + version = "3.2.1"; }; asciidoctor-epub3 = { dependencies = [ @@ -218,10 +218,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1ipbrgvf0pp6zxdk5ascp6i29aybz2bx9wdrlchjmpx6mhvkwfw1"; + sha256 = "1aymcakhzl83k77g2f2krz07bg1cbafbcd2ghvwr4lky3rz86mkb"; type = "gem"; }; - version = "1.3.5"; + version = "1.3.6"; }; csl = { dependencies = [ @@ -254,40 +254,40 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1izp5vna86s7xivqzml4nviy01bv76arrd5is8wkncwp1by3zzbc"; + sha256 = "1ha0bcz71z48ahdvc0dp71apnbqnnpgffq0dac2q65y68259hx7j"; type = "gem"; }; - version = "1.21.1"; + version = "1.22.0"; }; date = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1rbfqkzr6i8b6538z16chvrkgywf5p5vafsgmnbmvrmh0ingsx2y"; + sha256 = "1h0db8r2v5llxdbzkzyllkfniqw9gm092qn7cbaib73v9lw0c3bm"; type = "gem"; }; - version = "3.5.0"; + version = "3.5.1"; }; ffi = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "19kdyjg3kv7x0ad4xsd4swy5izsbb1vl1rpb6qqcqisr5s23awi9"; + sha256 = "1kqasqvy8d7r09ri4n6bkdwbk63j7afd9ilsw34nzlgh0qp69ldw"; type = "gem"; }; - version = "1.17.2"; + version = "1.17.4"; }; forwardable = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1b5g1i3xdvmxxpq4qp0z4v78ivqnazz26w110fh4cvzsdayz8zgi"; + sha256 = "0f78rjpnhm4lgp1qzadnr6kr02b6afh1lvy7w607k4qjk3641kgi"; type = "gem"; }; - version = "1.3.3"; + version = "1.4.0"; }; gepub = { dependencies = [ @@ -318,20 +318,20 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "098m3q2jrx4xbf0knrbmflsynmmb5x9q9b0bzpmj7jmm1cr30mna"; + sha256 = "0n9ch455pnvl9vxs2f3j77bpdmxg5g3mn3vyr9wxa0a87raii2i1"; type = "gem"; }; - version = "2.16.0"; + version = "2.19.5"; }; latex-decode = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1y5xn3zwghpqr6lvs4s0mn5knms8zw3zk7jb58zkkiagb386nq72"; + sha256 = "14m5q817apv3kh2nc23b94i5mx0vxqfj7pm61j738piidr036mp8"; type = "gem"; }; - version = "0.4.0"; + version = "0.4.2"; }; logger = { groups = [ "default" ]; @@ -372,10 +372,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0a27k4jcrx7pvb0p59fn1frh14iy087c2aygrdkmgwsrbshvqxpj"; + sha256 = "1k28j6ww8rf43r5i8278jvm2cq3pnzsvqm7yqpb4p93kadjlq726"; type = "gem"; }; - version = "3.2025.0924"; + version = "3.2026.0414"; }; mini_portile2 = { groups = [ "default" ]; @@ -407,10 +407,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1hcwwr2h8jnqqxmf8mfb52b0dchr7pm064ingflb78wa00qhgk6m"; + sha256 = "1s30b7h7qpyim30m8060xs415mbr3ci7i5hdg09chh1aqfx2qcbq"; type = "gem"; }; - version = "1.18.10"; + version = "1.19.3"; }; observer = { groups = [ "default" ]; @@ -459,10 +459,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "11h8dhhd2c8mxssibk9q6qn7ilj4p71crlfirw8pppn8pr85f0n5"; + sha256 = "1kk8f1f5kkdwsbskv0vikcwx5xaivv19y9zl97x1fcaam23akihq"; type = "gem"; }; - version = "2.15.0"; + version = "2.15.1"; }; polyglot = { groups = [ "default" ]; @@ -488,6 +488,17 @@ }; version = "2.4.0"; }; + prawn-gmagick = { + dependencies = [ "prawn" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0g7d9fm5hzswhdi3p0ms6vwpgnv7ip0hwgwifiaq9kb35xxc5vq9"; + type = "gem"; + }; + version = "0.0.9"; + }; prawn-icon = { dependencies = [ "prawn" ]; groups = [ "default" ]; @@ -545,10 +556,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; + sha256 = "08znfv30pxmdkjyihvbjqbvv874dj3nybmmyscl958dy3f7v12qs"; type = "gem"; }; - version = "6.0.2"; + version = "7.0.5"; }; "pygments.rb" = { groups = [ "default" ]; @@ -606,10 +617,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1pkp5icgm7s10b2n6b2pzbdsfiv0l5sxqyizx55qdmlpaxnk8xah"; + sha256 = "0fd77qcz603mli4lyi97cjzkv02hsfk60m495qv5qcn02mkqk9fv"; type = "gem"; }; - version = "4.6.1"; + version = "4.7.0"; }; ruby-rc4 = { groups = [ "default" ]; @@ -661,10 +672,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1v74k5yw7ndikr53wgbjn6j51p83qnzqbn9z4b53r102jcx3ri4r"; + sha256 = "1q92y9627yisykyscv0bdsrrgyaajc2qr56dwlzx7ysgigjv4z63"; type = "gem"; }; - version = "3.1.8"; + version = "3.2.0"; }; text-hyphen = { groups = [ "default" ]; @@ -691,10 +702,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0w27v04d7rnxjr3f65w1m7xyvr6ch6szjj2v5wv1wz6z5ax9pa9m"; + sha256 = "1cvaikq1dcbfl008i16c1pi1gmdax7vfkvmhch64jdkakyk9nnqd"; type = "gem"; }; - version = "2.6.1"; + version = "2.7.0"; }; time = { dependencies = [ "date" ]; @@ -702,10 +713,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0qgarmdyqypzsaanf4w9vqrd9axrcrjqilxwrfmxp954102kcpq3"; + sha256 = "1arxpii25xgb3fkgqp5acyc0x6179j3qzld78lflgsdxqfcf897k"; type = "gem"; }; - version = "0.4.1"; + version = "0.4.2"; }; treetop = { dependencies = [ "polyglot" ]; From 0ebabbb6a42825097a0caba36a5c47a8b0ddd802 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Sat, 6 Jun 2026 20:46:13 +0300 Subject: [PATCH 3/3] tsduck: use regular asciidoctor From some reason, asciidoctor-with-extensions, when that includes `prawn-gmagick` (see #522397), causes a build failure. --- pkgs/by-name/ts/tsduck/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ts/tsduck/package.nix b/pkgs/by-name/ts/tsduck/package.nix index f43dfb2d021d..9a854e454e90 100644 --- a/pkgs/by-name/ts/tsduck/package.nix +++ b/pkgs/by-name/ts/tsduck/package.nix @@ -3,7 +3,7 @@ stdenv, fetchFromGitHub, # build and doc tooling - asciidoctor-with-extensions, + asciidoctor, doxygen, graphviz, python3, @@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { }; nativeBuildInputs = [ - asciidoctor-with-extensions + asciidoctor doxygen graphviz python3