aboutsummaryrefslogtreecommitdiff
-*- mode: org; coding: utf-8; -*-

#+TITLE: Tentative GNU Guix Road Map

Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

The goals of the GNU Guix project are two-fold:

  - to build a purely functional package manager, based on Nix and
    Guile;

  - to use it to build a practical 100% free software distribution of
    GNU/Linux and possibly other GNU variants, with a focus on the
    promotion and tight integration of GNU components–the GNU system.

Since its inception, the project has gone a long way towards that goal.  Below
is a list of items we want for version "1.0" of the Guix System Distribution.
There will be a few 0.x releases by then to give the new features more
exposure and testing.

You're welcome to discuss this road map on guix-devel@gnu.org or #guix on
the Libera Chat IRC network!

* Features scheduled for 1.0

  - larger & more robust build farm
    + we need a powerful, dedicated front-end
    + armhf-linux build machine
    + leave Hydra in favor of 'guix publish' + custom code?
  - more OS features
    + LVM support
    + encrypted root
    + configurable name service switch
    + whole-system unit tests, using VMs
  - more service definitions
    + mcron, postfix(?), wicd(?), etc.
  - better 'guix system'
    + 'reconfigure' should be able to restart non-essential services
    + support for '--list-generations' and '--delete-generations'
  - better 'guix pull'
    + using Git to fetch the source instead of re-downloading everything
    + build more quickly
    + install new .mo files and new manual
    + authentication of the Guix source: use signed commits?
  - simplified, purely declarative service list in 'operating-system'
    + it should be possible to inspect the service instance declarations and
      settings
  - GUIs
    + integrate guix-web?
    + guile-ncurses installer?
  - 'guix publish'?

* Features for later

  - complete GNU/Hurd port
  - use content-based addressing when downloading substitutes to reduce
    bandwidth requirements
    + design nar v2 format where file contents are replaced by their hashes
    + leverage /gnu/store/.links
  - binary origin tracking
    + keep signatures in sqlite.db
    + preserve signatures upon import/export
  - peer-to-peer distribution of updates (GNUnet?)
  - more deterministic builds
    + identify & fix sources of non-determinism in builds
    + strengthen guix-daemon containers to further increase reproducibility
    + trusting-trust: bootstrap with different tool chains
    + fixed-point: re-bootstrap until fixed point is reached
    + distributed validation: compare contents of store items with others
      * resist a hydra.gnu.org compromise
  - reproducible containers: mix of 'guix environment' and 'guix system vm'
  - execute code with least privilege
    + build containers like guix-daemon does
    + provide a Plash-like interface in Bash
  - daemon rewritten in Guile
  - more shepherd integration
    + monitor network interfaces and start/stop events based on that
    + include a DHCP client written in Scheme
