summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/audio/abcmidi/default.nix4
-rw-r--r--pkgs/tools/audio/beets/bash-completion-always-print.patch29
-rw-r--r--pkgs/tools/audio/beets/convert-plugin-ffmpeg-path.patch65
-rw-r--r--pkgs/tools/audio/beets/default.nix58
-rw-r--r--pkgs/tools/audio/beets/imagemagick-nix-path.patch20
-rw-r--r--pkgs/tools/audio/beets/keyfinder-default-bin.patch26
-rw-r--r--pkgs/tools/audio/beets/replaygain-default-ffmpeg.patch14
-rw-r--r--pkgs/tools/graphics/aaphoto/default.nix12
-rw-r--r--pkgs/tools/misc/atuin/default.nix24
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix2
-rw-r--r--pkgs/tools/networking/networkmanager/applet/default.nix2
-rw-r--r--pkgs/tools/networking/networkmanager/default.nix2
-rw-r--r--pkgs/tools/networking/ngrok-2/default.nix3
-rw-r--r--pkgs/tools/networking/obfs4/default.nix2
-rw-r--r--pkgs/tools/networking/p2p/amule/default.nix2
-rw-r--r--pkgs/tools/networking/privoxy/default.nix2
-rw-r--r--pkgs/tools/security/clamav/default.nix2
-rw-r--r--pkgs/tools/security/fprot/default.nix2
-rw-r--r--pkgs/tools/security/gpg-tui/default.nix6
-rw-r--r--pkgs/tools/security/lmp/default.nix4
-rw-r--r--pkgs/tools/security/log4j-scan/default.nix6
-rw-r--r--pkgs/tools/security/onioncircuits/default.nix2
-rw-r--r--pkgs/tools/security/polkit-gnome/default.nix2
-rw-r--r--pkgs/tools/security/tor/default.nix2
-rw-r--r--pkgs/tools/security/tor/torsocks.nix2
-rw-r--r--pkgs/tools/system/lshw/default.nix2
-rw-r--r--pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile11
-rw-r--r--pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock131
-rw-r--r--pkgs/tools/typesetting/asciidoctor-with-extensions/default.nix29
-rw-r--r--pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix538
-rw-r--r--pkgs/tools/typesetting/asciidoctor/Gemfile4
-rw-r--r--pkgs/tools/typesetting/asciidoctor/Gemfile.lock45
-rw-r--r--pkgs/tools/typesetting/asciidoctor/default.nix53
-rw-r--r--pkgs/tools/typesetting/asciidoctor/gemset.nix194
34 files changed, 884 insertions, 418 deletions
diff --git a/pkgs/tools/audio/abcmidi/default.nix b/pkgs/tools/audio/abcmidi/default.nix
index b929b6204a2..48b4e88b0ae 100644
--- a/pkgs/tools/audio/abcmidi/default.nix
+++ b/pkgs/tools/audio/abcmidi/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "abcMIDI";
-  version = "2021.12.10";
+  version = "2021.12.12";
 
   src = fetchzip {
     url = "https://ifdo.ca/~seymour/runabc/${pname}-${version}.zip";
-    hash = "sha256-Jvj7gOrIT0IXihPkPDH9n80bg4xllvPTKxIWA3wX5B0=";
+    hash = "sha256-34yRMa68x93u8/fGTzflh1L/Lf7ULPXsDaC7GUy+i8g=";
   };
 
   meta = with lib; {
diff --git a/pkgs/tools/audio/beets/bash-completion-always-print.patch b/pkgs/tools/audio/beets/bash-completion-always-print.patch
index 7bc3e57117e..8a31fe22f72 100644
--- a/pkgs/tools/audio/beets/bash-completion-always-print.patch
+++ b/pkgs/tools/audio/beets/bash-completion-always-print.patch
@@ -1,33 +1,34 @@
 diff --git i/beets/ui/commands.py w/beets/ui/commands.py
-index 4d010f4b..0b023585 100755
+index 3a337401..d08a6763 100755
 --- i/beets/ui/commands.py
 +++ w/beets/ui/commands.py
-@@ -1741,20 +1741,6 @@ default_commands.append(config_cmd)
+@@ -1759,21 +1759,6 @@ default_commands.append(config_cmd)
  def print_completion(*args):
      for line in completion_script(default_commands + plugins.commands()):
-         print_(line, end=u'')
+         print_(line, end='')
 -    if not any(map(os.path.isfile, BASH_COMPLETION_PATHS)):
--        log.warning(u'Warning: Unable to find the bash-completion package. '
--                    u'Command line completion might not work.')
+-        log.warning('Warning: Unable to find the bash-completion package. '
+-                    'Command line completion might not work.')
+-
 -
 -BASH_COMPLETION_PATHS = map(syspath, [
--    u'/etc/bash_completion',
--    u'/usr/share/bash-completion/bash_completion',
--    u'/usr/local/share/bash-completion/bash_completion',
+-    '/etc/bash_completion',
+-    '/usr/share/bash-completion/bash_completion',
+-    '/usr/local/share/bash-completion/bash_completion',
 -    # SmartOS
--    u'/opt/local/share/bash-completion/bash_completion',
+-    '/opt/local/share/bash-completion/bash_completion',
 -    # Homebrew (before bash-completion2)
--    u'/usr/local/etc/bash_completion',
+-    '/usr/local/etc/bash_completion',
 -])
 -
  
  def completion_script(commands):
      """Yield the full completion shell script as strings.
 diff --git i/test/test_ui.py w/test/test_ui.py
-index 5cfed1fd..9d3dc458 100644
+index 9804b0a1..c3b53243 100644
 --- i/test/test_ui.py
 +++ w/test/test_ui.py
-@@ -1230,12 +1230,7 @@ class CompletionTest(_common.TestCase, TestHelper):
+@@ -1229,12 +1229,7 @@ class CompletionTest(_common.TestCase, TestHelper):
                                    stdout=subprocess.PIPE, env=env)
  
          # Load bash_completion library.
@@ -36,8 +37,8 @@ index 5cfed1fd..9d3dc458 100644
 -                bash_completion = path
 -                break
 -        else:
--            self.skipTest(u'bash-completion script not found')
-+        self.skipTest(u'bash-completion script not found')
+-            self.skipTest('bash-completion script not found')
++        self.skipTest('bash-completion script not found')
          try:
              with open(util.syspath(bash_completion), 'rb') as f:
                  tester.stdin.writelines(f)
diff --git a/pkgs/tools/audio/beets/convert-plugin-ffmpeg-path.patch b/pkgs/tools/audio/beets/convert-plugin-ffmpeg-path.patch
index bcc77179d79..1bc17893448 100644
--- a/pkgs/tools/audio/beets/convert-plugin-ffmpeg-path.patch
+++ b/pkgs/tools/audio/beets/convert-plugin-ffmpeg-path.patch
@@ -1,43 +1,34 @@
 diff --git i/beetsplug/convert.py w/beetsplug/convert.py
-index 70363f6e..2962aa4f 100644
+index 6bc07c28..039fb452 100644
 --- i/beetsplug/convert.py
 +++ w/beetsplug/convert.py
-@@ -81,7 +81,7 @@ def get_format(fmt=None):
-         command = config['convert']['command'].as_str()
-     elif 'opts' in keys:
-         # Undocumented option for backwards compatibility with < 1.3.1.
--        command = u'ffmpeg -i $source -y {0} $dest'.format(
-+        command = u'@ffmpeg@/bin/ffmpeg -i $source -y {0} $dest'.format(
-             config['convert']['opts'].as_str()
-         )
-     if 'extension' in keys:
-@@ -121,22 +121,22 @@ class ConvertPlugin(BeetsPlugin):
-             u'id3v23': u'inherit',
-             u'formats': {
-                 u'aac': {
--                    u'command': u'ffmpeg -i $source -y -vn -acodec aac '
-+                    u'command': u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec aac '
-                                 u'-aq 1 $dest',
-                     u'extension': u'm4a',
+@@ -118,22 +118,22 @@ class ConvertPlugin(BeetsPlugin):
+             'id3v23': 'inherit',
+             'formats': {
+                 'aac': {
+-                    'command': 'ffmpeg -i $source -y -vn -acodec aac '
++                    'command': '@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec aac '
+                     '-aq 1 $dest',
+                     'extension': 'm4a',
                  },
-                 u'alac': {
--                    u'command': u'ffmpeg -i $source -y -vn -acodec alac $dest',
-+                    u'command': u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec alac $dest',
-                     u'extension': u'm4a',
+                 'alac': {
+-                    'command': 'ffmpeg -i $source -y -vn -acodec alac $dest',
++                    'command': '@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec alac $dest',
+                     'extension': 'm4a',
                  },
--                u'flac': u'ffmpeg -i $source -y -vn -acodec flac $dest',
--                u'mp3': u'ffmpeg -i $source -y -vn -aq 2 $dest',
-+                u'flac': u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec flac $dest',
-+                u'mp3': u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -aq 2 $dest',
-                 u'opus':
--                    u'ffmpeg -i $source -y -vn -acodec libopus -ab 96k $dest',
-+                    u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec libopus -ab 96k $dest',
-                 u'ogg':
--                    u'ffmpeg -i $source -y -vn -acodec libvorbis -aq 3 $dest',
-+                    u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec libvorbis -aq 3 $dest',
-                 u'wma':
--                    u'ffmpeg -i $source -y -vn -acodec wmav2 -vn $dest',
-+                    u'@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec wmav2 -vn $dest',
+-                'flac': 'ffmpeg -i $source -y -vn -acodec flac $dest',
+-                'mp3': 'ffmpeg -i $source -y -vn -aq 2 $dest',
++                'flac': '@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec flac $dest',
++                'mp3': '@ffmpeg@/bin/ffmpeg -i $source -y -vn -aq 2 $dest',
+                 'opus':
+-                    'ffmpeg -i $source -y -vn -acodec libopus -ab 96k $dest',
++                    '@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec libopus -ab 96k $dest',
+                 'ogg':
+-                    'ffmpeg -i $source -y -vn -acodec libvorbis -aq 3 $dest',
++                    '@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec libvorbis -aq 3 $dest',
+                 'wma':
+-                    'ffmpeg -i $source -y -vn -acodec wmav2 -vn $dest',
++                    '@ffmpeg@/bin/ffmpeg -i $source -y -vn -acodec wmav2 -vn $dest',
              },
-             u'max_bitrate': 500,
-             u'auto': False,
+             'max_bitrate': 500,
+             'auto': False,
diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix
index 7114d6801b4..6789bd5f962 100644
--- a/pkgs/tools/audio/beets/default.nix
+++ b/pkgs/tools/audio/beets/default.nix
@@ -1,6 +1,18 @@
-{ stdenv, lib, fetchFromGitHub, writeScript, glibcLocales, diffPlugins, substituteAll
-, pythonPackages, imagemagick, gobject-introspection, gst_all_1
-, runtimeShell, unstableGitUpdater
+{ stdenv
+, lib
+, fetchFromGitHub
+, writeScript
+, glibcLocales
+, diffPlugins
+, substituteAll
+, pythonPackages
+# can be null, if you wish to disable a reference to it. It's needed for the
+# artresizer, see:
+# https://beets.readthedocs.io/en/v1.6.0/plugins/fetchart.html#image-resizing
+, imagemagick
+, gobject-introspection
+, gst_all_1
+, runtimeShell
 
 # external plugins package set
 , beetsExternalPlugins
@@ -73,9 +85,9 @@ let
   };
 
   pluginsWithoutDeps = [
-    "bareasc" "bench" "bpd" "bpm" "bucket" "duplicates" "edit" "embedart"
+    "albumtypes" "bareasc" "bench" "bpd" "bpm" "bucket" "duplicates" "edit" "embedart"
     "export" "filefilter" "fish" "freedesktop" "fromfilename" "ftintitle" "fuzzy"
-    "hook" "ihate" "importadded" "importfeeds" "info" "inline" "ipfs"
+    "hook" "ihate" "importadded" "importfeeds" "info" "inline" "ipfs" "gmusic"
     "mbcollection" "mbsubmit" "mbsync" "metasync" "missing" "parentwork" "permissions" "play"
     "plexupdate" "random" "rewrite" "scrub" "smartplaylist" "spotify" "the"
     "types" "unimported" "zero"
@@ -89,24 +101,15 @@ let
   testShell = "${bashInteractive}/bin/bash --norc";
   completion = "${bash-completion}/share/bash-completion/bash_completion";
 
-  # This is a stripped down beets for testing of the external plugins.
-  externalTestArgs.beets = (lib.beets.override {
-    enableAlternatives = false;
-    enableCopyArtifacts = false;
-    enableExtraFiles = false;
-  }).overrideAttrs (lib.const {
-    doInstallCheck = false;
-  });
-
 in pythonPackages.buildPythonApplication rec {
   pname = "beets";
-  version = "1.5.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "beetbox";
     repo = "beets";
     rev = "v${version}";
-    sha256 = "sha256-yQMCJUwpjDDhPffBS6LUq6z4iT1VyFQE0R27XEbYXbY=";
+    sha256 = "sha256-fT+rCJJQR7bdfAcmeFRaknmh4ZOP4RCx8MXpq7/D8tM=";
   };
 
   propagatedBuildInputs = [
@@ -152,7 +155,6 @@ in pythonPackages.buildPythonApplication rec {
   ;
 
   buildInputs = [
-    imagemagick
   ] ++ (with gst_all_1; [
     gst-plugins-base
     gst-plugins-good
@@ -167,7 +169,7 @@ in pythonPackages.buildPythonApplication rec {
     responses
     # Although considered as plugin dependencies, they are needed for the
     # tests, for disabling them via an override makes the build fail. see:
-    # https://github.com/beetbox/beets/blob/v1.4.9/setup.py
+    # https://github.com/beetbox/beets/blob/v1.6.0/setup.py
     pylast
     mpd2
     discogs-client
@@ -177,10 +179,14 @@ in pythonPackages.buildPythonApplication rec {
   patches = [
     # Bash completion fix for Nix
     ./bash-completion-always-print.patch
-    # From some reason upstream assumes the program 'keyfinder-cli' is located
-    # in the path as `KeyFinder`
-    ./keyfinder-default-bin.patch
   ]
+    # Fix path to imagemagick, used for the artresizer.py file. This reference
+    # to imagemagick might be expensive for some people, so the patch can be
+    # disabled if imagemagick is set to null
+    ++ lib.optional (imagemagick != null) (substituteAll {
+      src = ./imagemagick-nix-path.patch;
+      inherit imagemagick;
+    })
     # We need to force ffmpeg as the default, since we do not package
     # bs1770gain, and set the absolute path there, to avoid impurities.
     ++ lib.optional enableReplaygain (substituteAll {
@@ -200,13 +206,10 @@ in pythonPackages.buildPythonApplication rec {
 
   # Disable failing tests
   postPatch = ''
-    sed -i -e '/assertIn.*item.*path/d' test/test_info.py
     echo echo completion tests passed > test/rsrc/test_completion.sh
 
+    # https://github.com/beetbox/beets/issues/1187
     sed -i -e 's/len(mf.images)/0/' test/test_zero.py
-
-    # Google Play Music was discontinued
-    rm -r beetsplug/gmusic.py
   '';
 
   postInstall = ''
@@ -256,7 +259,10 @@ in pythonPackages.buildPythonApplication rec {
     runHook postInstallCheck
   '';
 
-  makeWrapperArgs = [ "--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\"" "--set GST_PLUGIN_SYSTEM_PATH_1_0 \"$GST_PLUGIN_SYSTEM_PATH_1_0\"" ];
+  makeWrapperArgs = [
+    "--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\""
+    "--set GST_PLUGIN_SYSTEM_PATH_1_0 \"$GST_PLUGIN_SYSTEM_PATH_1_0\""
+  ];
 
   passthru = {
     # FIXME: remove in favor of pkgs.beetsExternalPlugins
diff --git a/pkgs/tools/audio/beets/imagemagick-nix-path.patch b/pkgs/tools/audio/beets/imagemagick-nix-path.patch
new file mode 100644
index 00000000000..9a77703ede7
--- /dev/null
+++ b/pkgs/tools/audio/beets/imagemagick-nix-path.patch
@@ -0,0 +1,20 @@
+diff --git i/beets/util/artresizer.py w/beets/util/artresizer.py
+index 8683e228..2f38b4d6 100644
+--- i/beets/util/artresizer.py
++++ w/beets/util/artresizer.py
+@@ -334,13 +334,8 @@ class ArtResizer(metaclass=Shareable):
+         # not, fall back to the older, separate convert and identify
+         # commands.
+         if self.method[0] == IMAGEMAGICK:
+-            self.im_legacy = self.method[2]
+-            if self.im_legacy:
+-                self.im_convert_cmd = ['convert']
+-                self.im_identify_cmd = ['identify']
+-            else:
+-                self.im_convert_cmd = ['magick']
+-                self.im_identify_cmd = ['magick', 'identify']
++            self.im_convert_cmd = ['@imagemagick@/bin/magick']
++            self.im_identify_cmd = ['@imagemagick@/bin/magick', 'identify']
+ 
+     def resize(
+         self, maxwidth, path_in, path_out=None, quality=0, max_filesize=0
diff --git a/pkgs/tools/audio/beets/keyfinder-default-bin.patch b/pkgs/tools/audio/beets/keyfinder-default-bin.patch
deleted file mode 100644
index ec6bc3a5561..00000000000
--- a/pkgs/tools/audio/beets/keyfinder-default-bin.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/beetsplug/keyfinder.py b/beetsplug/keyfinder.py
-index 702003f0..08689cd8 100644
---- a/beetsplug/keyfinder.py
-+++ b/beetsplug/keyfinder.py
-@@ -31,7 +31,7 @@ class KeyFinderPlugin(BeetsPlugin):
-     def __init__(self):
-         super(KeyFinderPlugin, self).__init__()
-         self.config.add({
--            u'bin': u'KeyFinder',
-+            u'bin': u'keyfinder-cli',
-             u'auto': True,
-             u'overwrite': False,
-         })
-diff --git a/test/test_keyfinder.py b/test/test_keyfinder.py
-index c8735e47..d7d670a4 100644
---- a/test/test_keyfinder.py
-+++ b/test/test_keyfinder.py
-@@ -44,7 +44,7 @@ class KeyFinderTest(unittest.TestCase, TestHelper):
-         item.load()
-         self.assertEqual(item['initial_key'], 'C#m')
-         command_output.assert_called_with(
--            ['KeyFinder', '-f', util.syspath(item.path)])
-+            ['keyfinder-cli', util.syspath(item.path)])
-
-     def test_add_key_on_import(self, command_output):
-         command_output.return_value = util.CommandOutput(b"dbm", b"")
diff --git a/pkgs/tools/audio/beets/replaygain-default-ffmpeg.patch b/pkgs/tools/audio/beets/replaygain-default-ffmpeg.patch
index 0ceba3c0944..e441997cae5 100644
--- a/pkgs/tools/audio/beets/replaygain-default-ffmpeg.patch
+++ b/pkgs/tools/audio/beets/replaygain-default-ffmpeg.patch
@@ -1,26 +1,26 @@
 diff --git i/beetsplug/replaygain.py w/beetsplug/replaygain.py
-index 9d6fa23c..c5800039 100644
+index b6297d93..5c1cbbc0 100644
 --- i/beetsplug/replaygain.py
 +++ w/beetsplug/replaygain.py
-@@ -391,7 +391,7 @@ class FfmpegBackend(Backend):
+@@ -139,7 +139,7 @@ class FfmpegBackend(Backend):
  
      def __init__(self, config, log):
-         super(FfmpegBackend, self).__init__(config, log)
+         super().__init__(config, log)
 -        self._ffmpeg_path = "ffmpeg"
 +        self._ffmpeg_path = "@ffmpeg@/bin/ffmpeg"
  
          # check that ffmpeg is installed
          try:
-@@ -1228,11 +1228,10 @@ class ReplayGainPlugin(BeetsPlugin):
+@@ -975,11 +975,10 @@ class ReplayGainPlugin(BeetsPlugin):
      def __init__(self):
-         super(ReplayGainPlugin, self).__init__()
+         super().__init__()
  
 -        # default backend is 'command' for backward-compatibility.
          self.config.add({
              'overwrite': False,
              'auto': True,
--            'backend': u'command',
-+            'backend': u'ffmpeg',
+-            'backend': 'command',
++            'backend': 'ffmpeg',
              'threads': cpu_count(),
              'parallel_on_import': False,
              'per_disc': False,
diff --git a/pkgs/tools/graphics/aaphoto/default.nix b/pkgs/tools/graphics/aaphoto/default.nix
index 1487f9eac43..744985acfd5 100644
--- a/pkgs/tools/graphics/aaphoto/default.nix
+++ b/pkgs/tools/graphics/aaphoto/default.nix
@@ -1,6 +1,6 @@
 { lib
 , stdenv
-, fetchFromGitHub
+, fetchurl
 , jasper
 , libpng
 , libjpeg
@@ -9,13 +9,11 @@
 
 stdenv.mkDerivation rec {
   pname = "aaphoto";
-  version = "0.43.1";
+  version = "0.45";
 
-  src = fetchFromGitHub {
-    owner = "log69";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-qngWWqV2vLm1gO0KJ0uHOCf2IoEAs1oiygpJtDvt3s8=";
+  src = fetchurl {
+    url = "http://log69.com/downloads/aaphoto_sources_${version}.tar.gz";
+    sha256 = "sha256-06koJM7jNVFqVgqg6BmOZ74foqk6yjUIFnwULzPZ4go=";
   };
 
   buildInputs = [
diff --git a/pkgs/tools/misc/atuin/default.nix b/pkgs/tools/misc/atuin/default.nix
index ae7a17e721c..38171181187 100644
--- a/pkgs/tools/misc/atuin/default.nix
+++ b/pkgs/tools/misc/atuin/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, installShellFiles
 , rustPlatform
 , libiconv
 , Security
@@ -9,24 +10,37 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "atuin";
-  version = "0.7.1";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "ellie";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-jjGP8YeHnEr0f9RONwA6wZT872C0jXTvSRdt9zAu6KE=";
+    sha256 = "sha256-I/ZDaOAiHdWOkmf+jIWWxZ3C25UHsl6MB7mCRLADFNs=";
   };
 
-  cargoSha256 = "0vy6q3hjp374lyg00zxim8aplh83iq3f4rrmpz5vnpwbag1fdql3";
+  cargoSha256 = "sha256-KMss6Mpn4LHnkhtJyRea+D7mKItBK4lqq9syFEmCiFo=";
+
+  nativeBuildInputs = [ installShellFiles ];
 
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security SystemConfiguration ];
 
+  postInstall = ''
+    HOME=$(mktemp -d)
+    for shell in bash fish zsh; do
+      $out/bin/atuin gen-completions -s $shell -o .
+    done
+
+    installShellCompletion --cmd atuin \
+      --bash atuin.bash \
+      --fish atuin.fish \
+      --zsh _atuin
+  '';
+
   meta = with lib; {
     description = "Replacement for a shell history which records additional commands context with optional encrypted synchronization between machines";
     homepage = "https://github.com/ellie/atuin";
     license = licenses.mit;
-    maintainers = [ maintainers.onsails ];
-    broken = stdenv.isDarwin && stdenv.isAarch64;
+    maintainers = with maintainers; [ onsails SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index cce7cbb36c6..4673ab41654 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -77,6 +77,6 @@ buildPythonPackage rec {
     '';
     license = licenses.publicDomain;
     platforms = with platforms; linux ++ darwin;
-    maintainers = with maintainers; [ bluescreen303 phreedom AndersonTorres fpletz ma27 ];
+    maintainers = with maintainers; [ bluescreen303 AndersonTorres fpletz ma27 ];
   };
 }
diff --git a/pkgs/tools/networking/networkmanager/applet/default.nix b/pkgs/tools/networking/networkmanager/applet/default.nix
index e6cf8d0e09c..fbb56f4c5c9 100644
--- a/pkgs/tools/networking/networkmanager/applet/default.nix
+++ b/pkgs/tools/networking/networkmanager/applet/default.nix
@@ -83,7 +83,7 @@ stdenv.mkDerivation rec {
     homepage = "https://gitlab.gnome.org/GNOME/network-manager-applet/";
     description = "NetworkManager control applet for GNOME";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ phreedom ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/networkmanager/default.nix b/pkgs/tools/networking/networkmanager/default.nix
index 3913cb0520b..ac261f83d57 100644
--- a/pkgs/tools/networking/networkmanager/default.nix
+++ b/pkgs/tools/networking/networkmanager/default.nix
@@ -191,7 +191,7 @@ stdenv.mkDerivation rec {
     description = "Network configuration and management tool";
     license = licenses.gpl2Plus;
     changelog = "https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/raw/${version}/NEWS";
-    maintainers = teams.freedesktop.members ++ (with maintainers; [ phreedom domenkozar obadz maxeaubrey ]);
+    maintainers = teams.freedesktop.members ++ (with maintainers; [ domenkozar obadz maxeaubrey ]);
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/ngrok-2/default.nix b/pkgs/tools/networking/ngrok-2/default.nix
index 5366a2c3a9c..6093cea40f0 100644
--- a/pkgs/tools/networking/ngrok-2/default.nix
+++ b/pkgs/tools/networking/ngrok-2/default.nix
@@ -34,6 +34,9 @@ stdenv.mkDerivation {
 
   passthru.updateScript = ./update.sh;
 
+  # Stripping causes SEGFAULT on x86_64-darwin
+  dontStrip = true;
+
   meta = {
     description = "Allows you to expose a web server running on your local machine to the internet";
     homepage = "https://ngrok.com/";
diff --git a/pkgs/tools/networking/obfs4/default.nix b/pkgs/tools/networking/obfs4/default.nix
index 31979d3aa97..ab13d3f4ef9 100644
--- a/pkgs/tools/networking/obfs4/default.nix
+++ b/pkgs/tools/networking/obfs4/default.nix
@@ -18,6 +18,6 @@ buildGoModule rec {
     description = "A pluggable transport proxy";
     homepage = "https://www.torproject.org/projects/obfsproxy";
     repositories.git = "https://git.torproject.org/pluggable-transports/obfs4.git";
-    maintainers = with maintainers; [ phreedom thoughtpolice ];
+    maintainers = with maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/networking/p2p/amule/default.nix b/pkgs/tools/networking/p2p/amule/default.nix
index 96bf7656e8a..8123b9d91fe 100644
--- a/pkgs/tools/networking/p2p/amule/default.nix
+++ b/pkgs/tools/networking/p2p/amule/default.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
 
     homepage = "https://github.com/amule-project/amule";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ phreedom ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.unix;
     # cmake fails: Cannot specify link libraries for target "wxWidgets::ADV" which is not built by this project.
     broken = enableDaemon;
diff --git a/pkgs/tools/networking/privoxy/default.nix b/pkgs/tools/networking/privoxy/default.nix
index dd663df10ad..33c7584dbdc 100644
--- a/pkgs/tools/networking/privoxy/default.nix
+++ b/pkgs/tools/networking/privoxy/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
     # GPLv2 (or later). See https://www.privoxy.org/user-manual/copyright.html
     license = licenses.gpl2Plus;
     platforms = platforms.all;
-    maintainers = [ maintainers.phreedom ];
+    maintainers = [ ];
   };
 
 }
diff --git a/pkgs/tools/security/clamav/default.nix b/pkgs/tools/security/clamav/default.nix
index 2019f8ac99d..8fb66ebcb3f 100644
--- a/pkgs/tools/security/clamav/default.nix
+++ b/pkgs/tools/security/clamav/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.clamav.net";
     description = "Antivirus engine designed for detecting Trojans, viruses, malware and other malicious threats";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ phreedom robberer qknight fpletz globin ];
+    maintainers = with maintainers; [ robberer qknight fpletz globin ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/security/fprot/default.nix b/pkgs/tools/security/fprot/default.nix
index 22779327a9b..6b930adcc26 100644
--- a/pkgs/tools/security/fprot/default.nix
+++ b/pkgs/tools/security/fprot/default.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation {
     homepage = "http://www.f-prot.com";
     description = "A popular proprietary antivirus program";
     license = licenses.unfree;
-    maintainers = [ maintainers.phreedom ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/security/gpg-tui/default.nix b/pkgs/tools/security/gpg-tui/default.nix
index ea144e67a41..636358f6ea6 100644
--- a/pkgs/tools/security/gpg-tui/default.nix
+++ b/pkgs/tools/security/gpg-tui/default.nix
@@ -16,16 +16,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "gpg-tui";
-  version = "0.8.1";
+  version = "0.8.2";
 
   src = fetchFromGitHub {
     owner = "orhun";
     repo = "gpg-tui";
     rev = "v${version}";
-    sha256 = "sha256-2fTJHcJJzQIAyxLnWdoyR77tA9p/3s3UescypGwKfc0=";
+    hash = "sha256-jddkws4TXuW0AdLBEpS5RPk1a/mEkwYWMbYiLjt22LU=";
   };
 
-  cargoSha256 = "sha256-8dWMJZiWy0cO0CGAFEmtGYZ8bVK1ZR7qBkjKn6rLC+k=";
+  cargoHash = "sha256-bj77fMmpXeOqb1MzOPsEPQUh5AnZxBrapzt864V+IUU=";
 
   nativeBuildInputs = [
     gpgme # for gpgme-config
diff --git a/pkgs/tools/security/lmp/default.nix b/pkgs/tools/security/lmp/default.nix
index 945bbbbd15c..5d4488e07e8 100644
--- a/pkgs/tools/security/lmp/default.nix
+++ b/pkgs/tools/security/lmp/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "lmp";
-  version = "1.0";
+  version = "1.1";
 
   src = fetchFromGitHub {
     owner = "0xInfection";
     repo = "LogMePwn";
     rev = "v${version}";
-    sha256 = "sha256-EDhNnNmIVBtBj+zHjLzW60sdI0dH8cLvXDQBmVgM4hM=";
+    sha256 = "sha256-3kxMtkHkqo5Gwk864Bb8MqRtuC8HP38Xl22ktiTgr5k=";
   };
 
   vendorSha256 = "sha256-X7Djcp4reOXL6SX4jiSLicolENu7Uo5webSePYrPKug=";
diff --git a/pkgs/tools/security/log4j-scan/default.nix b/pkgs/tools/security/log4j-scan/default.nix
index 142c1dd8c1b..bd2772efb41 100644
--- a/pkgs/tools/security/log4j-scan/default.nix
+++ b/pkgs/tools/security/log4j-scan/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "log4j-scan";
-  version = "unstable-2021-12-14";
+  version = "unstable-2021-12-18";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "fullhunt";
     repo = pname;
-    rev = "7be0f1c02ce3494469dc73a177e6f0c96f0016d9";
-    sha256 = "sha256-HazxK0wJ8xeFauD2xOxmOwWw1nEpQh+QdcBVZNaUgrM=";
+    rev = "070fbd00f0945645bd5e0daa199a554ef3884b95";
+    sha256 = "sha256-ORSc4KHyAMjuA7QHReDh6SYY5yZRunBBN1+lkCayqL4=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/tools/security/onioncircuits/default.nix b/pkgs/tools/security/onioncircuits/default.nix
index f5d9185dc98..0186accc24a 100644
--- a/pkgs/tools/security/onioncircuits/default.nix
+++ b/pkgs/tools/security/onioncircuits/default.nix
@@ -24,7 +24,7 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://tails.boum.org";
     description = "GTK application to display Tor circuits and streams";
     license = licenses.gpl3;
-    maintainers = [ maintainers.phreedom ];
+    maintainers = [ ];
   };
 }
 
diff --git a/pkgs/tools/security/polkit-gnome/default.nix b/pkgs/tools/security/polkit-gnome/default.nix
index c4c9e9929d5..e0d57d9bde2 100644
--- a/pkgs/tools/security/polkit-gnome/default.nix
+++ b/pkgs/tools/security/polkit-gnome/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     homepage = "https://gitlab.gnome.org/Archive/policykit-gnome";
     description = "A dbus session bus service that is used to bring up authentication dialogs";
     license = lib.licenses.lgpl2Plus;
-    maintainers = with lib.maintainers; [ phreedom ];
+    maintainers = with lib.maintainers; [ ];
     platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix
index a4f4f830c47..76bfee42196 100644
--- a/pkgs/tools/security/tor/default.nix
+++ b/pkgs/tools/security/tor/default.nix
@@ -113,7 +113,7 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
 
     maintainers = with maintainers;
-      [ phreedom thoughtpolice joachifm prusnak ];
+      [ thoughtpolice joachifm prusnak ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/security/tor/torsocks.nix b/pkgs/tools/security/tor/torsocks.nix
index 22cfa51d4e5..399afe7f75c 100644
--- a/pkgs/tools/security/tor/torsocks.nix
+++ b/pkgs/tools/security/tor/torsocks.nix
@@ -38,6 +38,6 @@ stdenv.mkDerivation rec {
     repositories.git = "https://git.torproject.org/torsocks.git";
     license          = lib.licenses.gpl2;
     platforms        = lib.platforms.unix;
-    maintainers      = with lib.maintainers; [ phreedom thoughtpolice ];
+    maintainers      = with lib.maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/system/lshw/default.nix b/pkgs/tools/system/lshw/default.nix
index 1f29176fd0f..25bf79caddd 100644
--- a/pkgs/tools/system/lshw/default.nix
+++ b/pkgs/tools/system/lshw/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
     homepage = "https://ezix.org/project/wiki/HardwareLiSter";
     description = "Provide detailed information on the hardware configuration of the machine";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ phreedom ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile
new file mode 100644
index 00000000000..feb1437d6d4
--- /dev/null
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile
@@ -0,0 +1,11 @@
+source 'https://rubygems.org'
+gem 'asciidoctor'
+gem 'asciidoctor-diagram'
+gem 'asciidoctor-pdf'
+gem 'asciidoctor-epub3'
+gem 'asciidoctor-mathematical'
+gem 'asciidoctor-bibtex'
+gem 'asciidoctor-revealjs'
+gem 'coderay'
+gem 'pygments.rb'
+gem 'rouge'
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock
new file mode 100644
index 00000000000..14829ed7b0a
--- /dev/null
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock
@@ -0,0 +1,131 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    Ascii85 (1.1.0)
+    addressable (2.8.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    afm (0.2.2)
+    asciidoctor (2.0.16)
+    asciidoctor-bibtex (0.8.0)
+      asciidoctor (~> 2.0)
+      bibtex-ruby (~> 5.1)
+      citeproc-ruby (~> 1)
+      csl-styles (~> 1)
+      latex-decode (~> 0.2)
+    asciidoctor-diagram (2.2.1)
+      asciidoctor (>= 1.5.7, < 3.x)
+      asciidoctor-diagram-ditaamini (~> 1.0)
+      asciidoctor-diagram-plantuml (~> 1.2021)
+      rexml
+    asciidoctor-diagram-ditaamini (1.0.1)
+    asciidoctor-diagram-plantuml (1.2021.8)
+    asciidoctor-epub3 (1.5.1)
+      asciidoctor (>= 1.5.6, < 3.0.0)
+      gepub (~> 1.0.0)
+      mime-types (~> 3.0)
+    asciidoctor-mathematical (0.3.5)
+      asciidoctor (~> 2.0)
+      asciimath (~> 2.0)
+      mathematical (~> 1.6.0)
+    asciidoctor-pdf (1.6.1)
+      asciidoctor (~> 2.0)
+      concurrent-ruby (~> 1.1)
+      prawn (~> 2.4.0)
+      prawn-icon (~> 3.0.0)
+      prawn-svg (~> 0.32.0)
+      prawn-table (~> 0.2.0)
+      prawn-templates (~> 0.1.0)
+      safe_yaml (~> 1.0.0)
+      treetop (~> 1.6.0)
+    asciidoctor-revealjs (4.1.0)
+      asciidoctor (>= 2.0.0, < 3.0.0)
+      concurrent-ruby (~> 1.0)
+      thread_safe (~> 0.3.5)
+    asciimath (2.0.3)
+    bibtex-ruby (5.1.6)
+      latex-decode (~> 0.0)
+    citeproc (1.0.10)
+      namae (~> 1.0)
+    citeproc-ruby (1.1.14)
+      citeproc (~> 1.0, >= 1.0.9)
+      csl (~> 1.6)
+    coderay (1.1.3)
+    concurrent-ruby (1.1.9)
+    csl (1.6.0)
+      namae (~> 1.0)
+      rexml
+    csl-styles (1.0.1.11)
+      csl (~> 1.0)
+    css_parser (1.10.0)
+      addressable
+    gepub (1.0.15)
+      nokogiri (>= 1.8.2, < 2.0)
+      rubyzip (> 1.1.1, < 2.4)
+    hashery (2.1.2)
+    i18n (1.8.11)
+      concurrent-ruby (~> 1.0)
+    latex-decode (0.3.2)
+    mathematical (1.6.14)
+      ruby-enum (~> 0.4)
+    mime-types (3.4.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2021.1115)
+    mini_portile2 (2.6.1)
+    namae (1.1.1)
+    nokogiri (1.12.5)
+      mini_portile2 (~> 2.6.1)
+      racc (~> 1.4)
+    pdf-core (0.9.0)
+    pdf-reader (2.6.0)
+      Ascii85 (~> 1.0)
+      afm (~> 0.2.1)
+      hashery (~> 2.0)
+      ruby-rc4
+      ttfunk
+    polyglot (0.3.5)
+    prawn (2.4.0)
+      pdf-core (~> 0.9.0)
+      ttfunk (~> 1.7)
+    prawn-icon (3.0.0)
+      prawn (>= 1.1.0, < 3.0.0)
+    prawn-svg (0.32.0)
+      css_parser (~> 1.6)
+      prawn (>= 0.11.1, < 3)
+      rexml (~> 3.2)
+    prawn-table (0.2.2)
+      prawn (>= 1.3.0, < 3.0.0)
+    prawn-templates (0.1.2)
+      pdf-reader (~> 2.0)
+      prawn (~> 2.2)
+    public_suffix (4.0.6)
+    pygments.rb (2.2.0)
+    racc (1.6.0)
+    rexml (3.2.5)
+    rouge (3.26.1)
+    ruby-enum (0.9.0)
+      i18n
+    ruby-rc4 (0.1.5)
+    rubyzip (2.3.2)
+    safe_yaml (1.0.5)
+    thread_safe (0.3.6)
+    treetop (1.6.11)
+      polyglot (~> 0.3)
+    ttfunk (1.7.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  asciidoctor
+  asciidoctor-bibtex
+  asciidoctor-diagram
+  asciidoctor-epub3
+  asciidoctor-mathematical
+  asciidoctor-pdf
+  asciidoctor-revealjs
+  coderay
+  pygments.rb
+  rouge
+
+BUNDLED WITH
+   2.2.24
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/default.nix b/pkgs/tools/typesetting/asciidoctor-with-extensions/default.nix
new file mode 100644
index 00000000000..6bb0eac62f1
--- /dev/null
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, bundlerApp
+, bundlerUpdateScript
+, makeWrapper
+}:
+
+bundlerApp {
+  pname = "asciidoctor";
+  gemdir = ./.;
+
+  exes = [
+    "asciidoctor"
+    "asciidoctor-pdf"
+    "asciidoctor-epub3"
+    "asciidoctor-revealjs"
+  ];
+
+  passthru = {
+    updateScript = bundlerUpdateScript "asciidoctor-with-extensions";
+  };
+
+  meta = with lib; {
+    description = "A faster Asciidoc processor written in Ruby, with many extensions enabled";
+    homepage = "https://asciidoctor.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix b/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix
new file mode 100644
index 00000000000..6bd49e09962
--- /dev/null
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix
@@ -0,0 +1,538 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "022r3m9wdxljpbya69y2i3h9g3dhhfaqzidf95m6qjzms792jvgp";
+      type = "gem";
+    };
+    version = "2.8.0";
+  };
+  afm = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8";
+      type = "gem";
+    };
+    version = "0.2.2";
+  };
+  Ascii85 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ds4v9xgsyvijnlflak4dzf1qwmda9yd5bv8jwsb56nngd399rlw";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  asciidoctor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10h4pmmkbcrpy7bn76wxzkb0hriabh1k3ii1g8lm0mdji5drlhq2";
+      type = "gem";
+    };
+    version = "2.0.16";
+  };
+  asciidoctor-bibtex = {
+    dependencies = ["asciidoctor" "bibtex-ruby" "citeproc-ruby" "csl-styles" "latex-decode"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fx80bpykixvnlscyz2c4dnjr1063r5ar7j1zn2977vsr8fi8ial";
+      type = "gem";
+    };
+    version = "0.8.0";
+  };
+  asciidoctor-diagram = {
+    dependencies = ["asciidoctor" "asciidoctor-diagram-ditaamini" "asciidoctor-diagram-plantuml" "rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1z1ilpczjaydhcwpz3yygn03yrx2ljjj55xczwkrlb8rzgh03br3";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  asciidoctor-diagram-ditaamini = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nva5n6nyns0xp77d1dxng1rjhc8ma6gyd8hczjq3h9qqxcw2q4h";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  asciidoctor-diagram-plantuml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n018kmqzapf5y1bacb5yyvb9jfwxdkfqnviwxivwz9322b9w6j7";
+      type = "gem";
+    };
+    version = "1.2021.8";
+  };
+  asciidoctor-epub3 = {
+    dependencies = ["asciidoctor" "gepub" "mime-types"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05lylv2k18vcnf3647n47zdqxpa70bg16znzn252ymp8say25zzg";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  asciidoctor-mathematical = {
+    dependencies = ["asciidoctor" "asciimath" "mathematical"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lxfq7qn3ql642pva6jh3h1abm9j9daxg5icfn1h73k6cjsmcisp";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  asciidoctor-pdf = {
+    dependencies = ["asciidoctor" "concurrent-ruby" "prawn" "prawn-icon" "prawn-svg" "prawn-table" "prawn-templates" "safe_yaml" "treetop"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17d3fa6ix6r5ikydqz41r620mm98s076wdg4w6ydsr655r7mvnpk";
+      type = "gem";
+    };
+    version = "1.6.1";
+  };
+  asciidoctor-revealjs = {
+    dependencies = ["asciidoctor" "concurrent-ruby" "thread_safe"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03vmbcc3x059h17ry4qwk1p0yar9wgh87l2qssi307gy45cjw2mq";
+      type = "gem";
+    };
+    version = "4.1.0";
+  };
+  asciimath = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h4fz93pf96y5syxwpv0vibjf7lidv2718ikpvyd2vy8c1am8zyn";
+      type = "gem";
+    };
+    version = "2.0.3";
+  };
+  bibtex-ruby = {
+    dependencies = ["latex-decode"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0adh2x935r69nm8qmns5fjsjw034xlyaqddzza2jr2npvf41g34r";
+      type = "gem";
+    };
+    version = "5.1.6";
+  };
+  citeproc = {
+    dependencies = ["namae"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2";
+      type = "gem";
+    };
+    version = "1.0.10";
+  };
+  citeproc-ruby = {
+    dependencies = ["citeproc" "csl"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a8ahyhhmdinl4kcyv51r74ipnclmfyz4zjv366dns8v49n5vkk3";
+      type = "gem";
+    };
+    version = "1.1.14";
+  };
+  coderay = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
+      type = "gem";
+    };
+    version = "1.1.3";
+  };
+  concurrent-ruby = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
+      type = "gem";
+    };
+    version = "1.1.9";
+  };
+  csl = {
+    dependencies = ["namae" "rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n8iqmzvvqy2b1wfr4c7yj28x4z3zgm36628y8ybl49dgnmjycrk";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  csl-styles = {
+    dependencies = ["csl"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0l29qlk7i74088fpba5iqhhgiqkj7glcmc42nbmvgqysx577nag8";
+      type = "gem";
+    };
+    version = "1.0.1.11";
+  };
+  css_parser = {
+    dependencies = ["addressable"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1q8gj3wkc2mbzsqw5zcsr3kyzrrb2pda03pi769rjbvqr94g3bm5";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  gepub = {
+    dependencies = ["nokogiri" "rubyzip"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08fny807zd4700f263ckc76bladjipsniyk3clv8a7x76x3fqshx";
+      type = "gem";
+    };
+    version = "1.0.15";
+  };
+  hashery = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vdd1kii40qhbr9n8qx71k2gskq6rkl8ygy8hw5hfj8bb5a364xf";
+      type = "gem";
+    };
+    version = "1.8.11";
+  };
+  latex-decode = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wnxg82lfkb8bl5la9nmg1434rpkcygygm0ckixjn6ah2dy6i53m";
+      type = "gem";
+    };
+    version = "0.3.2";
+  };
+  mathematical = {
+    dependencies = ["ruby-enum"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05mn68gxhfa37qsnzsmdqaa005hf511j5lga76qsrad2gcnhan1b";
+      type = "gem";
+    };
+    version = "1.6.14";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb";
+      type = "gem";
+    };
+    version = "3.4.1";
+  };
+  mime-types-data = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03m3fkix2haah20kvh1jgv262yg9jlzn6wq0y31kafxk8fysfy27";
+      type = "gem";
+    };
+    version = "3.2021.1115";
+  };
+  mini_portile2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
+      type = "gem";
+    };
+    version = "2.6.1";
+  };
+  namae = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2" "racc"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b";
+      type = "gem";
+    };
+    version = "1.12.5";
+  };
+  pdf-core = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  pdf-reader = {
+    dependencies = ["Ascii85" "afm" "hashery" "ruby-rc4" "ttfunk"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0zgv9pp9cqd1cf8bwk7pb5lkm81gn7znnan0a7s42wd0qavs4nnz";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  polyglot = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  prawn = {
+    dependencies = ["pdf-core" "ttfunk"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g9avv2rprsjisdk137s9ljr05r7ajhm78hxa1vjsv0jyx22f1l2";
+      type = "gem";
+    };
+    version = "2.4.0";
+  };
+  prawn-icon = {
+    dependencies = ["prawn"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xdnjik5zinnkjavmybbh2s52wzcpb8hzaqckiv0mxp0vs0x9j6s";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  prawn-svg = {
+    dependencies = ["css_parser" "prawn" "rexml"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mbxzw7r7hv43db9422flc24ib9d8bdy1nasbni2h998jc5a5lb6";
+      type = "gem";
+    };
+    version = "0.32.0";
+  };
+  prawn-table = {
+    dependencies = ["prawn"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k";
+      type = "gem";
+    };
+    version = "0.2.2";
+  };
+  prawn-templates = {
+    dependencies = ["pdf-reader" "prawn"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1w9irn3rllm992c6j7fsx81gg539i7yy8zfddyw7q53hnlys0yhi";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  public_suffix = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
+      type = "gem";
+    };
+    version = "4.0.6";
+  };
+  "pygments.rb" = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mshqjh8v0v8k29f8annqfr4qlgkp39nbwx3sgm69aymv4skfddb";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  racc = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0la56m0z26j3mfn1a9lf2l03qx1xifanndf9p3vx1azf6sqy7v9d";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  rexml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
+      type = "gem";
+    };
+    version = "3.2.5";
+  };
+  rouge = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf";
+      type = "gem";
+    };
+    version = "3.26.1";
+  };
+  ruby-enum = {
+    dependencies = ["i18n"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pys90hxylhyg969iw9lz3qai5lblf8xwbdg1g5aj52731a9k83p";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  ruby-rc4 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00";
+      type = "gem";
+    };
+    version = "0.1.5";
+  };
+  rubyzip = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
+      type = "gem";
+    };
+    version = "2.3.2";
+  };
+  safe_yaml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
+      type = "gem";
+    };
+    version = "1.0.5";
+  };
+  thread_safe = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  treetop = {
+    dependencies = ["polyglot"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0697qz1akblf8r3wi0s2dsjh468hfsd57fb0mrp93z35y2ni6bhh";
+      type = "gem";
+    };
+    version = "1.6.11";
+  };
+  ttfunk = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15iaxz9iak5643bq2bc0jkbjv8w2zn649lxgvh5wg48q9d4blw13";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+}
diff --git a/pkgs/tools/typesetting/asciidoctor/Gemfile b/pkgs/tools/typesetting/asciidoctor/Gemfile
index 702dabee2e0..32e18b53aa6 100644
--- a/pkgs/tools/typesetting/asciidoctor/Gemfile
+++ b/pkgs/tools/typesetting/asciidoctor/Gemfile
@@ -1,10 +1,6 @@
 source 'https://rubygems.org'
 gem 'asciidoctor'
-gem 'asciidoctor-diagram'
 gem 'asciidoctor-pdf'
-gem 'asciidoctor-epub3'
-gem 'asciidoctor-mathematical'
-gem 'asciidoctor-revealjs'
 gem 'coderay'
 gem 'pygments.rb'
 gem 'rouge'
diff --git a/pkgs/tools/typesetting/asciidoctor/Gemfile.lock b/pkgs/tools/typesetting/asciidoctor/Gemfile.lock
index e7a1bdcfd80..5c607d269b2 100644
--- a/pkgs/tools/typesetting/asciidoctor/Gemfile.lock
+++ b/pkgs/tools/typesetting/asciidoctor/Gemfile.lock
@@ -6,21 +6,6 @@ GEM
       public_suffix (>= 2.0.2, < 5.0)
     afm (0.2.2)
     asciidoctor (2.0.16)
-    asciidoctor-diagram (2.2.1)
-      asciidoctor (>= 1.5.7, < 3.x)
-      asciidoctor-diagram-ditaamini (~> 1.0)
-      asciidoctor-diagram-plantuml (~> 1.2021)
-      rexml
-    asciidoctor-diagram-ditaamini (1.0.1)
-    asciidoctor-diagram-plantuml (1.2021.8)
-    asciidoctor-epub3 (1.5.1)
-      asciidoctor (>= 1.5.6, < 3.0.0)
-      gepub (~> 1.0.0)
-      mime-types (~> 3.0)
-    asciidoctor-mathematical (0.3.5)
-      asciidoctor (~> 2.0)
-      asciimath (~> 2.0)
-      mathematical (~> 1.6.0)
     asciidoctor-pdf (1.6.1)
       asciidoctor (~> 2.0)
       concurrent-ruby (~> 1.1)
@@ -31,32 +16,13 @@ GEM
       prawn-templates (~> 0.1.0)
       safe_yaml (~> 1.0.0)
       treetop (~> 1.6.0)
-    asciidoctor-revealjs (4.1.0)
-      asciidoctor (>= 2.0.0, < 3.0.0)
-      concurrent-ruby (~> 1.0)
-      thread_safe (~> 0.3.5)
-    asciimath (2.0.3)
     coderay (1.1.3)
     concurrent-ruby (1.1.9)
     css_parser (1.10.0)
       addressable
-    gepub (1.0.15)
-      nokogiri (>= 1.8.2, < 2.0)
-      rubyzip (> 1.1.1, < 2.4)
     hashery (2.1.2)
-    i18n (1.8.11)
-      concurrent-ruby (~> 1.0)
-    mathematical (1.6.14)
-      ruby-enum (~> 0.4)
-    mime-types (3.3.1)
-      mime-types-data (~> 3.2015)
-    mime-types-data (3.2021.0901)
-    mini_portile2 (2.6.1)
-    nokogiri (1.12.5)
-      mini_portile2 (~> 2.6.1)
-      racc (~> 1.4)
     pdf-core (0.9.0)
-    pdf-reader (2.5.0)
+    pdf-reader (2.6.0)
       Ascii85 (~> 1.0)
       afm (~> 0.2.1)
       hashery (~> 2.0)
@@ -79,15 +45,10 @@ GEM
       prawn (~> 2.2)
     public_suffix (4.0.6)
     pygments.rb (2.2.0)
-    racc (1.6.0)
     rexml (3.2.5)
     rouge (3.26.1)
-    ruby-enum (0.9.0)
-      i18n
     ruby-rc4 (0.1.5)
-    rubyzip (2.3.2)
     safe_yaml (1.0.5)
-    thread_safe (0.3.6)
     treetop (1.6.11)
       polyglot (~> 0.3)
     ttfunk (1.7.0)
@@ -97,11 +58,7 @@ PLATFORMS
 
 DEPENDENCIES
   asciidoctor
-  asciidoctor-diagram
-  asciidoctor-epub3
-  asciidoctor-mathematical
   asciidoctor-pdf
-  asciidoctor-revealjs
   coderay
   pygments.rb
   rouge
diff --git a/pkgs/tools/typesetting/asciidoctor/default.nix b/pkgs/tools/typesetting/asciidoctor/default.nix
index 73fb46d2e60..5f78c12508d 100644
--- a/pkgs/tools/typesetting/asciidoctor/default.nix
+++ b/pkgs/tools/typesetting/asciidoctor/default.nix
@@ -1,39 +1,26 @@
-{ lib, bundlerApp, makeWrapper,
-  # Optional dependencies, can be null
-  epubcheck,
-  bundlerUpdateScript
+{ lib
+, bundlerApp
+, bundlerUpdateScript
 }:
 
-let
-  app = bundlerApp {
-    pname = "asciidoctor";
-    gemdir = ./.;
+bundlerApp {
+  pname = "asciidoctor";
+  gemdir = ./.;
 
-    exes = [
-      "asciidoctor"
-      "asciidoctor-pdf"
-      "asciidoctor-epub3"
-      "asciidoctor-revealjs"
-    ];
+  exes = [
+    "asciidoctor"
+    "asciidoctor-pdf"
+  ];
 
-    buildInputs = [ makeWrapper ];
-
-    postBuild = ''
-        wrapProgram "$out/bin/asciidoctor-epub3" \
-          ${lib.optionalString (epubcheck != null) "--set EPUBCHECK ${epubcheck}/bin/epubcheck"}
-      '';
-
-    passthru = {
-      updateScript = bundlerUpdateScript "asciidoctor";
-    };
+  passthru = {
+    updateScript = bundlerUpdateScript "asciidoctor";
+  };
 
-    meta = with lib; {
-      description = "A faster Asciidoc processor written in Ruby";
-      homepage = "https://asciidoctor.org/";
-      license = licenses.mit;
-      maintainers = with maintainers; [ gpyh nicknovitski ];
-      platforms = platforms.unix;
-    };
+  meta = with lib; {
+    description = "A faster Asciidoc processor written in Ruby";
+    homepage = "https://asciidoctor.org/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gpyh nicknovitski ];
+    platforms = platforms.unix;
   };
-in
-  app
+}
diff --git a/pkgs/tools/typesetting/asciidoctor/gemset.nix b/pkgs/tools/typesetting/asciidoctor/gemset.nix
index b227121d6b8..b57d1e5ac4a 100644
--- a/pkgs/tools/typesetting/asciidoctor/gemset.nix
+++ b/pkgs/tools/typesetting/asciidoctor/gemset.nix
@@ -40,59 +40,6 @@
     };
     version = "2.0.16";
   };
-  asciidoctor-diagram = {
-    dependencies = ["asciidoctor" "asciidoctor-diagram-ditaamini" "asciidoctor-diagram-plantuml" "rexml"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1z1ilpczjaydhcwpz3yygn03yrx2ljjj55xczwkrlb8rzgh03br3";
-      type = "gem";
-    };
-    version = "2.2.1";
-  };
-  asciidoctor-diagram-ditaamini = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1nva5n6nyns0xp77d1dxng1rjhc8ma6gyd8hczjq3h9qqxcw2q4h";
-      type = "gem";
-    };
-    version = "1.0.1";
-  };
-  asciidoctor-diagram-plantuml = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "0n018kmqzapf5y1bacb5yyvb9jfwxdkfqnviwxivwz9322b9w6j7";
-      type = "gem";
-    };
-    version = "1.2021.8";
-  };
-  asciidoctor-epub3 = {
-    dependencies = ["asciidoctor" "gepub" "mime-types"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "05lylv2k18vcnf3647n47zdqxpa70bg16znzn252ymp8say25zzg";
-      type = "gem";
-    };
-    version = "1.5.1";
-  };
-  asciidoctor-mathematical = {
-    dependencies = ["asciidoctor" "asciimath" "mathematical"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1lxfq7qn3ql642pva6jh3h1abm9j9daxg5icfn1h73k6cjsmcisp";
-      type = "gem";
-    };
-    version = "0.3.5";
-  };
   asciidoctor-pdf = {
     dependencies = ["asciidoctor" "concurrent-ruby" "prawn" "prawn-icon" "prawn-svg" "prawn-table" "prawn-templates" "safe_yaml" "treetop"];
     groups = ["default"];
@@ -104,27 +51,6 @@
     };
     version = "1.6.1";
   };
-  asciidoctor-revealjs = {
-    dependencies = ["asciidoctor" "concurrent-ruby" "thread_safe"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "03vmbcc3x059h17ry4qwk1p0yar9wgh87l2qssi307gy45cjw2mq";
-      type = "gem";
-    };
-    version = "4.1.0";
-  };
-  asciimath = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "0h4fz93pf96y5syxwpv0vibjf7lidv2718ikpvyd2vy8c1am8zyn";
-      type = "gem";
-    };
-    version = "2.0.3";
-  };
   coderay = {
     groups = ["default"];
     platforms = [];
@@ -156,17 +82,6 @@
     };
     version = "1.10.0";
   };
-  gepub = {
-    dependencies = ["nokogiri" "rubyzip"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "08fny807zd4700f263ckc76bladjipsniyk3clv8a7x76x3fqshx";
-      type = "gem";
-    };
-    version = "1.0.15";
-  };
   hashery = {
     groups = ["default"];
     platforms = [];
@@ -177,70 +92,6 @@
     };
     version = "2.1.2";
   };
-  i18n = {
-    dependencies = ["concurrent-ruby"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "0vdd1kii40qhbr9n8qx71k2gskq6rkl8ygy8hw5hfj8bb5a364xf";
-      type = "gem";
-    };
-    version = "1.8.11";
-  };
-  mathematical = {
-    dependencies = ["ruby-enum"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "05mn68gxhfa37qsnzsmdqaa005hf511j5lga76qsrad2gcnhan1b";
-      type = "gem";
-    };
-    version = "1.6.14";
-  };
-  mime-types = {
-    dependencies = ["mime-types-data"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh";
-      type = "gem";
-    };
-    version = "3.3.1";
-  };
-  mime-types-data = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1z5wvk6qi4ws1kjh7xn1rfirqw5m72bwvqacck1fjpbh33pcrwxv";
-      type = "gem";
-    };
-    version = "3.2021.0901";
-  };
-  mini_portile2 = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
-      type = "gem";
-    };
-    version = "2.6.1";
-  };
-  nokogiri = {
-    dependencies = ["mini_portile2" "racc"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b";
-      type = "gem";
-    };
-    version = "1.12.5";
-  };
   pdf-core = {
     groups = ["default"];
     platforms = [];
@@ -257,10 +108,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "14cxj3ra9nnn334qpm2vsx9s0zk3095s8ih6cwcp47h3hv03c73y";
+      sha256 = "0zgv9pp9cqd1cf8bwk7pb5lkm81gn7znnan0a7s42wd0qavs4nnz";
       type = "gem";
     };
-    version = "2.5.0";
+    version = "2.6.0";
   };
   polyglot = {
     groups = ["default"];
@@ -347,16 +198,6 @@
     };
     version = "2.2.0";
   };
-  racc = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "0la56m0z26j3mfn1a9lf2l03qx1xifanndf9p3vx1azf6sqy7v9d";
-      type = "gem";
-    };
-    version = "1.6.0";
-  };
   rexml = {
     groups = ["default"];
     platforms = [];
@@ -377,17 +218,6 @@
     };
     version = "3.26.1";
   };
-  ruby-enum = {
-    dependencies = ["i18n"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1pys90hxylhyg969iw9lz3qai5lblf8xwbdg1g5aj52731a9k83p";
-      type = "gem";
-    };
-    version = "0.9.0";
-  };
   ruby-rc4 = {
     groups = ["default"];
     platforms = [];
@@ -398,16 +228,6 @@
     };
     version = "0.1.5";
   };
-  rubyzip = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
-      type = "gem";
-    };
-    version = "2.3.2";
-  };
   safe_yaml = {
     groups = ["default"];
     platforms = [];
@@ -418,16 +238,6 @@
     };
     version = "1.0.5";
   };
-  thread_safe = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
-      type = "gem";
-    };
-    version = "0.3.6";
-  };
   treetop = {
     dependencies = ["polyglot"];
     groups = ["default"];