guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 2bd0ba7226422d29af386bbc7b8302f16e891a6b
Author: Ludovic Courtès <[email protected]>
AuthorDate: Sat Feb 28 23:31:38 2026 +0100

    gnu: Export non-trivial packages that were private.
    
    This makes those packages visible to ‘fold-packages’, which in turns gives a
    clearer view of the package set to tools like (gnu ci) and ‘guix graph’.
    
    * gnu/packages/dlang.scm (ldc-bootstrap): Export and add ‘hidden?’ property.
    (ldc)[properties]: New field.
    (dmd-bootstrap): Export and add ‘hidden?’ property.
    (dmd)[properties]: New field.
    * gnu/packages/freedesktop.scm (xdgmime): Export and add ‘hidden?’ property.
    * gnu/packages/games.scm (glkterm, supertuxkart-data)
    (ring-racers-data, openttd-engine, openttd-opengfx, openttd-opensfx)
    (openttd-openmsx, openrct2-title-sequences, openrct2-objects)
    (xonotic-data): Export and add ‘hidden?’ property.
    (simgear): Export.
    * gnu/packages/gnucash.scm (gnucash-docs): Export and add ‘hidden? property.
    * gnu/packages/groovy.scm (java-groovy-bootstrap): Export and add ‘hidden?’
    property.
    (groovy-bootstrap, groovy-tests-bootstrap, groovy-parser-antlr4)
    (groovy-test, groovy-xml, groovy-templates, groovy-groovydoc)
    (groovy-ant, groovy-astbuilder, groovy-bsf, groovy-cli-commons)
    (groovy-cli-picocli, groovy-swing, groovy-console, groovy-datetime)
    (groovy-dateutil, groovy-docgenerator, groovy-groovysh, groovy-jmx)
    (groovy-json, groovy-jsr223, groovy-nio, groovy-servlet)
    (groovy-sql, groovy-testng, groovy-macro, groovy-yaml): Export.
    (groovy)[properties]: New field.
    * gnu/packages/haskell-xyz.scm (ghc-chell-quickcheck-bootstrap)
    (ghc-options-bootstrap): Export and add ‘hidden?’ property.
    (ghc-system-fileio-bootstrap, ghc-system-filepath-bootstrap): Remove.
    * gnu/packages/haskell.scm (ghc-alex-bootstrap-for-9.4)
    (ghc-happy-bootstrap-for-9.4): Export.
    * gnu/packages/image-processing.scm (insight-toolkit-legacy): Export.
    * gnu/packages/java-bootstrap.scm (jikes): Export.
    (classpath-bootstrap): Export and add ‘hidden?’ property.
    (jamvm-1-bootstrap, ant-bootstrap, ecj-bootstrap): Likewise.
    (ecj-javac-wrapper, classpath-0.99, classpath-jamvm-wrappers): Export.
    (classpath-devel): Export and remove ‘hidden?’ property.
    (jamvm): Export.
    (ecj-javac-wrapper-final): Export and remove ‘hidden?’ property.
    (ecj4-bootstrap): Export and add ‘hidden?’ property.
    (ecj4-javac-wrapper): Export.
    (jamvm-with-ecj4): Export and remove ‘hidden?’ property.
    * gnu/packages/java-xml.scm (java-jaxen-bootstrap): Export and add ‘hidden?’
    property.
    (java-jaxen)[properties]: New field.
    * gnu/packages/java.scm (java-plexus-container-default-bootstrap): Export 
and
    add ‘hidden?’ property.
    (java-plexus-container-default)[properties]: New field.
    (java-stringtemplate-4.0.6): Export.
    (antlr3-bootstrap): Export and add ‘hidden?’ property.
    (antlr3-3.3)[properties]: New field.
    (java-tunnelvisionlabs-antlr4-runtime-bootstrap): Export and add ‘hidden?’
    property.
    (java-tunnelvisionlabs-antlr4-bootstrap): Likewise.
    (java-tunnelvisionlabs-antlr4-runtime)[properties]: New field.
    (java-tunnelvisionlabs-antlr4)[properties]: New field.
    (java-geronimo-genesis-2.1): Export.
    * gnu/packages/rails.scm (ruby-ammeter-bootstrap): Export and add ‘hidden?‘
    property.
    (ruby-ammeter)[properties]: New field.
    * gnu/packages/ruby-check.scm (ruby-cucumber-compatibility-kit-bootstrap):
    Export and add ‘hidden?’ property.
    * gnu/packages/ruby-xyz.scm (ruby-rspec-block-is-expected-bootstrap): 
Likewise.
    (ruby-rubocop-capybara-minimal): Likewise.
    (ruby-rubocop-capybara)[property]: New field.
    (ruby-rubocop-rake-minimal): Export and add ‘hidden?’ property.
    (ruby-rubocop-rake)[properties]: New field.
    (ruby-rubocop-rspec-minimal): Export and add ‘hidden?’ property.
    (ruby-rubocop-rspec)[properties]: New field.
    (ruby-cucumber-without-tests): Export and add ‘hidden?’ property.
    (ruby-liquid-c-bootstrap): Likewise.
    (ruby-liquid-c)[properties]: New field.
    * gnu/packages/xorg.scm (xcffibgen): Export and add ‘hidden?’ property.
    
    Fixes: guix/maintenance#85
    Change-Id: I39cc94accb4eefbe73801f1f237201b48e4a7def
    Signed-off-by: Ludovic Courtès <[email protected]>
    Merges: #6781
---
 gnu/packages/dlang.scm            | 21 +++++++++---
 gnu/packages/freedesktop.scm      |  7 ++--
 gnu/packages/games.scm            | 27 ++++++++-------
 gnu/packages/gnucash.scm          |  3 +-
 gnu/packages/groovy.scm           | 64 +++++++++++++++++++-----------------
 gnu/packages/haskell-xyz.scm      | 69 +++------------------------------------
 gnu/packages/haskell.scm          |  6 ++--
 gnu/packages/image-processing.scm |  4 +--
 gnu/packages/java-bootstrap.scm   | 52 ++++++++++++++++-------------
 gnu/packages/java-xml.scm         | 10 ++++--
 gnu/packages/java.scm             | 44 +++++++++++++++++--------
 gnu/packages/rails.scm            | 10 ++++--
 gnu/packages/ruby-check.scm       |  7 ++--
 gnu/packages/ruby-xyz.scm         | 44 +++++++++++++++++--------
 gnu/packages/xorg.scm             |  5 +--
 15 files changed, 193 insertions(+), 180 deletions(-)

diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index bf563bea26..7448701723 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -145,7 +145,7 @@ to a minimal test case.")
 
 ;; We use GDC, the D frontend for GCC, to bootstrap ldc.  We then use
 ;; ldc to bootstrap itself so that no reference remains to GDC.