missing input.Efraim Flashner * gnu/packages/freedesktop.scm (udisks)[inputs]: Add kmod. Change-Id: I0c0d81d52100888ea043f863a5650654a25de4a9 2024-08-31gnu: ed: Update to 1.20.1.Andy Tai * gnu/packages/text-editors.scm (ed): Update to 1.20.1. Reviewed-by: Dale Mellor <guix-devel-0brg6a@rdmp.org> Change-Id: I58ba1c8213a5ac2a126ecb58321859d64d0fcb01 Signed-off-by: Christopher Baines <mail@cbaines.net> 2024-08-31gnu: enchant: Update to 2.6.9.Nicolas Goaziou * gnu/packages/enchant.scm (enchant): Update to 2.6.9. Change-Id: I7d5f229b0308e7a09101df0b8af344e03f2bbdbb 2024-08-31gnu: enchant: Add Nuspell support.Nicolas Goaziou * gnu/packages/enchant.scm (enchant)[inputs]: Add NUSPELL. Change-Id: I60d70e6b6e4952722559848f715fc68dcf3e11f4 Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> 2024-08-31gnu: enchant: Improve package style.Nicolas Goaziou * gnu/packages/enchant.scm (enchant)[arguments]: Use G-expressions. [native-inputs]: Drop input labels. [description]: Be more informative and less technical. Change-Id: I908fbbfcdc9f21beb1d6e05eec2dbc154b429831 Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> 2024-08-31gnu: enchant: Update to 2.6.8.Nicolas Goaziou * gnu/packages/enchant.scm (enchant): Update to 2.6.8. [native-inputs]: Add GROFF. Change-Id: I8c7d7e2b9124a55401c6623fd76eacc0878ad6e6 Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> 2024-08-31gnu: unittest-cpp: Fix "Version" setting in ".pc" file.Nicolas Goaziou * gnu/packages/check.scm (unittest-cpp)[arguments]<#:configure-flags>: Add Provide a "Version" value in ".pc" file for pkg-config checks. Change-Id: I934ef3d83d50876be8ab157ba52d8812ed33ba2e Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> 2024-08-31gnu: sdl: Replace with sdl12-compat.宋文武 * gnu/packages/sdl.scm (sdl12-compat): New package. (sdl): Remove package, defined as sdl12-compat. (sdl2): Don't inherit from sdl. (propagated-inputs-with-sdl2): Add case for sdl12-compat. * gnu/packages/patches/sdl-libx11-1.6.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Unregister it. Change-Id: I843d349b3d69164cc640c7db204464a51819a0df Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> 2024-08-31gnu: cairo: Remove labels and use gexps.Maxim Cournoyer * gnu/packages/gtk.scm (cairo) [arguments] <configure-flags>: Use gexps. [native-inputs, inputs]: Remove labels. Change-Id: Ifc4d9435bc1e203ee4427452ad26dedbac2de9fc 2024-08-31gnu: curl: Update to 8.6.0.Maxim Cournoyer * gnu/packages/curl.scm (curl): Update to 8.6.0. [inputs]: Add libpsl. Change-Id: I83550b235ec98630262075c243029053decda867 2024-08-31gnu: curl: Re-order fields.Maxim Cournoyer * gnu/packages/curl.scm (curl): Order the fields in the more customary ordering. Change-Id: I7caa3c4d27668a29375166e5553ffc4112c85783 2024-08-31gnu: curl: Do not run known flaky tests.Maxim Cournoyer * gnu/packages/curl.scm (curl) [arguments]: Specify the "test-nonflaky" as the test target. Change-Id: I219b72c3b16b53ff6e469716eed0699ba88e29e1 2024-08-31gnu: perl-gd: Update to 2.78.Maxim Cournoyer * gnu/packages/gd.scm (perl-gd): Update to 2.78. [native-inputs]: Add perl-test-nowarnings. Change-Id: I13e961bc6f6c77484dc698619338e083bbb5b7aa 2024-08-31gnu: glibc-2.33: Use gexps to fix build.Maxim Cournoyer * gnu/packages/base.scm (glibc-2.33) [arguments]: Use gexps to resolve a build error. Change-Id: I3916360beb7016f2e03528ecfb1a31186cc5d6e2 2024-08-31gnu: alsa-utils: Fix source URL.Maxim Cournoyer * gnu/packages/linux.scm (alsa-utils) [source]: Fix URL. Change-Id: I301319a5b204836ae5f4b7cea471c923ac04bb97 2024-08-31gnu: kmod: Modernize.Maxim Cournoyer * gnu/packages/linux.scm (kmod) [native-inputs, inputs]: Remove labels. [arguments]: Use gexps, remove trailing #t. Change-Id: If40e25d38c5b4ac3cb192a76d688834069278c9d 2024-08-31gnu: screen: Add libxcrypt dependency.Janneke Nieuwenhuizen * gnu/packages/screen.scm (screen)[inputs]: Add libxcrypt. Change-Id: Ia8b7fce24603a038a52d57ef7177f588b66e006e 2024-08-31gnu: cryptsetup: Only use ruby-asciidoctor on supported systems.Efraim Flashner * gnu/packages/cryptsetup.scm (cryptsetup)[native-inputs]: Only use ruby-asciidoctor on supported systems. [arguments]: When building without ruby-asciidoctor adjust the configure-flags. Change-Id: If4551833de3c5b5a28424c059644e9fa7fda5abd 2024-08-31gnu: inkscape: Fix Python support.Maxim Cournoyer * gnu/packages/inkscape.scm (inkscape/stable) [phases]: Wrap with PATH and GI_TYPELIB_PATH. [inputs]: Sort inputs. Add python-appdirs, python-cssselect, python-pygobject and python-requests. (inkscape) [inputs]: Do not append python-cssselect. Fixes: https://issues.guix.gnu.org/63938 Change-Id: I90a39a04a35dbcafe413726107d100c78d173fd0 2024-08-31gnu: inkscape: Sort inputs.Maxim Cournoyer * gnu/packages/inkscape.scm (inkscape/stable) [inputs]: Sort. [native-inputs]: Likewise. Change-Id: I64253e52bf157013e6c55361f7633cbd01dcb020 2024-08-31gnu: inkscape: Update to 1.3.2.Maxim Cournoyer * gnu/packages/inkscape.scm (inkscape/stable): Update to 1.3.2. Remove patches. [configure-flags]: Add CMAKE_CXX_FLAGS flag. [phases] Remove obsolete patch-icon-cache-generator, disable-latex-export-tests and disable-vertical-glyph-tests phases. Add disable-problematic-tests phase. Override check phase to disable a few test failures caused by the lack of imagemagick. [inputs]: Add gspell and readline. Remove aspell and gtkspell3. (inkscape): Update to 1.3.2. [phases]: Reset the check phase to the original. * gnu/packages/patches/inkscape-poppler-compat.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. Change-Id: I391fb42db8d93a9cdc83e6fd62ca90f7458b5c49 2024-08-31gnu: lib2geom: Use gexps and remove input labels.Maxim Cournoyer * gnu/packages/graphics.scm (lib2geom) [arguments]: Use gexps. Add #:modules argument. [native-inputs, inputs, propagated-inputs]: Remove labels. Change-Id: Ia61ff5e8aa1f64231c98b1fb7f31a49513ede7f8 2024-08-31gnu: inkscape: Truly enable ImageMagic support.Maxim Cournoyer This was commented out for testing and erroneously committed in commit b4a6b1ba93844d7373c58237cb0b742352dec954 ("gnu: inkscape/stable: Build stable variant without imagemagick support."). * gnu/packages/inkscape.scm (inkscape) [configure-flags]: Delete inherited "-DWITH_IMAGE_MAGICK=OFF" flag. Change-Id: I6d616a5bfc40c9ebef65aceb711c6541a523bad8 2024-08-31gnu: lib2geom: Update to 1.3.Maxim Cournoyer * gnu/packages/graphics.scm (lib2geom): Update to 1.3. Change-Id: Icac0c5674e39709ac85880ad7b22149b8fe30806 2024-08-31gnu: gd: Update to 2.3.3.Maxim Cournoyer * gnu/packages/gd.scm (gd): Update to 2.3.3. [source]: Remove obsolete gd-Revert-fix-303-gdlib.pc.patch patch. [arguments] Use gexps. <phases>: Remove disable-failing-test phase. Add remove-libtool-archives phase. * gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. Change-Id: I8cddf29d123ca0b66cc0540666c875039e753482 2024-08-31gnu: autotrace: Update to 0.31.10.Maxim Cournoyer * gnu/packages/graphics.scm (autotrace): Update to 0.31.10. [inputs]: Add pango. Change-Id: I26abf2ee1a2c031062a2cdfa1ac4c02cd7474614 2024-08-31gnu: pstoedit: Update to 4.00.Maxim Cournoyer * gnu/packages/graphics.scm (pstoedit): Update to 4.00. [source]: Apply patches. [arguments]: New field. [inputs]: Remove labels. Add glib and pango. * gnu/packages/patches/pstoedit-fix-gcc12.patch: New file. * gnu/packages/patches/pstoedit-fix-plainC.patch: Likewise. * gnu/packages/patches/pstoedit-pkglibdir.patch: Likewise. * gnu/local.mk (dist_patch_DATA): Register them. Change-Id: Ia17dae0ebc3e08b573b02431b10cc689a72a07dd 2024-08-31gnu: pkgconf: Add $PKG_CONFIG_PATH search path.Maxim Cournoyer * gnu/packages/pkg-config.scm (%pkgconf) [native-search-paths]: Add $PKG_CONFIG_PATH. Change-Id: I6c5c20ca26a3cf21c16eb24747c250ba432a276d 2024-08-31gnu: pkgconf: Enable test suite.Maxim Cournoyer * gnu/packages/pkg-config.scm (pkgconf) [arguments]: Remove #:tests? argument. Add a set-HOME phase. [native-inputs]: Add atf and kyua. Change-Id: I28410d7486ab45cf1cbc6d306345fb85f0b9d7fc 2024-08-31gnu: Add kyua.Maxim Cournoyer * gnu/packages/check.scm (kyua): New variable. Change-Id: Ic3a74a27c05b099bef6acfb4e0c96d2ee3defc31 2024-08-31gnu: Add lutok.Maxim Cournoyer * gnu/packages/lua.scm (lutok): New variable. Change-Id: I595b26c601c8ca8c997c86e8f8eb17fbe363a038 2024-08-31gnu: Add atf.Maxim Cournoyer * gnu/packages/check.scm (atf): New variable. * gnu/packages/patches/atf-execute-with-shell.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: I37a57069380309382bc0ff24977a1fd165985f5e 2024-08-31gnu: ld-wrapper: Also unset GUILE_LOAD_PATH.Maxim Cournoyer The following problem was discovered while attempting to configure Guix to use a locally built Guile tree, via its meta/uninstalled-env script, which would attempt to use the newer Guile source files and fail with: Pre-boot error; key: unbound-variable, args: (#f "Unbound variable: ~S" (error) #f)collect2: fatal error: ld terminated with signal 6 [Aborted] With the following change, a Guix user may now configure their build to use a locally built Guile with e.g.: ~/src/guile/meta/uninstalled-env ./configure --localstatedir=/var \ --sysconfdir=/etc * gnu/packages/ld-wrapper.in: Unset GUILE_LOAD_PATH. Also unset GUILE_SYSTEM_PATH, for symmetry. Streamline exec call, using the now fixed '-l' option. (ld-wrapper): Fix args being a nested list, and strip its arg0. Series-to: 69396@debbugs.gnu.org Series-postfix: core-updates Series-version: 2 Series-changes: 2 - Revert to load-compiled scheme to load ld.go - Refine comment Change-Id: Iaaa721019f3646d851202bb018214ec9fcc04fd4 2024-08-31gnu: alsa-ucm-conf: Update to 1.2.11.Roman Scherer * gnu/packages/linux.scm (alsa-ucm-conf): Update to 1.2.11. Change-Id: Ibec86363e7181bb9de938eae4a58ea8927474009 2024-08-31gnu: perl-inline-c: Update to 0.82_001.Josselin Poiret * gnu/packages/perl.scm (perl-inline-c): Update to 0.82_001. Change-Id: I1a9e141e6e6af45db785a2a0c4220417b96c3c64 2024-08-31gnu: glibc: Fix locpath patches.Josselin Poiret * gnu/packages/patches/glibc-2.37-versioned-locpath.patch: * gnu/packages/patches/glibc-versioned-locpath.patch: Unconditionally add the system default locale directory. Also clean up argz list use. Change-Id: I8de5544b2382ee9b17d41ad2cfe940de804c47dd 2024-08-31gnu: date: Fix build with newer tzdata.Josselin Poiret * gnu/packages/patches/date-ignore-zonenow.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/calendar.scm (date): Use it. Change-Id: I29bdfb49237650706abd870f2b9875739d12c6d5 2024-08-31gnu: libdisplay-info: Refer to full hwdata package.Josselin Poiret * gnu/packages/wm.scm (libdisplay-info): Refer to full hwdata package. Change-Id: I9ce655e33e35a5caee2932317c2fc95c433c6471 2024-08-31gnu: android-libselinux: Fix inexistant phase name.Josselin Poiret * gnu/packages/android.scm (android-libselinux): Fix inexistant phase name. Change-Id: Ia0afb0d4ef9cf05300366db3a5d5c0e6657450f4 2024-08-31gnu: clang: Fix build with libcrypt-less glibc.Josselin Poiret * gnu/packages/patches/clang-13-remove-crypt-interceptors.patch * gnu/packages/patches/clang-14-remove-crypt-interceptors.patch * gnu/packages/patches/clang-16-remove-crypt-interceptors.patch: New patches. * gnu/local.mk (dist_patch_DATA): Register them. * gnu/packages/llvm.scm (%llvm-patches, clang-runtime-13): Use them. Change-Id: Idcc82313f1a39710aa91fb577144321372a3af47 2024-08-31gnu: gcc-6: Fix libsanitizer build.Josselin Poiret * gnu/packages/gcc.scm (gcc-6, gcc-5): Also apply gcc-7's libsanitizer patch. Change-Id: I2f5699480574721dc32389b7c2c3c45043d28b51 2024-08-31gnu: glibc-for-bootstrap: Adapt patch for glibc 2.39.Josselin Poiret * gnu/packages/patches/glibc-2.39-bootstrap-system.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/make-bootstrap.scm (glibc-for-bootstrap): Use it for glibc 2.39. Change-Id: I96761a0bc011af13d861bfece32d96db160f7686 2024-08-31gnu: xlockmore: Add libxcrypt dependency.Josselin Poiret * gnu/packages/xdisorg.scm (xlockmore): Add libxcrypt dependency. Change-Id: Idfaed843b40db41b3c7c64cbb32765cefc28238e 2024-08-31gnu: libxcrypt: Build from tarball.Josselin Poiret * gnu/packages/crypto.scm (libxcrypt): Switch to url-fetch as it is now a transitive dependency of git-minimal. Because we're building from a tarball, remove autotools and pkg-config dependencies. Change-Id: I6479db1efe325bbdd109e4db051096d6345ad6a1