aboutsummaryrefslogtreecommitdiff
-*- mode: org -*-

This is [[https://koszko.org/koszko.html][Wojtek]]'s Guix fork.  It serves as a home for personal modifications
and additions that for some reason aren't in upstream Guix.  These may include
package and service definitions, as well as changes to Guix itself.  You're
free to clone this repository and use it for your own needs.  But if you
choose to do so, please be ready to deal with some peculiarities.

- The tip this repository is intended to be frequently rebased on top of
  upstream Guix so expect ~git pull~ to complain.
- As a result of the rebasing approach, the ~--allow-downgrades~ flag has to
  be used when running ~guix pull~ or ~guix (system|home) reconfigure~.
- As another result of the rebasing approach, there's no PGP authorization (it
  would not be possible to provide it reliably).  The =.guix-authorizations=
  file is removed by one of the tip commits to remove the warning from ~guix
  pull~.
- If you don't know what all this means, this is probably not for you.  Try
  [[https://guix.gnu.org/][upstream Guix]] instead :)

Feel free to look into the ~koszko-scripts~ branch to see the scripts I am
using to maintain this thing.  Note they might prove pretty useless to you.

Wojtek's copyright to his changes to Guix is waived using [[https://creativecommons.org/publicdomain/zero/1.0/legalcode.en][CC0-1.0]].


* The original README introduction

[[https://www.gnu.org/software/guix/][GNU Guix]] (IPA: /ɡiːks/) is a purely functional package manager, and
associated free software distribution, for the [[https://www.gnu.org/gnu/gnu.html][GNU system]].  In addition
to standard package management features, Guix supports transactional
upgrades and roll-backs, unprivileged package management, per-user
profiles, and garbage collection.

It provides [[https://www.gnu.org/software/guile/][Guile]] Scheme APIs, including a high-level embedded
domain-specific languages (EDSLs) to describe how packages are to be
built and composed.

GNU Guix can be used on top of an already-installed GNU/Linux distribution, or
it can be used standalone (we call that “Guix System”).

Guix is based on the [[https://nixos.org/nix/][Nix]] package manager.


* Requirements

If you are building Guix from source, please see the manual for build
instructions and requirements, either by running:

  info -f doc/guix.info "Requirements"

or by checking the [[https://guix.gnu.org/manual/en/html_node/Requirements.html][web copy of the manual]].

* Installation

See the manual for the installation instructions, either by running

  info -f doc/guix.info "Installation"

or by checking the [[https://guix.gnu.org/manual/en/html_node/Installation.html][web copy of the manual]].

* Building from Git

For information on building Guix from a Git checkout, please see the relevant
section in the manual, either by running

  info -f doc/guix.info "Building from Git"

or by checking the [[https://guix.gnu.org/manual/en/html_node/Building-from-Git.html][web_copy of the manual]].

* How It Works

Guix does the high-level preparation of a /derivation/.  A derivation is
the promise of a build; it is stored as a text file under
=/gnu/store/xxx.drv=.  The (guix derivations) module provides the
`derivation' primitive, as well as higher-level wrappers such as
`build-expression->derivation'.

Guix does remote procedure calls (RPCs) to the build daemon (the =guix-daemon=
command), which in turn performs builds and accesses to the store on its
behalf.  The RPCs are implemented in the (guix store) module.

* Contact

GNU Guix is hosted at https://savannah.gnu.org/projects/guix/.

Please email <help-guix@gnu.org> for questions and <bug-guix@gnu.org> for bug
reports; email <gnu-system-discuss@gnu.org> for general issues regarding the
GNU system.

Join #guix on irc.libera.chat.

* Guix & Nix

GNU Guix is based on [[https://nixos.org/nix/][the Nix package manager]].  It implements the same
package deployment paradigm, and in fact it reuses some of its code.
Yet, different engineering decisions were made for Guix, as described
below.

Nix is really two things: a package build tool, implemented by a library
and daemon, and a special-purpose programming language.  GNU Guix relies
on the former, but uses Scheme as a replacement for the latter.

Using Scheme instead of a specific language allows us to get all the
features and tooling that come with Guile (compiler, debugger, REPL,
Unicode, libraries, etc.)  And it means that we have a general-purpose
language, on top of which we can have embedded domain-specific languages
(EDSLs), such as the one used to define packages.  This broadens what
can be done in package recipes themselves, and what can be done around them.

Technically, Guix makes remote procedure calls to the ‘nix-worker’
daemon to perform operations on the store.  At the lowest level, Nix
“derivations” represent promises of a build, stored in ‘.drv’ files in
the store.  Guix produces such derivations, which are then interpreted
by the daemon to perform the build.  Thus, Guix derivations can use
derivations produced by Nix (and vice versa).

With Nix and the [[https://nixos.org/nixpkgs][Nixpkgs]] distribution, package composition happens at
the Nix language level, but builders are usually written in Bash.
Conversely, Guix encourages the use of Scheme for both package
composition and builders.  Likewise, the core functionality of Nix is
written in C++ and Perl; Guix relies on some of the original C++ code,
but exposes all the API as Scheme.

* Related software

  - [[https://nixos.org][Nix, Nixpkgs, and NixOS]], functional package manager and associated
    software distribution, are the inspiration of Guix
  - [[https://www.gnu.org/software/stow/][GNU Stow]] builds around the idea of one directory per prefix, and a
    symlink tree to create user environments
  - [[https://www.pvv.ntnu.no/~arnej/store/storedoc_6.html][STORE]] shares the same idea
  - [[https://live.gnome.org/OSTree/][GNOME's OSTree]] allows bootable system images to be built from a
    specified set of packages
  - The [[https://www.gnu.org/s/gsrc/][GNU Source Release Collection]] (GSRC) is a user-land software
    distribution; unlike Guix, it relies on core tools available on the
    host system
ibrewolf....* gnu/packages/librewolf.scm (librewolf): New variable. * gnu/local.mk (dist_patch_DATA): Add it. Change-Id: I98b6410582b856ede83b79637a58e66d6e5832e6 Signed-off-by: Andrew Tropin <andrew@trop.in> Ian Eure 2024-04-11gnu: chez-scheme: Update to 10.0.0....* gnu/packages/patches/chez-scheme-bin-sh.patch: Refresh patch. * gnu/packages/patches/chez-scheme-backport-configure.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/chez.scm (chez-scheme): Update to 10.0.0. Inherit from 'chez-scheme-for-racket'. [source]<patches>: Use "chez-scheme-backport-configure.patch". <snippet>: Also unbundle Zuo. [native-inputs, native-search-paths, outputs, arguments] [supported-systems]: Inherit from 'chez-scheme-for-racket'. [inputs]: Likewise, replacing the bootfile package and adding libx11. [description]: Update based on the User's Guide, release notes, man page, and README file. (chez-scheme-bootstrap-bootfiles)[supported-systems]: All systems are now supported. (chez-scheme-for-system): Return 'chez-scheme', since it now supports all systems. Change-Id: I287ff66f385f20e69c1411abcc94f19dd45870c5 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Philip McGrath 2024-04-11gnu: racket: Update to 8.12....All of Racket's changes to Chez Scheme have been merged upstream. They are the basis for the Chez Scheme 10.0.0 release. For the forseeable future, Racket will continue to depend on a specific pre-release version of Chez Scheme as part of Racket's "ABI": see upstream discussion at <https://racket.discourse.group/t/2739/3>. * gnu/packages/chez.scm (chez-configure): Change to define a phase to run the Chez Scheme configure script, renaming the old definition to ... (configure-chezschemelibdirs): ... this new variable. (chez-srfi, chez-matchable, chez-irregex, chez-fmt, chez-mit) (chez-scmutils)[arguments]<#:phases>: Update accordingly. (unpack-nanopass+stex): Replace with ... (unpack-nanopass): ... this new variable. (chez-scheme)[arguments]<#:phases>: Inline old definition of 'unpack-nanopass+stex' to facilitate transition. (chez-scheme-for-racket): Stop inheriting from 'chez-scheme'. [version]: Update to 9.9.9-pre-release.23. [outputs]: Add "debug" output. [native-inputs]: Add 'texlive-enumitem' for native builds. For cross builds, omit TeX-related inputs and add this-package:doc. [inputs, native-search-paths, home-page]: Rewrite without inheritance. [arguments]: Likewise, and adjust for upstream changes. [synopsis, description]: Rewrite to reflect upstreaming of Racket's changes to Chez Scheme. (chez-scheme-for-racket-bootstrap-bootfiles): Stop inheriting from 'chez-scheme-bootstrap-bootfiles'. [arguments]: Rewrite without inheritance. Use `make cross.boot` instead of broken experimental script for cross builds. [home-page]: Use bootstrapping Racket package instead of archived Git repository. [description]: Rewrite to reflect upstreaming of Racket's changes to Chez Scheme. * gnu/packages/patches/racket-backport-8.11-layered-docs.patch: Delete file. * gnu/packages/patches/racket-backport-8.12-chez-configure.patch: New file. * gnu/local.mk (dist_patch_DATA): Update accordingly. * gnu/packages/racket.scm (%racket-origin)[patches]: Likewise. [snippet]: Also unbundle Zuo and potential pre-built boot files. (%racket-version): Update to 8.12. (racket-vm-cs)[arguments]<#:phases>: Use 'unpack-nanopass' instead of 'unpack-nanopass+stex'. (racket)[inputs]<data, deinprogramm, drracket, gui, htdp, net-cookies> <pict, plot, rackunit, redex, scribble, typed-racket, string-constants> <web-server>: Update hashes. <quickscript>: Likewise, and remove obsolete snippet. Change-Id: I11e7f44be37c60c91b03d246a50e75e418bd0672 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Philip McGrath 2024-04-11gnu: zuo: Update to 1.9....Zuo now has tagged releases independent of the Racket release cycle. * gnu/packages/patches/racket-zuo-bin-sh.patch: Move to ... * gnu/packages/patches/zuo-bin-sh.patch: ... this file, and refresh it. * gnu/local.mk (dist_patch_DATA): Update accordingly. * gnu/packages/racket/scm (%racket-origin)[patches]: Likewise. * gnu/packages/patches/racket-chez-scheme-bin-sh.patch: Refresh patch. * gnu/packages/patches/racket-rktio-bin-sh.patch: Likewise. * gnu/packages/racket/scm (%zuo-version): Move to ... (zuo)[version]: ... this field, and update to 1.9. [source]: Change to the repository where Zuo releases are tagged. [arguments]: Stop supplying '#:phases'. Change-Id: Ia82c0f7a8e4696ae08e30965e3f4ec85673b86e5 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Philip McGrath 2024-04-11gnu: Add durden....* gnu/packages/arcan.scm (durden): New variable. * gnu/packages/patches/durden-shadow-arcan.patch: New file. * gnu/local.mk: Register it. Change-Id: I3ea34563c74c227eed40f4ad50d23713c45ce70b Signed-off-by: Ludovic Courtès <ludo@gnu.org> Ahmad Draidi 2024-04-09Merge remote-tracking branch 'savannah/master' into mesa-updates...Change-Id: Iad185e2ced97067b3dff8fd722435a6c5e2c00e5 Christopher Baines 2024-04-06gnu: Add specification-multibase....* gnu/packages/specifications.scm: New module. (specification-multibase): New variable. * gnu/local.mk (GNU_SYSTEM_MODULES): Add "gnu/packages/specifications.scm". Change-Id: I5994e8f8927d5365cc201da30bd49abf03d17574 Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com> Artyom V. Poptsov 2024-04-06gnu: opencolorio: Update to 2.3.2....* gnu/packages/image-processing.scm (opencolorio): Update to 2.3.2. [source]: Remove snippet. [arguments]: Use G-Expressions. <#:configure-flags>: Unset "-DCMAKE-CXX_FLAGS", "-DOCIO_BUILD_STATIC", "-DUSE_EXTERNAL_TINXML", "-DUSE_EXTERNAL_LCMS". Pass "-DCIO_BUILD_GPU_TESTS=false". <#:phases>: Delete the patch-test-suite phase. [native-inputs]: Remove git, pkg-config. Add openimageio, pybind11-2.10, python-wrapper. [inputs]: Remove openexr-2, tinyxml. Add expat, freeglut, glew, imath, libglvnd, minizip-ng, openexr, pystring, yaml-cpp, zlib. [license]: Simplify. * gnu/packages/patches/opencolorio-fix-build-with-gcc11.patch: Delete patch. * gnu/local.mk (dist_patch_DATA): Unregister it. Change-Id: Iafd87762df81d0f5c23089251b4241a57d414dc4 Vinicius Monego 2024-04-05gnu: openssh: Update to 9.7p1....* gnu/packages/ssh.scm (openssh): Update to 9.7p1 [source]: Remove openssh-gcc-13-ppc64le-fzero-call-used-regs.patch'. * gnu/packages/patches/openssh-gcc-13-ppc64le-fzero-call-used-regs.patch: Delete file. * gnu/packages/local.mk (dist_patch_DATA): Remove it. Change-Id: Ia13c32869afa6c964770243ecacf5a3ce473e5e2 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Jack Hill 2024-04-03gnu: gwenview: Update to 23.08.5 and fix build....* gnu/packages/kde.scm (gwenview): Update to 23.08.5. [source]: Apply gwenview-kimageannotator patch. [inputs]: Remove qtimageformats; add qtimageformats-5. * gnu/packages/patches/gwenview-kimageannotator.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: If73bc38772adef9f43d74f0f9061dfb2600aa502 Maxim Cournoyer 2024-04-03gnu: jami: Update to 20240325.0....* gnu/packages/jami.scm (libjami): Update to 20240325.0. [make-flags]: Reinstate ut_media_player test. [phases]: Remove obsolete extend-scheduler-test-timeout phase. (jami): Update to 20240325.0. [source]: Remove jami-qml-tests-discovery patch. Add jami-qwindowkit and jami-tests-qtwebengine-ifdef-to-if patches. [configure-flags]: Add -DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS. Replace -DENABLE_TESTS=ON with -DBUILD_TESTING=ON. [phases] <check>: Update comment for QML test suite. [native-inputs]: Add qthttpserver and qtwebsockets. [inputs]: Add qwindowkit. * gnu/packages/patches/jami-qml-tests-discovery.patch: Delete file. * gnu/packages/patches/jami-unbundle-dependencies.patch: Update patch. * gnu/packages/patches/jami-qwindowkit.patch: New file. * gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch: Likewise. * gnu/local.mk (dist_patch_DATA): Update accordingly. Change-Id: I5d47bdfd2aabab5baff44db8436051a9890cba6d Maxim Cournoyer 2024-04-03gnu: ffmpeg-jami: Apply patch adding pipewire support....* gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/video.scm (ffmpeg-jami) [source]: Apply it. Change-Id: I93efcda6e688cea46d8a878b5a436422f1827ec3 Maxim Cournoyer 2024-04-03gnu: qtbase: Have qmlimportscanner honor QML_IMPORT_PATH....* gnu/packages/qt.scm (qtbase) [source]: Apply qtbase-qmlimportscanner-qml-import-path.patch patch. * gnu/packages/patches/qtbase-qmlimportscanner-qml-import-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: I256939aa30a5d158ac0a78b85670b9f287c920ca Maxim Cournoyer 2024-04-03gnu: qtbase: Update to 6.6.2....* gnu/packages/qt.scm (qtbase): Update to 6.6.2. [source]: Unbundle pcre2, md4c. Remove qtbase-use-TZDIR.patch. Add qtbase-find-tools-in-PATH.patch, qtbase-qmake-fix-includedir.patch, [arguments]<#:phases>: Adjust 'patch-more-paths phase, skip tst_selftests test. [inputs]: Add libb2 * gnu/packages/patches/qtbase-use-TZDIR.patch: Remove this. * gnu/packages/patches/qtbase-find-tools-in-PATH.patch: New file. * gnu/packages/patches/qtbase-qmake-fix-includedir.patch: New file. * gnu/local.mk (dist_patch_DATA): Remove qtbase-use-TZDIR.patch. Register qtbase-find-tools-in-PATH.patch, qtbase-qmake-fix-includedir.patch. Change-Id: I72af9c8f2e930bcae18f36ceca18a0a53f5c3e15 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Zheng Junjie 2024-04-03gnu: libarchive: Fix a potential security issue....https://github.com/libarchive/libarchive/pull/2101 * gnu/packages/backup.scm (libarchive)[replacement]: New field. (libarchive/fixed): New variable. * gnu/packages/patches/libarchive-remove-potential-backdoor.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Change-Id: I939e9b842b10d1a78125da4a4599c38d9c037079 Leo Famulari 2024-04-01gnu: glslang: Update to 1.3.280.0....* gnu/packages/vulkan.scm (glslang): Update to 1.3.280.0. [source]: Remove patch. [arguments]: Run tests. [inputs]: Add spirv-tools. * gnu/packages/patches/glslang-install-static-libs.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Ungerister it. Change-Id: I39ef23565e575179b292a1ab76d2d70c98f84767 Signed-off-by: John Kehayias <john.kehayias@protonmail.com> dan 2024-03-31gnu: cairo: Update to 1.18.0....With this new release of cairo many old configure options were removed and now meson is used to build it. The defaults include the tee backend which we had previously enabled while the xml backend has been dropped from cairo completely. Old configure options where were commented out to be enabled have been removed as they no longer apply to version 1.18.0. The variable 'cairo' is now a hidden package to work around a dependency cycle where gtk-doc is needed to build the documentation (which itself depends on cairo). The new variable 'cairo-with-documentation' is now the public package and the module exports 'cairo' for use in other packages. This follows what was done for glib. * gnu/packages/gtk.scm: Export 'cairo'. (cairo): Update to 1.18.0. [source]: Remove 'patches' field. [properties]: Hide package. [outputs]: Remove (doc output is now in cairo-with-documentation). [build-system]: Change to meson-build-system. [arguments]: Add #:glib-or-gtk?. Remove old flags from #:configure-flags and add '-Dtests=disabled' to match #:tests?. [propagated-inputs]: Remove commented out packages. (cairo-with-documentation): New variable. (cairo-sans-poppler)[properties]: No longer set hidden as it is now inherited from cairo. (cairo-xcb)[properties]: Unhide (inherited from cairo). [arguments]: Remove obsolete #:configure-flags and properly inherit from cairo. * gnu/packages/patches/cairo-CVE-2018-19876.patch: Remove. * gnu/packages/patches/cairo-CVE-2020-35492.patch: Remove. * gnu/local.mk (dist_patch_DATA): Remove them. Change-Id: I2f4c953b23c6b32b1fafaf03db89d7a475fc6956 John Kehayias 2024-03-30gnu: librecad: Update to 2.2.0.2....* gnu/packages/engineering.scm (librecad): Update to 2.2.0.2. [arguments]<#:phases>: Delete the patch-boost-error, add-missing-headers and patch-paths phases. Remove trailing #t. * gnu/packages/patches/librecad-support-for-boost-1.76.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Remove it. Change-Id: I23cc1a80b2e9e73bdef40575c4104480cc830d8c Vinicius Monego 2024-03-30Merge branch 'emacs-team'Liliana Marie Prikler 2024-03-30Merge branch 'gnome-team'Liliana Marie Prikler