-(define ldc-bootstrap
+(define-public ldc-bootstrap
   (package
     (name "ldc")
     (version "1.38.0")
@@ -207,7 +207,10 @@ bootstrapping more recent compilers written in D.")
     (properties
      ;; Some of the tests take a very long time on ARMv7.  See
      ;; <https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00312.html>.
-     `((max-silent-time . ,(* 3600 3))))
+     `((max-silent-time . ,(* 3600 3))
+
+       ;; This variant exists solely for bootstrapping purposes.
+       (hidden? . #t)))
     ;; Most of the code is released under BSD-3, except for code originally
     ;; written for GDC, which is released under GPLv2+, and the DMD frontend,
     ;; which is released under the "Boost Software License version 1.0".
@@ -402,11 +405,13 @@ integration tests...\n")
                      (alist-replace "ldc" (list ldc-bootstrap)
                                     (package-native-inputs ldc-bootstrap)))
          `(("clang" ,clang-17)          ;propagates llvm and clang-runtime
-           ("python-lit" ,python-lit))))))
+           ("python-lit" ,python-lit))))
+    (properties
+     (alist-delete 'hidden? (package-properties ldc-bootstrap)))))
 
 ;;; Bootstrap version of phobos that is built with GDC, using GDC's standard
 ;;; library.
-(define dmd-bootstrap
+(define-public dmd-bootstrap
   (package
     ;; This package is purposefully named just "dmd" and not "dmd-bootstrap",
     ;; as the final dmd package rewrites references from this one to itself,
@@ -528,6 +533,10 @@ compiler for the D programming language.")
     ;; As reported by upstream:
     ;; https://wiki.dlang.org/Compilers#Comparison
     (supported-systems '("i686-linux" "x86_64-linux"))
+
+    ;; This variant exists only for bootstrapping purposes.
+    (properties '((hidden? . #t)))
+
     (license license:boost1.0)))
 
 ;;; Second bootstrap of DMD, built using dmd-bootstrap, with its shared
@@ -571,7 +580,9 @@ compiler for the D programming language.")
                           (format #f "s,~a,~a,g" dmd-bootstrap #$output)
                           dmd))))))))
     (native-inputs (modify-inputs (package-native-inputs dmd-bootstrap)
-                     (replace "gdmd" dmd-bootstrap)))))
+                     (replace "gdmd" dmd-bootstrap)))
+    (properties
+     (alist-delete 'hidden? (package-properties dmd-bootstrap)))))
 
 (define-public dub
   (package
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 7dde4a1e33..70a2541bd6 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Andreas Enge <[email protected]>
 ;;; Copyright © 2015 Sou Bunnbu <[email protected]>
 ;;; Copyright © 2015, 2017 Andy Wingo <[email protected]>
-;;; Copyright © 2015-2017, 2019, 2021-2022, 2025 Ludovic Courtès <[email protected]>
+;;; Copyright © 2015-2017, 2019, 2021-2022, 2025-2026 Ludovic Courtès 
<[email protected]>
 ;;; Copyright © 2015, 2017, 2018, 2019, 2021, 2022, 2023 Ricardo Wurmus 
<[email protected]>
 ;;; Copyright © 2015 David Hashe <[email protected]>
 ;;; Copyright © 2016, 2017, 2019, 2021-2025 Efraim Flashner 
<[email protected]>
@@ -424,8 +424,8 @@ inappropriate content.")
       license:gpl2+
       license:lgpl2.1+))))
 
-;; Private package used by shared-mime-info.
-(define xdgmime
+;; Hidden package used by shared-mime-info.
+(define-public xdgmime
   ;; No public release, match commit to the one used in the
   ;; shared-mime-info release.
   (let ((commit "179296748e92bd91bf531656632a1056307fb7b7")
@@ -468,6 +468,7 @@ inappropriate content.")
       (home-page "https://gitlab.freedesktop.org/xdg/xdgmime/";)
       (synopsis "Module that parses the freedesktop.org MIME spec")
       (description "This module is used for shared-mime-info package tests.")
+      (properties '((hidden? . #t)))
       (license (list license:lgpl2.1+ license:artistic2.0)))))
 
 ;; Note: when updating shared-mime-info, don't forget to update xdgmime's 
commit
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 12ccb13e5b..411f0db52e 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014-2025 Eric Bavier <[email protected]>
 ;;; Copyright © 2014 Cyrill Schenkel <[email protected]>
 ;;; Copyright © 2014 Sylvain Beucler <[email protected]>
-;;; Copyright © 2014, 2015, 2018, 2019, 2021 Ludovic Courtès <[email protected]>
+;;; Copyright © 2014-2015, 2018-2019, 2021, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2014, 2015, 2016, 2024 宋文武 <[email protected]>
 ;;; Copyright © 2014, 2015, 2019 Mark H Weaver <[email protected]>
 ;;; Copyright © 2015, 2016 Andreas Enge <[email protected]>
@@ -4659,7 +4659,7 @@ game.  Your mission in the game is simple: stop the 
invasion of the aliens by
 blasting them.  Simultaneous two-player mode is available.")
     (license license:gpl2)))
 
-(define glkterm
+(define-public glkterm
   (package
    (name "glkterm")
    (version "1.0.4")
@@ -5056,7 +5056,7 @@ This package expects the game(s) to be placed in 
subdirectories of
                        "lib/mojoal"
                        "lib/wiiuse"))))))
 
-(define supertuxkart-data
+(define-public supertuxkart-data
   ;; There are no tags or releases for the stk-assets data, nor indication of
   ;; which revision is bundled into the released SuperTuxKart-*-src tarball;
   ;; use the latest SVN revision available.
@@ -5158,7 +5158,7 @@ against each other or just trying to beat the computer; 
single-player mode is
 also available.")
     (license license:gpl3+)))
 
-(define ring-racers-data
+(define-public ring-racers-data
   (hidden-package
    (package
      (name "ring-racers-data")
@@ -5577,7 +5577,7 @@ world}, @uref{http://evolonline.org, Evol Online} and
     ;; The rest is under GPL2+.
     (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
 
-(define openttd-engine
+(define-public openttd-engine
   (package
     (name "openttd-engine")
     (version "15.2")
@@ -5614,7 +5614,7 @@ engine.  When you start it you will be prompted to 
download a graphics set.")
     ;; different terms.
     (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
 
-(define openttd-opengfx
+(define-public openttd-opengfx
   (package
     (name "openttd-opengfx")
     (version "8.0")
@@ -5688,7 +5688,7 @@ OpenGFX provides you with...
 @end enumerate")
     (license license:gpl2)))
 
-(define openttd-opensfx
+(define-public openttd-opensfx
   (package
     (name "openttd-opensfx")
     (version "1.0.3")
@@ -5737,7 +5737,7 @@ it possible to play OpenTTD without requiring the 
proprietary sound files from
 the original Transport Tycoon Deluxe.")
     (license license:cc-by-sa3.0)))
 
-(define openttd-openmsx
+(define-public openttd-openmsx
   (package
     (name "openttd-openmsx")
     (version "0.4.2")
@@ -5868,7 +5868,7 @@ standard game and how to play it.  It is not aimed at 
beginner/novice players.
 Some features and settings are there for very experienced players and so may
 have a steep learning curve.")))
 
-(define openrct2-title-sequences
+(define-public openrct2-title-sequences
   (package
    (name "openrct2-title-sequences")
    (version "0.1.2")
@@ -5907,9 +5907,10 @@ have a steep learning curve.")))
    (synopsis "Title sequences for OpenRCT2")
    (description
     "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
+   (properties '((hidden? . #t)))             ;data package useless on its own
    (license license:gpl3+)))
 
-(define openrct2-objects
+(define-public openrct2-objects
   (package
    (name "openrct2-objects")
    (version "1.0.20")
@@ -5947,6 +5948,7 @@ have a steep learning curve.")))
    (synopsis "Objects for OpenRCT2")
    (description
     "openrct2-objects is a set of objects for OpenRCT2.")
+   (properties '((hidden? . #t)))             ;data package useless on its own
    (license license:gpl3+)))
 
 (define-public openquest
@@ -9514,7 +9516,7 @@ UMAPINFO, DEHEXTRA, and DSDHacked specifictions.")
            license:public-domain
            license:gpl2+))))
 
-(define xonotic-data
+(define-public xonotic-data
   (package
     (name "xonotic-data")
     (version "0.8.6")
@@ -9548,6 +9550,7 @@ UMAPINFO, DEHEXTRA, and DSDHacked specifictions.")
     (synopsis "Data files for Xonotic")
     (description
      "Xonotic-data provides the data files required by the game Xonotic.")
+    (properties '((hidden? . #t)))            ;data package useless on its own
     (license (list license:gpl2+
                    (license:x11-style "file://server/rcon.pl")))))
 
@@ -11078,7 +11081,7 @@ levels to unlock.")
                      license:cc-by-sa3.0)))))
 
 ;; This must be updated together with flightgear.
-(define simgear
+(define-public simgear
   (package
     (name "simgear")
     (version "2024.1.4")
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index 87ea970e20..7017c977ee 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -224,7 +224,7 @@ installed as well as Yelp, the Gnome help browser.")
 
 ;; This package is not public, since we use it to build the "doc" output of
 ;; the gnucash package (see above).  It would be confusing if it were public.
-(define gnucash-docs
+(define-public gnucash-docs
   (let ((revision ""))               ;set to the empty string when no revision
     (package
       (name "gnucash-docs")
@@ -256,6 +256,7 @@ installed as well as Yelp, the Gnome help browser.")
 This package exists because the GnuCash project maintains its documentation in
 an entirely separate package from the actual GnuCash program.  It is intended
 to be read using the GNOME Yelp program.")
+      (properties '((hidden? . #t)))        ;meant to be an input to 'gnucash'
       (license (list license:fdl1.1+ license:gpl3+)))))
 
 (define-public gwenhywfar
diff --git a/gnu/packages/groovy.scm b/gnu/packages/groovy.scm
index b4f7438929..07080f111f 100644
--- a/gnu/packages/groovy.scm
+++ b/gnu/packages/groovy.scm
@@ -27,9 +27,10 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages java)
   #:use-module (gnu packages java-xml)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (srfi srfi-1))
 
-(define java-groovy-bootstrap
+(define-public java-groovy-bootstrap
   (package
     (name "java-groovy-bootstrap")
     (version "3.0.5")
@@ -111,9 +112,10 @@
     (synopsis "Groovy's java bootstrap")
     (description "This package contains the java bootstrap that is used to 
build
 groovy submodules.")
+    (properties '((hidden? . #t)))
     (license license:asl2.0)))
 
-(define groovy-bootstrap
+(define-public groovy-bootstrap
   (package
     (inherit java-groovy-bootstrap)
     (name "groovy-bootstrap")
@@ -193,7 +195,7 @@ groovy submodules.")
 Although already usable, it doesn't contain the groovy library yet.  This 
package
 is used to build the groovy submodules written in groovy.")))
 
-(define groovy-tests-bootstrap
+(define-public groovy-tests-bootstrap
   (package
     (inherit groovy-bootstrap)
     (name "groovy-tests-bootstrap")
@@ -285,7 +287,7 @@ other groovy submodules.")))
                (invoke "ant" "check"))
              #t)))))))
 
-(define groovy-parser-antlr4
+(define-public groovy-parser-antlr4
   (let ((base (groovy-subproject "parser-antlr4")))
     (package
       (inherit base)
@@ -318,7 +320,7 @@ is based on Antlr4.  The new parser can parse Groovy source 
code and construct
 the related AST, which is almost identical to the one generated by the old
 parser.  Currently all features of Groovy are available."))))
 
-(define groovy-test
+(define-public groovy-test
   (let ((base (groovy-subproject "groovy-test")))
     (package
       (inherit base)
@@ -329,7 +331,7 @@ parser.  Currently all features of Groovy are 
available."))))
       (description "This package contains the test submodules used to test
 other groovy submodules."))))
 
-(define groovy-xml
+(define-public groovy-xml
   (let ((base (groovy-subproject "groovy-xml")))
     (package
       (inherit base)
@@ -343,7 +345,7 @@ other groovy submodules."))))
       (synopsis "Groovy XML")
       (description "This package contains XML-related utilities for 
groovy."))))
 
-(define groovy-templates
+(define-public groovy-templates
   (let ((base (groovy-subproject "groovy-templates")))
     (package
       (inherit base)
@@ -374,7 +376,7 @@ other groovy submodules."))))
 well-suited to applications where the text to be generated follows the form of
 a static template."))))
 
-(define groovy-groovydoc
+(define-public groovy-groovydoc
   (let ((base (groovy-subproject "groovy-groovydoc")))
     (package
       (inherit base)
@@ -395,7 +397,7 @@ a static template."))))
       (description "This package contains the groovy documentation generator,
 similar to javadoc."))))
 
-(define groovy-ant
+(define-public groovy-ant
   (let ((base (groovy-subproject "groovy-ant")))
     (package
       (inherit base)
@@ -429,7 +431,7 @@ similar to javadoc."))))
       (synopsis "Groovy ant tasks")
       (description "This package contains groovy-related ant tasks 
definitions."))))
 
-(define groovy-astbuilder
+(define-public groovy-astbuilder
   (let ((base (groovy-subproject "groovy-astbuilder")))
     (package
       (inherit base)
@@ -458,7 +460,7 @@ similar to javadoc."))))
       (description "This package contains an AST transformation for use with
 ASTBuilder when building \"from string\" Groovy statements."))))
 
-(define groovy-bsf
+(define-public groovy-bsf
   (let ((base (groovy-subproject "groovy-bsf")))
     (package
       (inherit base)
@@ -484,7 +486,7 @@ ASTBuilder when building \"from string\" Groovy 
statements."))))
       (description "This package defines the BSF engine for using Groovy inside
 any @dfn{Bean Scripting Framework} (BSF) application."))))
 
-(define groovy-cli-commons
+(define-public groovy-cli-commons
   (let ((base (groovy-subproject "groovy-cli-commons")))
     (package
       (inherit base)
@@ -498,7 +500,7 @@ any @dfn{Bean Scripting Framework} (BSF) application."))))
       (description "This package defines common classes for dealing with
 command-line arguments in Groovy."))))
 
-(define groovy-cli-picocli
+(define-public groovy-cli-picocli
   (let ((base (groovy-subproject "groovy-cli-picocli")))
     (package
       (inherit base)
@@ -513,7 +515,7 @@ command-line arguments in Groovy."))))
       (description "This package defines classes for dealing with command-line
 arguments in Groovy using the picocli library."))))
 
-(define groovy-swing
+(define-public groovy-swing
   (let ((base (groovy-subproject "groovy-swing")))
     (package
       (inherit base)
@@ -537,7 +539,7 @@ arguments in Groovy using the picocli library."))))
       (description "This package contains the groovy bindings to Java Swing, a
 library used to build graphical interfaces."))))
 
-(define groovy-console
+(define-public groovy-console
   (let ((base (groovy-subproject "groovy-console")))
     (package
       (inherit base)
@@ -575,7 +577,7 @@ library used to build graphical interfaces."))))
       (synopsis "Groovy graphical interface")
       (description "This package contains a graphical interface to run 
groovy."))))
 
-(define groovy-datetime
+(define-public groovy-datetime
   (let ((base (groovy-subproject "groovy-datetime")))
     (package
       (inherit base)
@@ -587,7 +589,7 @@ library used to build graphical interfaces."))))
 normal JDK Date/Time API (@code{java.time}) classes inside the Groovy
 environment."))))
 
-(define groovy-dateutil
+(define-public groovy-dateutil
   (let ((base (groovy-subproject "groovy-dateutil")))
     (package
       (inherit base)
@@ -598,7 +600,7 @@ environment."))))
       (description "This package defines new groovy methods which appear on
 normal JDK Date and Calendar classes inside the Groovy environment."))))
 
-(define groovy-docgenerator
+(define-public groovy-docgenerator
   (let ((base (groovy-subproject "groovy-docgenerator")))
     (package
       (inherit base)
@@ -619,7 +621,7 @@ normal JDK Date and Calendar classes inside the Groovy 
environment."))))
       (description "This package contains a command line tool to generate
 documentation for groovy applications."))))
 
-(define groovy-groovysh
+(define-public groovy-groovysh
   (let ((base (groovy-subproject "groovy-groovysh")))
     (package
       (inherit base)
@@ -635,7 +637,7 @@ documentation for groovy applications."))))
       (synopsis "Groovy REPL")
       (description "This package contains the Groovy REPL."))))
 
-(define groovy-jmx
+(define-public groovy-jmx
   (let ((base (groovy-subproject "groovy-jmx")))
     (package
       (inherit base)
@@ -648,7 +650,7 @@ documentation for groovy applications."))))
       (description "This package contains the JMX extension of Groovy, for
 management and monitoring of JVM-based solutions."))))
 
-(define groovy-json
+(define-public groovy-json
   (let ((base (groovy-subproject "groovy-json")))
     (package
       (inherit base)
@@ -660,7 +662,7 @@ management and monitoring of JVM-based solutions."))))
       (synopsis "Groovy JSON")
       (description "This package contains JSON-related utilities for 
groovy."))))
 
-(define groovy-jsr223
+(define-public groovy-jsr223
   (let ((base (groovy-subproject "groovy-jsr223")))
     (package
       (inherit base)
@@ -673,7 +675,7 @@ management and monitoring of JVM-based solutions."))))
       (description "This package contains Groovy's own JSR223 implementation.  
This
 module is used for interaction between Groovy and Java code."))))
 
-(define groovy-nio
+(define-public groovy-nio
   (let ((base (groovy-subproject "groovy-nio")))
     (package
       (inherit base)
@@ -684,7 +686,7 @@ module is used for interaction between Groovy and Java 
code."))))
       (description "This package implements an input/output library that 
extends
 the functionality of the common library of Java."))))
 
-(define groovy-servlet
+(define-public groovy-servlet
   (let ((base (groovy-subproject "groovy-servlet")))
     (package
       (inherit base)
@@ -702,7 +704,7 @@ the functionality of the common library of Java."))))
       (description "This package contains a library to create groovlets, 
Groovy's
 version of Java servlets."))))
 
-(define groovy-sql
+(define-public groovy-sql
   (let ((base (groovy-subproject "groovy-sql")))
     (package
       (inherit base)
@@ -713,7 +715,7 @@ version of Java servlets."))))
       (description "This package contains a facade over Java's normal JDBC APIs
 providing greatly simplified resource management and result set handling."))))
 
-(define groovy-testng
+(define-public groovy-testng
   (let ((base (groovy-subproject "groovy-testng")))
     (package
       (inherit base)
@@ -726,7 +728,7 @@ providing greatly simplified resource management and result 
set handling."))))
       (description "This package contains integration code for running TestNG
 tests in Groovy."))))
 
-(define groovy-macro
+(define-public groovy-macro
   (let ((base (groovy-subproject "groovy-macro")))
     (package
       (inherit base)
@@ -757,7 +759,7 @@ tests in Groovy."))))
       (description "This package contains a high-level library to create macro
 and modify groovy's @dfn{Abstract Syntax Tree} (AST)."))))
 
-(define groovy-yaml
+(define-public groovy-yaml
   (let ((base (groovy-subproject "groovy-yaml")))
     (package
       (inherit base)
@@ -883,4 +885,6 @@ language, with static-typing and static compilation 
capabilities, for the Java
 platform.  It integrates smoothly with any Java program, and immediately
 delivers to your application powerful features, including scripting
 capabilities, Domain-Specific Language authoring, runtime and compile-time
-meta-programming and functional programming.")))
+meta-programming and functional programming.")
+    (properties
+     (alist-delete 'hidden? (package-properties groovy-bootstrap)))))
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 5205d2820f..ce5276b907 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Siniša Biđin <[email protected]>
 ;;; Copyright © 2015 Paul van der Walt <[email protected]>
 ;;; Copyright © 2015, 2019 Eric Bavier <[email protected]>
-;;; Copyright © 2016, 2018, 2019, 2021 Ludovic Courtès <[email protected]>
+;;; Copyright © 2016, 2018, 2019, 2021, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2016, 2017 Nikita <[email protected]>
 ;;; Copyright © 2016, 2019, 2023, 2025 Efraim Flashner <[email protected]>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus 
<[email protected]>
@@ -1922,7 +1922,7 @@ testing strategies.")
     (description "More complex tests for @code{chell}.")
     (license license:expat)))
 
-(define ghc-chell-quickcheck-bootstrap
+(define-public ghc-chell-quickcheck-bootstrap
   (package
     (name "ghc-chell-quickcheck-bootstrap")
     (version "0.2.5.2")
@@ -1952,6 +1952,7 @@ testing strategies.")
     (home-page "https://john-millikin.com/software/chell/";)
     (synopsis "QuickCheck support for the Chell testing library")
     (description "More complex tests for @code{chell}.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public ghc-chunked-data
@@ -8383,7 +8384,7 @@ easily work with command-line options.")
     (license license:expat)))
 
 ;; See ghc-system-filepath-bootstrap, chell and chell-quickcheck are required 
for tests.
-(define ghc-options-bootstrap
+(define-public ghc-options-bootstrap
   (package
     (name "ghc-options-bootstrap")
     (version "1.2.1.1")
@@ -8406,6 +8407,7 @@ easily work with command-line options.")
     (description
      "The @code{options} package lets library and application developers
 easily work with command-line options.")
+    (properties '((hidden? . #t)))            ;for bootstrapping purposes only
     (license license:expat)))
 
 
@@ -12197,37 +12199,6 @@ In particular, this library supports working with 
POSIX files that have paths
 which can't be decoded in the current locale encoding.")
     (license license:expat)))
 
-;; See ghc-system-filepath-bootstrap. In addition this package depends on
-;; ghc-system-filepath.
-(define ghc-system-fileio-bootstrap
-  (package
-    (name "ghc-system-fileio-bootstrap")
-    (version "0.3.16.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://hackage.haskell.org/package/system-fileio/system-fileio-";
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "1484hcl27s2qcby8ws5djj11q9bz68bspcifz9h5gii2ndy70x9i"))))
-    (build-system haskell-build-system)
-    (arguments
-     `(#:tests? #f))
-    (inputs
-     `(("ghc-system-filepath-bootstrap" ,ghc-system-filepath-bootstrap)
-       ("ghc-temporary" ,ghc-temporary)))
-    (home-page "https://github.com/fpco/haskell-filesystem";)
-    (synopsis "Consistent file system interaction across GHC versions")
-    (description
-     "This is a small wrapper around the directory, unix, and Win32 packages,
-for use with system-filepath.  It provides a consistent API to the various
-versions of these packages distributed with different versions of GHC.
-In particular, this library supports working with POSIX files that have paths
-which can't be decoded in the current locale encoding.")
-    (license license:expat)))
-
 (define-public ghc-system-filepath
   (package
     (name "ghc-system-filepath")
@@ -12255,36 +12226,6 @@ Unlike the filepath package, this package does not 
simply reuse String,
 increasing type safety.")
     (license license:expat)))
 
-;; Ghc-shelly depends on ghc-system-filepath and ghc-system-fileio, who in 
turn depend on
-;; ghc-chell and ghc-chell-quickcheck for the test phase. Ghc-chell depends on 
ghc-options
-;; which depends on ghc-chell and ghc-chell-quickcheck.
-;; Therefore we bootstrap it with tests disabled.
-(define ghc-system-filepath-bootstrap
-  (package
-    (name "ghc-system-filepath-bootstrap")
-    (version "0.4.14")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             
"https://hackage.haskell.org/package/system-filepath/system-filepath-";
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "14yras4pz2dh55xpwmazcgxijvi8913pjgzb9iw50mjq1lycwmhn"))))
-    (build-system haskell-build-system)
-    (arguments
-     `(#:tests? #f))
-    (inputs
-     `(("ghc-quickcheck" ,ghc-quickcheck)))
-    (home-page "https://github.com/fpco/haskell-filesystem";)
-    (synopsis "High-level, byte-based file and directory path manipulations")
-    (description
-     "Provides a FilePath datatype and utility functions for operating on it.
-Unlike the filepath package, this package does not simply reuse String,
-increasing type safety.")
-    (license license:expat)))
-
 (define-public ghc-tabular
   (package
     (name "ghc-tabular")
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index fa75fb4087..32b6fe9a05 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Siniša Biđin <[email protected]>
 ;;; Copyright © 2015 Paul van der Walt <[email protected]>
 ;;; Copyright © 2015, 2019 Eric Bavier <[email protected]>
-;;; Copyright © 2016, 2018, 2019, 2021 Ludovic Courtès <[email protected]>
+;;; Copyright © 2016, 2018, 2019, 2021, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2016, 2017 Nikita <[email protected]>
 ;;; Copyright © 2016, 2022, 2024 Efraim Flashner <[email protected]>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2022 Ricardo Wurmus 
<[email protected]>
@@ -1639,7 +1639,7 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
 ;; We need two extra dependencies built with ghc-bootstrap-for-9.4,
 ;; which are duplicated here from haskell-xyz to make sure the
 ;; bootstraping process always works.
-(define ghc-alex-bootstrap-for-9.4
+(define-public ghc-alex-bootstrap-for-9.4
   (hidden-package
     (package
      (name "ghc-alex")
@@ -1667,7 +1667,7 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
  tool lex or flex for C/C++.")
      (license license:bsd-3))))
 
-(define ghc-happy-bootstrap-for-9.4
+(define-public ghc-happy-bootstrap-for-9.4
   (hidden-package
     (package
      (name "ghc-happy")
diff --git a/gnu/packages/image-processing.scm 
b/gnu/packages/image-processing.scm
index 88debbdc59..f9a307118f 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 John Darrington <[email protected]>
 ;;; Copyright © 2017, 2019, 2022, 2024 Ricardo Wurmus <[email protected]>
-;;; Copyright © 2014, 2021-2023 Ludovic Courtès <[email protected]>
+;;; Copyright © 2014, 2021-2023, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2014 Mark H Weaver <[email protected]>
 ;;; Copyright © 2016 Eric Bavier <[email protected]>
 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <[email protected]>
@@ -1608,7 +1608,7 @@ combine the information contained in both.")
 ;; ITK-SNAP version 4.2.2 and 4.4.0-alpha3 require ITK >= 5.4 and for ITK to
 ;; be built this way.  Note that enabling Python wrapping forces this option
 ;; to ON, so Python wrapping is not enabled for this build.
-(define insight-toolkit-legacy
+(define-public insight-toolkit-legacy
   (hidden-package
    (package/inherit insight-toolkit
      ;; Unfortunately we cannot remove the 'python output because it is
diff --git a/gnu/packages/java-bootstrap.scm b/gnu/packages/java-bootstrap.scm
index bb7e006956..32f993496d 100644
--- a/gnu/packages/java-bootstrap.scm
+++ b/gnu/packages/java-bootstrap.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2021 Ricardo Wurmus 
<[email protected]>
-;;; Copyright © 2021 Ludovic Courtès <[email protected]>
+;;; Copyright © 2021, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2017 Leo Famulari <[email protected]>
 ;;; Copyright © 2017, 2022 Marius Bakke <[email protected]>
 ;;; Copyright © 2018, 2020, 2024 Efraim Flashner <[email protected]>
@@ -44,10 +44,7 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages texinfo)
-  #:export (classpath-devel
-            ecj4-javac-wrapper
-            jamvm-with-ecj4
-            ant-bootstrap))
+  #:use-module ((srfi srfi-1) #:select (alist-delete)))
 
 
 ;;;
@@ -75,7 +72,7 @@
 ;; build framework.  We then build the more recent JDK Icedtea 3.x, and all
 ;; other versions of OpenJDK.
 
-(define jikes
+(define-public jikes
   (package
     (name "jikes")
     (version "1.22")
@@ -95,7 +92,7 @@ and binary format defined in The Java Virtual Machine 
Specification.")
     (license license:ibmpl1.0)))
 
 ;; This is the last version of GNU Classpath that can be built without ECJ.
-(define classpath-bootstrap
+(define-public classpath-bootstrap
   (package
     (name "classpath")
     (version "0.93")
@@ -133,12 +130,13 @@ and binary format defined in The Java Virtual Machine 
Specification.")
     (description "GNU Classpath is a project to create core class libraries
 for use with runtimes, compilers and tools for the Java programming
 language.")
+    (properties '((hidden? . #t)))
     ;; GPLv2 or later, with special linking exception.
     (license license:gpl2+)))
 
 ;; This is the last version of JamVM that works with a version of GNU
 ;; classpath that does not require ECJ.
-(define jamvm-1-bootstrap
+(define-public jamvm-1-bootstrap
   (package
     (name "jamvm")
     (version "1.5.1")
@@ -193,9 +191,10 @@ language.")
 specification edition 2 (blue book).  It is extremely small.  However, unlike
 other small VMs it supports the full spec, including object finalisation and
 JNI.")
+    (properties '((hidden? . #t)))
     (license license:gpl2+)))
 
-(define ant-bootstrap
+(define-public ant-bootstrap
   (package
     (name "ant-bootstrap")
     ;; The 1.10.x series requires Java 8.  1.9.0 and later use generics, which
@@ -295,11 +294,12 @@ JNI.")
 make but is implemented using the Java language, requires the Java platform,
 and is best suited to building Java projects.  Ant uses XML to describe the
 build process and its dependencies, whereas Make uses Makefile format.")
+    (properties '((hidden? . #t)))                ;for bootstrapping only
     (license license:asl2.0)))
 
 ;; Version 3.2.2 is the last version without a dependency on a full-fledged
 ;; compiler for Java 1.5.
-(define ecj-bootstrap
+(define-public ecj-bootstrap
   (package
     (name "ecj-bootstrap")
     (version "3.2.2")
@@ -362,9 +362,10 @@ Main-Class: 
org.eclipse.jdt.internal.compiler.batch.Main\n")))
     (description "This package provides the Eclipse Java core batch compiler
 for bootstrapping purposes.  The @dfn{Eclipse compiler for Java} (ecj) is a
 requirement for all GNU Classpath releases after version 0.93.")
+    (properties '((hidden? . #t)))                ;for bootstrapping only
     (license license:epl1.0)))
 
-(define ecj-javac-wrapper
+(define-public ecj-javac-wrapper
   (package (inherit ecj-bootstrap)
     (name "ecj-javac-wrapper")
     (source #f)
@@ -435,7 +436,7 @@ the standard javac executable.")))
 ;; The classpath-bootstrap was built without a virtual machine, so it does not
 ;; provide a wrapper for javah.  We cannot build the development version of
 ;; Classpath without javah.
-(define classpath-0.99
+(define-public classpath-0.99
   (package (inherit classpath-bootstrap)
     (version "0.99")
     (source (origin
@@ -479,7 +480,7 @@ the standard javac executable.")))
 
 ;; We need this because classpath-bootstrap does not provide all of the tools
 ;; we need to build classpath-devel.
-(define classpath-jamvm-wrappers
+(define-public classpath-jamvm-wrappers
   (package (inherit classpath-0.99)
     (name "classpath-jamvm-wrappers")
     (source #f)
@@ -528,7 +529,7 @@ machine.")))
 
 ;; The last release of GNU Classpath is 0.99 and it happened in 2012.  Since
 ;; then Classpath has gained much more support for Java 1.6.
-(define classpath-devel
+(define-public classpath-devel
   (let ((commit "e7c13ee0cf2005206fbec0eca677f8cf66d5a103")
         (revision "1"))
     (package (inherit classpath-bootstrap)
@@ -586,9 +587,11 @@ machine.")))
              pkg-config
              classpath-jamvm-wrappers  ;for javah
              ecj-bootstrap ecj-javac-wrapper fastjar
-             jamvm-1-bootstrap)))))
+             jamvm-1-bootstrap))
+      (properties
+       (alist-delete 'hidden? (package-properties classpath-bootstrap))))))
 
-(define jamvm
+(define-public jamvm
   (package
     (inherit jamvm-1-bootstrap)
     (version "2.0.0")
@@ -621,15 +624,17 @@ machine.")))
                         #$flags)))))
     (inputs (list classpath-devel ecj-javac-wrapper libffi zip zlib))))
 
-(define ecj-javac-wrapper-final
+(define-public ecj-javac-wrapper-final
   (package (inherit ecj-javac-wrapper)
     (native-inputs
-     (list guile-3.0 ecj-bootstrap jamvm classpath-devel))))
+     (list guile-3.0 ecj-bootstrap jamvm classpath-devel))
+    (properties
+     (alist-delete 'hidden? (package-properties ecj-javac-wrapper)))))
 
 ;; We jump ahead by patching the sources of ECJ 4.2.1 so that our bootstrap
 ;; JDK can build it.  ECJ 4 allows us to skip the build of the first version
 ;; of icedtea and build icedtea 2.x directly.
-(define ecj4-bootstrap
+(define-public ecj4-bootstrap
   (package
     (name "ecj-bootstrap")
     (version "4.2.1")
@@ -715,18 +720,21 @@ Main-Class: 
org.eclipse.jdt.internal.compiler.batch.Main\n")))
 for bootstrapping purposes.  The @dfn{Eclipse compiler for Java} (ecj) is a
 requirement for all GNU Classpath releases after version 0.93.  This version
 supports sufficient parts of Java 7 to build Icedtea 2.x.")
+    (properties '((hidden? . #t)))            ;for bootstrapping purposes only
     (license license:epl1.0)))
 
-(define ecj4-javac-wrapper
+(define-public ecj4-javac-wrapper
   (package
     (inherit ecj-javac-wrapper)
     (native-inputs
      (list guile-3.0 ecj4-bootstrap jamvm classpath-devel))))
 
-(define jamvm-with-ecj4
+(define-public jamvm-with-ecj4
   (package
     (inherit jamvm)
     (inputs
      (modify-inputs (package-inputs jamvm)
-       (replace "ecj-javac-wrapper" ecj4-javac-wrapper)))))
+       (replace "ecj-javac-wrapper" ecj4-javac-wrapper)))
+    (properties
+     (alist-delete 'hidden? (package-properties jamvm)))))
 
diff --git a/gnu/packages/java-xml.scm b/gnu/packages/java-xml.scm
index 97d315f138..3523eb33b2 100644
--- a/gnu/packages/java-xml.scm
+++ b/gnu/packages/java-xml.scm
@@ -38,7 +38,8 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system ant)
-  #:use-module (guix utils))
+  #:use-module (guix utils)
+  #:use-module ((srfi srfi-1) #:select (alist-delete)))
 
 (define-public java-jericho-html
   (package
@@ -203,7 +204,7 @@ in a number of formats:
 
 ;; Jaxen requires java-dom4j and java-xom that in turn require jaxen.
 ;; This package is a bootstrap version without dependencies on dom4j and xom.
-(define java-jaxen-bootstrap
+(define-public java-jaxen-bootstrap
   (package
     (name "java-jaxen-bootstrap")
     (version "1.1.6")
@@ -236,6 +237,7 @@ to many different object models, including DOM, XOM, dom4j, 
and JDOM.  It is
 also possible to write adapters that treat non-XML trees such as compiled
 Java byte code or Java beans as XML, thus enabling you to query these trees
 with XPath too.")
+    (properties '((hidden? . #t)))            ;for bootstrapping purposes only
     (license license:bsd-3)))
 
 (define-public java-jaxen
@@ -247,7 +249,9 @@ with XPath too.")
       '(#:phases)  ;; remove any phases added by java-jaxen-bootstrap
       (package-arguments java-jaxen-bootstrap)))
     (inputs
-     (list java-jdom java-xom java-dom4j))))
+     (list java-jdom java-xom java-dom4j))
+    (properties
+     (alist-delete 'hidden? (package-properties java-jaxen-bootstrap)))))
 
 (define-public java-xom
   (package
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 76d907826f..338d8799f4 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3884,7 +3884,7 @@ mechanism of Java.  It is especially useful for dynamic 
loading of application
 components.")
     (license license:asl2.0)))
 
-(define java-plexus-container-default-bootstrap
+(define-public java-plexus-container-default-bootstrap
   (package
     (name "java-plexus-container-default-bootstrap")
     (version "2.1.0")
@@ -3932,6 +3932,7 @@ components.")
     (description "Plexus-default-container is Plexus' inversion-of-control
 (@dfn{IoC}) container.  It is composed of its public API and its default
 implementation.")
+    (properties '((hidden? . #t)))            ;for bootstrapping purposes only
     (license license:asl2.0)))
 
 (define java-plexus-containers-parent-pom
@@ -4102,7 +4103,11 @@ archives (jar).")
        ("guava" ,java-guava)))
     (native-inputs
      `(("archiver" ,java-plexus-archiver)
-       ("hamcrest" ,java-hamcrest-core)))))
+       ("hamcrest" ,java-hamcrest-core)))
+    (properties
+     (alist-delete
+      'hidden?
+      (package-properties java-plexus-container-default-bootstrap)))))
 
 (define-public java-plexus-component-annotations
   (package
@@ -8489,7 +8494,7 @@ StringTemplate also powers ANTLR.")
        ("java-stringtemplate" ,java-stringtemplate-3)
        ("java-junit" ,java-junit)))))
 
-(define java-stringtemplate-4.0.6
+(define-public java-stringtemplate-4.0.6
   (package (inherit java-stringtemplate)
     (name "java-stringtemplate")
     (version "4.0.6")
@@ -8610,7 +8615,7 @@ C++, or Python actions.  ANTLR provides excellent support 
for tree construction,
 tree walking, and translation.")
     (license license:bsd-3)))
 
-(define antlr3-bootstrap
+(define-public antlr3-bootstrap
   (package
     (inherit antlr3)
     (name "antlr3-bootstrap")
@@ -8618,7 +8623,8 @@ tree walking, and translation.")
      `(("antlr" ,antlr2)
        ("antlr3" ,antlr3-3.3)))
     (inputs
-     `(("junit" ,java-junit)))))
+     `(("junit" ,java-junit)))
+    (properties '((hidden? . #t)))))          ;for bootstrapping purposes only
 
 (define-public antlr3-3.3
   (package
@@ -8712,7 +8718,8 @@ import org.antlr.grammar.v2.ANTLRTreePrinter;"))
      `(("junit" ,java-junit)))
     (propagated-inputs
      `(("java-stringtemplate" ,java-stringtemplate-3)
-       ("antlr" ,antlr2)))))
+       ("antlr" ,antlr2)))
+    (properties (alist-delete 'hidden? (package-properties antlr3)))))
 
 (define-public antlr3-3.1
   (package
@@ -9193,7 +9200,7 @@ the runtime library of ANTLR.")))
 ;; So, we build the runtime with antlr 4.1, with a broken xml lexer, that we
 ;; use to build antlr4.  We then re-use this antlr4 to build the runtime, and
 ;; the proper, working, runtime to build antlr4 again.
-(define java-tunnelvisionlabs-antlr4-runtime-bootstrap
+(define-public java-tunnelvisionlabs-antlr4-runtime-bootstrap
   (package
     (inherit java-antlr4-runtime)
     (name "java-tunnelvisionlabs-antlr4-runtime")
@@ -9224,9 +9231,10 @@ the runtime library of ANTLR.")))
     (native-inputs
      `(("antlr4" ,antlr4-4.1)
        ("java-tunnelvisionlabs-antlr4-runtime-annotations"
-        ,java-tunnelvisionlabs-antlr4-runtime-annotations)))))
+        ,java-tunnelvisionlabs-antlr4-runtime-annotations)))
+    (properties '((hidden? . #t)))))          ;for bootstrapping purposes only
 
-(define java-tunnelvisionlabs-antlr4-bootstrap
+(define-public java-tunnelvisionlabs-antlr4-bootstrap
   (package
     (inherit antlr4)
     (name "java-tunnelvisionlabs-antlr4")
@@ -9252,7 +9260,8 @@ the runtime library of ANTLR.")))
        ("java-jsonp-api" ,java-jsonp-api)
        ("java-stringtemplate" ,java-stringtemplate)
        ("java-treelayout" ,java-treelayout)
-       ("openjdk" ,openjdk)))))
+       ("openjdk" ,openjdk)))
+    (properties '((hidden? . #t)))))          ;for bootstrapping purposes only
 
 (define-public java-tunnelvisionlabs-antlr4-runtime
   (package
@@ -9260,7 +9269,12 @@ the runtime library of ANTLR.")))
     (native-inputs
       (alist-replace
         "antlr4" (list java-tunnelvisionlabs-antlr4-bootstrap)
-        (package-native-inputs 
java-tunnelvisionlabs-antlr4-runtime-bootstrap)))))
+        (package-native-inputs
+         java-tunnelvisionlabs-antlr4-runtime-bootstrap)))
+    (properties
+     (alist-delete
+      'hidden?
+      (package-properties java-tunnelvisionlabs-antlr4-runtime-bootstrap)))))
 
 (define-public java-tunnelvisionlabs-antlr4
   (package
@@ -9268,7 +9282,11 @@ the runtime library of ANTLR.")))
     (inputs
       (alist-replace
         "java-antlr4-runtime" (list java-tunnelvisionlabs-antlr4-runtime)
-        (package-inputs java-tunnelvisionlabs-antlr4-bootstrap)))))
+        (package-inputs java-tunnelvisionlabs-antlr4-bootstrap)))
+    (properties
+     (alist-delete
+      'hidden?
+      (package-properties java-tunnelvisionlabs-antlr4-bootstrap)))))
 
 (define-public java-commons-cli-1.2
   ;; This is a bootstrap dependency for Maven2.
@@ -12169,7 +12187,7 @@ outputting XML data from Java code.")
 and graphs of objects for dependency injection frameworks")
     (license license:asl2.0)))
 
-(define java-geronimo-genesis-2.1
+(define-public java-geronimo-genesis-2.1
   (package
     (name "java-geronimo-genesis")
     (version "2.1")
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index 583c8bdc4b..e3a883e60d 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -37,7 +37,8 @@
   #:use-module (gnu packages ruby-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages version-control)
-  #:use-module (guix build-system ruby))
+  #:use-module (guix build-system ruby)
+  #:use-module ((srfi srfi-1) #:select (alist-delete)))
 
 (define %ruby-rails-version "7.2.2.1")
 
@@ -856,7 +857,7 @@ pattern.  Including support for multipart email and 
attachments.")
 
 ;; A variant where the ruby-rspec-rails dependency purposefully omitted to
 ;; avoid a dependency cycle with that same package.
-(define ruby-ammeter-bootstrap
+(define-public ruby-ammeter-bootstrap
   (package
     (name "ruby-ammeter-bootstrap")
     (version "1.1.7")
@@ -884,6 +885,7 @@ pattern.  Including support for multipart email and 
attachments.")
 Rails generators.  An existing user is @code{rspec-rails}, which uses
 @code{ammeter} to spec its own generators.")
     (home-page "https://github.com/alexrothenberg/ammeter";)
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public ruby-ammeter
@@ -894,7 +896,9 @@ Rails generators.  An existing user is @code{rspec-rails}, 
which uses
     (arguments (list #:tests? #f))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs ruby-ammeter-bootstrap)
-       (append ruby-rspec-rails)))))
+       (append ruby-rspec-rails)))
+    (properties
+     (alist-delete 'hidden? (package-properties ruby-ammeter-bootstrap)))))
 
 (define-public ruby-bootsnap
   (package
diff --git a/gnu/packages/ruby-check.scm b/gnu/packages/ruby-check.scm
index d4034e3a82..6d2c8aaf3f 100644
--- a/gnu/packages/ruby-check.scm
+++ b/gnu/packages/ruby-check.scm
@@ -20,7 +20,7 @@
 ;;; Copyright © 2020 Nicolas Goaziou <[email protected]>
 ;;; Copyright © 2021 EuAndreh <[email protected]>
 ;;; Copyright © 2021 Giacomo Leidi <[email protected]>
-;;; Copyright © 2021 Ludovic Courtès <[email protected]>
+;;; Copyright © 2021, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2021 Mathieu Othacehe <[email protected]>
 ;;; Copyright © 2022, 2024 Danny Milosavljevic <[email protected]>
 ;;; Copyright © 2022 Maxime Devos <[email protected]>
@@ -211,12 +211,13 @@ Cucumber implementation's support for the Cucumber 
Messages protocol.")
     (license license:expat)))
 
 ;;; Variant package to break a cycle with ruby-cucumber-messages.
-(define ruby-cucumber-compatibility-kit-bootstrap
+(define-public ruby-cucumber-compatibility-kit-bootstrap
   (package/inherit ruby-cucumber-compatibility-kit
     (arguments (list #:tests? #f))
     (propagated-inputs (modify-inputs (package-propagated-inputs
                                        ruby-cucumber-compatibility-kit)
-                         (delete "ruby-cucumber-messages")))))
+                         (delete "ruby-cucumber-messages")))
+    (properties '((hidden? . #t)))))
 
 (define-public ruby-cucumber-core
   (package
diff --git a/gnu/packages/ruby-xyz.scm b/gnu/packages/ruby-xyz.scm
index 825fb13219..81b4d0cc0e 100644
--- a/gnu/packages/ruby-xyz.scm
+++ b/gnu/packages/ruby-xyz.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Pjotr Prins <[email protected]>
-;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès <[email protected]>
+;;; Copyright © 2014-2017, 2021-2022, 2024, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]>
 ;;; Copyright © 2014, 2015 David Thompson <[email protected]>
 ;;; Copyright © 2015, 2019 Ricardo Wurmus <[email protected]>
@@ -110,7 +110,8 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages web)
   #:use-module (gnu packages ruby)
-  #:use-module (gnu packages ruby-check))
+  #:use-module (gnu packages ruby-check)
+  #:use-module ((srfi srfi-1) #:select (alist-delete)))
 
 (define %prawn-project-licenses
   ;; This set of licenses applies to most (all?) components of the Prawn
@@ -596,14 +597,15 @@ subject.")
     (home-page "https://github.com/pboling/rspec-block_is_expected";)
     (license license:expat)))
 
-(define ruby-rspec-block-is-expected-bootstrap
+(define-public ruby-rspec-block-is-expected-bootstrap
   (package/inherit ruby-rspec-block-is-expected
     (arguments
      (substitute-keyword-arguments
          (package-arguments ruby-rspec-block-is-expected)
        ((#:tests? tests? #t)
         #f)))
-    (native-inputs '())))
+    (native-inputs '())
+    (properties '((hidden? . #t)))))
 
 (define-public ruby-rspec-pending-for
   (package
@@ -1600,7 +1602,7 @@ logic.")
     (license license:expat)))
 
 ;;; A minimal variant used to build ruby-rubocop itself.
-(define ruby-rubocop-capybara-minimal
+(define-public ruby-rubocop-capybara-minimal
   (package
     (name "ruby-rubocop-capybara")
     (version "2.21.0")
@@ -1619,6 +1621,7 @@ logic.")
     (description "This package provides a RuboCop plugin that can be used for
 code style checking of Capybara test files (RSpec, Cucumber, Minitest).")
     (home-page "https://github.com/rubocop/rubocop-capybara";)
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public ruby-rubocop-capybara
@@ -1643,7 +1646,10 @@ code style checking of Capybara test files (RSpec, 
Cucumber, Minitest).")
            ruby-rubocop-rake-minimal
            ruby-rubocop-rspec-minimal
            ruby-simplecov
-           ruby-yard))))
+           ruby-yard))
+    (properties
+     (alist-delete 'hidden?
+                   (package-properties ruby-rubocop-capybara-minimal)))))
 
 (define-public ruby-rubocop-factory-bot
   (package
@@ -1665,7 +1671,7 @@ enforcing & linting tool for @code{factory_bot} files.")
     (license license:expat)))
 
 ;;; A minimal variant used to build ruby-rubocop itself.
-(define ruby-rubocop-rake-minimal
+(define-public ruby-rubocop-rake-minimal
   (package
     (name "ruby-rubocop-rake")
     (version "0.6.0")
@@ -1683,6 +1689,7 @@ enforcing & linting tool for @code{factory_bot} files.")
     (synopsis "RuboCop plugin for Rake")
     (description "This package provides a RuboCop plugin for Rake.")
     (home-page "https://github.com/rubocop/rubocop-rake";)
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public ruby-rubocop-rake
@@ -1696,10 +1703,12 @@ enforcing & linting tool for @code{factory_bot} files.")
            ruby-rubocop
            ruby-rubocop-rspec))
     (propagated-inputs
-     (list ruby-rubocop))))
+     (list ruby-rubocop))
+    (properties
+     (alist-delete 'hidden? (package-properties ruby-rubocop-rake-minimal)))))
 
 ;;; A minimal variant used to build ruby-rubocop itself.
-(define ruby-rubocop-rspec-minimal
+(define-public ruby-rubocop-rspec-minimal
   (package
     (name "ruby-rubocop-rspec")
     (version "2.26.0")
@@ -1727,6 +1736,7 @@ enforcing & linting tool for @code{factory_bot} files.")
     (description "This package provides a plugin for the RuboCop code style
 enforcing & linting tool.")
     (home-page "https://github.com/rubocop/rubocop-rspec";)
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public ruby-rubocop-rspec
@@ -1749,7 +1759,9 @@ enforcing & linting tool.")
      (list ruby-rubocop
            ruby-rubocop-ast
            ruby-rubocop-capybara
-           ruby-rubocop-factory-bot))))
+           ruby-rubocop-factory-bot))
+    (properties
+     (alist-delete 'hidden? (package-properties ruby-rubocop-rspec-minimal)))))
 
 (define-public ruby-rubocop-packaging
   (package
@@ -9811,12 +9823,13 @@ software development workflow.")
     (home-page "https://cucumber.io/";)
     (license license:expat)))
 
-(define ruby-cucumber-without-tests
+(define-public ruby-cucumber-without-tests
   (package (inherit ruby-cucumber)
     (arguments
      '(#:tests? #f))
     (native-inputs
-     '())))
+     '())
+    (properties '((hidden? . #t)))))
 
 (define-public ruby-covered
   (package
@@ -13847,7 +13860,7 @@ to load dynamic content on storefronts.")
 
 ;;; This variant is purposefully incomplete, lacking ruby-liquid so that it
 ;;; can be used for ruby-liquid's test suite.
-(define ruby-liquid-c-bootstrap
+(define-public ruby-liquid-c-bootstrap
   (package
     (name "ruby-liquid-c-bootstrap")
     (version "4.2.0")
@@ -13864,6 +13877,7 @@ to load dynamic content on storefronts.")
     (description "This package provides a Partial native implementation of the
 liquid ruby gem in C that makes it operate about three times faster.")
     (home-page "https://github.com/shopify/liquid-c";)
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public ruby-liquid-c
@@ -13906,7 +13920,9 @@ RubyMemcheck.config(binary_name: 
\"liquid_c.so\")"))))))))
            ruby-spy
            ruby-stackprof))
     (propagated-inputs
-     (list ruby-liquid))))
+     (list ruby-liquid))
+    (properties
+     (alist-delete 'hidden? (package-properties ruby-liquid-c-bootstrap)))))
 
 (define-public ruby-localhost
   (package
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 1dfb2ddfaf..29a9f7a870 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014 Andreas Enge <[email protected]>
 ;;; Copyright © 2014, 2015, 2017, 2018, 2020 Mark H Weaver <[email protected]>
 ;;; Copyright © 2014, 2015 Eric Bavier <[email protected]>
-;;; Copyright © 2015-2022 Ludovic Courtès <[email protected]>
+;;; Copyright © 2015-2022, 2026 Ludovic Courtès <[email protected]>
 ;;; Copyright © 2015 Eric Dvorsak <[email protected]>
 ;;; Copyright © 2016 Mathieu Lirzin <[email protected]>
 ;;; Copyright © 2015 Cyrill Schenkel <[email protected]>
@@ -1703,7 +1703,7 @@ mechanism than copying the contents of the source 
pixmap.")
 network-transparent printing system.")
     (license license:x11)))
 
-(define xcffibgen
+(define-public xcffibgen
   (package
     (name "xcffibgen")
     (version "1.4.0")
@@ -1734,6 +1734,7 @@ network-transparent printing system.")
     (description
      "This is an internal package that provides a build tool to
 generate code for the @code{python-xcbffib} package.")
+    (properties '((hidden? . #t)))                ;it's an internal package
     (license license:expat)))
 
 (define-public python-xcffib

Reply via email to