forked from tribes/guix
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d780c4c1cc | |||
| 701a498b42 | |||
| 2be1e10e36 |
+3
-21
@@ -98,27 +98,9 @@
|
||||
((indent-tabs-mode . nil)
|
||||
|
||||
;; Emacs 28 changed the behavior of 'lisp-fill-paragraph', which causes the
|
||||
;; first line of package descriptions to extrude past 'fill-column', and
|
||||
;; somehow that is deemed more correct upstream (see:
|
||||
;; https://issues.guix.gnu.org/56197).
|
||||
(eval . (progn
|
||||
(require 'lisp-mode)
|
||||
(defun emacs27-lisp-fill-paragraph (&optional justify)
|
||||
(interactive "P")
|
||||
(or (fill-comment-paragraph justify)
|
||||
(let ((paragraph-start
|
||||
(concat paragraph-start
|
||||
"\\|\\s-*\\([(;\"]\\|\\s-:\\|`(\\|#'(\\)"))
|
||||
(paragraph-separate
|
||||
(concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
|
||||
(fill-column (if (and (integerp emacs-lisp-docstring-fill-column)
|
||||
(derived-mode-p 'emacs-lisp-mode))
|
||||
emacs-lisp-docstring-fill-column
|
||||
fill-column)))
|
||||
(fill-paragraph justify))
|
||||
;; Never return nil.
|
||||
t))
|
||||
(setq-local fill-paragraph-function #'emacs27-lisp-fill-paragraph)))
|
||||
;; first line of package descriptions to extrude past 'fill-column'. The
|
||||
;; following variable reverts its behavior to the previous one.
|
||||
(lisp-fill-paragraphs-as-doc-string nil)
|
||||
|
||||
;; This notably allows '(' in Paredit to not insert a space when the
|
||||
;; preceding symbol is one of these.
|
||||
|
||||
@@ -68,7 +68,6 @@
|
||||
/doc/stamp-vti
|
||||
/doc/version.texi
|
||||
/doc/version-*.texi
|
||||
/etc/apparmor.d/tunables/guix
|
||||
/etc/committer.scm
|
||||
/etc/gnu-store.mount
|
||||
/etc/guix-daemon.cil
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
(name "cbaines"))
|
||||
("3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5"
|
||||
(name "civodul"))
|
||||
("CCB8 1842 F9D7 058E CD67 377A BF5C DF4D F6BF 6682"
|
||||
(name "csantosb"))
|
||||
("510A 8628 E2A7 7678 8F8C 709C 4BC0 2592 5FF8 F4D3"
|
||||
(name "cwebber"))
|
||||
(;; primary: "295A F991 6F46 F8A1 34B0 29DA 8086 3842 F0FE D83B"
|
||||
@@ -36,8 +34,6 @@
|
||||
(name "efraim"))
|
||||
("5DBE 23D3 9053 6526 7F8C C76A FDB9 52BD 3F73 56D6"
|
||||
(name "ekaitz"))
|
||||
("50E1 7BE0 D210 C883 D675 3150 4A3D 07EF D05C 4045"
|
||||
(name "fishinthecalculator"))
|
||||
(;; primary: "D1BD 1EB7 B655 AECE 0BA7 8F94 4940 7E7E 89CA 9B07"
|
||||
"0807 AC76 DFE8 4303 6D5F 5879 F51D 4A16 DCEE 6FA7"
|
||||
(name "futurile"))
|
||||
@@ -49,7 +45,7 @@
|
||||
(;; primary: "220F 98D9 5E86 204C 0036 DA7B 6DEC 4360 408B 4185"
|
||||
"F4C2 D1DF 3FDE EA63 D1D3 0776 ACC6 6D09 CA52 8292"
|
||||
(name "hako"))
|
||||
("3D58 BE78 5C1B E400 E214 0755 43F4 B499 3A1F 9D20"
|
||||
("B943 509D 633E 80DD 27FC 4EED 634A 8DFF D3F6 31DF"
|
||||
(name "htgoebel"))
|
||||
( ;; primary: "FECD 9EBA FAAD 1831 7E05 DAC0 E55F 4198 D2A7 0CD7"
|
||||
"6980 A9B9 5202 AA11 EB1D 8922 8499 AC88 F1A7 1CF2"
|
||||
@@ -102,9 +98,6 @@
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00499.html>.
|
||||
"1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82"
|
||||
(name "roptat"))
|
||||
(;; primary: "3AC5 5D0E 1DA7 AF44 3868 11EE 213D C372 0E7A 023C"
|
||||
"6B51 071A 0FB1 52AD ED93 6360 0322 7982 69E4 71C3"
|
||||
(name "Rutherther"))
|
||||
("EAD1 89E4 799B 5E5E B20A 2A19 CDBC 0BD9 5943 A706"
|
||||
(name "SameExpert"))
|
||||
(;; primary: "D6B0 C593 DA8C 5EDC A44C 7A58 C336 91F7 1188 B004"
|
||||
|
||||
@@ -30,7 +30,6 @@ Eric Bavier <bavier@posteo.net> <bavier@member.fsf.org>
|
||||
Eric Dvorsak <eric@dvorsak.fr> <yenda1@gmail.com>
|
||||
Evgeny Pisemsky <mail@pisemsky.site> <evgeny@pisemsky.com>
|
||||
George Clemmer <myglc2@gmail.com>
|
||||
Giacomo Leidi <therewasa@fishinthecalculator.me> <goodoldpaul@autistici.org>
|
||||
ison <ison@airmail.cc> <ison111@protonmail.com>
|
||||
Ivan Vilata i Balaguer <ivan@selidor.net>
|
||||
Jakob L. Kreuze <zerodaysfordays@sdf.org> <zerodaysfordays@sdf.lonestar.org>
|
||||
@@ -59,7 +58,6 @@ Mathieu Othacehe <mathieu.othacehe@parrot.com>
|
||||
Mathieu Othacehe <othacehe@gnu.org>
|
||||
Matthew James Kraai <kraai@ftbfs.org>
|
||||
Maxim Cournoyer <maxim@guixotic.coop> <maxim.cournoyer@gmail.com>
|
||||
Nguyễn Gia Phong <cnx@loang.net> <mcsinyx@disroot.org>
|
||||
Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
|
||||
nikita <nikita@n0.is>
|
||||
nikita <nikita@n0.is> ng0 <ng0@n0.is>
|
||||
|
||||
+5
-110
@@ -10,32 +10,11 @@ gnu/packages/machine-learning\.scm @guix/ai
|
||||
|
||||
gnu/packages/audio\.scm @guix/audio
|
||||
gnu/packages/fluidplug\.scm @guix/audio
|
||||
gnu/packages/music\.scm @guix/audio
|
||||
gnu/packages/xiph\.scm @guix/audio
|
||||
|
||||
gnu/packages/elixir(-.+|)\.scm$ @guix/beam
|
||||
guix/build/mix-build-system\.scm @guix/beam
|
||||
guix/build-system/mix\.scm @guix/beam
|
||||
gnu/packages/erlang(-.+|)\.scm$ @guix/beam
|
||||
guix/build/rebar-build-system\.scm @guix/beam
|
||||
guix/build-system/rebar\.scm @guix/beam
|
||||
guix/import/hexpm\.scm @guix/beam
|
||||
guix/scripts/import/hexpm\.scm @guix/beam
|
||||
|
||||
gnu/packages/bioinformatics\.scm @guix/bioinformatics
|
||||
|
||||
gnu/packages/bootstrap\.scm @guix/bootstrap
|
||||
gnu/packages/commencement\.scm @guix/bootstrap
|
||||
gnu/packages/mes\.scm @guix/bootstrap
|
||||
|
||||
gnu/packages/assembly\.scm @guix/build-tools
|
||||
gnu/packages/autogen\.scm @guix/build-tools
|
||||
gnu/packages/autotools\.scm @guix/build-tools
|
||||
gnu/packages/bison\.scm @guix/build-tools
|
||||
gnu/packages/m4\.scm @guix/build-tools
|
||||
gnu/packages/oyacc\.scm @guix/build-tools
|
||||
gnu/packages/re2c\.scm @guix/build-tools
|
||||
|
||||
gnu/build-system/cmake\.scm @guix/cpp
|
||||
gnu/build/cmake-build-system\.scm @guix/cpp
|
||||
gnu/packages/c\.scm @guix/cpp
|
||||
@@ -44,7 +23,6 @@ gnu/packages/cpp\.scm @guix/cpp
|
||||
gnu/packages/ninja\.scm @guix/cpp
|
||||
gnu/packages/valgrind\.scm @guix/cpp
|
||||
|
||||
etc/teams\.scm @guix/core
|
||||
guix/avahi\.scm @guix/core
|
||||
guix/base16\.scm @guix/core
|
||||
guix/base32\.scm @guix/core
|
||||
@@ -105,7 +83,6 @@ guix/quirks\.scm @guix/core
|
||||
guix/read-print\.scm @guix/core
|
||||
guix/records\.scm @guix/core
|
||||
guix/remote\.scm @guix/core
|
||||
guix/remote-procedures\.scm @guix/core
|
||||
guix/repl\.scm @guix/core
|
||||
guix/search-paths\.scm @guix/core
|
||||
guix/self\.scm @guix/core
|
||||
@@ -141,17 +118,6 @@ guix/build/gnu-build-system\.scm @guix/core-packages
|
||||
guix/build/utils\.scm @guix/core-packages
|
||||
guix/build-system/gnu\.scm @guix/core-packages
|
||||
|
||||
gnu/packages/(.*-|)crypto\.scm$ @guix/crypto
|
||||
gnu/packages/cryptsetup\.scm @guix/crypto
|
||||
gnu/packages/cybersecurity\.scm @guix/crypto
|
||||
gnu/packages/gnupg\.scm @guix/crypto
|
||||
gnu/packages/nettle\.scm @guix/crypto
|
||||
gnu/packages/password-utils\.scm @guix/crypto
|
||||
gnu/packages/security-token\.scm @guix/crypto
|
||||
gnu/packages/ssh\.scm @guix/crypto
|
||||
gnu/packages/tls\.scm @guix/crypto
|
||||
gnu/packages/vpn\.scm @guix/crypto
|
||||
|
||||
gnu/packages/debian\.scm @guix/debian
|
||||
|
||||
\.texi$ @guix/documentation
|
||||
@@ -161,7 +127,6 @@ gnu/system/examples/lightweight-desktop\.tmpl @guix/documentation
|
||||
gnu/system/examples/desktop\.tmpl @guix/documentation
|
||||
|
||||
gnu/packages/electronics\.scm @guix/electronics
|
||||
gnu/packages/hdl\.scm @guix/electronics
|
||||
gnu/packages/libftdi\.scm @guix/electronics
|
||||
gnu/packages/engineering\.scm @guix/electronics
|
||||
gnu/packages/flashing-tools\.scm @guix/electronics
|
||||
@@ -186,8 +151,6 @@ gnu/packages/game-development\.scm @guix/games
|
||||
gnu/packages/luanti\.scm @guix/games
|
||||
gnu/packages/esolangs\.scm @guix/games
|
||||
gnu/packages/motti\.scm @guix/games
|
||||
gnu/services/games\.scm @guix/games
|
||||
gnu/tests/games\.scm @guix/games
|
||||
guix/build/luanti-build-system\.scm @guix/games
|
||||
|
||||
etc/teams/gnome @guix/gnome
|
||||
@@ -195,7 +158,6 @@ gnu/packages/glib\.scm @guix/gnome
|
||||
gnu/packages/gstreamer\.scm @guix/gnome
|
||||
gnu/packages/gtk\.scm @guix/gnome
|
||||
gnu/packages/gnome\.scm @guix/gnome
|
||||
gnu/packages/gnome-circle\.scm @guix/gnome
|
||||
gnu/packages/gnome-xyz\.scm @guix/gnome
|
||||
gnu/packages/webkit\.scm @guix/gnome
|
||||
gnu/services/desktop\.scm @guix/gnome
|
||||
@@ -212,18 +174,6 @@ guix/import/go\.scm @guix/go
|
||||
guix/scripts/import/go\.scm @guix/go
|
||||
tests/import/go\.scm @guix/go
|
||||
|
||||
gnu/packages/guile\.scm @guix/guile
|
||||
gnu/packages/guile-wm\.scm @guix/guile
|
||||
gnu/packages/guile-xyz\.scm @guix/guile
|
||||
guix/build-system/guile\.scm @guix/guile
|
||||
guix/build/guile-build-system\.scm @guix/guile
|
||||
|
||||
gnu/packages/hare\.scm @guix/hare
|
||||
gnu/packages/hare-apps\.scm @guix/hare
|
||||
gnu/packages/hare-xyz\.scm @guix/hare
|
||||
guix/build-system/hare\.scm @guix/hare
|
||||
guix/build/hare-build-system\.scm @guix/hare
|
||||
|
||||
gnu/packages/dhall\.scm @guix/haskell
|
||||
gnu/packages/haskell(-.+|)\.scm$ @guix/haskell
|
||||
gnu/packages/purescript\.scm @guix/haskell
|
||||
@@ -241,11 +191,7 @@ tests/home-services\.scm @guix/home
|
||||
|
||||
gnu/packages/mpi\.scm @guix/hpc
|
||||
gnu/packages/oneapi\.scm @guix/hpc
|
||||
gnu/packages/opencl\.scm @guix/hpc
|
||||
gnu/packages/parallel\.scm @guix/hpc
|
||||
gnu/packages/rocm\.scm @guix/hpc
|
||||
gnu/packages/rocm-tools\.scm @guix/hpc
|
||||
gnu/packages/rocm-libs\.scm @guix/hpc
|
||||
gnu/packages/sycl\.scm @guix/hpc
|
||||
gnu/packages/tbb\.scm @guix/hpc
|
||||
gnu/packages/vulkan\.scm @guix/hpc
|
||||
@@ -258,17 +204,13 @@ gnu/packages/hurd\.scm @guix/hurd
|
||||
|
||||
gnu/installer(\.scm$|/) @guix/installer
|
||||
|
||||
gnu/packages/clojure\.scm @guix/java
|
||||
gnu/packages/java(-.+|)\.scm$ @guix/java
|
||||
gnu/packages/maven(-.+|)\.scm$ @guix/java
|
||||
guix/build/ant-build-system\.scm @guix/java
|
||||
guix/build/clojure-build-system\.scm @guix/java
|
||||
guix/build/clojure-utils\.scm @guix/java
|
||||
guix/build/java-utils\.scm @guix/java
|
||||
guix/build/maven-build-system\.scm @guix/java
|
||||
guix/build/maven/ @guix/java
|
||||
guix/build-system/ant\.scm @guix/java
|
||||
guix/build-system/clojure\.scm @guix/java
|
||||
guix/build-system/maven\.scm @guix/java
|
||||
|
||||
gnu/packages/node-xyz\.scm @guix/javascript
|
||||
@@ -301,13 +243,8 @@ gnu/packages/fcitx5\.scm @guix/localization
|
||||
gnu/packages/fonts\.scm @guix/localization
|
||||
gnu/packages/ibus\.scm @guix/localization
|
||||
|
||||
gnu/packages/lua\.scm @guix/lua
|
||||
gnu/packages/luanti\.scm @guix/lua
|
||||
|
||||
gnu/packages/lxqt\.scm @guix/lxqt
|
||||
|
||||
gnu/packages/mate\.scm @guix/mate
|
||||
|
||||
|
||||
gnu/build/icecat-extension\.scm @guix/mozilla
|
||||
gnu/packages/browser-extensions\.scm @guix/mozilla
|
||||
@@ -325,39 +262,18 @@ guix/import/opam\.scm @guix/ocaml
|
||||
guix/scripts/import/opam\.scm @guix/ocaml
|
||||
tests/import/opam\.scm @guix/ocaml
|
||||
|
||||
gnu/packages/perl(-.+|)\.scm$ @guix/perl
|
||||
guix/build/perl-build-system\.scm @guix/perl
|
||||
guix/build/rakudo-build-system\.scm @guix/perl
|
||||
guix/build-system/perl\.scm @guix/perl
|
||||
guix/build-system/rakudo\.scm @guix/perl
|
||||
guix/import/cpan\.scm @guix/perl
|
||||
guix/scripts/import/cpan\.scm @guix/perl
|
||||
|
||||
gnu/packages/django\.scm @guix/python
|
||||
gnu/packages/jupyter\.scm @guix/python
|
||||
gnu/packages/python(-.+|)\.scm$ @guix/python
|
||||
gnu/packages/sphinx\.scm @guix/python
|
||||
gnu/packages/tryton\.scm @guix/python
|
||||
guix/build-system/pyproject\.scm @guix/python
|
||||
guix/build-system/python\.scm @guix/python
|
||||
guix/build/pyproject-build-system\.scm @guix/python
|
||||
guix/build-system/pyproject\.scm @guix/python
|
||||
guix/build/python-build-system\.scm @guix/python
|
||||
guix/build/toml\.scm @guix/python
|
||||
guix/build-system/python\.scm @guix/python
|
||||
guix/import/pypi\.scm @guix/python
|
||||
guix/scripts/import/pypi\.scm @guix/python
|
||||
tests/import/pypi\.scm @guix/python
|
||||
tests/toml\.scm @guix/python
|
||||
|
||||
gnu/ci\.scm @guix/qa-packages
|
||||
gnu/packages/benchmark\.scm @guix/qa-packages
|
||||
gnu/packages/check\.scm @guix/qa-packages
|
||||
gnu/packages/ci\.scm @guix/qa-packages
|
||||
gnu/packages/code\.scm @guix/qa-packages
|
||||
gnu/packages/debug\.scm @guix/qa-packages
|
||||
gnu/packages/dezyne\.scm @guix/qa-packages
|
||||
gnu/packages/libunwind\.scm @guix/qa-packages
|
||||
gnu/services/ci\.scm @guix/qa-packages
|
||||
gnu/tests/ci\.scm @guix/qa-packages
|
||||
|
||||
gnu/packages/qt\.scm @guix/qt
|
||||
guix/build-system/qt\.scm @guix/qt
|
||||
@@ -376,12 +292,11 @@ gnu/packages/chez\.scm @guix/racket
|
||||
gnu/packages/racket\.scm @guix/racket
|
||||
|
||||
NEWS @guix/release
|
||||
etc/manifests/release-minimal\.scm @guix/release
|
||||
etc/manifests/release-desktop\.scm @guix/release
|
||||
etc/manifests/release\.scm @guix/release
|
||||
|
||||
gnu/packages/diffoscope\.scm @guix/reproduciblebuilds
|
||||
|
||||
gnu/packages/(ruby)(-.+|)\.scm$ @guix/ruby
|
||||
gnu/packages/ruby\.scm @guix/ruby
|
||||
guix/build/ruby-build-system\.scm @guix/ruby
|
||||
guix/build-system/ruby\.scm @guix/ruby
|
||||
guix/import/gem\.scm @guix/ruby
|
||||
@@ -407,7 +322,6 @@ gnu/packages/graph\.scm @guix/science
|
||||
gnu/packages/lean\.scm @guix/science
|
||||
gnu/packages/maths\.scm @guix/science
|
||||
gnu/packages/medical\.scm @guix/science
|
||||
gnu/packages/physics\.scm @guix/science
|
||||
gnu/packages/sagemath\.scm @guix/science
|
||||
gnu/packages/statistics\.scm @guix/science
|
||||
|
||||
@@ -420,7 +334,7 @@ gnu/packages/antivirus\.scm @guix/sysadmin
|
||||
gnu/packages/apparmor\.scm @guix/sysadmin
|
||||
gnu/packages/authentication\.scm @guix/sysadmin
|
||||
gnu/packages/cluster\.scm @guix/sysadmin
|
||||
gnu/packages/configuration-management\.scm @guix/sysadmin
|
||||
gnu/packages/configuration-management @guix/sysadmin
|
||||
gnu/packages/databases\.scm @guix/sysadmin
|
||||
gnu/packages/distributed\.scm @guix/sysadmin
|
||||
gnu/packages/dns\.scm @guix/sysadmin
|
||||
@@ -440,25 +354,6 @@ gnu/packages/task-runners\.scm @guix/sysadmin
|
||||
gnu/packages/terraform\.scm @guix/sysadmin
|
||||
gnu/packages/virtualization\.scm @guix/sysadmin
|
||||
gnu/packages/vnc\.scm @guix/sysadmin
|
||||
gnu/services/admin\.scm @guix/sysadmin
|
||||
gnu/services/authentication\.scm @guix/sysadmin
|
||||
gnu/services/databases\.scm @guix/sysadmin
|
||||
gnu/services/dns\.scm @guix/sysadmin
|
||||
gnu/services/high-availability\.scm @guix/sysadmin
|
||||
gnu/services/kerberos\.scm @guix/sysadmin
|
||||
gnu/services/monitoring\.scm @guix/sysadmin
|
||||
gnu/services/nfs\.scm @guix/sysadmin
|
||||
gnu/services/samba\.scm @guix/sysadmin
|
||||
gnu/services/virtualization\.scm @guix/sysadmin
|
||||
gnu/services/vnc\.scm @guix/sysadmin
|
||||
gnu/tests/databases\.scm @guix/sysadmin
|
||||
gnu/tests/dns\.scm @guix/sysadmin
|
||||
gnu/tests/high-availability\.scm @guix/sysadmin
|
||||
gnu/tests/monitoring\.scm @guix/sysadmin
|
||||
gnu/tests/nfs\.scm @guix/sysadmin
|
||||
gnu/tests/samba\.scm @guix/sysadmin
|
||||
gnu/tests/virtualization\.scm @guix/sysadmin
|
||||
gnu/tests/vnc\.scm @guix/sysadmin
|
||||
|
||||
gnu/build/jami-service\.scm @guix/telephony
|
||||
gnu/packages/jami\.scm @guix/telephony
|
||||
|
||||
+90
-91
@@ -14,7 +14,7 @@
|
||||
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
# Copyright © 2019, 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
# Copyright © 2020, 2021, 2023, 2025, 2026 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
# Copyright © 2020, 2021, 2023, 2025 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
||||
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
# Copyright © 2023 Clément Lassieur <clement@lassieur.org>
|
||||
@@ -116,7 +116,6 @@ MODULES = \
|
||||
guix/narinfo.scm \
|
||||
guix/derivations.scm \
|
||||
guix/grafts.scm \
|
||||
guix/remote-procedures.scm \
|
||||
guix/repl.scm \
|
||||
guix/rpm.scm \
|
||||
guix/transformations.scm \
|
||||
@@ -268,6 +267,7 @@ MODULES = \
|
||||
guix/build/kconfig.scm \
|
||||
guix/build/linux-module-build-system.scm \
|
||||
guix/build/store-copy.scm \
|
||||
guix/build/json.scm \
|
||||
guix/build/pack.scm \
|
||||
guix/build/utils.scm \
|
||||
guix/build/union.scm \
|
||||
@@ -296,7 +296,6 @@ MODULES = \
|
||||
guix/build/toml.scm \
|
||||
guix/search-paths.scm \
|
||||
guix/packages.scm \
|
||||
guix/import/apache.scm \
|
||||
guix/import/cabal.scm \
|
||||
guix/import/composer.scm \
|
||||
guix/import/cpan.scm \
|
||||
@@ -377,7 +376,6 @@ MODULES = \
|
||||
guix/scripts/import/luanti.scm \
|
||||
guix/scripts/import/minetest.scm \
|
||||
guix/scripts/import/npm-binary.scm \
|
||||
guix/scripts/import/nuget.scm \
|
||||
guix/scripts/import/opam.scm \
|
||||
guix/scripts/import/pypi.scm \
|
||||
guix/scripts/import/stackage.scm \
|
||||
@@ -454,12 +452,15 @@ AUX_FILES = \
|
||||
gnu/packages/aux-files/findclass.php \
|
||||
gnu/packages/aux-files/guix.vim \
|
||||
gnu/packages/aux-files/guix-nvim.vim \
|
||||
gnu/packages/aux-files/linux-libre/6.19-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.19-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.19-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.18-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.18-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.18-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.17-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.17-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.17-riscv.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.17-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.16-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.16-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.16-riscv.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.16-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.16-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.12-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.12-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.12-i686.conf \
|
||||
@@ -481,6 +482,10 @@ AUX_FILES = \
|
||||
gnu/packages/aux-files/linux-libre/5.10-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.10-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.10-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf \
|
||||
gnu/packages/aux-files/ovmf/51-edk2-ovmf-2m-raw-x64-nosb.json \
|
||||
gnu/packages/aux-files/pack-audit.c \
|
||||
gnu/packages/aux-files/python/sanity-check.py \
|
||||
@@ -492,6 +497,7 @@ AUX_FILES = \
|
||||
|
||||
# Templates, examples.
|
||||
EXAMPLES = \
|
||||
gnu/system/examples/asus-c201.tmpl \
|
||||
gnu/system/examples/bare-bones.tmpl \
|
||||
gnu/system/examples/bare-hurd.tmpl \
|
||||
gnu/system/examples/bare-hurd64.tmpl \
|
||||
@@ -504,8 +510,7 @@ EXAMPLES = \
|
||||
gnu/system/examples/plasma.tmpl \
|
||||
gnu/system/examples/raspberry-pi-64.tmpl \
|
||||
gnu/system/examples/raspberry-pi-64-nfs-root.tmpl \
|
||||
gnu/system/examples/vm-image.tmpl \
|
||||
gnu/system/examples/vm-image-efi.tmpl
|
||||
gnu/system/examples/vm-image.tmpl
|
||||
|
||||
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go)
|
||||
|
||||
@@ -577,7 +582,6 @@ SCM_TESTS = \
|
||||
tests/import/hexpm.scm \
|
||||
tests/import/luanti.scm \
|
||||
tests/import/npm-binary.scm \
|
||||
tests/import/nuget.scm \
|
||||
tests/import/opam.scm \
|
||||
tests/import/print.scm \
|
||||
tests/import/pypi.scm \
|
||||
@@ -747,14 +751,6 @@ dist_fishcompletion_DATA = etc/completion/fish/guix.fish
|
||||
# SELinux policy
|
||||
nodist_selinux_policy_DATA = etc/guix-daemon.cil
|
||||
|
||||
# AppArmor profiles.
|
||||
dist_apparmor_profile_DATA = \
|
||||
etc/apparmor.d/guix \
|
||||
etc/apparmor.d/guix-daemon
|
||||
|
||||
nodist_apparmor_profile_tunables_DATA = \
|
||||
etc/apparmor.d/tunables/guix
|
||||
|
||||
EXTRA_DIST += \
|
||||
.dir-locals.el \
|
||||
.guix-authorizations \
|
||||
@@ -772,12 +768,9 @@ EXTRA_DIST += \
|
||||
build-aux/compile-as-derivation.scm \
|
||||
build-aux/config.rpath \
|
||||
build-aux/convert-xref.scm \
|
||||
build-aux/cuirass/evaluate.scm \
|
||||
build-aux/extract-syscall-ranges.sh \
|
||||
build-aux/generate-authors.scm \
|
||||
build-aux/gitlog-to-changelog \
|
||||
build-aux/git-version-gen \
|
||||
build-aux/keep-only-translated.scm \
|
||||
build-aux/mdate-from-git.scm \
|
||||
build-aux/test-driver.scm \
|
||||
build-aux/update-NEWS.scm \
|
||||
@@ -791,9 +784,7 @@ EXTRA_DIST += \
|
||||
etc/manifests/disarchive.scm \
|
||||
etc/manifests/hurd.scm \
|
||||
etc/manifests/kernels.scm \
|
||||
etc/manifests/release-minimal.scm \
|
||||
etc/manifests/release-desktop.scm \
|
||||
etc/manifests/release-user-packages.scm \
|
||||
etc/manifests/release.scm \
|
||||
etc/manifests/source.scm \
|
||||
etc/manifests/system-tests.scm \
|
||||
etc/manifests/time-travel.scm \
|
||||
@@ -1146,18 +1137,12 @@ system_flags = $(foreach system,$(1),-s $(system))
|
||||
# 5. Build the installation and VM images. The images will run 'guix'
|
||||
# corresponding to 'vX.Y.Z' + 1 commit, and they will install 'vX.Y.Z'.
|
||||
#
|
||||
# This is split into two targets, because a commit is made that has to be
|
||||
# pushed to Guix.
|
||||
# First, 'prepare-release' should be run, doing steps 1 and 2.
|
||||
# Then, the resulting commit should be pushed so that it's available
|
||||
# to be downloaded for the system images.
|
||||
# Afterwards, the 'release' target takes care of the rest. This 'release'
|
||||
# target takes care of everything and copies the resulting files to
|
||||
# $(releasedir).
|
||||
# This 'release' target takes care of everything and copies the resulting
|
||||
# files to $(releasedir).
|
||||
#
|
||||
# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
|
||||
# issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
|
||||
prepare-release: dist-with-updated-version all
|
||||
release: dist-with-updated-version all
|
||||
@if ! git diff-index --quiet HEAD; then \
|
||||
echo "There are uncommitted changes; stopping." >&2 ; \
|
||||
exit 1 ; \
|
||||
@@ -1175,26 +1160,48 @@ prepare-release: dist-with-updated-version all
|
||||
$(top_builddir)/pre-inst-env guix build guix \
|
||||
$(call system_flags,$(SUPPORTED_SYSTEMS)) \
|
||||
-v1 --no-grafts --fallback
|
||||
|
||||
@echo
|
||||
@echo "First step done! Source tarball is ready in $(releasedir)"
|
||||
@echo "Now push the resulting commit and run `make release`."
|
||||
@echo
|
||||
|
||||
# Make sure you've ran prepare-release prior to running release and pushed
|
||||
# the commit to Guix. It might be pushed to any branch, such as version-X.Y.Z.
|
||||
release: all
|
||||
# Build the artifacts for current commit.
|
||||
# Use time-machine for provenance.
|
||||
$(MKDIR_P) "$(releasedir)"
|
||||
@echo "Building guix inferior for current commit."
|
||||
COMMIT="$$(git rev-parse HEAD)" && \
|
||||
GUIX="$$(guix time-machine -q --commit=$$COMMIT)/bin/guix" && \
|
||||
echo "Building artifacts for current commit: $$COMMIT." && \
|
||||
ARTIFACTS="$$($$GUIX build --no-grafts \
|
||||
-f ./etc/teams/release/artifacts.scm)" && \
|
||||
echo "Artifacts built! Copying to $(releasedir)" && \
|
||||
cp -f "$$ARTIFACTS"/* "$(releasedir)"
|
||||
# Generate the binary release tarballs.
|
||||
rm -f $(BINARY_TARBALLS)
|
||||
$(MAKE) $(BINARY_TARBALLS)
|
||||
for system in $(SUPPORTED_SYSTEMS) ; do \
|
||||
mv "guix-binary.$$system.tar.xz" \
|
||||
"$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \
|
||||
done
|
||||
# Build 'current-guix' to speed things up for the next step.
|
||||
$(top_builddir)/pre-inst-env guix build \
|
||||
-e '((@ (gnu packages package-management) current-guix))' \
|
||||
$(call system_flags,$(GUIX_SYSTEM_INSTALLER_SYSTEMS)) \
|
||||
-v1 --no-grafts --fallback
|
||||
# Generate the ISO installation images.
|
||||
for system in $(GUIX_SYSTEM_INSTALLER_SYSTEMS) ; do \
|
||||
GUIX_DISPLAYED_VERSION="`git describe --match=v* | sed -'es/^v//'`" ; \
|
||||
image=`$(top_builddir)/pre-inst-env \
|
||||
guix system image -t iso9660 \
|
||||
--label="GUIX_$${system}_$(VERSION)" \
|
||||
--system=$$system --fallback \
|
||||
gnu/system/install.scm` ; \
|
||||
if [ ! -f "$$image" ] ; then \
|
||||
echo "failed to produce Guix installation image for $$system" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" ; \
|
||||
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" \
|
||||
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso" ; \
|
||||
done
|
||||
# Generate the VM images.
|
||||
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
|
||||
GUIX_DISPLAYED_VERSION="`git describe --match=v* | sed -'es/^v//'`" ; \
|
||||
image=`$(top_builddir)/pre-inst-env \
|
||||
guix system image -t qcow2 $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
|
||||
--save-provenance \
|
||||
--system=$$system --fallback \
|
||||
gnu/system/examples/vm-image.tmpl` ; \
|
||||
if [ ! -f "$$image" ] ; then \
|
||||
echo "failed to produce Guix VM image for $$system" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2"; \
|
||||
done
|
||||
@echo
|
||||
@echo "Congratulations! All the release files are now in $(releasedir)."
|
||||
@echo
|
||||
@@ -1233,10 +1240,9 @@ assert-no-store-file-names:
|
||||
# Make sure installer substitutes are available. Check only the primary
|
||||
# server so that '--display-missing' doesn't print two lists.
|
||||
assert-binaries-available: $(GOBJECTS)
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env \
|
||||
guix weather -m "$(top_srcdir)/etc/manifests/release-minimal.scm" \
|
||||
-m "$(top_srcdir)/etc/manifests/release-desktop.scm" \
|
||||
--substitute-urls="https://ci.guix.gnu.org" \
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env \
|
||||
guix weather -m "$(top_srcdir)/etc/manifests/release.scm" \
|
||||
--substitute-urls="https://ci.guix.gnu.org" \
|
||||
--display-missing
|
||||
|
||||
# Make sure the final inputs don't refer to bootstrap tools.
|
||||
@@ -1262,49 +1268,42 @@ cuirass-jobs: $(GOBJECTS)
|
||||
.PHONY: clean-go make-go as-derivation
|
||||
.PHONY: update-guix-package update-NEWS cuirass-jobs release
|
||||
|
||||
if in_git_p
|
||||
# Git auto-configuration.
|
||||
.git/hooks/:
|
||||
$(AM_V_at)if test -d .git; then \
|
||||
mkdir "$@"; \
|
||||
fi
|
||||
|
||||
# Note: the following git commands may fail and produce empty variables,
|
||||
# e.g. when working on a work tree in a container.
|
||||
GIT_HOOKS_DIR := $(shell git rev-parse --git-path hooks 2>/dev/null)
|
||||
GIT_CONFIG_FILE := $(shell git rev-parse --git-path config 2>/dev/null)
|
||||
$(GIT_HOOKS_DIR):
|
||||
if [ -n "$(GIT_HOOKS_DIR)" ]; then mkdir -p "$@"; fi
|
||||
.git/hooks/%: etc/git/% | .git/hooks/
|
||||
$(AM_V_at)if test -d .git; then \
|
||||
cp "$<" "$@"; \
|
||||
fi
|
||||
|
||||
$(GIT_HOOKS_DIR)/%: etc/git/% | $(GIT_HOOKS_DIR)/
|
||||
if [ -n "$(GIT_HOOKS_DIR)" ]; then cp "$<" "$@"; fi
|
||||
|
||||
$(GIT_CONFIG_FILE): etc/git/gitconfig
|
||||
if [ -n "$(GIT_CONFIG_FILE)" ]; then \
|
||||
git config --fixed-value --replace-all include.path \
|
||||
../etc/git/gitconfig ../etc/git/gitconfig; \
|
||||
.git/config: etc/git/gitconfig
|
||||
$(AM_V_at)if command -v git >/dev/null && test -d .git; then \
|
||||
git config --fixed-value --replace-all include.path \
|
||||
../etc/git/gitconfig ../etc/git/gitconfig; \
|
||||
fi
|
||||
|
||||
COMMIT_MSG_MAGIC = VGhpcyBpcyB0aGUgY29tbWl0LW1zZyBob29rIG9mIEd1aXg=
|
||||
$(GIT_HOOKS_DIR)/commit-msg: etc/git/commit-msg | $(GIT_HOOKS_DIR)
|
||||
if [ -n "$(GIT_HOOKS_DIR)" ]; then \
|
||||
if test -f $@ && ! grep -qF $(COMMIT_MSG_MAGIC) $@; then \
|
||||
mkdir -p $@.d && mv $@ $@.d && \
|
||||
echo user commit-msg hook moved to $@.d/commit-msg; \
|
||||
fi && \
|
||||
cp etc/git/commit-msg $@; \
|
||||
.git/hooks/commit-msg: etc/git/commit-msg | .git/hooks/
|
||||
$(AM_V_at)if test -d .git; then \
|
||||
if test -f $@ && ! grep -qF $(COMMIT_MSG_MAGIC) $@; then \
|
||||
mkdir -p $@.d && mv $@ $@.d && \
|
||||
@ echo user commit-msg hook moved to $@.d/commit-msg; \
|
||||
fi; \
|
||||
cp etc/git/commit-msg $@; \
|
||||
fi
|
||||
|
||||
# Convenience targets.
|
||||
GIT_HOOKS_SOURCE_FILES := $(shell find etc/git -type f -executable)
|
||||
.PHONY: git-config git-hooks invalidate-hooks
|
||||
git-hooks: $(addprefix $(GIT_HOOKS_DIR)/,$(notdir $(GIT_HOOKS_SOURCE_FILES)))
|
||||
git-config: $(GIT_CONFIG_FILE) git-hooks
|
||||
|
||||
# The etc/git/ config files are not distributed and have no use when building
|
||||
# from a tarball. Do not add dependencies on these to *_DATA when building
|
||||
# from a tarball, as that breaks the build.
|
||||
if in_git_p
|
||||
nodist_noinst_DATA = \
|
||||
$(GIT_HOOKS_DIR)/pre-push \
|
||||
$(GIT_HOOKS_DIR)/post-merge \
|
||||
$(GIT_CONFIG_FILE) \
|
||||
$(GIT_HOOKS_DIR)/commit-msg
|
||||
.git/hooks/pre-push \
|
||||
.git/hooks/post-merge \
|
||||
.git/config \
|
||||
.git/hooks/commit-msg
|
||||
endif
|
||||
|
||||
# Downloading up-to-date PO files.
|
||||
|
||||
@@ -6,7 +6,6 @@ Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
Copyright © 2021, 2022, 2024 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
|
||||
Copyright © 2026 Noé Lopez <noelopez@free.fr>
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
@@ -17,77 +16,8 @@ Please send Guix bug reports to bug-guix@gnu.org.
|
||||
* Changes in 1.5.0 (since 1.4.0)
|
||||
** Package management
|
||||
*** New ‘rpm’ format for the ‘guix pack’ command
|
||||
*** New ‘appimage’ format for the ‘guix pack’ command
|
||||
*** New ‘--max-layers’ and ‘--file’ options for the ‘guix pack’ command
|
||||
*** New ‘--roll-back’ and ‘--expression’ options for the ‘guix deploy’ command
|
||||
*** New ‘--with-version’ package transformation option
|
||||
*** New ‘--with-configure-flag’ package transformation option
|
||||
*** New ‘--nesting’ option to use Guix within ‘guix shell’ containers
|
||||
*** New ‘--emulate-fhs’ option for ‘guix shell’ containers
|
||||
*** New ‘--dependents’ and ‘--development’ options for ‘guix build’
|
||||
*** New ‘--interactive’ and ‘--list-types’ flags for ‘guix repl’
|
||||
*** The root file-system of ‘guix shell’ containers is now read-only
|
||||
*** New ‘--writable-root’ option for the ‘guix shell’ command
|
||||
*** Improved style rules for ‘guix style’
|
||||
*** New ‘guix locate’ command
|
||||
*** ‘guix refresh’ now honours the ‘--key-server’ option
|
||||
*** ‘guix git authenticate‘ now remembers introduction commit and signer
|
||||
*** ‘guix git authenticate’ now installs pre-push and post-merge git hooks
|
||||
*** System reconfiguration now supports kexec for fast reboot
|
||||
*** Hetzner Cloud is now supported by the ‘guix deploy’ command
|
||||
*** The Guix Daemon can now be run without root privileges
|
||||
*** ‘guix refresh’ can now target partial version
|
||||
*** New ‘guix import composer’ command
|
||||
*** New ‘guix import binary-npm’ command
|
||||
*** New ‘guix import nuget’ command
|
||||
*** New ‘graphml’ backend for guix graph
|
||||
*** New ‘cyclonedx-json’ backend for guix graph
|
||||
*** AppArmor profiles are now available for guix and guix-daemon
|
||||
** Distribution
|
||||
*** ‘nss-certs’ is now included in ‘%base-packages’
|
||||
*** ‘udev-service-type’ now supports hardware configuration files
|
||||
*** ‘gdm-service-type’ now uses Wayland by default
|
||||
*** KDE Plasma 6.5 is now available with the new ‘plasma-desktop-service-type’
|
||||
*** GNOME was updated to version 44 with a more modular desktop service
|
||||
*** Declarative offloading with new ‘build-machines’ field of operating-system
|
||||
*** ‘containerd-service-type’ is no longer included with the Docker service
|
||||
*** ‘privileged-programs’ replaces ‘setuid-programs’ in ‘operating-system’
|
||||
*** The ‘postgresql’ field of ‘postgresql-configuration‘ is now mandatory
|
||||
*** The Rottlog service was replaced by new ‘log-rotation-service-type’
|
||||
*** The default system log has been changed to Shepherd’s ‘system-log’ service
|
||||
*** New recommended ‘%base-home-services’ variable for Guix Home
|
||||
*** UDisks now mounts removable devices in /run/media/$USER instead of /media
|
||||
*** Syncthing service received incompatible changes
|
||||
*** ‘node-build-system’ received incompatible changes
|
||||
*** New services for /etc/profile.d and /etc/bashrc.d
|
||||
*** New build system for clasp-cl
|
||||
*** New Rust packaging model
|
||||
*** C.utf8 locale is now supported by glibc
|
||||
*** Fully bootstrapped mono and zig are now available
|
||||
*** 64bit Hurd (x86_64-gnu) now has experimental support
|
||||
*** 12525 new packages
|
||||
*** 8911 package updates
|
||||
|
||||
Noteworthy updates:
|
||||
bash 5.2.37, binutils 2.44, clojure 1.12.0, cups 2.4.14, emacs 30.2,
|
||||
gcc-toolchain 15.2.0, gdb 16.3, ghc 9.2.8, gimp 3.0.4, glibc 2.41,
|
||||
gnome 46.10, gnupg 2.4.7, go 1.25.3, guile 3.0.9, icecat 140.6.0-gnu1,
|
||||
icedtea 3.19.0, inkscape 1.3.2, julia 1.8.5, libreoffice 25.2.5.2,
|
||||
linux-libre 6.17.12, lxde 0.99.3, mate 1.28.2, ocaml 5.3.0, octave 10.3.0,
|
||||
openjdk 25, perl 5.36.0, python 3.11.14, racket 8.18, rust 1.85.1, r 4.5.2,
|
||||
sbcl 2.5.8, shepherd 1.0.9, xfce 4.20.0, xorg-server 21.1.21
|
||||
|
||||
** Programming interfaces
|
||||
*** ‘(gnu system setuid)’ has been renamed to ‘(gnu system privilege)’
|
||||
*** Moved to a new Rust packaging model and repackaged all Rust applications
|
||||
*** Rust library packages have been moved to the guix-rust-past-crates channel
|
||||
*** Most Python packages now use the ‘pyproject-build-system’
|
||||
** Noteworthy bug fixes
|
||||
*** Daemon vulnerability allowing store corruption has been fixed
|
||||
*** Daemon vulnerability allowing takeover of build users has been fixed
|
||||
*** Daemon privilege escalation vulnerabilities fixed
|
||||
*** Daemon CVEs have been fixed
|
||||
CVE-2024-27297, CVE-2024-52867, CVE-2025-46415, CVE-2025-46416, CVE-2025-59378
|
||||
* Changes in 1.4.0 (since 1.3.0)
|
||||
** Package management
|
||||
*** New ‘guix home’ command, for home environment management
|
||||
@@ -1996,7 +1926,7 @@ zynaddsubfx@3.0.3, zziplib@0.13.69
|
||||
*** ‘guix pack’ now honors package transformation options
|
||||
*** ‘guix package --search’ no longer shows superseded packages
|
||||
(<https://bugs.gnu.org/30566>)
|
||||
*** ‘guix offload test’ reports errors more nicely
|
||||
*** ‘guix offload test’ reports errors more nicely
|
||||
(<https://bugs.gnu.org/28057>)
|
||||
*** postgresql service is started through ‘pg_ctl’
|
||||
(<https://bugs.gnu.org/29992>)
|
||||
@@ -5734,7 +5664,7 @@ Monad” in the manual.
|
||||
|
||||
*** X session is executed from a login shell (<http://bugs.gnu.org/19119>)
|
||||
*** grub.cfg is now a garbage-collector root (<http://bugs.gnu.org/19160>)
|
||||
*** Substituter progress report properly formatted
|
||||
*** Substituter progress report properly formatted
|
||||
(<http://bugs.gnu.org/19313>)
|
||||
*** Document permissions for /gnu/store (<http://bugs.gnu.org/19316>)
|
||||
*** Make sure config.go is newer than config.scm
|
||||
@@ -5990,18 +5920,18 @@ This could cause problems with ancient Linux kernel.
|
||||
*** download: Use the 'SERVER NAME' TLS extension when possible
|
||||
(<http://bugs.gnu.org/18526>)
|
||||
*** libdaemon: Add alternate source URLs (<http://bugs.gnu.org/18639>)
|
||||
*** icu4c: Reinstate RUNPATH on shared libraries
|
||||
*** icu4c: Reinstate RUNPATH on shared libraries
|
||||
(<http://bugs.gnu.org/18695>)
|
||||
*** nss-mdns: Add alternate source URLs (<http://bugs.gnu.org/18704>)
|
||||
*** download: Add "Accept: */*" to the HTTP headers
|
||||
(<http://bugs.gnu.org/18768>)
|
||||
*** guix-register: Do not attempt to create NIX_STORE_DIR
|
||||
*** guix-register: Do not attempt to create NIX_STORE_DIR
|
||||
(<http://bugs.gnu.org/18689>)
|
||||
*** Allow Linux-libre to find our 'modprobe' command
|
||||
(<http://bugs.gnu.org/18525>)
|
||||
*** man-pages: Build sequentially (<http://bugs.gnu.org/18701>)
|
||||
*** Fix intermittent test failures involving GC (<http://bugs.gnu.org/18935>)
|
||||
*** guix import: pypi: Gracefully handle non-existent packages
|
||||
*** guix import: pypi: Gracefully handle non-existent packages
|
||||
(<http://bugs.gnu.org/18831>)
|
||||
*** Make sure the shared library has the '.so' extension
|
||||
(<http://bugs.gnu.org/18521>)
|
||||
|
||||
@@ -324,7 +324,7 @@ files."
|
||||
(message (format #f "You found a bug: the program '~a'
|
||||
failed to compute the derivation for Guix (version: ~s; system: ~s;
|
||||
host version: ~s; pull-version: ~s).
|
||||
Please report the COMPLETE output above to <~a>.~%"
|
||||
Please report the COMPLETE output above by email to <~a>.~%"
|
||||
(derivation->output-path build)
|
||||
version system %guix-version pull-version
|
||||
%guix-bug-report-address))))))))))))
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
directory))
|
||||
((_ . directory) directory))
|
||||
(derivation->output-paths drv)))))
|
||||
(%final-inputs system)))
|
||||
%final-inputs))
|
||||
|
||||
(define (assert-valid-substitute substitute)
|
||||
"Make sure SUBSTITUTE does not refer to any bootstrap inputs, and bail out
|
||||
|
||||
@@ -3,7 +3,7 @@ exec guile --no-auto-compile -e main -s "$0" "$@"
|
||||
!#
|
||||
;;;; test-driver.scm - Guile test driver for Automake testsuite harness
|
||||
|
||||
(define script-version "2026-01-23.07") ;UTC
|
||||
(define script-version "2023-12-08.14") ;UTC
|
||||
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
@@ -151,7 +151,7 @@ cases based on their names."
|
||||
(and show-duration? time-elapsed-seconds)))
|
||||
|
||||
(unless (and errors-only? (not (test-failed? runner)))
|
||||
(format #t "test-name: ~A~%" (test-runner-test-name runner))
|
||||
(format #t "test-name: ~A~%" (result 'test-name))
|
||||
(format #t "location: ~A~%"
|
||||
(string-append (result 'source-file) ":"
|
||||
(number->string (result 'source-line))))
|
||||
|
||||
@@ -128,13 +128,13 @@ COMMIT. PROC receives the temporary directory file name as an argument."
|
||||
(define %guix-git-repo-push-url-regexp
|
||||
"(git.guix.gnu.org|codeberg.org/guix|git@codeberg.org:guix)/guix(.git)? \\(push\\)")
|
||||
|
||||
(define (with-input-pipe-to-string prog . args)
|
||||
(let* ((input-pipe (apply open-pipe* OPEN_READ prog args))
|
||||
(define-syntax-rule (with-input-pipe-to-string prog arg ...)
|
||||
(let* ((input-pipe (open-pipe* OPEN_READ prog arg ...))
|
||||
(output (get-string-all input-pipe))
|
||||
(exit-val (status:exit-val (close-pipe input-pipe))))
|
||||
(unless (zero? exit-val)
|
||||
(error (format #f "Command ~s exited with non-zero exit status: ~s"
|
||||
(string-join (cons prog args)) exit-val)))
|
||||
(string-join (list prog arg ...)) exit-val)))
|
||||
(string-trim-both output)))
|
||||
|
||||
(define (find-origin-remote)
|
||||
|
||||
+2
-19
@@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
#
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012-2021, 2022-2023, 2025 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2012-2021, 2022-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013, 2016 Mark H Weaver <mhw@netris.org>
|
||||
# Copyright © 2014-2016 Alex Kost <alezost@gmail.com>
|
||||
# Copyright © 2014-2016 David Thompson <davet@gnu.org>
|
||||
@@ -81,15 +81,6 @@ AC_ARG_WITH([selinux-policy-dir],
|
||||
[selinux_policydir='${datadir}/selinux/'])
|
||||
AC_SUBST([selinux_policydir])
|
||||
|
||||
AC_ARG_WITH([apparmor-profile-dir],
|
||||
AS_HELP_STRING([--with-apparmor-profile-dir=DIR],
|
||||
[name of the AppArmor profile directory]),
|
||||
[apparmor_profiledir="$withval"],
|
||||
[apparmor_profiledir='${sysconfdir}/apparmor.d'])
|
||||
AC_SUBST([apparmor_profiledir])
|
||||
apparmor_profile_tunablesdir='${apparmor_profiledir}/tunables'
|
||||
AC_SUBST([apparmor_profile_tunablesdir])
|
||||
|
||||
dnl Better be verbose.
|
||||
AC_MSG_CHECKING([for the store directory])
|
||||
AC_MSG_RESULT([$storedir])
|
||||
@@ -130,8 +121,7 @@ if test "x$GUILD" = "x"; then
|
||||
fi
|
||||
|
||||
dnl (guix ui), notably, requires 'default-optimization-level' added in 3.0.3.
|
||||
dnl (guix serialization) requires 'bytevector-slice' added in 3.0.9.
|
||||
PKG_CHECK_MODULES([GUILE], [guile-3.0 >= 3.0.9])
|
||||
PKG_CHECK_MODULES([GUILE], [guile-3.0 >= 3.0.3])
|
||||
|
||||
dnl Get CFLAGS and LDFLAGS for libguile.
|
||||
GUILE_FLAGS
|
||||
@@ -199,12 +189,6 @@ if test "x$have_guile_lzlib" != "xyes"; then
|
||||
AC_MSG_ERROR([Guile-lzlib is missing; please install it.])
|
||||
fi
|
||||
|
||||
dnl Check for Guile-semver.
|
||||
GUILE_MODULE_AVAILABLE([have_guile_semver], [(semver)])
|
||||
if test "x$have_guile_semver" != "xyes"; then
|
||||
AC_MSG_ERROR([Guile-semver is missing; please install it.])
|
||||
fi
|
||||
|
||||
dnl Check for Guile-Avahi.
|
||||
GUILE_MODULE_AVAILABLE([have_guile_avahi], [(avahi)])
|
||||
AM_CONDITIONAL([HAVE_GUILE_AVAHI],
|
||||
@@ -324,7 +308,6 @@ AC_CONFIG_FILES([Makefile
|
||||
po/guix/Makefile.in
|
||||
po/packages/Makefile.in
|
||||
etc/guix-daemon.cil
|
||||
etc/apparmor.d/tunables/guix
|
||||
guix/config.scm])
|
||||
|
||||
AC_CONFIG_FILES([etc/committer.scm], [chmod +x etc/committer.scm])
|
||||
|
||||
+5
-7
@@ -72,7 +72,7 @@
|
||||
|
||||
(define %cookbook-languages
|
||||
;; Available translations for the 'guix-cookbook' text domain.
|
||||
'("de" "en" "es" "fr" "it" "ko" "pt_BR" "ru" "sk" "sv" "ta" "zh_CN"))
|
||||
'("de" "en" "es" "fr" "it" "ko" "pt_BR" "ru" "sk" "sv" "zh_CN"))
|
||||
|
||||
(define %languages
|
||||
;; Available translations for the document being built.
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
(define %latest-guix-version
|
||||
;; Latest released version.
|
||||
"1.5.0")
|
||||
"1.4.0")
|
||||
|
||||
(define (texinfo-manual-images source)
|
||||
"Return a directory containing all the images used by the user manual, taken
|
||||
@@ -777,8 +777,7 @@ in SOURCE."
|
||||
(define version-links
|
||||
(list (menu-item #$latest-version
|
||||
(string-append
|
||||
"/manual/" #$latest-version
|
||||
"/" language
|
||||
"/manual/" language
|
||||
(if split-node? "/html_node" "")))
|
||||
(menu-item "development"
|
||||
(string-append
|
||||
@@ -943,8 +942,7 @@ makeinfo OPTIONS."
|
||||
(let* ((texi (language->texi-file-name language))
|
||||
(opts `("--html"
|
||||
"-c" ,(string-append "TOP_NODE_UP_URL=/manual/"
|
||||
#$%latest-guix-version
|
||||
"/" language)
|
||||
language)
|
||||
#$@options
|
||||
,texi)))
|
||||
(format #t "building HTML manual for language '~a'...~%"
|
||||
@@ -1302,7 +1300,7 @@ must be the Guix top-level source directory, from which PO files are taken."
|
||||
language))
|
||||
".html")))
|
||||
"HTML, entirely on one page"))
|
||||
,@(if (member language '("ko" "ru" "ta"))
|
||||
,@(if (member language '("ko" "ru"))
|
||||
'()
|
||||
`((li (a (@ (href ,(string-append
|
||||
#$manual
|
||||
|
||||
+321
-102
@@ -66,7 +66,7 @@ GNU Guix depends on the following packages:
|
||||
|
||||
@itemize
|
||||
@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x,
|
||||
version 3.0.9 or later;
|
||||
version 3.0.3 or later;
|
||||
@item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version
|
||||
0.1.0 or later;
|
||||
@item
|
||||
@@ -134,15 +134,10 @@ C++11 standard.
|
||||
@section Building from Git
|
||||
|
||||
If you want to hack Guix itself, it is recommended to use the latest
|
||||
version from the Git repository@footnote{
|
||||
Guix uses @code{master} as the default branch name. A proposal in 2025 to
|
||||
change the default branch name to @code{main} did not reach consensus.
|
||||
See @uref{https://codeberg.org/guix/guix-consensus-documents/src/branch/main/003-rename-default-branch.md,
|
||||
Guix Consensus Document 003}.}:
|
||||
version from the Git repository:
|
||||
|
||||
@example
|
||||
git clone https://git.guix.gnu.org/guix.git
|
||||
cd guix
|
||||
@end example
|
||||
|
||||
@cindex authentication, of a Guix checkout
|
||||
@@ -182,7 +177,6 @@ guix shell -D guix -CPW
|
||||
or even, from within a Git worktree for Guix:
|
||||
|
||||
@example
|
||||
echo $(pwd) >> ~/.config/guix/shell-authorized-directories
|
||||
guix shell -CPW
|
||||
@end example
|
||||
|
||||
@@ -190,10 +184,6 @@ If @option{-C} (short for @option{--container}) is not supported on your
|
||||
system, try @command{--pure} instead of @option{-CPW}.
|
||||
@xref{Invoking guix shell}, for more information on that command.
|
||||
|
||||
Most of the test suite runs without an internet connection. The @option{-N}
|
||||
(short for @option{--network}) can be added to the @code{guix shell} command
|
||||
to run the tests that require internet access.
|
||||
|
||||
If you are unable to use Guix when building Guix from a checkout, the
|
||||
following are the required packages in addition to those mentioned in the
|
||||
installation instructions (@pxref{Requirements}).
|
||||
@@ -207,11 +197,11 @@ installation instructions (@pxref{Requirements}).
|
||||
@item @url{https://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
|
||||
@end itemize
|
||||
|
||||
On Guix, other development tools, like @code{strace}, can be included by
|
||||
giving them as extra arguments to @command{guix shell}:
|
||||
On Guix, extra dependencies can be added by instead running @command{guix
|
||||
shell}:
|
||||
|
||||
@example
|
||||
guix shell -D guix -CPW strace
|
||||
guix shell -D guix help2man git strace --pure
|
||||
@end example
|
||||
|
||||
From there you can generate the build system infrastructure
|
||||
@@ -1514,30 +1504,37 @@ satisfied.
|
||||
@subsection Python Modules
|
||||
|
||||
@cindex python
|
||||
The standard way to generate a package definition is to use
|
||||
@code{guix import pypi <name>}, where @var{name} is the name of the
|
||||
Python package on @url{https://pypi.org, PyPI}, see @pxref{Invoking guix
|
||||
import}. Please check with @code{guix lint <package-name>} that the
|
||||
generated package is valid.
|
||||
We currently package Python 2 and Python 3, under the Scheme variable names
|
||||
@code{python-2} and @code{python} as explained in @ref{Version Numbers}.
|
||||
To avoid confusion and naming clashes with other programming languages, it
|
||||
seems desirable that the name of a package for a Python module contains
|
||||
the word @code{python}.
|
||||
|
||||
To avoid confusion and naming clashes with other programming languages,
|
||||
Python module packages should be prefixed with @code{python-}.
|
||||
Some modules are compatible with only one version of Python, others with
|
||||
both. If the package Foo is compiled with Python 3, we name it
|
||||
@code{python-foo}. If it is compiled with Python 2, we name it
|
||||
@code{python2-foo}. Python 2 packages are being removed from the
|
||||
distribution; please do no not submit any new Python 2 packages.
|
||||
|
||||
If a project already contains the word @code{python}, please do not
|
||||
repeat it; for instance, the module python-dateutil is packaged under
|
||||
the name @code{python-dateutil}. If the project name starts with
|
||||
@code{py}, it is kept and prefixed as described above (e.g.@:
|
||||
@code{python-pytz}).
|
||||
If a project already contains the word @code{python}, we drop this;
|
||||
for instance, the module python-dateutil is packaged under the names
|
||||
@code{python-dateutil} and @code{python2-dateutil}. If the project name
|
||||
starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as
|
||||
described above.
|
||||
|
||||
@quotation Note
|
||||
The standard build system for Python packages is Guix's implementation
|
||||
of the @url{https://peps.python.org/pep-0517/, formal Python standard}
|
||||
for specifying build requirements: @var{pyproject-build-system}.
|
||||
The @var{python-build-system} which corresponds to the way Python
|
||||
packages were built before PEP517, using the informally specified
|
||||
@file{setup.py} file, is now deprecated. @var{pyproject-build-system}
|
||||
will eventually be deprecated and renamed into
|
||||
@var{python-build-system} after its removal.
|
||||
Currently there are two different build systems for Python packages in Guix:
|
||||
@var{python-build-system} and @var{pyproject-build-system}. For the
|
||||
longest time, Python packages were built from an informally specified
|
||||
@file{setup.py} file. That worked amazingly well, considering Python's
|
||||
success, but was difficult to build tooling around. As a result, a host
|
||||
of alternative build systems emerged and the community eventually settled on a
|
||||
@url{https://peps.python.org/pep-0517/, formal standard} for specifying build
|
||||
requirements. @var{pyproject-build-system} is Guix's implementation of this
|
||||
standard. It is considered ``experimental'' in that it does not yet support
|
||||
all the various PEP-517 @emph{build backends}, but you are encouraged to try
|
||||
it for new Python packages and report any problems. It will eventually be
|
||||
deprecated and merged into @var{python-build-system}.
|
||||
@end quotation
|
||||
|
||||
@subsubsection Specifying Dependencies
|
||||
@@ -1549,20 +1546,21 @@ package source tree, with varying degrees of accuracy: in the
|
||||
@file{requirements.txt}, or in @file{tox.ini} (the latter mostly for
|
||||
test dependencies).
|
||||
|
||||
When editing a recipe for a Python package, the goal is to map these
|
||||
dependencies to the appropriate type of ``input'' (@pxref{package
|
||||
Your mission, when writing a recipe for a Python package, is to map
|
||||
these dependencies to the appropriate type of ``input'' (@pxref{package
|
||||
Reference, inputs}). Although the @code{pypi} importer normally does a
|
||||
good job (@pxref{Invoking guix import}), please verify the following
|
||||
check list to determine which dependency goes where.
|
||||
good job (@pxref{Invoking guix import}), you may want to check the
|
||||
following check list to determine which dependency goes where.
|
||||
|
||||
@itemize
|
||||
|
||||
@item
|
||||
Python is packaged @emph{without} @code{setuptools} and @code{pip}
|
||||
installed per default.
|
||||
We currently package Python with @code{setuptools} and @code{pip}
|
||||
installed per default. This is about to change, and users are encouraged
|
||||
to use @code{python-toolchain} if they want a build environment for Python.
|
||||
|
||||
@command{guix lint} will warn if @code{pip} or other unneeded
|
||||
native-inputs are added.
|
||||
@command{guix lint} will warn if @code{setuptools} or @code{pip} are
|
||||
added as native-inputs because they are generally not necessary.
|
||||
|
||||
@item
|
||||
Python dependencies required at run time go into
|
||||
@@ -1577,9 +1575,9 @@ Python packages required only at build time---e.g., those listed under
|
||||
for testing---e.g., those in @code{tests_require} or @file{tox.ini}---go into
|
||||
@code{native-inputs}. The rationale is that (1) they do not need to be
|
||||
propagated because they are not needed at run time, and (2) in a
|
||||
cross-compilation context, it's the target ``native'' input.
|
||||
cross-compilation context, it's the ``native'' input that we'd want.
|
||||
|
||||
Examples are the @code{pytest}, @code{mock}, and @code{stestr} test
|
||||
Examples are the @code{pytest}, @code{mock}, and @code{nose} test
|
||||
frameworks. Of course if any of these packages is also required at
|
||||
run-time, it needs to go to @code{propagated-inputs}.
|
||||
|
||||
@@ -1940,60 +1938,35 @@ keyword parameters for procedures that take more than four parameters.
|
||||
@node Submitting Patches
|
||||
@section Submitting Patches
|
||||
|
||||
@cindex pull requests
|
||||
@cindex patch submission
|
||||
Development is done using the Git distributed version control system.
|
||||
Thus, access to the repository is not strictly necessary. We welcome
|
||||
contributions as @dfn{pull requests} (PR) at
|
||||
@url{https://codeberg.org/guix/guix/pulls/}@footnote{Before January 1st,
|
||||
2026, changes would be submitted by email to
|
||||
@email{guix-patches@@gnu.org} and could be
|
||||
@uref{https://issues.guix.gnu.org, browsed online}. In accordance with
|
||||
@uref{https://codeberg.org/guix/guix-consensus-documents/src/branch/main/002-codeberg.md,
|
||||
Guix Consensus Document 002}, this method is no longer supported.}.
|
||||
|
||||
There are two ways to create a pull request:
|
||||
contributions in one of the following forms:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
By creating a personal ``fork'' of @uref{https://codeberg.org/guix/guix,
|
||||
the repository}, creating a branch with your changes, and
|
||||
@uref{https://docs.codeberg.org/collaborating/pull-requests-and-git-flow/,
|
||||
submitting a pull request for that branch}.
|
||||
@cindex pull request, for contributions
|
||||
As a @dfn{pull request} (PR) at
|
||||
@url{https://codeberg.org/guix/guix/pulls/}. This is now the preferred
|
||||
form.
|
||||
|
||||
@item
|
||||
@cindex AGit workflow, for pull requests
|
||||
By following the @uref{https://forgejo.org/docs/next/user/agit-support/,
|
||||
@dfn{AGit workflow}}, which is somewhat more convenient and consumes
|
||||
less disk space at Codeberg since it removes the need to create a
|
||||
``fork''.
|
||||
Until December 31st, 2025@footnote{This date is the result of a decision
|
||||
made collectively in
|
||||
@uref{https://codeberg.org/guix/guix-consensus-documents/src/branch/main/002-codeberg.md,
|
||||
Guix Consensus Document 002} in May 2025.}, you may also send patches as
|
||||
produced by @code{git format-patch} to the @email{guix-patches@@gnu.org}
|
||||
mailing list (@pxref{Submitting patches to a project,,, git, Git User
|
||||
Manual}).
|
||||
|
||||
Assuming your local checkout is on the branch containing the changes you
|
||||
would like to submit for inclusion in the @code{master} branch, run:
|
||||
|
||||
@example
|
||||
git push origin HEAD:refs/for/master \
|
||||
-o topic=@var{topic} \
|
||||
-o title=@var{title} -o description=@var{description}
|
||||
@end example
|
||||
|
||||
@var{topic} must be an identifier without whitespace, similar to a
|
||||
branch name; @var{title} and @var{description} are arbitrary text that
|
||||
can be omitted, in which case the message of the last commit on the
|
||||
branch fills that role.
|
||||
|
||||
To send an update to an AGit pull request of yours, run:
|
||||
|
||||
@example
|
||||
git push origin HEAD:refs/for/master \
|
||||
-o topic=@var{topic} -o force-push=yes
|
||||
@end example
|
||||
|
||||
Codeberg automatically figures out which pull request @var{topic}
|
||||
corresponds to and updates the associated branch.
|
||||
This mailing list is backed by a Debbugs instance, which allows us to
|
||||
keep track of submissions (@pxref{Tracking Bugs and Changes}).
|
||||
Each message sent to that mailing list gets a new tracking number
|
||||
assigned; people can then follow up on the submission by sending email
|
||||
to @code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER}
|
||||
is the tracking number (@pxref{Sending a Patch Series}).
|
||||
@end itemize
|
||||
|
||||
Contributors are encouraged to take a moment to set some Git
|
||||
Either way, contributors are encouraged to take a moment to set some Git
|
||||
repository options (@pxref{Configuring Git}) first, which can improve
|
||||
the readability of patches. Seasoned Guix developers may also want to
|
||||
look at the section on commit access (@pxref{Commit Access}).
|
||||
@@ -2160,13 +2133,36 @@ guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master --disable-auth
|
||||
|
||||
@end enumerate
|
||||
|
||||
When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as
|
||||
a subject, if your patch is to be applied on a branch other than
|
||||
@code{master}, say @code{core-updates}, specify it in the subject like
|
||||
@samp{[PATCH core-updates] @dots{}}.
|
||||
|
||||
You may use your email client, the @command{git send-email} command
|
||||
(@pxref{Sending a Patch Series}) or the @command{mumi send-email}
|
||||
command (@pxref{Debbugs User Interfaces}). We prefer to get patches in
|
||||
plain text messages, either inline or as MIME attachments. You are
|
||||
advised to pay attention if your email client changes anything like line
|
||||
breaks or indentation which could potentially break the patches.
|
||||
|
||||
Expect some delay when you submit your very first patch to
|
||||
@email{guix-patches@@gnu.org}. You have to wait until you get an
|
||||
acknowledgement with the assigned tracking number. Future acknowledgements
|
||||
should not be delayed.
|
||||
|
||||
When a bug is resolved, please close the thread by sending an email to
|
||||
@email{@var{ISSUE_NUMBER}-done@@debbugs.gnu.org}.
|
||||
|
||||
@menu
|
||||
* Configuring Git::
|
||||
* Sending a Patch Series::
|
||||
@end menu
|
||||
|
||||
@node Configuring Git
|
||||
@subsection Configuring Git
|
||||
@cindex git configuration
|
||||
@cindex @code{git format-patch}
|
||||
@cindex @code{git send-email}
|
||||
|
||||
If you have not done so already, you may wish to set a name and email
|
||||
that will be associated with your commits (@pxref{telling git your name,
|
||||
@@ -2186,6 +2182,166 @@ changes was already submitted for review. If you have a
|
||||
@file{commit-msg} hook of your own you would like to use with Guix, you
|
||||
can place it under the @file{.git/hooks/commit-msg.d/} directory.
|
||||
|
||||
@node Sending a Patch Series
|
||||
@subsection Sending a Patch Series
|
||||
@cindex patch series
|
||||
@cindex @code{git send-email}
|
||||
@cindex @code{git format-patch}
|
||||
|
||||
@quotation Warning
|
||||
This section is about contributing code by sending patches by email.
|
||||
This option is supported until December 31st, 2025, but we recommend
|
||||
getting familiar with the @dfn{pull request} workflow, which will become
|
||||
the norm after that date. @xref{Submitting Patches}, for more info.
|
||||
@end quotation
|
||||
|
||||
@unnumberedsubsubsec Single Patches
|
||||
@anchor{Single Patches}
|
||||
The @command{git send-email} command is the best way to send both single
|
||||
patches and patch series (@pxref{Multiple Patches}) to the Guix mailing
|
||||
list. Sending patches as email attachments may make them difficult to
|
||||
review in some mail clients, and @command{git diff} does not store commit
|
||||
metadata.
|
||||
|
||||
@quotation Note
|
||||
The @command{git send-email} command is provided by the @code{send-email}
|
||||
output of the @code{git} package, i.e. @code{git:send-email}.
|
||||
@end quotation
|
||||
|
||||
The following command will create a patch email from the latest commit,
|
||||
open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to
|
||||
the Guix mailing list to be reviewed and merged. Assuming you have
|
||||
already configured Git according to @xref{Configuring Git}, you can
|
||||
simply use:
|
||||
|
||||
@example
|
||||
$ git send-email --annotate -1
|
||||
@end example
|
||||
|
||||
@quotation Tip
|
||||
To add a prefix to the subject of your patch, you may use the
|
||||
@option{--subject-prefix} option. The Guix project uses this to
|
||||
specify that the patch is intended for a branch or repository
|
||||
other than the @code{master} branch of
|
||||
@url{https://codeberg.org/guix/guix.git}.
|
||||
|
||||
@example
|
||||
git send-email --annotate --subject-prefix='PATCH core-updates' -1
|
||||
@end example
|
||||
@end quotation
|
||||
|
||||
The patch email contains a three-dash separator line after the commit
|
||||
message. You may ``annotate'' the patch with explanatory text by adding
|
||||
it under this line. If you do not wish to annotate the email, you may
|
||||
drop the @option{--annotate} option.
|
||||
|
||||
If you need to send a revised patch, don't resend it like this or send
|
||||
a ``fix'' patch to be applied on top of the last one; instead, use
|
||||
@command{git commit --amend} or @url{https://git-rebase.io,
|
||||
@command{git rebase}} to modify the commit, and use the
|
||||
@email{@var{ISSUE_NUMBER}@@debbugs.gnu.org} address and the @option{-v}
|
||||
flag with @command{git send-email}.
|
||||
|
||||
@example
|
||||
$ git commit --amend
|
||||
$ git send-email --annotate -v@var{REVISION} \
|
||||
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -1
|
||||
@end example
|
||||
|
||||
@quotation Note
|
||||
Due to an apparent bug in @command{git send-email},
|
||||
@option{-v @var{REVISION}} (with the space) will not work; you
|
||||
@emph{must} use @option{-v@var{REVISION}}.
|
||||
@end quotation
|
||||
|
||||
You can find out @var{ISSUE_NUMBER} either by searching on the mumi
|
||||
interface at @url{https://issues.guix.gnu.org} for the name of your patch or
|
||||
reading the acknowledgement email sent automatically by Debbugs in
|
||||
reply to incoming bugs and patches, which contains the bug number.
|
||||
|
||||
@unnumberedsubsubsec Notifying Teams
|
||||
@anchor{Notifying Teams}
|
||||
@cindex teams
|
||||
If your git checkout has been correctly configured (@pxref{Configuring
|
||||
Git}), the @command{git send-email} command will automatically notify
|
||||
the appropriate team members, based on the scope of your changes. This
|
||||
relies on the @file{etc/teams.scm} script, which can also be invoked
|
||||
manually if you do not use the preferred @command{git send-email}
|
||||
command to submit patches. To list the available actions of the script,
|
||||
you can invoke it via the @command{etc/teams.scm help} command. For
|
||||
more information regarding teams, @pxref{Teams}.
|
||||
|
||||
@quotation Note
|
||||
On foreign distros, you might have to use @command{./pre-inst-env git
|
||||
send-email} for @file{etc/teams.scm} to work.
|
||||
@end quotation
|
||||
|
||||
@unnumberedsubsubsec Multiple Patches
|
||||
@anchor{Multiple Patches}
|
||||
@cindex cover letter
|
||||
While @command{git send-email} alone will suffice for a single
|
||||
patch, an unfortunate flaw in Debbugs means you need to be more
|
||||
careful when sending multiple patches: if you send them all to the
|
||||
@email{guix-patches@@gnu.org} address, a new issue will be created
|
||||
for each patch!
|
||||
|
||||
When sending a series of patches, it's best to send a Git ``cover
|
||||
letter'' first, to give reviewers an overview of the patch series.
|
||||
We can create a directory called @file{outgoing} containing both
|
||||
our patch series and a cover letter called @file{0000-cover-letter.patch}
|
||||
with @command{git format-patch}.
|
||||
|
||||
@example
|
||||
$ git format-patch -@var{NUMBER_COMMITS} -o outgoing \
|
||||
--cover-letter
|
||||
@end example
|
||||
|
||||
@quotation Note
|
||||
@code{git format-patch} accepts a wide range of
|
||||
@uref{https://git-scm.com/docs/gitrevisions, revision range} specifiers.
|
||||
For example, if you are working in a branch, you could select all commits
|
||||
in your branch starting at @code{master}.
|
||||
|
||||
@example
|
||||
$ git format-patch master..@var{MY_BRANCH} -o outgoing \
|
||||
--cover-letter
|
||||
@end example
|
||||
@end quotation
|
||||
|
||||
We can now send @emph{just} the cover letter to the
|
||||
@email{guix-patches@@gnu.org} address, which will create an issue
|
||||
that we can send the rest of the patches to.
|
||||
|
||||
@example
|
||||
$ git send-email outgoing/0000-cover-letter.patch --annotate
|
||||
$ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
|
||||
@end example
|
||||
|
||||
Ensure you edit the email to add an appropriate subject line and
|
||||
blurb before sending it. Note the automatically generated shortlog
|
||||
and diffstat below the blurb.
|
||||
|
||||
Once the Debbugs mailer has replied to your cover letter email, you
|
||||
can send the actual patches to the newly-created issue address.
|
||||
|
||||
@example
|
||||
$ git send-email outgoing/*.patch --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
|
||||
$ rm -rf outgoing # we don't need these anymore
|
||||
@end example
|
||||
|
||||
Thankfully, this @command{git format-patch} dance is not necessary
|
||||
to send an amended patch series, since an issue already exists for
|
||||
the patchset.
|
||||
|
||||
@example
|
||||
$ git send-email -@var{NUMBER_COMMITS} -v@var{REVISION} \
|
||||
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
|
||||
@end example
|
||||
|
||||
If need be, you may use @option{--cover-letter --annotate} to send
|
||||
another cover letter, e.g. for explaining what's changed since the last
|
||||
revision, and why these changes are necessary.
|
||||
|
||||
@node Tracking Bugs and Changes
|
||||
@section Tracking Bugs and Changes
|
||||
|
||||
@@ -2196,26 +2352,31 @@ patch submissions and topic branches.
|
||||
* The Issue Tracker:: The official bug and patch tracker.
|
||||
* Managing Patches and Branches:: How changes to Guix are managed.
|
||||
* Debbugs User Interfaces:: Ways to interact with Debbugs.
|
||||
* Debbugs Usertags:: Tag reports with custom labels.
|
||||
* Cuirass Build Notifications:: Be alerted of any breakage via RSS feeds.
|
||||
@end menu
|
||||
|
||||
@node The Issue Tracker
|
||||
@subsection The Issue Tracker
|
||||
|
||||
@cindex email workflow, deprecated
|
||||
@cindex issue tracker, for the email workflow
|
||||
@cindex bug reports, tracking
|
||||
@cindex patch submissions, tracking
|
||||
@cindex issue tracking
|
||||
@cindex Debbugs, issue tracking system
|
||||
Bug reports (@dfn{issues}) and patch submissions (@dfn{pull requests})
|
||||
are currently tracked at the @uref{https://codeberg.org/guix/guix,
|
||||
project's home at Codeberg}.
|
||||
|
||||
Before January 1st, 2026, bug reports and patches were tracked using the
|
||||
Debbugs instance at @uref{https://bugs.gnu.org}, which can also be
|
||||
browsed at @uref{https://issues.guix.gnu.org}. This has been
|
||||
discontinued and Codeberg is now the sole option to report new bugs and
|
||||
propose new changes@footnote{Check out
|
||||
Before May 25th, 2025, bug reports and patches were exclusively tracked
|
||||
using the Debbugs instance at @uref{https://bugs.gnu.org}; it may still
|
||||
be used for these purposes until December 31st, 2025, after which
|
||||
Codeberg will become the sole option to report new bugs and propose new
|
||||
changes@footnote{Check out
|
||||
@uref{https://codeberg.org/guix/guix-consensus-documents/src/branch/main/002-codeberg.md,
|
||||
Guix Consensus Document 002} for details on this decision.}.
|
||||
Guix Consensus Document 002} for details on this decision.}. With
|
||||
Debbugs, bug reports are sent by email to @email{bug-guix@@gnu.org} and
|
||||
patches are sent to @email{guix-patches@@gnu.org} (@pxref{Submitting
|
||||
Patches}).
|
||||
|
||||
@node Managing Patches and Branches
|
||||
@subsection Managing Patches and Branches
|
||||
@@ -2327,10 +2488,11 @@ only then should the merge requests be created, as documented earlier.
|
||||
|
||||
@quotation Warning
|
||||
This section is about bug reports and patches sent by email to
|
||||
@uref{https://issues.guix.gnu.org, Debbugs}, which is discontinued.
|
||||
Since January 1st, 2026, bug reports and patches are submitted as issues
|
||||
and pull requests on @uref{https://codeberg.org/guix/guix, Codeberg}.
|
||||
@xref{Submitting Patches}, for more info.
|
||||
@uref{https://issues.guix.gnu.org, Debbugs}. This option is supported
|
||||
until December 31st, 2025, after which
|
||||
@uref{https://codeberg.org/guix/guix, Codeberg} will be the only
|
||||
interface for submitting bug reports and changes. @xref{Submitting
|
||||
Patches}, for more info.
|
||||
@end quotation
|
||||
|
||||
@subsubsection Web interface
|
||||
@@ -2519,6 +2681,63 @@ used.
|
||||
@xref{Top,,, debbugs-ug, Debbugs User Guide}, for more information on
|
||||
this nifty tool!
|
||||
|
||||
@node Debbugs Usertags
|
||||
@subsection Debbugs Usertags
|
||||
|
||||
@cindex usertags, for debbugs
|
||||
@cindex Debbugs usertags
|
||||
Debbugs provides a feature called @dfn{usertags} that allows any user to
|
||||
tag any bug with an arbitrary label. Bugs can be searched by usertag,
|
||||
so this is a handy way to organize bugs@footnote{The list of usertags is
|
||||
public information, and anyone can modify any user's list of usertags,
|
||||
so keep that in mind if you choose to use this feature.}. If you use
|
||||
Emacs Debbugs, the entry-point to consult existing usertags is the
|
||||
@samp{C-u M-x debbugs-gnu-usertags} procedure. To set a usertag, press
|
||||
@samp{C} while consulting a bug within the *Guix-Patches* buffer opened
|
||||
with @samp{C-u M-x debbugs-gnu-bugs} buffer, then select @code{usertag}
|
||||
and follow the instructions.
|
||||
|
||||
For example, to view all the bug reports (or patches, in the case of
|
||||
@code{guix-patches}) tagged with the usertag @code{powerpc64le-linux}
|
||||
for the user @code{guix}, open a URL like the following in a web
|
||||
browser:
|
||||
@url{https://debbugs.gnu.org/cgi-bin/pkgreport.cgi?tag=powerpc64le-linux;users=guix}.
|
||||
|
||||
For more information on how to use usertags, please refer to the
|
||||
documentation for Debbugs or the documentation for whatever tool you use
|
||||
to interact with Debbugs.
|
||||
|
||||
In Guix, we are experimenting with usertags to keep track of
|
||||
architecture-specific issues, as well as reviewed ones. To facilitate
|
||||
collaboration, all our usertags are associated with the single user
|
||||
@code{guix}. The following usertags currently exist for that user:
|
||||
|
||||
@table @code
|
||||
|
||||
@item powerpc64le-linux
|
||||
The purpose of this usertag is to make it easy to find the issues that
|
||||
matter most for the @code{powerpc64le-linux} system type. Please assign
|
||||
this usertag to bugs or patches that affect @code{powerpc64le-linux} but
|
||||
not other system types. In addition, you may use it to identify issues
|
||||
that for some reason are particularly important for the
|
||||
@code{powerpc64le-linux} system type, even if the issue affects other
|
||||
system types, too.
|
||||
|
||||
@item reproducibility
|
||||
For issues related to reproducibility. For example, it would be
|
||||
appropriate to assign this usertag to a bug report for a package that
|
||||
fails to build reproducibly.
|
||||
|
||||
@item reviewed-looks-good
|
||||
You have reviewed the series and it looks good to you (LGTM).
|
||||
|
||||
@end table
|
||||
|
||||
If you're a committer and you want to add a usertag, just start using it
|
||||
with the @code{guix} user. If the usertag proves useful to you,
|
||||
consider updating this section of the manual so that others will know
|
||||
what your usertag means.
|
||||
|
||||
@node Cuirass Build Notifications
|
||||
@subsection Cuirass Build Notifications
|
||||
|
||||
@@ -3020,7 +3239,7 @@ to that commit message.
|
||||
|
||||
If you are not a committer, you can help others find a @emph{series} you
|
||||
have reviewed more easily by adding a @code{reviewed-looks-good} usertag
|
||||
for the @code{guix} user.
|
||||
for the @code{guix} user (@pxref{Debbugs Usertags}).
|
||||
|
||||
@node Updating the Guix Package
|
||||
@section Updating the Guix Package
|
||||
|
||||
+27
-51
@@ -22,7 +22,7 @@ Copyright @copyright{} 2020 André Batista@*
|
||||
Copyright @copyright{} 2020 Christine Lemmer-Webber@*
|
||||
Copyright @copyright{} 2021 Joshua Branson@*
|
||||
Copyright @copyright{} 2022, 2023 Maxim Cournoyer@*
|
||||
Copyright @copyright{} 2023--2026 Ludovic Courtès@*
|
||||
Copyright @copyright{} 2023-2025 Ludovic Courtès@*
|
||||
Copyright @copyright{} 2023 Thomas Ieong@*
|
||||
Copyright @copyright{} 2024 Florian Pelz@*
|
||||
Copyright @copyright{} 2025 45mg@*
|
||||
@@ -77,9 +77,8 @@ Italian (@pxref{Top,,, guix-cookbook.it, Ricettario di GNU Guix}),
|
||||
Brazilian Portuguese (@pxref{Top,,, guix-cookbook.pt_BR,
|
||||
Livro de receitas do GNU Guix}), Russian (@pxref{Top,,, guix-cookbook.ru,
|
||||
GNU Guix Рецепты}), Slovak (@pxref{Top,,, guix-cookbook.sk,
|
||||
Receptár GNU Guix}), Swedish (@pxref{Top,,, guix-cookbook.sv,
|
||||
Kokbok för GNU Guix}), and Tamil (@pxref{Top,,, guix-cookbook.ta,
|
||||
GNU Guix கையேடு}). If you would like to translate
|
||||
Receptár GNU Guix}), and Swedish (@pxref{Top,,, guix-cookbook.sv,
|
||||
Kokbok för GNU Guix}). If you would like to translate
|
||||
this document in your native language, consider joining
|
||||
@uref{https://translate.codeberg.org/projects/guix/documentation-cookbook,
|
||||
Weblate} (@pxref{Translating Guix,,, guix, GNU Guix Reference
|
||||
@@ -293,7 +292,7 @@ Examples of valid expressions:
|
||||
@result{} 17
|
||||
|
||||
(display (string-append "Hello " "Guix" "\n"))
|
||||
@print{} Hello Guix
|
||||
@print{} Hello Guix!
|
||||
@result{} #<unspecified>
|
||||
@end lisp
|
||||
|
||||
@@ -505,6 +504,10 @@ selection of documents to learn more about Scheme:
|
||||
@uref{https://spritely.institute/static/papers/scheme-primer.html, @i{A
|
||||
Scheme Primer}}, by Christine Lemmer-Webber and the Spritely Institute.
|
||||
|
||||
@item
|
||||
@uref{http://www.troubleshooters.com/codecorn/scheme_guile/hello.htm,
|
||||
@i{Scheme at a Glance}}, by Steve Litt.
|
||||
|
||||
@item
|
||||
@c There used to be a copy at mitpress.mit.edu but it vanished.
|
||||
@uref{https://sarabander.github.io/sicp/,
|
||||
@@ -1734,8 +1737,8 @@ At this stage, the package @code{cargo-audit} is buildable.
|
||||
|
||||
@item
|
||||
Finally we'll unbundle the vendored dependencies. The lockfile importer
|
||||
inserts @code{TODO REVIEW:} comments for libraries with high probability
|
||||
of bundled dependencies. @code{cargo-build-system} also performs
|
||||
inserts @code{TODO:} comments for libraries with high probability of
|
||||
bundled dependencies. @code{cargo-build-system} also performs
|
||||
additional check for binary files in its
|
||||
@code{check-for-pregenerated-files} phase, which usually indicates
|
||||
bundling:
|
||||
@@ -1909,11 +1912,11 @@ Don't forget to modify all workspace members in @code{(gnu packages
|
||||
rust-crates)}:
|
||||
|
||||
@lisp
|
||||
(define rust-pipewire-0.8.0.fd3d8f7 package:rust-pipewire-0.8.0.fd3d8f7)
|
||||
(define rust-pipewire-sys-0.8.0.fd3d8f7 package:rust-pipewire-0.8.0.fd3d8f7)
|
||||
(define rust-pipewire-0.8.0.fd3d8f7 rust-pipewire-0.8.0.fd3d8f7)
|
||||
(define rust-pipewire-sys-0.8.0.fd3d8f7 rust-pipewire-0.8.0.fd3d8f7)
|
||||
@dots{}
|
||||
(define rust-libspa-0.8.0.fd3d8f7 package:rust-pipewire-0.8.0.fd3d8f7)
|
||||
(define rust-libspa-sys-0.8.0.fd3d8f7 package:rust-pipewire-0.8.0.fd3d8f7)
|
||||
(define rust-libspa-0.8.0.fd3d8f7 rust-pipewire-0.8.0.fd3d8f7)
|
||||
(define rust-libspa-sys-0.8.0.fd3d8f7 rust-pipewire-0.8.0.fd3d8f7)
|
||||
@end lisp
|
||||
|
||||
@node Using Rust Libraries in Other Build Systems
|
||||
@@ -5958,15 +5961,6 @@ installation instructions (@pxref{Binary Installation,,, guix, GNU Guix
|
||||
Reference Manual}). Thanks to the installation script, this should be
|
||||
quick. Once installation is complete, we need to make some adjustments.
|
||||
|
||||
@quotation Note
|
||||
Starting from Guix version 1.5.0, @command{guix-daemon} runs without
|
||||
root privileges by default; previously installed systems can also be
|
||||
migrated to this ``rootless'' mode (@pxref{Build Environment Setup,,,
|
||||
guix, GNU Guix Reference Manual}). Learn more about this change in a
|
||||
@uref{https://hpc.guix.info/blog/2025/03/build-daemon-drops-its-privileges/,
|
||||
2025 blog post}.
|
||||
@end quotation
|
||||
|
||||
Since we want @code{guix-daemon} to be reachable not just from the head
|
||||
node but also from the compute nodes, we need to arrange so that it
|
||||
listens for connections over TCP/IP. To do that, we'll edit the systemd
|
||||
@@ -5981,12 +5975,13 @@ something like this:
|
||||
@ifnothtml
|
||||
@example
|
||||
ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
|
||||
--build-users-group=guixbuild \
|
||||
--listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
|
||||
@end example
|
||||
@end ifnothtml
|
||||
@ifhtml
|
||||
@example
|
||||
ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon --listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
|
||||
ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild --listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
|
||||
@end example
|
||||
@end ifhtml
|
||||
|
||||
@@ -6022,51 +6017,32 @@ The @file{/gnu/store} directory can be exported read-only since only
|
||||
package}; thus, to allow users to install packages with @code{guix
|
||||
package}, this must be read-write.
|
||||
|
||||
@quotation Note
|
||||
Although it is rarely used, Guix allows for the creation of profiles in
|
||||
non-default locations. For instance, @code{guix package -p
|
||||
~/dev/python-dev -i python} installs Python in a profile reachable from
|
||||
the @code{~/dev/python-dev} symlink instead of the default
|
||||
@file{~/.guix-profile}.
|
||||
|
||||
To make sure that
|
||||
Users can create as many profiles as they like in addition to the
|
||||
default profile, @file{~/.guix-profile}. For instance, @code{guix
|
||||
package -p ~/dev/python-dev -i python} installs Python in a profile
|
||||
reachable from the @code{~/dev/python-dev} symlink. To make sure that
|
||||
this profile is protected from garbage collection---i.e., that Python
|
||||
will not be removed from @file{/gnu/store} while this profile exists---,
|
||||
@emph{home directories should be mounted on the head node} as well so
|
||||
that @code{guix-daemon} knows about these non-standard profiles and
|
||||
avoids collecting software they refer to.
|
||||
|
||||
@c The following paragraph refers to Guix commit
|
||||
@c d12c4452a49b355369636de1dfc766b5bad6437b, which changed
|
||||
@c 'time-machine' and 'shell' to store GC roots under /var/guix.
|
||||
Doing so is optional though: profiles created by default by
|
||||
@command{guix package}, @command{guix pull}, and @command{guix shell}
|
||||
are all stored under @file{/var/guix} and thus protected from garbage
|
||||
collection.
|
||||
@end quotation
|
||||
|
||||
It may be a good idea to periodically remove unused bits from
|
||||
@file{/gnu/store} by running @command{guix gc} (@pxref{Invoking guix
|
||||
gc,,, guix, GNU Guix Reference Manual}). This can be done by adding a
|
||||
systemd timer based on the one shipped with Guix:
|
||||
crontab entry on the head node:
|
||||
|
||||
@example
|
||||
cp \
|
||||
/var/guix/profiles/per-user/root/current-guix/lib/systemd/system/guix-gc.* \
|
||||
/etc/systemd/system
|
||||
root@@master# crontab -e
|
||||
@end example
|
||||
|
||||
Make sure to edit @file{guix-gc.service} and @file{guix-gc.timer} under
|
||||
@file{/etc/systemd/system} to adjust the parameters to your need: timer
|
||||
frequency, amount of free space, and whether to delete user's old
|
||||
generations. We recommend executing @command{guix gc -F50G} every
|
||||
night, which will ensure that at least 50@tie{}GiB are available,
|
||||
without deleting user generations. Once you're satisfied, you can start
|
||||
the timer:
|
||||
@noindent
|
||||
... with something like this:
|
||||
|
||||
@example
|
||||
systemctl daemon-reload
|
||||
systemctl start guix-gc.timer
|
||||
# Every day at 5AM, run the garbage collector to make sure
|
||||
# at least 10 GB are free on /gnu/store.
|
||||
0 5 * * 1 /usr/local/bin/guix gc -F10G
|
||||
@end example
|
||||
|
||||
We're done with the head node! Let's look at compute nodes now.
|
||||
|
||||
+283
-1829
File diff suppressed because it is too large
Load Diff
+2
-55
@@ -2,58 +2,7 @@
|
||||
# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
|
||||
# Further modified by Tomas Volf <~@wolfsden.cz>.
|
||||
|
||||
htmlxrefversion=2026-02-23.07; # UTC
|
||||
|
||||
# Override URLs of manuals provided by the Documentation Center.
|
||||
|
||||
DOCUMENTATION_CENTER = https://doc.guix.gnu.org
|
||||
|
||||
bash mono ${DOCUMENTATION_CENTER}/bash/latest/en/bash.html
|
||||
bash node ${DOCUMENTATION_CENTER}/bash/latest/en/html_node
|
||||
binutils mono ${DOCUMENTATION_CENTER}/binutils/latest/en/binutils.html
|
||||
binutils node ${DOCUMENTATION_CENTER}/binutils/latest/en/html_node
|
||||
cuirass mono ${DOCUMENTATION_CENTER}/cuirass/latest/en/cuirass.html
|
||||
cuirass node ${DOCUMENTATION_CENTER}/cuirass/latest/en/html_node
|
||||
emacs-guix mono ${DOCUMENTATION_CENTER}/emacs-guix/latest/en/emacs-guix.html
|
||||
emacs-guix node ${DOCUMENTATION_CENTER}/emacs-guix/latest/en/html_node
|
||||
fibers mono ${DOCUMENTATION_CENTER}/fibers/latest/en/fibers.html
|
||||
fibers node ${DOCUMENTATION_CENTER}/fibers/latest/en/html_node
|
||||
gash mono ${DOCUMENTATION_CENTER}/gash/latest/en/gash.html
|
||||
gash node ${DOCUMENTATION_CENTER}/gash/latest/en/html_node
|
||||
gcrypt mono ${DOCUMENTATION_CENTER}/gcrypt/latest/en/gcrypt.html
|
||||
gcrypt node ${DOCUMENTATION_CENTER}/gcrypt/latest/en/html_node
|
||||
gdb mono ${DOCUMENTATION_CENTER}/gdb/latest/en/gdb.html
|
||||
gdb node ${DOCUMENTATION_CENTER}/gdb/latest/en/html_node
|
||||
geiser mono ${DOCUMENTATION_CENTER}/geiser/latest/en/geiser.html
|
||||
geiser node ${DOCUMENTATION_CENTER}/geiser/latest/en/html_node
|
||||
grub mono ${DOCUMENTATION_CENTER}/grub/latest/en/grub.html
|
||||
grub node ${DOCUMENTATION_CENTER}/grub/latest/en/html_node
|
||||
guile-avahi mono ${DOCUMENTATION_CENTER}/guile-avahi/latest/en/guile-avahi.html
|
||||
guile-avahi node ${DOCUMENTATION_CENTER}/guile-avahi/latest/en/html_node
|
||||
guile-gcrypt mono ${DOCUMENTATION_CENTER}/guile-gcrypt/latest/en/guile-gcrypt.html
|
||||
guile-gcrypt node ${DOCUMENTATION_CENTER}/guile-gcrypt/latest/en/html_node
|
||||
guile-gnutls mono ${DOCUMENTATION_CENTER}/guile-gnutls/latest/en/guile-gnutls.html
|
||||
guile-gnutls node ${DOCUMENTATION_CENTER}/guile-gnutls/latest/en/html_node
|
||||
guile-library mono ${DOCUMENTATION_CENTER}/guile-library/latest/en/guile-library.html
|
||||
guile-library node ${DOCUMENTATION_CENTER}/guile-library/latest/en/html_node
|
||||
guile mono ${DOCUMENTATION_CENTER}/guile/latest/en/guile.html
|
||||
guile-netlink mono ${DOCUMENTATION_CENTER}/guile-netlink/latest/en/guile-netlink.html
|
||||
guile-netlink node ${DOCUMENTATION_CENTER}/guile-netlink/latest/en/html_node
|
||||
guile node ${DOCUMENTATION_CENTER}/guile/latest/en/html_node
|
||||
guile-ssh mono ${DOCUMENTATION_CENTER}/guile-ssh/latest/en/guile-ssh.html
|
||||
guile-ssh node ${DOCUMENTATION_CENTER}/guile-ssh/latest/en/html_node
|
||||
inetutils mono ${DOCUMENTATION_CENTER}/inetutils/latest/en/inetutils.html
|
||||
inetutils node ${DOCUMENTATION_CENTER}/inetutils/latest/en/html_node
|
||||
libc mono ${DOCUMENTATION_CENTER}/libc/latest/en/libc.html
|
||||
libc node ${DOCUMENTATION_CENTER}/libc/latest/en/html_node
|
||||
mes mono ${DOCUMENTATION_CENTER}/mes/latest/en/mes.html
|
||||
mes node ${DOCUMENTATION_CENTER}/mes/latest/en/html_node
|
||||
r5rs mono ${DOCUMENTATION_CENTER}/r5rs/latest/en/r5rs.html
|
||||
r5rs node ${DOCUMENTATION_CENTER}/r5rs/latest/en/html_node
|
||||
recutils mono ${DOCUMENTATION_CENTER}/recutils/latest/en/recutils.html
|
||||
recutils node ${DOCUMENTATION_CENTER}/recutils/latest/en/html_node
|
||||
shepherd mono ${DOCUMENTATION_CENTER}/shepherd/latest/en/shepherd.html
|
||||
shepherd node ${DOCUMENTATION_CENTER}/shepherd/latest/en/html_node
|
||||
htmlxrefversion=2025-08-31.16; # UTC
|
||||
|
||||
# Copyright 2010-2020, 2022 Free Software Foundation, Inc.
|
||||
#
|
||||
@@ -467,7 +416,7 @@ guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
|
||||
guile-rpc node ${GS}/guile-rpc/manual/html_node/
|
||||
|
||||
GUIX_ROOT = https://guix.gnu.org
|
||||
GUIX = ${GUIX_ROOT}/manual/devel
|
||||
GUIX = ${GUIX_ROOT}/manual
|
||||
guix.de mono ${GUIX}/de/guix.de.html
|
||||
guix.de node ${GUIX}/de/html_node/
|
||||
guix.es mono ${GUIX}/es/guix.es.html
|
||||
@@ -504,8 +453,6 @@ GUIX_COOKBOOK = ${GUIX_ROOT}/cookbook
|
||||
guix-cookbook.sk node ${GUIX_COOKBOOK}/sk/html_node/
|
||||
guix-cookbook.sv mono ${GUIX_COOKBOOK}/sv/guix-cookbook.sv.html
|
||||
guix-cookbook.sv node ${GUIX_COOKBOOK}/sv/html_node/
|
||||
guix-cookbook.ta mono ${GUIX_COOKBOOK}/ta/guix-cookbook.ta.html
|
||||
guix-cookbook.ta node ${GUIX_COOKBOOK}/ta/html_node/
|
||||
guix-cookbook mono ${GUIX_COOKBOOK}/en/guix-cookbook.html
|
||||
guix-cookbook node ${GUIX_COOKBOOK}/en/html_node/
|
||||
guix-cookbook.zh_CN mono ${GUIX_COOKBOOK}/zh-cn/guix-cookbook.zh_CN.html
|
||||
|
||||
+1
-2
@@ -26,7 +26,7 @@
|
||||
|
||||
# If adding a language, update the following variables, and info_TEXINFOS.
|
||||
MANUAL_LANGUAGES = de es fr it pt_BR ru zh_CN
|
||||
COOKBOOK_LANGUAGES = de es fr it ko pt_BR ru sk sv ta zh_CN
|
||||
COOKBOOK_LANGUAGES = de es fr it ko pt_BR ru sk sv zh_CN
|
||||
|
||||
# Arg1: A list of languages codes.
|
||||
# Arg2: The file name stem.
|
||||
@@ -52,7 +52,6 @@ info_TEXINFOS = %D%/guix.texi \
|
||||
%D%/guix-cookbook.ru.texi \
|
||||
%D%/guix-cookbook.sk.texi \
|
||||
%D%/guix-cookbook.sv.texi \
|
||||
%D%/guix-cookbook.ta.texi \
|
||||
%D%/guix-cookbook.zh_CN.texi
|
||||
|
||||
%C%_guix_TEXINFOS = \
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
abi <abi/4.0>,
|
||||
|
||||
include <tunables/global>
|
||||
include <tunables/guix>
|
||||
|
||||
# There’s no point in confining the guix executable, since it can run
|
||||
# any user code and so everything is expected. We just need to
|
||||
# explicitly enable userns for systems with the
|
||||
# kernel.apparmor_restrict_unprivileged_userns sysctl.
|
||||
profile guix @{guix_storedir}/{*-guix-command,*-guix-*/bin/guix} flags=(unconfined) {
|
||||
userns,
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
abi <abi/4.0>,
|
||||
|
||||
include <tunables/global>
|
||||
include <tunables/guix>
|
||||
|
||||
profile guix-daemon @{guix_storedir}/*-{guix-daemon,guix}-*/bin/guix-daemon flags=(enforce,attach_disconnected.path=/disconnected) {
|
||||
include <abstractions/base>
|
||||
|
||||
userns,
|
||||
signal,
|
||||
capability sys_admin,
|
||||
capability net_admin,
|
||||
capability sys_chroot,
|
||||
capability setgid,
|
||||
capability chown,
|
||||
network dgram,
|
||||
umount,
|
||||
mount,
|
||||
pivot_root,
|
||||
# Paths inside build chroot
|
||||
/real-root/ w,
|
||||
/ w,
|
||||
|
||||
@{guix_localstatedir}/guix/** rwk,
|
||||
/var/log/guix/** w,
|
||||
owner @{PROC}/@{pid}/{fd/,environ} r,
|
||||
owner @{PROC}/@{pid}/oom_score_adj w,
|
||||
owner @{PROC}/@{pid}/uid_map rw,
|
||||
owner @{PROC}/@{pid}/gid_map rw,
|
||||
owner @{PROC}/@{pid}/setgroups w,
|
||||
@{guix_storedir}/ r,
|
||||
@{guix_storedir}/** rwlmk,
|
||||
@{guix_storedir}/*/bin/guile cx -> guix-builder,
|
||||
@{guix_storedir}/*-guix-command cx -> guix-helper,
|
||||
@{guix_storedir}/*-guix-*/bin/guix cx -> guix-helper,
|
||||
@{etc_rw}/nsswitch.conf r,
|
||||
@{etc_rw}/passwd r,
|
||||
@{etc_rw}/group r,
|
||||
owner /tmp/** rwl,
|
||||
owner /var/tmp/** rwl,
|
||||
|
||||
/usr/bin/newgidmap Ux,
|
||||
|
||||
# Site-specific additions and overrides. See local/README for details.
|
||||
include if exists <local/guix-daemon>
|
||||
|
||||
profile guix-builder flags=(enforce,attach_disconnected.path=/disconnected) {
|
||||
include <abstractions/base>
|
||||
|
||||
signal (receive),
|
||||
|
||||
@{guix_storedir}/** rwlmkux,
|
||||
|
||||
owner /tmp/** rwux,
|
||||
|
||||
@{PROC}/@{pid}/fd/ r,
|
||||
|
||||
/disconnected/** rw,
|
||||
}
|
||||
|
||||
# This is for any time guix is called by the daemon as a helper:
|
||||
# - guix download
|
||||
# - guix discover
|
||||
# - guix gc --list-busy
|
||||
# - probably more?
|
||||
profile guix-helper flags=(enforce,attach_disconnected.path=/disconnected) {
|
||||
include <abstractions/base>
|
||||
include <abstractions/nameservice>
|
||||
|
||||
signal (receive),
|
||||
ptrace (read) peer=guix-daemon,
|
||||
|
||||
/disconnected/run/dbus/system_bus_socket rw,
|
||||
dbus (send, receive),
|
||||
@{guix_localstatedir}/guix/discover/ rw,
|
||||
@{guix_localstatedir}/guix/discover/* rw,
|
||||
|
||||
@{guix_localstatedir}/guix/substitute/ rw,
|
||||
@{guix_localstatedir}/guix/substitute/** rwk,
|
||||
|
||||
@{guix_sysconfdir}/guix/** r,
|
||||
|
||||
@{guix_storedir}/** rwlmix,
|
||||
|
||||
@{PROC}/ r,
|
||||
owner @{PROC}/@{pid}/{fd/,environ} r,
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
@{guix_storedir} = @storedir@
|
||||
@{guix_sysconfdir} = @guix_sysconfdir@
|
||||
@{guix_localstatedir} = @guix_localstatedir@
|
||||
|
||||
include if exists <tunables/guix.d>
|
||||
+16
-17
@@ -303,23 +303,22 @@ corresponding to the top-level definition containing the staged changes."
|
||||
(or (equal? old-values new-values)
|
||||
(let ((removed (lset-difference equal? old-values new-values))
|
||||
(added (lset-difference equal? new-values old-values)))
|
||||
(unless (and (null? added) (null? removed))
|
||||
(format port
|
||||
"[~a]: ~a~%" field
|
||||
(break-string
|
||||
;; A dependency can be a list of (pkg output).
|
||||
(match (list (map object->string removed)
|
||||
(map object->string added))
|
||||
((() added)
|
||||
(format #f "Add ~a."
|
||||
(listify added)))
|
||||
((removed ())
|
||||
(format #f "Remove ~a."
|
||||
(listify removed)))
|
||||
((removed added)
|
||||
(format #f "Remove ~a; add ~a."
|
||||
(listify removed)
|
||||
(listify added)))))))))))
|
||||
(format port
|
||||
"[~a]: ~a~%" field
|
||||
(break-string
|
||||
;; A dependency can be a list of (pkg output).
|
||||
(match (list (map object->string removed)
|
||||
(map object->string added))
|
||||
((() added)
|
||||
(format #f "Add ~a."
|
||||
(listify added)))
|
||||
((removed ())
|
||||
(format #f "Remove ~a."
|
||||
(listify removed)))
|
||||
((removed added)
|
||||
(format #f "Remove ~a; add ~a."
|
||||
(listify removed)
|
||||
(listify added))))))))))
|
||||
'(inputs propagated-inputs native-inputs)))
|
||||
|
||||
(define* (add-commit-message file-name variable-name
|
||||
|
||||
+1
-37
@@ -175,10 +175,6 @@
|
||||
(file (execute
|
||||
execute_no_trans read write open entrypoint map
|
||||
getattr link unlink)))
|
||||
;; Needed to execute the 'newgidmap' helper.
|
||||
(allow guix_daemon_t
|
||||
bin_t
|
||||
(file (execute execute_no_trans map)))
|
||||
|
||||
;; Remounting /gnu/store read-write.
|
||||
(allow guix_daemon_t
|
||||
@@ -189,9 +185,6 @@
|
||||
(allow guix_daemon_t
|
||||
root_t
|
||||
(dir (mounton)))
|
||||
(allow init_t
|
||||
guix_daemon.guix_store_content_t
|
||||
(dir (mounton)))
|
||||
(allow guix_daemon_t
|
||||
fs_t
|
||||
(filesystem (getattr)))
|
||||
@@ -326,7 +319,7 @@
|
||||
map
|
||||
getattr setattr
|
||||
unlink
|
||||
open read write append)))
|
||||
open read write)))
|
||||
(allow guix_daemon_t
|
||||
guix_daemon_conf_t
|
||||
(lnk_file (create getattr rename unlink read)))
|
||||
@@ -368,14 +361,6 @@
|
||||
self
|
||||
(netlink_route_socket (bind create getattr nlmsg_read read write getopt)))
|
||||
|
||||
;; Allow use of user namespaces
|
||||
(allow guix_daemon_t
|
||||
self
|
||||
(cap_userns (setgid sys_admin net_admin sys_chroot)))
|
||||
(allow guix_daemon_t
|
||||
self
|
||||
(user_namespace (create)))
|
||||
|
||||
;; Socket operations
|
||||
(allow guix_daemon_t
|
||||
guix_daemon_socket_t
|
||||
@@ -455,27 +440,6 @@
|
||||
vnc_port_t
|
||||
(tcp_socket (name_bind)))
|
||||
|
||||
;; 'guix gc' needs to go through /proc entries for all processes that are
|
||||
;; running. Strictly speaking, it means guix-daemon needs access to all
|
||||
;; process types in the SELinux policy. In practice, only processes from
|
||||
;; programs in the /gnu/store are relevant for finding roots for garbage
|
||||
;; collection. Since Guix currently doesn't install any SELinux policy for
|
||||
;; its packages, we can assume that all the processes it needs to access run
|
||||
;; as unconfined_t.
|
||||
;;
|
||||
;; FIXME: This doesn't stop 'guix gc' from generating a lot of unnecessary
|
||||
;; AVC denied audit messages. Perhaps guix-daemon could test whether it has
|
||||
;; access to the proc entry before trying to access it?
|
||||
(allow guix_daemon_t
|
||||
unconfined_t
|
||||
(dir (search)))
|
||||
(allow guix_daemon_t
|
||||
unconfined_t
|
||||
(file (read)))
|
||||
(allow guix_daemon_t
|
||||
unconfined_t
|
||||
(lnk_file (read)))
|
||||
|
||||
;; I guess sometimes it needs random numbers
|
||||
(allow guix_daemon_t
|
||||
random_device_t
|
||||
|
||||
@@ -14,12 +14,6 @@ ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daem
|
||||
--substitute-urls='@GUIX_SUBSTITUTE_URLS@'
|
||||
Environment='GUIX_STATE_DIRECTORY=@localstatedir@/guix' 'GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
|
||||
|
||||
# Stop the gnu-store.mount so that the daemon can capture the store as
|
||||
# read-write in its private mount namespace.
|
||||
# See <https://codeberg.org/guix/guix/issues/4744>.
|
||||
ExecStartPre=-+systemctl stop gnu-store.mount
|
||||
ExecStartPost=-+systemctl start gnu-store.mount --no-block
|
||||
|
||||
# Run under a dedicated unprivileged user account.
|
||||
User=guix-daemon
|
||||
|
||||
|
||||
+17
-105
@@ -17,7 +17,6 @@
|
||||
# Copyright © 2024 Tomas Volf <~@wolfsden.cz>
|
||||
# Copyright © 2024 Richard Sent <richard@freakingpenguin.com>
|
||||
# Copyright © 2025 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
||||
# Copyright © 2025 Noé Lopez <noelopez@free.fr>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
@@ -106,12 +105,10 @@ DEBUG=0
|
||||
GNU_URL="https://ftpmirror.gnu.org/gnu/guix/"
|
||||
|
||||
# The following associative array holds set of GPG keys used to sign the
|
||||
# releases, keyed by their corresponding Codeberg user name.
|
||||
# releases, keyed by their corresponding Savannah user ID.
|
||||
declare -A GPG_SIGNING_KEYS
|
||||
GPG_SIGNING_KEYS["civodul"]=3CE464558A84FDC69DB40CFB090B11993D9AEBB5 # ludo
|
||||
GPG_SIGNING_KEYS["apteryx"]=27D586A4F8900854329FF09F1260E46482E63562 # maxim
|
||||
GPG_SIGNING_KEYS["efraim"]=A28BF40C3E551372662D14F741AAE7DCCA3D8351 # efraim
|
||||
PUBLIC_KEYSERVERS="keys.openpgp.org pgpkeys.eu keyserver.ubuntu.com"
|
||||
GPG_SIGNING_KEYS[15145]=3CE464558A84FDC69DB40CFB090B11993D9AEBB5 # ludo
|
||||
GPG_SIGNING_KEYS[127547]=27D586A4F8900854329FF09F1260E46482E63562 # maxim
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
#+UTILITIES
|
||||
@@ -206,7 +203,6 @@ chk_gpg_keyring()
|
||||
|
||||
for user_id in "${!GPG_SIGNING_KEYS[@]}"; do
|
||||
gpg_key_id=${GPG_SIGNING_KEYS[$user_id]}
|
||||
codeberg_username=$user_id
|
||||
# Without --dry-run this command will create a ~/.gnupg owned by root on
|
||||
# systems where gpg has never been used, causing errors and confusion.
|
||||
if gpg --dry-run --list-keys "$gpg_key_id" >/dev/null 2>&1; then
|
||||
@@ -215,39 +211,20 @@ chk_gpg_keyring()
|
||||
if prompt_yes_no "${INF}The following OpenPGP public key is \
|
||||
required to verify the Guix binary signature: $gpg_key_id.
|
||||
Would you like me to fetch it for you?"; then
|
||||
if wget "https://codeberg.org/$codeberg_username.gpg" \
|
||||
--tries=1 --timeout=30 --no-verbose -O- | gpg --import -; then
|
||||
continue
|
||||
fi
|
||||
|
||||
key_obtained=false
|
||||
# Try to fetch keys from an available keyserver
|
||||
for key_server in $PUBLIC_KEYSERVERS; do
|
||||
if gpg --keyserver $key_server --recv-key $gpg_key_id; then
|
||||
key_obtained=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if $key_obtained; then
|
||||
# Use a reasonable time-out here so users don't report silent
|
||||
# ‘freezes’ when Savannah goes out to lunch, as has happened.
|
||||
if wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
|
||||
--timeout=30 --no-verbose -O- | gpg --import -; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
# If we reach this point, the key is (still) missing. Report further
|
||||
# missing keys, if any, but then abort the installation.
|
||||
_err "Missing OpenPGP public key ($gpg_key_id).
|
||||
Fetch it with codeberg username:
|
||||
Fetch it with this command:
|
||||
|
||||
wget \"https://codeberg.org/$codeberg_username.gpg\" -O - | \
|
||||
sudo -i gpg --import -
|
||||
|
||||
If this fails, try to fetch it via a keyserver:
|
||||
|
||||
for key_server in $PUBLIC_KEYSERVERS; do
|
||||
if sudo -i gpg --keyserver $key_server --recv-key $gpg_key_id; then
|
||||
break
|
||||
fi
|
||||
done"
|
||||
wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -O - | \
|
||||
sudo -i gpg --import -"
|
||||
exit_flag=yes
|
||||
done
|
||||
if [ "$exit_flag" = yes ]; then
|
||||
@@ -778,7 +755,7 @@ sys_create_init_profile()
|
||||
cat <<"EOF" > /etc/profile.d/zzz-guix.sh
|
||||
# Explicitly initialize XDG base directory variables to ease compatibility
|
||||
# with Guix System: see <https://issues.guix.gnu.org/56050#3>.
|
||||
export XCURSOR_PATH="${XCURSOR_PATH:-$HOME/.local/share/icons:$HOME/.icons:/usr/local/share/icons:/usr/share/icons}"
|
||||
export XCURSOR_PATH="${XCURSOR_PATH:-/usr/local/share/icons:/usr/share/icons}"
|
||||
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
export XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
|
||||
@@ -794,16 +771,16 @@ export PATH="$GUIX_PROFILE/bin${PATH:+:}$PATH"
|
||||
# info and man readers. When INFOPATH is unset, add a trailing colon so Emacs
|
||||
# searches 'Info-default-directory-list'. When MANPATH is unset, add a
|
||||
# trailing colon so the system default search path is used.
|
||||
export INFOPATH="$GUIX_PROFILE/share/info:${INFOPATH:-}"
|
||||
export MANPATH="$GUIX_PROFILE/share/man:${MANPATH:-}"
|
||||
export INFOPATH="$GUIX_PROFILE/share/info:$INFOPATH"
|
||||
export MANPATH="$GUIX_PROFILE/share/man:$MANPATH"
|
||||
# Expose the latest Guix modules to Guile so guix shell and repls spawned by
|
||||
# e.g. Geiser work out of the box.
|
||||
export GUILE_LOAD_PATH="$GUIX_PROFILE/share/guile/site/3.0${GUILE_LOAD_PATH:+:$GUILE_LOAD_PATH}"
|
||||
export GUILE_LOAD_COMPILED_PATH="$GUIX_PROFILE/lib/guile/3.0/site-ccache${GUILE_LOAD_COMPILED_PATH:+:$GUILE_LOAD_COMPILED_PATH}"
|
||||
export GUILE_LOAD_PATH="$GUIX_PROFILE/share/guile/site/3.0${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
|
||||
export GUILE_LOAD_COMPILED_PATH="$GUIX_PROFILE/lib/guile/3.0/site-ccache${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
|
||||
|
||||
# User's default profile, if it exists
|
||||
GUIX_PROFILE="$HOME/.guix-profile"
|
||||
if [ -f "$GUIX_PROFILE/etc/profile" ]; then
|
||||
if [ -L "$GUIX_PROFILE" ]; then
|
||||
. "$GUIX_PROFILE/etc/profile"
|
||||
|
||||
# see info '(guix) Application Setup'
|
||||
@@ -821,11 +798,6 @@ if [ -f "$GUIX_PROFILE/etc/profile" ]; then
|
||||
*$GUIX_PROFILE/share/man*) ;;
|
||||
*) export MANPATH="$GUIX_PROFILE/share/man:$MANPATH"
|
||||
esac
|
||||
|
||||
case $XDG_DATA_DIRS in
|
||||
*$GUIX_PROFILE/share*) ;;
|
||||
*) export XDG_DATA_DIRS="$GUIX_PROFILE/share:$XDG_DATA_DIRS"
|
||||
esac
|
||||
fi
|
||||
|
||||
# NOTE: Guix Home handles its own profile initialization in ~/.profile. See
|
||||
@@ -920,64 +892,6 @@ sys_maybe_setup_selinux()
|
||||
restorecon -R /gnu /var/guix
|
||||
}
|
||||
|
||||
sys_maybe_setup_apparmor()
|
||||
{
|
||||
if ! [ -f /sys/module/apparmor/parameters/enabled ]
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
if ! command -v apparmor_parser &> /dev/null
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
prompt_yes_no "Install AppArmor profile that might be required to run guix-daemon?" \
|
||||
|| return 0
|
||||
|
||||
local var_guix=/var/guix/profiles/per-user/root/current-guix
|
||||
local apparmor_sources="${var_guix}/etc/apparmor.d/"
|
||||
|
||||
if ! [ -d "$apparmor_sources" ]
|
||||
then
|
||||
_err "This version of Guix doesn’t contain AppArmor profiles."
|
||||
return
|
||||
fi
|
||||
|
||||
cp -f -t /etc/apparmor.d/tunables "$apparmor_sources/tunables/guix"
|
||||
cp -f -t /etc/apparmor.d "$apparmor_sources/guix-daemon"
|
||||
cp -f -t /etc/apparmor.d "$apparmor_sources/guix"
|
||||
apparmor_parser --warn=all -r /etc/apparmor.d/guix-daemon
|
||||
apparmor_parser --warn=all -r /etc/apparmor.d/guix
|
||||
|
||||
_msg_pass "apparmor profiles installed and loaded"
|
||||
}
|
||||
|
||||
sys_delete_apparmor_profiles()
|
||||
{
|
||||
# Not a big deal if the apparmor_parser commands fail as they only apply
|
||||
# for the current boot, we still want to go on and remove the files.
|
||||
if [ -f "/etc/apparmor.d/guix" ]
|
||||
then
|
||||
_msg_info "removing /etc/apparmor.d/guix"
|
||||
apparmor_parser -R /etc/apparmor.d/guix || true
|
||||
rm -f "/etc/apparmor.d/guix"
|
||||
fi
|
||||
|
||||
if [ -f "/etc/apparmor.d/guix-daemon" ]
|
||||
then
|
||||
_msg_info "removing /etc/apparmor.d/guix-daemon"
|
||||
apparmor_parser -R /etc/apparmor.d/guix-daemon || true
|
||||
rm -f "/etc/apparmor.d/guix-daemon"
|
||||
fi
|
||||
|
||||
if [ -f "/etc/apparmor.d/tunables/guix" ]
|
||||
then
|
||||
_msg_info "removing /etc/apparmor.d/tunables/guix"
|
||||
rm -f "/etc/apparmor.d/tunables/guix"
|
||||
fi
|
||||
}
|
||||
|
||||
sys_delete_init_profile()
|
||||
{
|
||||
_msg_info "removing /etc/profile.d/zzz-guix.sh"
|
||||
@@ -1055,6 +969,7 @@ main_install()
|
||||
chk_init_sys
|
||||
add_init_sys_require
|
||||
chk_require "${REQUIRE[@]}"
|
||||
chk_gpg_keyring
|
||||
chk_sys_arch
|
||||
chk_sys_nscd
|
||||
chk_existing
|
||||
@@ -1065,7 +980,6 @@ main_install()
|
||||
tmp_path="$(mktemp -t -d guix.XXXXXX)"
|
||||
|
||||
if [ -z "${GUIX_BINARY_FILE_NAME}" ]; then
|
||||
chk_gpg_keyring
|
||||
guix_get_bin_list "${GNU_URL}"
|
||||
guix_get_bin "${GNU_URL}" "${BIN_VER}" "$tmp_path"
|
||||
GUIX_BINARY_FILE_NAME=${BIN_VER}.tar.xz
|
||||
@@ -1080,7 +994,6 @@ main_install()
|
||||
sys_create_store "${GUIX_BINARY_FILE_NAME}" "${tmp_path}"
|
||||
sys_create_build_user
|
||||
sys_maybe_setup_selinux
|
||||
sys_maybe_setup_apparmor
|
||||
sys_enable_guix_daemon
|
||||
sys_authorize_build_farms
|
||||
sys_create_init_profile
|
||||
@@ -1114,7 +1027,6 @@ main_uninstall()
|
||||
sys_delete_guix_daemon
|
||||
# stop people from accessing their profiles.
|
||||
sys_delete_user_profiles
|
||||
sys_delete_apparmor_profiles
|
||||
# kill guix off all the guts of guix
|
||||
sys_delete_store
|
||||
# clean up the system
|
||||
|
||||
@@ -71,21 +71,18 @@ TARGET."
|
||||
"connman" "network-manager" "wpa-supplicant" "isc-dhcp" "cups"
|
||||
"linux-libre" "grub-hybrid")))
|
||||
|
||||
(define (%system-gui-packages target)
|
||||
(define %system-gui-packages
|
||||
;; Key packages proposed by the Guix System installer.
|
||||
(append (map specification->package
|
||||
'(;; build system `python' does not support cross builds
|
||||
;"gnome" "xfce" "mate" "openbox"
|
||||
;"gnome" "xfce" "mate" "openbox"
|
||||
"awesome"
|
||||
"i3-wm" "i3status" "dmenu" "st"
|
||||
"ratpoison" "xterm"
|
||||
;; build system `emacs' does not support cross builds
|
||||
;"emacs-exwm" "emacs-desktop-environment"
|
||||
;"emacs-exwm" "emacs-desktop-environment"
|
||||
"emacs"))
|
||||
;; NOTE: %default-xorg-modules depends on system.
|
||||
(parameterize
|
||||
((%current-target-system target))
|
||||
%default-xorg-modules)))
|
||||
%default-xorg-modules))
|
||||
|
||||
(define %packages-to-cross-build
|
||||
;; Packages that must be cross-buildable from x86_64-linux.
|
||||
@@ -154,8 +151,7 @@ TARGET."
|
||||
;; With a graphical environment:
|
||||
(if (or (target-x86-32? target)
|
||||
(target-aarch64? target))
|
||||
;; %system-gui-packages depends on the system.
|
||||
(%system-gui-packages target)
|
||||
%system-gui-packages
|
||||
'()))))
|
||||
(fold delete (map platform-system->target (systems))
|
||||
'(;; Disable cross-compilation to self:
|
||||
|
||||
@@ -45,7 +45,9 @@
|
||||
(_ #f)))
|
||||
|
||||
(define guix-dependencies
|
||||
(filter-map input->package (package-direct-inputs guix)))
|
||||
(filter-map input->package
|
||||
(fold alist-delete (package-direct-inputs guix)
|
||||
'("glibc-utf8-locales" "graphviz" "po4a"))))
|
||||
|
||||
(define (package-without-tests p)
|
||||
(package/inherit p
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest containing packages which are needed by the
|
||||
;;; installer.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(gnu packages)
|
||||
((gnu services xorg) #:select (%default-xorg-modules))
|
||||
(guix profiles)
|
||||
(guix utils)
|
||||
(srfi srfi-1))
|
||||
|
||||
(define %desktop-packages
|
||||
(append
|
||||
%default-xorg-modules
|
||||
(map specification->package
|
||||
(list
|
||||
;; etc-service
|
||||
"net-base"
|
||||
"tzdata"
|
||||
;; boot-file-system-utilities-service
|
||||
"e2fsprogs"
|
||||
;; plasma-deskto-sservice-type
|
||||
"plasma"
|
||||
;; gnome-desktop-service
|
||||
"gnome"
|
||||
;; xfce-desktop-service
|
||||
"xfce"
|
||||
;; mate-desktop-service
|
||||
"mate"
|
||||
;; set-xorg-configuration-service
|
||||
"font-alias"
|
||||
"font-misc-misc"
|
||||
"font-adobe75dpi"
|
||||
"xorg-server"
|
||||
;; screen-locker-service
|
||||
"slock"
|
||||
"xlockmore"
|
||||
;; mtp-service
|
||||
"libmtp"
|
||||
;; sane-service
|
||||
"sane"
|
||||
"sane-backends"
|
||||
;; mount-setuid-helpers-service
|
||||
"nfs-utils"
|
||||
"ntfs-3g"
|
||||
;; guix-artwork-service
|
||||
"guix-backgrounds"
|
||||
"guix-icons"
|
||||
;; vte-integration-service
|
||||
"vte"
|
||||
;; network-manager-applet-service
|
||||
"network-manager-applet"
|
||||
;; modem-manager-service
|
||||
"modem-manager"
|
||||
;; usb-modeswitch-service
|
||||
"usb-modeswitch"
|
||||
"usb-modeswitch-data"
|
||||
;; avahi-service
|
||||
"avahi"
|
||||
;; udisks-service
|
||||
"udisks"
|
||||
;; cups-pk-helper-service
|
||||
"cups-pk-helper"
|
||||
;; colord-service
|
||||
"colord"
|
||||
;; geoclue-service
|
||||
"geoclue"
|
||||
;; polkit-service
|
||||
"polkit"
|
||||
;; elogind-service
|
||||
"elogind"
|
||||
;; dbus-service
|
||||
;; ntp-service
|
||||
"ntp"
|
||||
;; alsa-service
|
||||
"alsa-plugins"
|
||||
;; mingetty-service
|
||||
"mingetty"
|
||||
;; etc-bashrc-d-service
|
||||
"bash-completion"
|
||||
;; udev-service
|
||||
"eudev"
|
||||
"lvm2"
|
||||
"alsa-utils"
|
||||
"crda"
|
||||
;; sysctl-service
|
||||
"procps"
|
||||
;; special-files-service
|
||||
"coreutils"
|
||||
"grub-pc"
|
||||
"less"
|
||||
"mg"
|
||||
"nano"
|
||||
"nvi"
|
||||
"man-db"
|
||||
"info-reader"
|
||||
"kbd"
|
||||
"guile-readline"
|
||||
"guile-colorized"
|
||||
"pciutils"
|
||||
"usbutils"
|
||||
"util-linux-with-udev"
|
||||
"kmod"
|
||||
"isc-dhcp"
|
||||
"iproute2"
|
||||
"wget"
|
||||
"nss-certs"
|
||||
"iw"
|
||||
"wireless-tools"
|
||||
"psmisc"
|
||||
"which"
|
||||
"guile"
|
||||
"findutils"
|
||||
"grep"
|
||||
"sed"
|
||||
"diffutils"
|
||||
"patch"
|
||||
"gawk"
|
||||
"tar"
|
||||
"gzip"
|
||||
"bzip2"
|
||||
"lzip"
|
||||
"xz"
|
||||
"zstd"
|
||||
;; packages
|
||||
"sway"
|
||||
"foot"
|
||||
"wmenu"
|
||||
"icewm"
|
||||
"openbox"
|
||||
"awesome"
|
||||
"i3-wm"
|
||||
"i3status"
|
||||
"dmenu"
|
||||
"st"
|
||||
"ratpoison"
|
||||
"xterm"
|
||||
"emacs"
|
||||
"emacs-exwm"
|
||||
"emacs-desktop-environment"))))
|
||||
|
||||
(define %desktop-manifest
|
||||
(manifest
|
||||
;; Some of %SYSTEM-PACKAGES are currently unsupported on some
|
||||
;; systems--e.g., GNOME on 32-bit, due to Rust. Filter them out.
|
||||
(filter-map (lambda (package)
|
||||
(and (supported-package? package (%current-system))
|
||||
(package->manifest-entry package)))
|
||||
(append %desktop-packages))))
|
||||
|
||||
%desktop-manifest
|
||||
@@ -1,164 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Noé Lopez <noelopez@free.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This manifest is a list of packages that user care about (collected via an
|
||||
;;; online form). It corresponds to the “Important packages” of GCD 005.
|
||||
|
||||
(specifications->manifest
|
||||
(list
|
||||
"0ad"
|
||||
"agda"
|
||||
"alacritty"
|
||||
"ardour"
|
||||
"autoconf"
|
||||
"automake"
|
||||
"blender"
|
||||
"borg"
|
||||
"btrfs-progs"
|
||||
"certbot"
|
||||
"chez-scheme"
|
||||
"clang-toolchain"
|
||||
"cryptsetup"
|
||||
"dillo"
|
||||
"direnv"
|
||||
"docker-cli"
|
||||
"dovecot"
|
||||
"emacs"
|
||||
"emacs-exwm"
|
||||
"emacs-pgtk"
|
||||
"evince"
|
||||
"fcitx5"
|
||||
"file"
|
||||
"fish"
|
||||
"foot"
|
||||
"fzf"
|
||||
"gajim"
|
||||
"gallery-dl"
|
||||
"gcc-toolchain"
|
||||
"getmail6"
|
||||
"gettext"
|
||||
"ghc-xmonad-contrib"
|
||||
"gimp"
|
||||
"git"
|
||||
"gmp"
|
||||
"gnome"
|
||||
"gnupg"
|
||||
"godot"
|
||||
"gpaste"
|
||||
"guile"
|
||||
"guile-json"
|
||||
"hatch"
|
||||
"help2man"
|
||||
"helvum"
|
||||
"hexchat"
|
||||
"hyprland"
|
||||
"icecat"
|
||||
"imagemagick"
|
||||
"imapfilter"
|
||||
"jami"
|
||||
"k3b"
|
||||
"kakoune"
|
||||
"keepassxc"
|
||||
"krita"
|
||||
"ksoloti-patcher"
|
||||
"libreoffice"
|
||||
"librewolf"
|
||||
"libsecret"
|
||||
"libtool"
|
||||
"libvirt"
|
||||
"llama-cpp"
|
||||
"mariadb"
|
||||
"luanti"
|
||||
"mpc"
|
||||
"mpfr"
|
||||
"mplayer"
|
||||
"mpv"
|
||||
"mullvadbrowser"
|
||||
"neovim"
|
||||
"nginx"
|
||||
"niri"
|
||||
"nix"
|
||||
"node"
|
||||
"notmuch"
|
||||
"obs"
|
||||
"offlineimap3"
|
||||
"opencv"
|
||||
"openmpi"
|
||||
"opensmtpd"
|
||||
"openssh"
|
||||
"openttd"
|
||||
"pandoc"
|
||||
"password-store"
|
||||
"pavucontrol"
|
||||
"php"
|
||||
"picard"
|
||||
"pipewire"
|
||||
"pkg-config"
|
||||
"plasma"
|
||||
"plasma-desktop"
|
||||
"po4a"
|
||||
"podman"
|
||||
"postgresql"
|
||||
"python"
|
||||
"python-lxml"
|
||||
"python-pycryptodome"
|
||||
"qemu"
|
||||
"ranger"
|
||||
"retroarch"
|
||||
;;"rocm"
|
||||
"rofi"
|
||||
"rspamd"
|
||||
"rsync"
|
||||
"screen"
|
||||
"slurm"
|
||||
"sqlite"
|
||||
"sqlitebrowser"
|
||||
"strace"
|
||||
"strawberry"
|
||||
"syncthing"
|
||||
"taisei"
|
||||
"telegram-desktop"
|
||||
"texlive-babel"
|
||||
"texlive-babel-english"
|
||||
"texlive-babel-french"
|
||||
"texlive-babel-german"
|
||||
"texlive-collection-latex"
|
||||
"texlive-collection-latexrecommended"
|
||||
"texlive-collection-xetex"
|
||||
"texlive-pdfjam"
|
||||
"tmux"
|
||||
"tuba"
|
||||
"ungoogled-chromium"
|
||||
"unison"
|
||||
"unzip"
|
||||
"uv"
|
||||
"viewnior"
|
||||
"virt-manager"
|
||||
"waybar"
|
||||
"wine"
|
||||
"wine64"
|
||||
"wireguard-tools"
|
||||
"xmobar"
|
||||
"xmonad"
|
||||
"xournal"
|
||||
"xournalpp"
|
||||
"xpdf"
|
||||
"yt-dlp"
|
||||
"zig"
|
||||
"zip"
|
||||
"zsh"))
|
||||
@@ -23,9 +23,7 @@
|
||||
;;; installer.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(gnu packages)
|
||||
((gnu system) #:select (%base-packages %base-firmware))
|
||||
(guix profiles)
|
||||
((gnu services xorg) #:select (%default-xorg-modules))
|
||||
(guix utils)
|
||||
(srfi srfi-1))
|
||||
|
||||
@@ -46,14 +44,16 @@ TARGET."
|
||||
(define %system-packages
|
||||
;; Key packages proposed by the Guix System installer.
|
||||
(append (map specification->package
|
||||
'("guix" "shepherd" "guile-static-initrd"
|
||||
"openssh" "tor" "ntp" "gpm" "mingetty"
|
||||
'("guix" "shepherd"
|
||||
"gnome" "xfce" "mate"
|
||||
"icewm" "openbox" "awesome"
|
||||
"i3-wm" "i3status" "dmenu" "st"
|
||||
"ratpoison" "xterm"
|
||||
"emacs" "emacs-exwm" "emacs-desktop-environment"
|
||||
"openssh" "tor" "ntp" "gpm"
|
||||
"connman" "network-manager" "wpa-supplicant" "isc-dhcp" "cups"
|
||||
"linux-libre" "grub-hybrid"
|
||||
;; privileged programs
|
||||
"shadow" "sudo" "fuse" "inetutils" "util-linux"))
|
||||
%base-firmware
|
||||
%base-packages))
|
||||
"linux-libre" "grub-hybrid"))
|
||||
%default-xorg-modules))
|
||||
|
||||
(define %bootloader-packages
|
||||
;; The bootloaders offered by the Guix System installer.
|
||||
+2
-141
@@ -5,7 +5,7 @@
|
||||
;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
|
||||
;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
|
||||
;; Copyright © 2019, 2020, 2021, 2023 Julien Lepiller <julien@lepiller.eu>
|
||||
;; Copyright © 2019–2026 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;; Copyright © 2019–2025 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
|
||||
;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
@@ -27,7 +27,7 @@
|
||||
;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
|
||||
;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
|
||||
;; Copyright © 2024 Sebastian Dümcke <code@sam-d.com>
|
||||
;; Copyright © 2025-2026 Anderson Torres <anderson.torres.8519@gmail.com>
|
||||
;; Copyright © 2025 Anderson Torres <anderson.torres.8519@gmail.com>
|
||||
;; Copyright © 2025 Roman Scherer <roman@burningswell.com>
|
||||
;; Copyright © 2025 Jelle Licht <jlicht@fsfe.org>
|
||||
;; Copyright © 2025 Rivulet Cedar <rivulet_cedar@yeah.net>
|
||||
@@ -42,145 +42,6 @@
|
||||
(channel-news
|
||||
(version 0)
|
||||
|
||||
(entry (commit "d659fe8666c4bc38fcbdbe7b7a35101f2d7cc41b")
|
||||
(title
|
||||
(en "Potential security vulnerability in glibc")
|
||||
(de "Mögliche Sicherheitslücke in glibc")
|
||||
(pt "Potencial vulnerabilidade de segurança em glibc"))
|
||||
(body
|
||||
(en "Guix adds the environment variable @code{GUIX_LOCPATH} to glibc,
|
||||
however it was not added to potentially unsafe variables to be unset in
|
||||
privileged environments. A CVE number is pending for this issue. This has
|
||||
been fixed with a graft to glibc and users should update all profiles,
|
||||
reconfigure their system, and reboot.")
|
||||
(de "Guix fügt die Umgebungsvariable @code{GUIX_LOCPATH} zu glibc
|
||||
hinzu, aber sie wurde nicht zu den möglicherweise unsicheren Variablen
|
||||
hinzugefügt, die in privilegierten Umgebungen zurückgesetzt werden. Eine
|
||||
CVE-Nummer hierfür wird noch zugewiesen. Um den Fehler zu beheben, stellen
|
||||
wir eine Veredelung für glibc bereit; Nutzerinnen und Nutzer sollten all ihre
|
||||
Profile aktualisieren, ihr System rekonfigurieren und neustarten.")
|
||||
(pt "Guix adiciona a variável de ambiente @code{GUIX_LOCPATH} à
|
||||
glibc, todavia ela não foi adicionada às variáveis potencialmente inseguras
|
||||
a serem desabilitadas em ambientes privilegiados. Este incidente está
|
||||
pendente de um identificador CVE. Isto foi resolvido com um enxerto à glibc,
|
||||
e os usuários devem atualizar todos os seus perfis, reconfigurando seu
|
||||
sistema e reiniciando-o.")))
|
||||
|
||||
(entry (commit "6d4cb99a15da7f4fd55f956c55f4f4aacfcc7742")
|
||||
(title
|
||||
(en "@code{%desktop-services} now includes GDM on AArch64")
|
||||
(de "@code{%desktop-services} enthält jetzt GDM auf AArch64")
|
||||
(pt "@code{%desktop-services} agora inclui GDM no AArch64"))
|
||||
(body
|
||||
(en "On Guix System in an operating system configuration, your value for the
|
||||
@code{services} field is based on @code{%desktop-services} for desktop
|
||||
machines.
|
||||
|
||||
The @code{%desktop-services} contains a login manager that is
|
||||
architecture-dependent. Previously, GDM has been used on x86_64 and SDDM on
|
||||
other architectures.
|
||||
|
||||
Now, GDM is used on all 64-bit architectures. This affects only AArch64 in
|
||||
the end, as other 64-bit architectures aren't mature enough to use
|
||||
%desktop-services, yet.
|
||||
|
||||
In case you're on AArch64 and you've changed the login manager, you will have
|
||||
to adapt your config to remove @code{gdm-service-type} instead of
|
||||
@code{sddm-service-type}.")
|
||||
(de "Auf Guix System liegen in einer Betriebssystemkonfiguration Ihrem
|
||||
Wert des @code{services}-Feldes auf Desktop-Maschinen die
|
||||
@code{%desktop-services} zugrunde.
|
||||
|
||||
Zu den @code{%desktop-services} gehört eine Anmeldeverwaltung, die sich je nach
|
||||
Architektur unterscheidet. Bisher wurde GDM auf x86_64 benutzt und SDDM auf
|
||||
anderen Architekturen.
|
||||
|
||||
Ab jetzt wird GDM auf allen 64-Bit-Architekturen benutzt. Das betrifft
|
||||
letztlich nur AArch64, weil andere 64-Bit-Architecturen bisher noch nicht weit
|
||||
genug fortgeschritten sind, um die %desktop-services zu benutzen.
|
||||
|
||||
Falls Sie auf AArch64 sind und die Anmeldeverwaltung geändert haben, müssen Sie
|
||||
Ihre Konfiguration ändern und dort @code{gdm-service-type} entfernen statt
|
||||
@code{sddm-service-type}.")
|
||||
(pt "Em uma configuração de sistema operacional do Guix System, seu
|
||||
valor para o campo @code{services} é baseado em @code{%desktop-services} para
|
||||
máquinas desktop.
|
||||
|
||||
@code{%desktop-services} contém um gerenciador de login dependente de
|
||||
arquitetura. Anteriormente, GDM fora usado em x86_64 e SDDM nas demais.
|
||||
|
||||
Agora, GDM é usado em todas as arquiteturas de 64 bits. Esta mudança afeta
|
||||
apenas a AArch64 no frigir dos ovos, dado que as demais arquiteturas de 64
|
||||
bits não são maduras o bastante para usar @code{%desktop-services}, por
|
||||
enquanto.
|
||||
|
||||
No caso de você estar em um AArch64 e ter modificado o gerenciador de login,
|
||||
você terá que adaptar sua configuração para remover @code{gdm-service-type} em
|
||||
vez de @code{sddm-service-type}.")))
|
||||
|
||||
(entry (commit "d3b79beaa806452dceaffb8b211b69dc4c346aba")
|
||||
(title
|
||||
(en "Linux-libre 5.4 no longer supported")
|
||||
(de "Linux-libre 5.4 nicht mehr unterstützt")
|
||||
(pt "Linux-libre 5.4 não é mais suportado"))
|
||||
(body
|
||||
(en "The linux-libre 5.4 kernel series is no longer supported
|
||||
upstream and will be removed from GNU Guix soon:
|
||||
|
||||
https://www.kernel.org/category/releases.html
|
||||
|
||||
This kernel series was first added to Guix in 2019 by Mark Weaver, at version
|
||||
5.4.5. After ~297 updates delivered to Guix users, we have deployed the final
|
||||
update, 5.4.302.
|
||||
|
||||
The next kernel series removals are scheduled for December 2026, when the Linux
|
||||
long-term support team is planning to stop supporting four different kernel
|
||||
series: 6.12, 6.6, 5.15, and 5.10.")
|
||||
(de "Die Versionsreihe 5.4 des Linux-libre-Kernels wird von dessen
|
||||
Anbieter nicht mehr unterstützt und wird bald aus GNU Guix entfernt werden:
|
||||
|
||||
https://www.kernel.org/category/releases.html
|
||||
|
||||
Diese Kernel-Reihe wurde ursprünglich 2019 zu Guix hinzugefügt von Mark Weaver
|
||||
mit Version 5.4.5. Nach ~297 Aktualisierungen, die Guix seinen Nutzern
|
||||
bereitgestellt hat, haben wir nun die letzte Aktualisierung
|
||||
ausgeliefert, 5.4.302.
|
||||
|
||||
Der weitere Plan von Linux’ Team für Langzeitunterstützung sieht vor, als
|
||||
Nächstes die Unterstützung für vier verschiedene Kernel-Reihen im Dezember 2026
|
||||
zu beenden: 6.12, 6.6, 5.15 und 5.10.")
|
||||
(pt "A série 5.4 do kernel linux-libre não é mais suportada pelo
|
||||
fornecedor e será removida do GNU Guix em breve:
|
||||
|
||||
https://www.kernel.org/category/releases.html
|
||||
|
||||
Esta série de kernels foi adicionada inicialmente ao Guix em 2019 por Mark
|
||||
Weaver, na versão 5.4.5. Após ~297 atualizações entregues aos usuários do
|
||||
Guix, implantamos a atualização final, 5.4.302.
|
||||
|
||||
As próximas remoções de séries do kernel estão agendadas para dezembro de
|
||||
2026, quando o time de suporte de longo prazo planeja interromper o suporte a
|
||||
quatro séries diferentes do kernel: 6.12, 6.6, 5.15 e 5.10.")))
|
||||
|
||||
(entry (commit "14bb0192fde79909999c3880b6b66aa22499eb11")
|
||||
(title
|
||||
(en "Linux-libre 6.16 removed from Guix")
|
||||
(de "Linux-libre 6.16 wurde aus Guix entfernt")
|
||||
(pt "Linux-libre 6.16 removido do Guix")
|
||||
(zh "Linux-libre 6.16 已从 Guix 中移除"))
|
||||
(body
|
||||
(en "The linux-libre 6.16 kernel series has been removed from Guix, as
|
||||
it is no longer supported upstream. The 6.17 kernel series is now the
|
||||
default.")
|
||||
(de "Die Versionsreihe 6.16 des Linux-libre-Kernels wurde aus GNU Guix
|
||||
entfernt, weil sie von dessen Anbieter nicht mehr unterstützt wird.
|
||||
Kernel-Versionsreihe 6.17 ist jetzt vorgegeben.")
|
||||
(pt "A série 6.16 do kernel linux-libre foi removida do Guix, dado
|
||||
que não é mais suportada pelo fornecedor. A série 6.17 é o padrão atual")
|
||||
(zh "由于上游不再支持,GNU Guix 已移除 6.16 系列的 linux-libre 内核。6.17
|
||||
内核系列现已成为默认版本。")))
|
||||
|
||||
|
||||
(entry (commit "8daae75de3670594dfcb63b6ae6f1603ca6f7971")
|
||||
(title
|
||||
(en "Fundraising to sustain and strengthen Guix")
|
||||
|
||||
+54
-297
@@ -14,8 +14,7 @@ exec $pre_inst_env_maybe guix repl -- "$0" "$@"
|
||||
;;; Copyright © 2022 Simon Tournier <zimon.toutoune@gmail.com>
|
||||
;;; Copyright © 2025 Jelle Licht <jlicht@fsfe.org>
|
||||
;;; Copyright © 2025 Cayetano Santos <csantosb@inventati.org>
|
||||
;;; Copyright © 2025-2026 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2025 jgart <jgart@dismail.de>
|
||||
;;; Copyright © 2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -92,7 +91,7 @@ exec $pre_inst_env_maybe guix repl -- "$0" "$@"
|
||||
(email person-email)
|
||||
(account person-codeberg-account))
|
||||
|
||||
(define (person name email account)
|
||||
(define* (person name #:optional email account)
|
||||
(make-person name email account))
|
||||
|
||||
(define* (team id #:key name description (members '())
|
||||
@@ -285,25 +284,14 @@ PARAMETERS."
|
||||
|
||||
;; API documentation at <https://codeberg.org/api/swagger>.
|
||||
|
||||
(define-forgejo-request (organization-teams/paginated organization page)
|
||||
"Return the list of teams of ORGANIZATION, for the given PAGE (1-indexed)."
|
||||
(define-forgejo-request (organization-teams organization)
|
||||
"Return the list of teams of ORGANIZATION."
|
||||
(GET "orgs" organization "teams"
|
||||
& `(("page" . ,(number->string page))))
|
||||
& '(("limit" . "100"))) ;get up to 100 teams
|
||||
=> 200
|
||||
(lambda (port)
|
||||
(map json->forgejo-team (vector->list (json->scm port)))))
|
||||
|
||||
(define (organization-teams token organization)
|
||||
"Return the list of teams of ORGANIZATION."
|
||||
(let loop ((index 1)
|
||||
(pages '()))
|
||||
(match (organization-teams/paginated token organization index)
|
||||
(()
|
||||
(concatenate (reverse pages)))
|
||||
(lst
|
||||
(loop (+ 1 index)
|
||||
(cons lst pages))))))
|
||||
|
||||
(define-forgejo-request (create-team organization team)
|
||||
"Create TEAM, a Forgejo team, under ORGANIZATION."
|
||||
(POST "orgs" organization "teams")
|
||||
@@ -474,49 +462,15 @@ already exists. Lookup team IDs among CURRENT-TEAMS."
|
||||
#:description "Audio related packages."
|
||||
#:scope (list "gnu/packages/audio.scm"
|
||||
"gnu/packages/fluidplug.scm"
|
||||
"gnu/packages/music.scm"
|
||||
"gnu/packages/xiph.scm")))
|
||||
|
||||
(define-team beam
|
||||
(team 'beam
|
||||
#:name "Erlang/Elixir/BEAM team"
|
||||
#:description "The virtual machine at the core of the Erlang Open
|
||||
Telecom Platform (OTP), Erlang and Elxir languages and packages, development
|
||||
of Rebar and Mix build systems and Hex.pm importer."
|
||||
#:scope (list (make-regexp* "^gnu/packages/elixir(-.+|)\\.scm$")
|
||||
"guix/build/mix-build-system.scm"
|
||||
"guix/build-system/mix.scm"
|
||||
(make-regexp* "^gnu/packages/erlang(-.+|)\\.scm$")
|
||||
"guix/build/rebar-build-system.scm"
|
||||
"guix/build-system/rebar.scm"
|
||||
"guix/import/hexpm.scm"
|
||||
"guix/scripts/import/hexpm.scm")))
|
||||
|
||||
(define-team bioinformatics
|
||||
(team 'bioinformatics
|
||||
#:name "Bioinformatics team"
|
||||
#:scope (list "gnu/packages/bioinformatics.scm")))
|
||||
|
||||
(define-team bootstrap
|
||||
(team 'bootstrap
|
||||
#:name "Bootstrap"
|
||||
#:description "Full-source bootstrap: stage0, Mes, Gash, etc."
|
||||
#:scope (list "gnu/packages/bootstrap.scm"
|
||||
"gnu/packages/commencement.scm"
|
||||
#:scope (list "gnu/packages/commencement.scm"
|
||||
"gnu/packages/mes.scm")))
|
||||
|
||||
(define-team build-tools
|
||||
(team 'build-tools
|
||||
#:name "Build tools team"
|
||||
#:description "Build tools and parser generators."
|
||||
#:scope (list "gnu/packages/assembly.scm"
|
||||
"gnu/packages/autogen.scm"
|
||||
"gnu/packages/autotools.scm"
|
||||
"gnu/packages/bison.scm"
|
||||
"gnu/packages/m4.scm"
|
||||
"gnu/packages/oyacc.scm"
|
||||
"gnu/packages/re2c.scm")))
|
||||
|
||||
(define-team c++
|
||||
(team 'c++
|
||||
#:name "C/C++ team"
|
||||
@@ -534,8 +488,7 @@ of Rebar and Mix build systems and Hex.pm importer."
|
||||
(team 'core
|
||||
#:name "Core / Tools / Internals"
|
||||
#:scope
|
||||
(list "etc/teams.scm"
|
||||
"guix/avahi.scm"
|
||||
(list "guix/avahi.scm"
|
||||
"guix/base16.scm"
|
||||
"guix/base32.scm"
|
||||
"guix/base64.scm"
|
||||
@@ -595,7 +548,6 @@ of Rebar and Mix build systems and Hex.pm importer."
|
||||
"guix/read-print.scm"
|
||||
"guix/records.scm"
|
||||
"guix/remote.scm"
|
||||
"guix/remote-procedures.scm"
|
||||
"guix/repl.scm"
|
||||
"guix/search-paths.scm"
|
||||
"guix/self.scm"
|
||||
@@ -657,7 +609,6 @@ of Rebar and Mix build systems and Hex.pm importer."
|
||||
#:name "Electronics team"
|
||||
#:description "Electronics and hardware related packages."
|
||||
#:scope (list "gnu/packages/electronics.scm"
|
||||
"gnu/packages/hdl.scm"
|
||||
"gnu/packages/libftdi.scm"
|
||||
"gnu/packages/engineering.scm"
|
||||
"gnu/packages/flashing-tools.scm")))
|
||||
@@ -694,8 +645,6 @@ ecosystem."
|
||||
"gnu/packages/luanti.scm"
|
||||
"gnu/packages/esolangs.scm" ; granted, rather niche
|
||||
"gnu/packages/motti.scm"
|
||||
"gnu/services/games.scm"
|
||||
"gnu/tests/games.scm"
|
||||
"guix/build/luanti-build-system.scm")))
|
||||
|
||||
(define-team gnome
|
||||
@@ -709,7 +658,6 @@ GLib/GIO, GTK, GStreamer and Webkit."
|
||||
"gnu/packages/gstreamer.scm"
|
||||
"gnu/packages/gtk.scm"
|
||||
"gnu/packages/gnome.scm"
|
||||
"gnu/packages/gnome-circle.scm"
|
||||
"gnu/packages/gnome-xyz.scm"
|
||||
"gnu/packages/webkit.scm"
|
||||
"gnu/services/desktop.scm"
|
||||
@@ -729,26 +677,6 @@ GLib/GIO, GTK, GStreamer and Webkit."
|
||||
"guix/scripts/import/go.scm"
|
||||
"tests/import/go.scm")))
|
||||
|
||||
(define-team guile
|
||||
(team 'guile
|
||||
#:name "Guile team"
|
||||
#:description
|
||||
"Team for the Guile platform, libraries, and build system."
|
||||
#:scope (list "gnu/packages/guile.scm"
|
||||
"gnu/packages/guile-wm.scm"
|
||||
"gnu/packages/guile-xyz.scm"
|
||||
"guix/build-system/guile.scm"
|
||||
"guix/build/guile-build-system.scm")))
|
||||
|
||||
(define-team hare
|
||||
(team 'hare
|
||||
#:name "Hare"
|
||||
#:scope (list "gnu/packages/hare.scm"
|
||||
"gnu/packages/hare-apps.scm"
|
||||
"gnu/packages/hare-xyz.scm"
|
||||
"guix/build-system/hare.scm"
|
||||
"guix/build/hare-build-system.scm")))
|
||||
|
||||
(define-team haskell
|
||||
(team 'haskell
|
||||
#:name "Haskell team"
|
||||
@@ -781,11 +709,7 @@ the haskell-build-system."
|
||||
#:description "High-performance computing (HPC) related packages."
|
||||
#:scope (list "gnu/packages/mpi.scm"
|
||||
"gnu/packages/oneapi.scm"
|
||||
"gnu/packages/opencl.scm"
|
||||
"gnu/packages/parallel.scm"
|
||||
"gnu/packages/rocm.scm"
|
||||
"gnu/packages/rocm-tools.scm"
|
||||
"gnu/packages/rocm-libs.scm"
|
||||
"gnu/packages/sycl.scm"
|
||||
"gnu/packages/tbb.scm"
|
||||
"gnu/packages/vulkan.scm")))
|
||||
@@ -812,20 +736,16 @@ the haskell-build-system."
|
||||
"The JDK and JRE, the Maven build system, Java packages, the ant-build-system,
|
||||
and the maven-build-system."
|
||||
#:scope
|
||||
(list "gnu/packages/clojure.scm"
|
||||
;; Match java.scm and java-*.scm.
|
||||
(list ;; Match java.scm and java-*.scm.
|
||||
(make-regexp* "^gnu/packages/java(-.+|)\\.scm$")
|
||||
;; Match maven.scm and maven-*.scm
|
||||
(make-regexp* "^gnu/packages/maven(-.+|)\\.scm$")
|
||||
"guix/build/ant-build-system.scm"
|
||||
"guix/build/clojure-build-system.scm"
|
||||
"guix/build/clojure-utils.scm"
|
||||
"guix/build/java-utils.scm"
|
||||
"guix/build/maven-build-system.scm"
|
||||
;; The maven directory
|
||||
(make-regexp* "^guix/build/maven/")
|
||||
"guix/build-system/ant.scm"
|
||||
"guix/build-system/clojure.scm"
|
||||
"guix/build-system/maven.scm")))
|
||||
|
||||
(define-team javascript
|
||||
@@ -887,26 +807,12 @@ asdf-build-system."
|
||||
"gnu/packages/fonts.scm"
|
||||
"gnu/packages/ibus.scm")))
|
||||
|
||||
(define-team lua
|
||||
(team 'lua
|
||||
#:name "Lua team"
|
||||
#:description
|
||||
"Lua, Fennel, and related packages."
|
||||
#:scope (list "gnu/packages/lua.scm"
|
||||
"gnu/packages/luanti.scm")))
|
||||
|
||||
(define-team lxqt
|
||||
(team 'lxqt
|
||||
#:name "LXQt team"
|
||||
#:description "LXQt desktop environment."
|
||||
#:scope (list "gnu/packages/lxqt.scm")))
|
||||
|
||||
(define-team mate
|
||||
(team 'mate
|
||||
#:name "MATE team"
|
||||
#:description "MATE desktop environment"
|
||||
#:scope (list "gnu/packages/mate.scm")))
|
||||
|
||||
(define-team mentors
|
||||
(team 'mentors
|
||||
#:name "Mentors"
|
||||
@@ -942,21 +848,6 @@ importer, and the ocaml-build-system."
|
||||
"guix/scripts/import/opam.scm"
|
||||
"tests/import/opam.scm")))
|
||||
|
||||
(define-team perl
|
||||
(team 'perl
|
||||
#:name "Perl and Raku team"
|
||||
#:description
|
||||
"Perl & Raku packages, the \"cpan\" importer, and the
|
||||
perl-build-system as well as the rakudo-build-system."
|
||||
#:scope
|
||||
(list (make-regexp* "^gnu/packages/perl(-.+|)\\.scm$")
|
||||
"guix/build/perl-build-system.scm"
|
||||
"guix/build/rakudo-build-system.scm"
|
||||
"guix/build-system/perl.scm"
|
||||
"guix/build-system/rakudo.scm"
|
||||
"guix/import/cpan.scm"
|
||||
"guix/scripts/import/cpan.scm")))
|
||||
|
||||
(define-team python
|
||||
(team 'python
|
||||
#:name "Python team"
|
||||
@@ -968,32 +859,13 @@ perl-build-system as well as the rakudo-build-system."
|
||||
(make-regexp* "^gnu/packages/python(-.+|)\\.scm$")
|
||||
"gnu/packages/sphinx.scm"
|
||||
"gnu/packages/tryton.scm"
|
||||
"guix/build-system/pyproject.scm"
|
||||
"guix/build-system/python.scm"
|
||||
"guix/build/pyproject-build-system.scm"
|
||||
"guix/build-system/pyproject.scm"
|
||||
"guix/build/python-build-system.scm"
|
||||
"guix/build/toml.scm" ;temporary, until other build system will use it
|
||||
"guix/build-system/python.scm"
|
||||
"guix/import/pypi.scm"
|
||||
"guix/scripts/import/pypi.scm"
|
||||
"tests/import/pypi.scm"
|
||||
"tests/toml.scm")))
|
||||
|
||||
(define-team qa-packages
|
||||
(team 'qa-packages
|
||||
#:name "Team for quality assurance packages"
|
||||
#:description
|
||||
"Quality assurance software (CI/CD, testing, analysis;
|
||||
no direct relation to Guix's QA)."
|
||||
#:scope (list "gnu/ci.scm"
|
||||
"gnu/packages/benchmark.scm"
|
||||
"gnu/packages/check.scm"
|
||||
"gnu/packages/ci.scm"
|
||||
"gnu/packages/code.scm"
|
||||
"gnu/packages/debug.scm"
|
||||
"gnu/packages/dezyne.scm"
|
||||
"gnu/packages/libunwind.scm"
|
||||
"gnu/services/ci.scm"
|
||||
"gnu/tests/ci.scm")))
|
||||
"tests/import/pypi.scm")))
|
||||
|
||||
(define-team qt
|
||||
(team 'qt
|
||||
@@ -1037,8 +909,7 @@ importer."
|
||||
"The current release team. Members are expected to change with each
|
||||
release."
|
||||
#:scope (list "NEWS"
|
||||
"etc/manifests/release-minimal.scm"
|
||||
"etc/manifests/release-desktop.scm")))
|
||||
"etc/manifests/release.scm")))
|
||||
|
||||
(define-team reproduciblebuilds
|
||||
(team 'reproduciblebuilds
|
||||
@@ -1050,7 +921,7 @@ release."
|
||||
(define-team ruby
|
||||
(team 'ruby
|
||||
#:name "Ruby team"
|
||||
#:scope (list (make-regexp* "^gnu/packages/(ruby)(-.+|)\\.scm$")
|
||||
#:scope (list "gnu/packages/ruby.scm"
|
||||
"guix/build/ruby-build-system.scm"
|
||||
"guix/build-system/ruby.scm"
|
||||
"guix/import/gem.scm"
|
||||
@@ -1070,22 +941,6 @@ release."
|
||||
"guix/scripts/import/crate.scm"
|
||||
"tests/import/crate.scm")))
|
||||
|
||||
(define-team crypto
|
||||
(team 'crypto
|
||||
#:name "Crypto team"
|
||||
#:description
|
||||
"Secrets, passwords, cryptography and security related packages."
|
||||
#:scope (list (make-regexp* "^gnu/packages/(.*-|)crypto\\.scm$")
|
||||
"gnu/packages/cryptsetup.scm"
|
||||
"gnu/packages/cybersecurity.scm"
|
||||
"gnu/packages/gnupg.scm"
|
||||
"gnu/packages/nettle.scm"
|
||||
"gnu/packages/password-utils.scm"
|
||||
"gnu/packages/security-token.scm"
|
||||
"gnu/packages/ssh.scm"
|
||||
"gnu/packages/tls.scm"
|
||||
"gnu/packages/vpn.scm")))
|
||||
|
||||
(define-team science
|
||||
(team 'science
|
||||
#:name "Science team"
|
||||
@@ -1100,7 +955,6 @@ packages (e.g. Astronomy, Chemistry, Math, Physics etc.)"
|
||||
"gnu/packages/lean.scm"
|
||||
"gnu/packages/maths.scm"
|
||||
"gnu/packages/medical.scm"
|
||||
"gnu/packages/physics.scm"
|
||||
"gnu/packages/sagemath.scm"
|
||||
"gnu/packages/statistics.scm")))
|
||||
|
||||
@@ -1123,7 +977,7 @@ packages (e.g. Astronomy, Chemistry, Math, Physics etc.)"
|
||||
"gnu/packages/apparmor.scm"
|
||||
"gnu/packages/authentication.scm"
|
||||
"gnu/packages/cluster.scm"
|
||||
"gnu/packages/configuration-management.scm"
|
||||
"gnu/packages/configuration-management"
|
||||
"gnu/packages/databases.scm"
|
||||
"gnu/packages/distributed.scm"
|
||||
"gnu/packages/dns.scm"
|
||||
@@ -1142,26 +996,7 @@ packages (e.g. Astronomy, Chemistry, Math, Physics etc.)"
|
||||
"gnu/packages/task-runners.scm"
|
||||
"gnu/packages/terraform.scm"
|
||||
"gnu/packages/virtualization.scm"
|
||||
"gnu/packages/vnc.scm"
|
||||
"gnu/services/admin.scm"
|
||||
"gnu/services/authentication.scm"
|
||||
"gnu/services/databases.scm"
|
||||
"gnu/services/dns.scm"
|
||||
"gnu/services/high-availability.scm"
|
||||
"gnu/services/kerberos.scm"
|
||||
"gnu/services/monitoring.scm"
|
||||
"gnu/services/nfs.scm"
|
||||
"gnu/services/samba.scm"
|
||||
"gnu/services/virtualization.scm"
|
||||
"gnu/services/vnc.scm"
|
||||
"gnu/tests/databases.scm"
|
||||
"gnu/tests/dns.scm"
|
||||
"gnu/tests/high-availability.scm"
|
||||
"gnu/tests/monitoring.scm"
|
||||
"gnu/tests/nfs.scm"
|
||||
"gnu/tests/samba.scm"
|
||||
"gnu/tests/virtualization.scm"
|
||||
"gnu/tests/vnc.scm")))
|
||||
"gnu/packages/vnc.scm")))
|
||||
|
||||
(define-team telephony
|
||||
(team 'telephony
|
||||
@@ -1218,6 +1053,11 @@ the \"texlive\" importer."
|
||||
"bavier")
|
||||
science)
|
||||
|
||||
(define-member (person "Lars-Dominik Braun"
|
||||
"lars@6xq.net"
|
||||
"ldb")
|
||||
python haskell)
|
||||
|
||||
(define-member (person "Jonathan Brielmaier"
|
||||
"jonathan.brielmaier@web.de"
|
||||
"jonsger")
|
||||
@@ -1227,12 +1067,12 @@ the \"texlive\" importer."
|
||||
"ludo@gnu.org"
|
||||
"civodul")
|
||||
core core-packages hpc installer
|
||||
guile)
|
||||
mentors)
|
||||
|
||||
(define-member (person "Andreas Enge"
|
||||
"andreas@enge.fr"
|
||||
"enge")
|
||||
bootstrap c++ core-packages crypto lxqt science tex)
|
||||
bootstrap core-packages lxqt science tex)
|
||||
|
||||
(define-member (person "Tanguy Le Carrour"
|
||||
"tanguy@bioneland.org"
|
||||
@@ -1262,7 +1102,7 @@ the \"texlive\" importer."
|
||||
(define-member (person "jgart"
|
||||
"jgart@dismail.de"
|
||||
"jgart")
|
||||
hare lisp mentors)
|
||||
lisp mentors)
|
||||
|
||||
(define-member (person "Guillaume Le Vaillant"
|
||||
"glv@posteo.net"
|
||||
@@ -1292,12 +1132,12 @@ the \"texlive\" importer."
|
||||
(define-member (person "Liliana Marie Prikler"
|
||||
"liliana.prikler@gmail.com"
|
||||
"lilyp")
|
||||
emacs games gnome qa-packages)
|
||||
emacs games gnome)
|
||||
|
||||
(define-member (person "Ricardo Wurmus"
|
||||
"rekado@elephly.net"
|
||||
"rekado")
|
||||
bioinformatics r sugar)
|
||||
r sugar)
|
||||
|
||||
(define-member (person "Christopher Baines"
|
||||
"guix@cbaines.net"
|
||||
@@ -1309,11 +1149,6 @@ the \"texlive\" importer."
|
||||
"abcdw")
|
||||
home emacs)
|
||||
|
||||
(define-member (person "Trevor Richards"
|
||||
"trev@trevdev.ca"
|
||||
"trevdev")
|
||||
emacs lisp)
|
||||
|
||||
(define-member (person "pukkamustard"
|
||||
"pukkamustard@posteo.net"
|
||||
"pukkamustard")
|
||||
@@ -1324,6 +1159,10 @@ the \"texlive\" importer."
|
||||
"jpoiret")
|
||||
installer)
|
||||
|
||||
(define-member (person "("
|
||||
"paren@disroot.org")
|
||||
)
|
||||
|
||||
(define-member (person "Simon Tournier"
|
||||
"zimon.toutoune@gmail.com"
|
||||
"zimoun")
|
||||
@@ -1337,7 +1176,7 @@ the \"texlive\" importer."
|
||||
(define-member (person "Vagrant Cascadian"
|
||||
"vagrant@debian.org"
|
||||
"vagrantc")
|
||||
debian embedded kernel)
|
||||
debian embedded)
|
||||
|
||||
(define-member (person "Vagrant Cascadian" ;XXX: duplicate
|
||||
"vagrant@reproducible-builds.org"
|
||||
@@ -1352,12 +1191,12 @@ the \"texlive\" importer."
|
||||
(define-member (person "Katherine Cox-Buday"
|
||||
"cox.katherine.e+guix@gmail.com"
|
||||
"katco")
|
||||
emacs lisp)
|
||||
emacs go lisp)
|
||||
|
||||
(define-member (person "Munyoki Kilyungi"
|
||||
"me@bonfacemunyoki.com"
|
||||
"BonfaceKilz")
|
||||
python guile)
|
||||
python lisp)
|
||||
|
||||
(define-member (person "Gabriel Wicki"
|
||||
"gabriel@erlikon.ch"
|
||||
@@ -1384,20 +1223,23 @@ the \"texlive\" importer."
|
||||
"Hellseher")
|
||||
go julia python science sysadmin)
|
||||
|
||||
(define-member (person "Arthur Rodrigues"
|
||||
"arthurhdrodrigues@proton.me"
|
||||
"arthurhdrodrigues")
|
||||
go)
|
||||
(define-member (person "Vivien Kraus"
|
||||
"vivien@planete-kraus.eu")
|
||||
gnome)
|
||||
|
||||
(define-member (person "Mark H Weaver"
|
||||
"mhw@netris.org"
|
||||
"mhw")
|
||||
mozilla)
|
||||
|
||||
(define-member (person "Adam Faiz"
|
||||
"adam.faiz@disroot.org")
|
||||
games)
|
||||
|
||||
(define-member (person "Laurent Gatto"
|
||||
"lgatto@protonmail.ch"
|
||||
"laurent.gatto@gmail.com"
|
||||
"lgatto")
|
||||
r bioinformatics)
|
||||
r)
|
||||
|
||||
(define-member (person "Nicolas Goaziou"
|
||||
"guix@nicolasgoaziou.fr"
|
||||
@@ -1412,7 +1254,7 @@ the \"texlive\" importer."
|
||||
(define-member (person "Janneke Nieuwenhuizen"
|
||||
"janneke@gnu.org"
|
||||
"janneke")
|
||||
bootstrap build-tools core-packages home hurd installer qa-packages)
|
||||
bootstrap core-packages home hurd installer)
|
||||
|
||||
(define-member (person "Ian Eure"
|
||||
"ian@retrospec.tv"
|
||||
@@ -1422,7 +1264,7 @@ the \"texlive\" importer."
|
||||
(define-member (person "Zheng Junjie"
|
||||
"z572@z572.online"
|
||||
"Z572")
|
||||
core-packages)
|
||||
core-packages qt kde)
|
||||
|
||||
(define-member (person "Sughosha"
|
||||
"sughosha@disroot.org"
|
||||
@@ -1437,7 +1279,7 @@ the \"texlive\" importer."
|
||||
(define-member (person "Cayetano Santos"
|
||||
"csantosb@inventati.org"
|
||||
"csantosb")
|
||||
ai emacs electronics hpc crypto reproduciblebuilds)
|
||||
ai emacs electronics hpc)
|
||||
|
||||
(define-member (person "Greg Hogan"
|
||||
"code@greghogan.com"
|
||||
@@ -1446,7 +1288,8 @@ the \"texlive\" importer."
|
||||
|
||||
(define-member (person "Hilton Chain"
|
||||
"hako@ultrarare.space"
|
||||
"hako"))
|
||||
"hako")
|
||||
emacs home localization mozilla rust zig)
|
||||
|
||||
(define-member (person "Noé Lopez"
|
||||
"noelopez@free.fr"
|
||||
@@ -1458,6 +1301,10 @@ the \"texlive\" importer."
|
||||
"Ashvith")
|
||||
games go javascript sysadmin xfce)
|
||||
|
||||
(define-member (person "Trevor Richards"
|
||||
"trev@trevdev.ca")
|
||||
lisp emacs)
|
||||
|
||||
(define-member (person "Konrad Hinsen"
|
||||
"guix@khinsen.fastmail.net"
|
||||
"khinsen")
|
||||
@@ -1479,9 +1326,9 @@ the \"texlive\" importer."
|
||||
hurd)
|
||||
|
||||
(define-member (person "Giacomo Leidi"
|
||||
"therewasa@fishinthecalculator.me"
|
||||
"goodoldpaul@autistici.org"
|
||||
"fishinthecalculator")
|
||||
audio beam)
|
||||
audio)
|
||||
|
||||
(define-member (person "Saku Laesvuori"
|
||||
"saku@laesvuori.fi"
|
||||
@@ -1491,12 +1338,7 @@ the \"texlive\" importer."
|
||||
(define-member (person "Rodion Goritskov"
|
||||
"rodion@goritskov.com"
|
||||
"rodion-goritskov")
|
||||
games java kde kernel release)
|
||||
|
||||
(define-member (person "Jason Conroy"
|
||||
"jconroy@tscripta.net"
|
||||
"conroj")
|
||||
ocaml)
|
||||
release)
|
||||
|
||||
(define-member (person "Rutherther"
|
||||
"rutherther@ditigal.xyz"
|
||||
@@ -1511,98 +1353,13 @@ the \"texlive\" importer."
|
||||
(define-member (person "Danny Milosavljevic"
|
||||
"dannym@friendly-machines.com"
|
||||
"daym")
|
||||
bootstrap hpc python rust science)
|
||||
bootstrap hpc rust science)
|
||||
|
||||
(define-member (person "Andy Tai"
|
||||
"atai@atai.org"
|
||||
"atai")
|
||||
ai)
|
||||
|
||||
(define-member (person "Pierre-Henry Fröhring"
|
||||
"contact@phfrohring.com"
|
||||
"phfrohring")
|
||||
beam)
|
||||
|
||||
(define-member (person "Igorj Gorjaĉev"
|
||||
"igor@goryachev.org"
|
||||
"delitrem")
|
||||
beam)
|
||||
|
||||
(define-member (person "Nguyễn Gia Phong"
|
||||
"cnx@loang.net"
|
||||
"cnx")
|
||||
build-tools python qa-packages sysadmin)
|
||||
|
||||
(define-member (person "Lilah Tascheter"
|
||||
"lilah@lunabee.space"
|
||||
"tinystar")
|
||||
hare)
|
||||
|
||||
(define-member (person "FuncProgLinux"
|
||||
"softwarelibre@urutau-ltd.org"
|
||||
"FuncProgLinux")
|
||||
mate)
|
||||
|
||||
(define-member (person "Reza Housseini"
|
||||
"reza@housseini.me"
|
||||
"rhou")
|
||||
python science c++)
|
||||
|
||||
(define-member (person "Yunqi Shao"
|
||||
"me@yqshao.se"
|
||||
"yqshao")
|
||||
sysadmin)
|
||||
|
||||
(define-member (person "Collin Doering"
|
||||
"collin@rekahsoft.ca"
|
||||
"rekahsoft")
|
||||
embedded electronics haskell sysadmin)
|
||||
|
||||
(define-member (person "Mathieu Lirzin"
|
||||
"mthl@gnu.org"
|
||||
"mthl")
|
||||
java)
|
||||
|
||||
(define-member (person "Hugo Buddelmeijer"
|
||||
"hugo@buddelmeijer.nl"
|
||||
"hugobuddel")
|
||||
python)
|
||||
|
||||
(define-member (person "Yan Abu Arab"
|
||||
"yanabuarab@gmail.com"
|
||||
"tux1c")
|
||||
python sysadmin)
|
||||
|
||||
(define-member (person "Wilko Meyer"
|
||||
"w@wmeyer.eu"
|
||||
"theesm")
|
||||
kernel perl)
|
||||
|
||||
(define-member (person "Untrusem"
|
||||
"mysticmoksh@riseup.net"
|
||||
"untrusem")
|
||||
mozilla)
|
||||
|
||||
(define-member (person "David Thompson"
|
||||
"dthompson2@worcester.edu"
|
||||
"flockofbirbs")
|
||||
guile)
|
||||
|
||||
(define-member (person "Sergio Pastor Pérez"
|
||||
"sergio.pastorperez@gmail.com"
|
||||
"pastor")
|
||||
guile hpc kde)
|
||||
|
||||
(define-member (person "Carlo Zancanaro"
|
||||
"carlo@zancanaro.id.au"
|
||||
"czan")
|
||||
lua ruby)
|
||||
|
||||
(define-member (person "Folât Pjêrsômêj"
|
||||
"folaht@protonmail.com"
|
||||
"folaht")
|
||||
documentation)
|
||||
|
||||
|
||||
(define (find-team name)
|
||||
(or (hash-ref %teams (string->symbol name))
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the mix-build-system.
|
||||
;;; It is used to assist continuous integration of the beam-team branch.
|
||||
;;;
|
||||
;;;
|
||||
;;; You can use it to build all covered packages with:
|
||||
;;;
|
||||
;;; ./pre-inst-env guix build -m etc/teams/beam/elixir-manifest.scm
|
||||
;;;
|
||||
;;; or to update them with:
|
||||
;;;
|
||||
;;; ./pre-inst-env guix refresh -u -m etc/teams/beam/elixir-manifest.scm
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix gexp)
|
||||
(guix build-system)
|
||||
(ice-9 match)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
|
||||
(define* (has-mix-build-system? build-system #:key modules #:allow-other-keys)
|
||||
(or (eq? (build-system-name build-system) 'mix)
|
||||
(any
|
||||
(match-lambda
|
||||
(('guix 'build 'mix-build-system) #t)
|
||||
('((guix build mix-build-system) . _) #t)
|
||||
(_ #f))
|
||||
(cond
|
||||
((gexp? modules) (gexp->approximate-sexp modules))
|
||||
((pair? modules) modules)
|
||||
(else '())))))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (apply has-mix-build-system?
|
||||
(package-build-system package)
|
||||
(package-arguments package))
|
||||
(cons package lst)
|
||||
lst))
|
||||
(list))))
|
||||
@@ -1,60 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the rebar-build-system.
|
||||
;;; It is used to assist continuous integration of the beam-team branch.
|
||||
;;;
|
||||
;;;
|
||||
;;; You can use it to build all covered packages with:
|
||||
;;;
|
||||
;;; ./pre-inst-env guix build -m etc/teams/beam/erlang-manifest.scm
|
||||
;;;
|
||||
;;; or to update them with:
|
||||
;;;
|
||||
;;; ./pre-inst-env guix refresh -u -m etc/teams/beam/erlang-manifest.scm
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix gexp)
|
||||
(guix build-system)
|
||||
(ice-9 match)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
|
||||
(define* (has-rebar-build-system? build-system #:key modules #:allow-other-keys)
|
||||
(or (eq? (build-system-name build-system) 'rebar)
|
||||
(any
|
||||
(match-lambda
|
||||
(('guix 'build 'rebar-build-system) #t)
|
||||
('((guix build rebar-build-system) . _) #t)
|
||||
(_ #f))
|
||||
(cond
|
||||
((gexp? modules) (gexp->approximate-sexp modules))
|
||||
((pair? modules) modules)
|
||||
(else '())))))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (apply has-rebar-build-system?
|
||||
(package-build-system package)
|
||||
(package-arguments package))
|
||||
(cons package lst)
|
||||
lst))
|
||||
(list))))
|
||||
@@ -52,8 +52,7 @@
|
||||
tools/versions-stable")))
|
||||
|
||||
(define (fetch-releng-content)
|
||||
"Return a string corresponding to the content of the %GNOME-RELENG-VERSIONS-URI
|
||||
file."
|
||||
"Return an input port to the %GNOME-RELENG-VERSIONS-URI file."
|
||||
(call-with-port (http-fetch/cached (%gnome-releng-versions-uri))
|
||||
get-string-all))
|
||||
|
||||
@@ -73,13 +72,11 @@ C < ':'
|
||||
NL < '\n'")
|
||||
|
||||
(define %names
|
||||
'(("adwaita-fonts" . "font-adwaita")
|
||||
("pygobject" . "python-pygobject")
|
||||
("pyatspi" . "python-pyatspi")))
|
||||
'(("adwaita-fonts" . "font-adwaita")))
|
||||
|
||||
(define (parse-releng data)
|
||||
"Return the complete parse tree for DATA, a string representing the content of
|
||||
a GNOME releng file."
|
||||
"Return DATA, a string representing the content of a GNOME releng file, and
|
||||
return the complete parse tree."
|
||||
(let ((tree (peg:tree (match-pattern releng data))))
|
||||
(match tree
|
||||
(#f (raise-exception (make-releng-parser-error)))
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2026 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the go-build-system.
|
||||
;;; It is used to assist continuous integration of the go-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix build-system))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (or (eq? 'go (build-system-name (package-build-system package)))
|
||||
(string=? "go" (package-name package)))
|
||||
(cons package lst)
|
||||
lst))
|
||||
'())))
|
||||
@@ -1,34 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the hare-build-system.
|
||||
;;; It is used to assist continuous integration of the hare-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix build-system))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (or (eq? 'hare (build-system-name (package-build-system package)))
|
||||
(string=? "hare" (package-name package)))
|
||||
(cons package lst)
|
||||
lst))
|
||||
'())))
|
||||
@@ -1,40 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using any one of the
|
||||
;;; asdf build systems. It is used to assist continuous integration of
|
||||
;;; the lisp-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix build-system))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (or (eq? 'asdf/sbcl (build-system-name (package-build-system package)))
|
||||
(eq? 'asdf/ecl (build-system-name (package-build-system package)))
|
||||
(eq? 'asdf/clasp (build-system-name (package-build-system package)))
|
||||
(string=? "clasp-cl" (package-name package))
|
||||
(string=? "ecl" (package-name package))
|
||||
(string=? "sbcl" (package-name package)))
|
||||
(cons package lst)
|
||||
lst))
|
||||
'())))
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 FuncProgLinux <softwarelibre@urutau-ltd.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(gnu packages mate)
|
||||
(ice-9 match)
|
||||
(srfi srfi-1))
|
||||
|
||||
(define (propagated-inputs package)
|
||||
(map
|
||||
(match-lambda
|
||||
((_ (? package? pkg)) pkg)
|
||||
((_ (? package? pkg) output) (list pkg output)))
|
||||
(package-propagated-inputs package)))
|
||||
|
||||
(packages->manifest
|
||||
(append-map propagated-inputs
|
||||
(list mate)))
|
||||
@@ -1,36 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2026 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the perl-build-system.
|
||||
;;; It is used to assist continuous integration of the perl-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix build-system))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (or (eq? 'perl (build-system-name (package-build-system package)))
|
||||
(eq? 'rakudo (build-system-name (package-build-system package)))
|
||||
(string=? "perl" (package-name package))
|
||||
(string=? "rakudo" (package-name package)))
|
||||
(cons package lst)
|
||||
lst))
|
||||
'())))
|
||||
@@ -1,35 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the python-build-system.
|
||||
;;; It is used to assist continuous integration of the python-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix build-system))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (or (eq? 'python (build-system-name (package-build-system package)))
|
||||
(eq? 'pyproject (build-system-name (package-build-system package)))
|
||||
(string=? "python" (package-name package)))
|
||||
(cons package lst)
|
||||
lst))
|
||||
'())))
|
||||
@@ -1,413 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This manifest returns build artfacts for all supported systems. This can be
|
||||
;;; controlled by SUPPORTED_SYSTEMS environment variable. For the list of
|
||||
;;; artifacts produced, see artifacts-for-system and the `<thing>-for-system?`
|
||||
;;; procedures. NOTE: the --system argument does not change the system for which
|
||||
;;; the resulting package is built. They return different definitions of the
|
||||
;;; images. To change the system, pass different SUPPORTED_SYSTEMS.
|
||||
|
||||
(use-modules (gnu compression)
|
||||
(gnu image)
|
||||
(gnu packages graphviz)
|
||||
(gnu packages imagemagick)
|
||||
(gnu packages package-management)
|
||||
(gnu packages perl)
|
||||
(gnu services)
|
||||
(gnu system image)
|
||||
(gnu system install)
|
||||
(gnu system)
|
||||
(guix build-system gnu)
|
||||
(guix build-system trivial)
|
||||
(guix channels)
|
||||
(guix gexp)
|
||||
(guix git)
|
||||
(guix grafts)
|
||||
(guix memoization)
|
||||
(guix monads)
|
||||
(guix packages)
|
||||
(guix profiles)
|
||||
(guix records)
|
||||
(guix scripts pack)
|
||||
(guix store)
|
||||
(guix ui)
|
||||
(guix utils)
|
||||
(ice-9 format)
|
||||
(ice-9 match)
|
||||
(srfi srfi-9)
|
||||
(srfi srfi-26)
|
||||
(srfi srfi-35))
|
||||
|
||||
;; For easier testing, use (snapshot) guix package from (gnu packages
|
||||
;; package-management). Otherwise, the package is updated to current commit and
|
||||
;; might not be substitutable, leading to longer build times.
|
||||
(define %use-snapshot-package?
|
||||
(string=? (or (getenv "GUIX_USE_SNAPSHOT_PACKAGE") "no") "yes"))
|
||||
|
||||
(define (%guix-version)
|
||||
;; NOTE: while package-version guix is not correct in general,
|
||||
;; it is correct for the release itself. At that time, the
|
||||
;; guix package is updated to vX.Y.Z and it's the version
|
||||
;; we want to use.
|
||||
(package-version guix))
|
||||
|
||||
(define (%vm-image-path)
|
||||
(search-path %load-path "gnu/system/examples/vm-image.tmpl"))
|
||||
|
||||
(define (%vm-image-efi-path)
|
||||
(search-path %load-path "gnu/system/examples/vm-image-efi.tmpl"))
|
||||
|
||||
;; monadic record and gexp-compiler
|
||||
;; taken from Inria
|
||||
;; https://gitlab.inria.fr/numpex-pc5/wp3/guix-images/-/blob/17bf4585abc2d637faa5d339436e778b7c9fb1ce/modules/guix-hpc/packs.scm
|
||||
|
||||
;; XXX: The <monadic> hack below will hopefully become unnecessary once the
|
||||
;; (guix scripts pack) interface switches to declarative style--i.e.,
|
||||
;; file-like objects.
|
||||
|
||||
(define-record-type <monadic>
|
||||
(monadic->declarative mvalue)
|
||||
monadic?
|
||||
(mvalue monadic-value))
|
||||
|
||||
(define-gexp-compiler (monadic-compiler (monadic <monadic>) system target)
|
||||
(monadic-value monadic))
|
||||
|
||||
;; The tarball should be the same for every system.
|
||||
;; Still, we need to decide what system to build it
|
||||
;; for, so use the one that CI has most resources for.
|
||||
(define (source-tarball-for-system? system)
|
||||
(member system
|
||||
'("x86_64-linux")))
|
||||
|
||||
(define (iso-for-system? system)
|
||||
(member system
|
||||
'("x86_64-linux" "i686-linux" "aarch64-linux")))
|
||||
|
||||
(define (qcow2-for-system? system)
|
||||
(member system
|
||||
'("x86_64-linux" "aarch64-linux")))
|
||||
|
||||
(define* (qcow2-gpt-for-system? system)
|
||||
(string=? system "aarch64-linux"))
|
||||
|
||||
(define (copy-/etc/config.scm config)
|
||||
"Copy the configuration.scm of the operating system to /etc/config.scm, for
|
||||
user's convenience. The file has to be writable, not a link to the store, so
|
||||
etc-service-type can't be used here. CONFIG is a pair of strings, (FROM . TO).
|
||||
The config will be copied from FROM to TO."
|
||||
(match config
|
||||
((from . to)
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(when (not (file-exists? #$to))
|
||||
(copy-file #$from #$to)
|
||||
(make-file-writable #$to)))))
|
||||
(_ (raise
|
||||
(formatted-message-string
|
||||
(G_ "unexpected config parameter, should be pair of strings: ~a"
|
||||
config))))))
|
||||
|
||||
(define copy-/etc/config.scm-service-type
|
||||
(service-type (name 'copy-/etc/config.scm)
|
||||
(description
|
||||
"Copy the system configuration file to /etc/config.scm.")
|
||||
(extensions (list (service-extension activation-service-type
|
||||
copy-/etc/config.scm)))
|
||||
(default-value (cons "/run/current-system/configuration.scm"
|
||||
"/etc/config.scm"))))
|
||||
|
||||
(define (operating-system-with-/etc/config.scm os)
|
||||
"Copy the system configuration file to writable /etc/config.scm on first boot."
|
||||
(operating-system
|
||||
(inherit os)
|
||||
(services (cons (service copy-/etc/config.scm-service-type)
|
||||
(operating-system-user-services os)))))
|
||||
|
||||
(define (simple-provenance-entry config-file)
|
||||
"Return system entries describing the operating system config, provided
|
||||
through CONFIG-FILE."
|
||||
(mbegin %store-monad
|
||||
(return `(("configuration.scm"
|
||||
,(local-file (assume-valid-file-name config-file)
|
||||
"configuration.scm"))))))
|
||||
|
||||
;; This is mostly taken from provenance-service-type from (gnu services),
|
||||
;; but it provides only configuration.scm, not channels.scm. This is
|
||||
;; to get the same derivations for both Cuirass and local builds.
|
||||
;; In the future, provenance-service-type could be adapted to support
|
||||
;; this use case as well.
|
||||
(define simple-provenance-service-type
|
||||
(service-type (name 'provenance)
|
||||
(extensions
|
||||
(list (service-extension system-service-type
|
||||
simple-provenance-entry)))
|
||||
(default-value #f) ;the OS config file
|
||||
(description
|
||||
"Store configuration.scm of the system in the system
|
||||
itself.")))
|
||||
|
||||
(define* (operating-system-with-simple-provenance
|
||||
os
|
||||
#:optional
|
||||
(config-file
|
||||
(operating-system-configuration-file
|
||||
os)))
|
||||
"Return a variant of OS that stores its CONFIG-FILE. This is similar to
|
||||
`operating-system-with-provenance`, but it does copy only the
|
||||
configuration.scm."
|
||||
(operating-system
|
||||
(inherit os)
|
||||
(services (cons (service simple-provenance-service-type config-file)
|
||||
(operating-system-user-services os)))))
|
||||
|
||||
(define (guix-package-commit guix)
|
||||
;; Extract the commit of the GUIX package.
|
||||
(match (package-source guix)
|
||||
((? channel? source)
|
||||
(channel-commit source))
|
||||
(_
|
||||
(apply (lambda* (#:key commit #:allow-other-keys) commit)
|
||||
(package-arguments guix)))))
|
||||
|
||||
;; NOTE: Normally, we would use (current-guix), along with url
|
||||
;; overridden to the upstream repository to not leak our local checkout.
|
||||
;; But currently, the (current-guix) derivation has to be computed through
|
||||
;; QEMU for systems other than your host system. This takes a lot of time,
|
||||
;; it takes at least half an hour to get the derivations.
|
||||
(define (guix-package/with-commit guix commit)
|
||||
"Use the guix from (gnu packages package-management),
|
||||
but override its commit to the specified version. Make sure
|
||||
to also override the channel commit to have the correct
|
||||
provenance."
|
||||
(let ((scm-version (car (string-split (package-version guix) #\-))))
|
||||
(package
|
||||
(inherit guix)
|
||||
(version (string-append scm-version "." (string-take commit 7)))
|
||||
(source (git-checkout
|
||||
(url (channel-url %default-guix-channel))
|
||||
(commit commit)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments guix)
|
||||
((#:configure-flags flags '())
|
||||
#~(cons*
|
||||
(string-append "--with-channel-commit=" #$commit)
|
||||
(filter (lambda (flag)
|
||||
(not (string-prefix? "--with-channel-commit=" flag)))
|
||||
#$flags))))))))
|
||||
|
||||
(define guix-for-images
|
||||
(mlambda (system)
|
||||
(cond
|
||||
;; For testing purposes, use the guix package directly.
|
||||
(%use-snapshot-package? guix)
|
||||
;; Normally, update the guix package to current commit.
|
||||
(else
|
||||
(guix-package/with-commit guix (guix-package-commit (current-guix)))))))
|
||||
|
||||
(define %binary-tarball-compression "xz")
|
||||
|
||||
;; Like guix pack -C xz -s --localstatedir --profile-name=current-guix guix
|
||||
(define* (binary-tarball-for-system system #:key (extra-packages '()))
|
||||
(let* ((base-name (string-append "guix-binary-" (%guix-version) "." system))
|
||||
(manifest (packages->manifest (cons* guix extra-packages)))
|
||||
(profile (profile (content manifest)))
|
||||
(inputs `(("profile" ,profile)))
|
||||
(compression %binary-tarball-compression))
|
||||
(manifest-entry
|
||||
(name (string-append base-name ".tar." compression))
|
||||
(version (%guix-version))
|
||||
(item (monadic->declarative
|
||||
(self-contained-tarball
|
||||
base-name profile
|
||||
#:profile-name "current-guix"
|
||||
#:compressor (lookup-compressor compression)
|
||||
#:localstatedir? #t))))))
|
||||
|
||||
;; Like guix system image -t iso9660 \
|
||||
;; --label="GUIX_$${system}_$(VERSION)" gnu/system/install.scm
|
||||
(define* (iso-for-system system)
|
||||
(let* ((name (string-append
|
||||
"guix-system-install-" (%guix-version) "." system ".iso"))
|
||||
(base-os (make-installation-os
|
||||
#:grub-displayed-version (%guix-version)
|
||||
#:efi-only? (string=? system "aarch64-linux")))
|
||||
(base-image (os->image base-os #:type iso-image-type))
|
||||
(label (string-append "GUIX_" system "_"
|
||||
(if (> (string-length (%guix-version)) 7)
|
||||
(string-take (%guix-version) 7)
|
||||
(%guix-version)))))
|
||||
(manifest-entry
|
||||
(name name)
|
||||
(version (%guix-version))
|
||||
(item (system-image
|
||||
(image-with-label
|
||||
(image
|
||||
(inherit base-image)
|
||||
(name (string->symbol name)))
|
||||
label))))))
|
||||
|
||||
;; Like guix system image -t qcow2 gnu/system/examples/vm-image.tmpl
|
||||
(define* (qcow2-for-system system)
|
||||
(let* ((name (string-append
|
||||
"guix-system-vm-image-" (%guix-version) "." system ".qcow2"))
|
||||
(base-os-path
|
||||
(if (qcow2-gpt-for-system? system)
|
||||
(%vm-image-efi-path)
|
||||
(%vm-image-path)))
|
||||
(target-image-type
|
||||
(if (qcow2-gpt-for-system? system)
|
||||
qcow2-gpt-image-type
|
||||
qcow2-image-type))
|
||||
(base-os
|
||||
(operating-system-with-/etc/config.scm
|
||||
(operating-system-with-simple-provenance
|
||||
(load base-os-path) base-os-path)))
|
||||
(base-image (os->image base-os #:type target-image-type)))
|
||||
(manifest-entry
|
||||
(name name)
|
||||
(version (%guix-version))
|
||||
(item (system-image
|
||||
(image
|
||||
(inherit base-image)
|
||||
(volatile-root? #f)
|
||||
(size (* 20 (expt 1024 3))) ; 20 GiB to have spare space
|
||||
(name (string->symbol name))))))))
|
||||
|
||||
(define* (guix-source-tarball)
|
||||
(let ((guix (package
|
||||
(inherit guix)
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs guix)
|
||||
;; graphviz-minimal -> graphviz
|
||||
(replace "graphviz" graphviz)
|
||||
(append imagemagick)
|
||||
(append perl))))))
|
||||
(manifest-entry
|
||||
(name (string-append "guix-" (%guix-version) ".tar.gz"))
|
||||
(version (package-version guix))
|
||||
(item (dist-package
|
||||
guix
|
||||
;; Guix is built from git source, not from tarball.
|
||||
;; So it's fine to use its source directly.
|
||||
(package-source guix))))))
|
||||
|
||||
(define* (manifest-entry-with-parameters system entry
|
||||
#:key
|
||||
(guix-for-images-proc guix-for-images))
|
||||
(manifest-entry
|
||||
(inherit entry)
|
||||
(item
|
||||
(with-parameters
|
||||
((%current-system system)
|
||||
(%current-target-system #f)
|
||||
(current-guix-package (guix-for-images-proc system)))
|
||||
(manifest-entry-item entry)))))
|
||||
|
||||
(define* (manifest-with-parameters system manifest
|
||||
#:key
|
||||
(guix-for-images-proc guix-for-images))
|
||||
"Returns entries in the manifest accompanied with %current-system,
|
||||
%current-target-sytem and current-guix-package parameters."
|
||||
(make-manifest
|
||||
(map (cut manifest-entry-with-parameters system <>
|
||||
#:guix-for-images-proc guix-for-images-proc)
|
||||
(manifest-entries manifest))))
|
||||
|
||||
(define (artifacts-for-system/nonparameterized system)
|
||||
"Get all artifacts for given system. This will always include the
|
||||
guix-binary tarball and optionally iso and/or qcow2 images."
|
||||
(manifest
|
||||
(append
|
||||
(list
|
||||
(binary-tarball-for-system system))
|
||||
;; TODO: After source tarball generation is ready, uncomment.
|
||||
;; (if (source-tarball-for-system? system)
|
||||
;; (list (guix-source-tarball))
|
||||
;; '())
|
||||
(if (iso-for-system? system)
|
||||
(list (iso-for-system system))
|
||||
'())
|
||||
(if (qcow2-for-system? system)
|
||||
(list (qcow2-for-system system))
|
||||
'()))))
|
||||
|
||||
(define* (artifacts-for-system system
|
||||
#:key
|
||||
(guix-for-images-proc guix-for-images))
|
||||
"Collects all artifacts for a system. Gives them the proper %current-system
|
||||
and %current-target-system parameters, so the --system passed on CLI is
|
||||
irrelevant."
|
||||
;; NOTE: parameterizing current system, because the tarball seems to somehow
|
||||
;; depend on it early on. I haven't investigated it, but seems like a bug. Could
|
||||
;; it be the gexp->derivation + monadic->declarative, not passing down the
|
||||
;; system? Symptom: guix build --system=x86_64 -m artifacts-manifest.scm and
|
||||
;; guix build --system=i686-linux -m artifacts-manifest.scm gives out different
|
||||
;; results without the parameterization.
|
||||
(parameterize
|
||||
((%current-system system)
|
||||
(%current-target-system #f)
|
||||
(current-guix-package (guix-for-images-proc system)))
|
||||
(manifest-with-parameters
|
||||
system
|
||||
(artifacts-for-system/nonparameterized system)
|
||||
#:guix-for-images-proc guix-for-images-proc)))
|
||||
|
||||
(define (manifest->union manifest)
|
||||
"Makes a union that will be a folder with all the entries symlinked. This
|
||||
is different from a profile as it expects the entries are just simple files
|
||||
and symlinks them by their manifest-entry-name."
|
||||
(let ((entries (manifest-entries manifest)))
|
||||
(computed-file
|
||||
"artifacts-union"
|
||||
(with-imported-modules '((guix build union)
|
||||
(guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
|
||||
(mkdir-p #$output)
|
||||
|
||||
(for-each
|
||||
(lambda* (entry)
|
||||
(symlink (cdr entry)
|
||||
(string-append #$output "/" (car entry))))
|
||||
(list #$@(map (lambda (entry)
|
||||
#~(cons
|
||||
#$(manifest-entry-name entry)
|
||||
#$(manifest-entry-item entry)))
|
||||
entries))))))))
|
||||
|
||||
(define %supported-systems
|
||||
(or (and
|
||||
(getenv "SUPPORTED_SYSTEMS")
|
||||
(string-split (getenv "SUPPORTED_SYSTEMS") #\ ))
|
||||
'("x86_64-linux" "i686-linux"
|
||||
"armhf-linux" "aarch64-linux"
|
||||
"powerpc64le-linux" "riscv64-linux")))
|
||||
|
||||
(define supported-systems-union-manifest
|
||||
(concatenate-manifests
|
||||
(map artifacts-for-system
|
||||
%supported-systems)))
|
||||
|
||||
(when %use-snapshot-package?
|
||||
(warning (G_ "building images using the 'guix' package (snapshot)~%")))
|
||||
(info (G_ "producing artifacts for the following systems: ~a~%")
|
||||
%supported-systems)
|
||||
supported-systems-union-manifest
|
||||
@@ -1,26 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Produce a single directory with all the artifacts inside of it, with proper
|
||||
;;; names. They can then be easily copied to releasedir in Makefile. The files are
|
||||
;;; symlinked to save space, but they should be copied out of the store as regular
|
||||
;;; files.
|
||||
|
||||
(load "artifacts-manifest.scm")
|
||||
|
||||
(manifest->union
|
||||
supported-systems-union-manifest)
|
||||
@@ -1,94 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix gexp)
|
||||
(gnu services)
|
||||
(gnu tests install)
|
||||
(ice-9 match)
|
||||
(guix utils)
|
||||
(srfi srfi-26)
|
||||
(srfi srfi-1))
|
||||
|
||||
;; TODO find a better way to check for thunked fields
|
||||
(define* (thunked-field? field obj)
|
||||
(and
|
||||
(procedure? obj)
|
||||
(eq?
|
||||
(car (procedure-minimum-arity obj))
|
||||
1)
|
||||
; Uhhh
|
||||
(string-suffix? "(x)>"
|
||||
(format #f "~a" obj))))
|
||||
|
||||
;; Prints names of all packages, prepending the service they
|
||||
;; come from.
|
||||
(define* (print-all-packages obj #:optional (pred package?))
|
||||
(match obj
|
||||
((? pred)
|
||||
(format #t "\"~a\"~%" (package-name obj))
|
||||
(list obj))
|
||||
((? gexp?)
|
||||
(list))
|
||||
((a . b)
|
||||
(append (print-all-packages a pred)
|
||||
(print-all-packages b pred)))
|
||||
((_ ...)
|
||||
(apply append
|
||||
(map (cut print-all-packages <> pred)
|
||||
obj)))
|
||||
(#(_ ...)
|
||||
(print-all-packages (vector->list obj) proc))
|
||||
((or (? service-type?)
|
||||
(? origin?))
|
||||
(list))
|
||||
((? record?)
|
||||
(let* ((record-type (record-type-descriptor obj))
|
||||
(record-fields (record-type-fields record-type)))
|
||||
(when (service? obj)
|
||||
(format #t ";; ~a-service~%" (service-type-name (service-kind obj))))
|
||||
(apply append
|
||||
(map (lambda (field)
|
||||
(let* ((accessor (record-accessor record-type field))
|
||||
(field-obj (accessor obj)))
|
||||
(if (thunked-field? field field-obj)
|
||||
(print-all-packages (field-obj obj) pred)
|
||||
(print-all-packages field-obj pred))))
|
||||
record-fields))))
|
||||
((? parameter?)
|
||||
(list))
|
||||
(_
|
||||
(list))))
|
||||
|
||||
(define full-installer-os
|
||||
((@@ (gnu tests install) installation-target-desktop-os-for-gui-tests)))
|
||||
|
||||
(define minimal-installer-os
|
||||
((@@ (gnu tests install) installation-target-os-for-gui-tests)))
|
||||
|
||||
(display "Full os packages:")
|
||||
(print-all-packages full-installer-os)
|
||||
(display "Minimal os packages:")
|
||||
(print-all-packages minimal-installer-os)
|
||||
|
||||
;; Note that the printed packages will contain duplicates.
|
||||
;; I recommend to first put packages out of the profile service
|
||||
;; and out of packages field (they will be above service packages)
|
||||
;; at the bottom of the list and then filtering only unique lines, ie.
|
||||
;; with `awk '!a[$0]++'`. And lastly removing services that no longer
|
||||
;; have packages and also the packages that are already in minimal manifest
|
||||
;; (in case of desktop manifest)
|
||||
@@ -22,7 +22,7 @@
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cargo)
|
||||
#:use-module ((gnu packages rust-sources) #:prefix package:)
|
||||
#:use-module (gnu packages rust-sources)
|
||||
#:export (lookup-cargo-inputs))
|
||||
|
||||
;;;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2024, 2026 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,9 +27,8 @@
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (and (eq? (build-system-name (package-build-system package))
|
||||
(quote cargo))
|
||||
(supported-package? package))
|
||||
(cons package lst)
|
||||
lst))
|
||||
(if (eq? (build-system-name (package-build-system package))
|
||||
(quote cargo))
|
||||
(cons package lst)
|
||||
lst))
|
||||
(list))))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2024, 2026 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -17,9 +17,10 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the cargo-build-system
|
||||
;;; and the packages which use rust itself as an input. This is a short list of
|
||||
;;; packages which can be checked to see if a rust update has gone smoothly. It
|
||||
;;; is used to assist continuous integration of the rust-team branch.
|
||||
;;; which are NOT prefixed with 'rust-' and the packages which use rust itself
|
||||
;;; as an input. This is a short list of packages which can be checked to see
|
||||
;;; if a rust update has gone smoothly. It is used to assist continuous
|
||||
;;; integration of the rust-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
@@ -30,15 +31,15 @@
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (and (supported-package? package)
|
||||
(or (eq? (build-system-name (package-build-system package))
|
||||
(quote cargo))
|
||||
(any
|
||||
(lambda (pkg)
|
||||
(member (specification->package "rust") pkg))
|
||||
(append (package-native-inputs package)
|
||||
(package-propagated-inputs package)
|
||||
(package-inputs package)))))
|
||||
(cons package lst)
|
||||
lst))
|
||||
(if (or
|
||||
(eq? (build-system-name (package-build-system package))
|
||||
(quote cargo))
|
||||
(any
|
||||
(lambda (pkg)
|
||||
(member (specification->package "rust") pkg))
|
||||
(append (package-native-inputs package)
|
||||
(package-propagated-inputs package)
|
||||
(package-inputs package))))
|
||||
(cons package lst)
|
||||
lst))
|
||||
(list))))
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2026 jgart <jgart@dismail.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages built using the texlive-build-system.
|
||||
;;; It is used to assist continuous integration of the tex-team branch.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix build-system)
|
||||
(gnu packages tex))
|
||||
|
||||
(define %sundry-texlive-packages
|
||||
(list bibtool
|
||||
dvisvgm
|
||||
rubber
|
||||
texmaker
|
||||
texstudio
|
||||
lyx))
|
||||
|
||||
(packages->manifest
|
||||
(cons texlive-scheme-full
|
||||
%sundry-texlive-packages))
|
||||
+2
-2
@@ -29,7 +29,7 @@
|
||||
;;; Code:
|
||||
|
||||
(define %artwork-repository
|
||||
(let ((commit "08259679a0faef63e3ba169df5b937d836bd9262"))
|
||||
(let ((commit "4c7f2ce6428a63e202cd2a9474a06f68a946934d"))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -39,6 +39,6 @@
|
||||
"-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0anryix0y8w9brksiaz39r8c10vdd0fp4h96b9f3m4aw0xpv8xlf")))))
|
||||
"1rl569759q9wm1dxn7nkq3873d2k92giic7aa6jwzwr3n16prc7y")))))
|
||||
|
||||
;;; artwork.scm ends here
|
||||
|
||||
+6
-5
@@ -2,7 +2,7 @@
|
||||
;;; Copyright © 2017 David Craven <david@craven.ch>
|
||||
;;; Copyright © 2017, 2020, 2022 Mathieu Othacehe <othacehe@gnu.org>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2019, 2021, 2023, 2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
|
||||
;;; Copyright © 2022 Reza Alizadeh Majd <r.majd@pantherx.org>
|
||||
@@ -26,8 +26,7 @@
|
||||
(define-module (gnu bootloader)
|
||||
#:use-module (gnu system file-systems)
|
||||
#:use-module (gnu system uuid)
|
||||
#:autoload (guix discovery) (fold-module-public-variables)
|
||||
#:autoload (guix describe) (modules-from-current-profile)
|
||||
#:use-module (guix discovery)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix profiles)
|
||||
#:use-module (guix records)
|
||||
@@ -306,8 +305,10 @@ instead~%")))
|
||||
|
||||
(define (bootloader-modules)
|
||||
"Return the list of bootloader modules."
|
||||
(modules-from-current-profile "gnu/bootloader"
|
||||
#:warn warn-about-load-error))
|
||||
(all-modules (map (lambda (entry)
|
||||
`(,entry . "gnu/bootloader"))
|
||||
%load-path)
|
||||
#:warn warn-about-load-error))
|
||||
|
||||
(define %bootloaders
|
||||
;; The list of publically-known bootloaders.
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu bootloader depthcharge)
|
||||
#:use-module (gnu bootloader extlinux)
|
||||
#:use-module (gnu bootloader)
|
||||
#:use-module (gnu packages bootloaders)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (depthcharge-bootloader))
|
||||
|
||||
(define (signed-kernel kernel kernel-arguments initrd)
|
||||
(define builder
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils)
|
||||
(ice-9 binary-ports)
|
||||
(rnrs bytevectors))
|
||||
(set-path-environment-variable "PATH" '("bin") (list #$dtc))
|
||||
|
||||
;; TODO: These files have to be writable, so we copy them.
|
||||
;; This can probably be fixed by using a ".its" file, just
|
||||
;; be careful not to break initrd loading.
|
||||
(copy-file #$kernel "zImage")
|
||||
(chmod "zImage" #o755)
|
||||
(copy-file (string-append (dirname #$kernel) "/lib/dtbs/"
|
||||
"rk3288-veyron-speedy.dtb")
|
||||
"rk3288-veyron-speedy.dtb")
|
||||
(chmod "rk3288-veyron-speedy.dtb" #o644)
|
||||
(copy-file #$initrd "initrd")
|
||||
(chmod "initrd" #o644)
|
||||
|
||||
(invoke (string-append #$u-boot-tools "/bin/mkimage")
|
||||
"-D" "-I dts -O dtb -p 2048"
|
||||
"-f" "auto"
|
||||
"-A" "arm"
|
||||
"-O" "linux"
|
||||
"-T" "kernel"
|
||||
"-C" "None"
|
||||
"-d" "zImage"
|
||||
"-a" "0"
|
||||
"-b" "rk3288-veyron-speedy.dtb"
|
||||
"-i" "initrd"
|
||||
"image.itb")
|
||||
(call-with-output-file "bootloader.bin"
|
||||
(lambda (port)
|
||||
(put-bytevector port (make-bytevector 512 0))))
|
||||
(with-output-to-file "kernel-arguments"
|
||||
(lambda ()
|
||||
(display (string-join (list #$@kernel-arguments)))))
|
||||
(invoke (string-append #$vboot-utils "/bin/vbutil_kernel")
|
||||
"--pack" #$output
|
||||
"--version" "1"
|
||||
"--vmlinuz" "image.itb"
|
||||
"--arch" "arm"
|
||||
"--keyblock" (string-append #$vboot-utils
|
||||
"/share/vboot-utils/devkeys/"
|
||||
"kernel.keyblock")
|
||||
"--signprivate" (string-append #$vboot-utils
|
||||
"/share/vboot-utils/devkeys/"
|
||||
"kernel_data_key.vbprivk")
|
||||
"--config" "kernel-arguments"
|
||||
"--bootloader" "bootloader.bin"))))
|
||||
(computed-file "vmlinux.kpart" builder))
|
||||
|
||||
(define* (depthcharge-configuration-file config entries
|
||||
#:key
|
||||
(system (%current-system))
|
||||
(old-entries '())
|
||||
#:allow-other-keys)
|
||||
(match entries
|
||||
((entry)
|
||||
(let ((kernel (menu-entry-linux entry))
|
||||
(kernel-arguments (menu-entry-linux-arguments entry))
|
||||
(initrd (menu-entry-initrd entry)))
|
||||
;; XXX: Make this a symlink.
|
||||
(signed-kernel kernel kernel-arguments initrd)))
|
||||
(_ (error "Too many bootloader menu entries!"))))
|
||||
|
||||
(define install-depthcharge
|
||||
#~(lambda (bootloader device mount-point)
|
||||
(let ((kpart (string-append mount-point
|
||||
"/boot/depthcharge/vmlinux.kpart")))
|
||||
(write-file-on-device kpart (stat:size (stat kpart)) device 0))))
|
||||
|
||||
(define depthcharge-bootloader
|
||||
(bootloader
|
||||
(name 'depthcharge)
|
||||
(package #f)
|
||||
(installer install-depthcharge)
|
||||
(configuration-file "/boot/depthcharge/vmlinux.kpart")
|
||||
(configuration-file-generator depthcharge-configuration-file)))
|
||||
+3
-14
@@ -3,7 +3,7 @@
|
||||
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020, 2023, 2024, 2026 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2019, 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
|
||||
;;; Copyright © 2020 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de>
|
||||
@@ -65,7 +65,6 @@
|
||||
grub-efi-bootloader
|
||||
grub-efi-removable-bootloader
|
||||
grub-efi32-bootloader
|
||||
grub-efi32-removable-bootloader
|
||||
grub-efi-netboot-bootloader
|
||||
grub-efi-netboot-removable-bootloader
|
||||
grub-mkrescue-bootloader
|
||||
@@ -427,11 +426,8 @@ when booting a root file system on a Btrfs subvolume."
|
||||
(arguments (menu-entry-multiboot-arguments entry))
|
||||
;; Choose between device names as understood by Mach's built-in
|
||||
;; IDE driver ("hdX") and those understood by rumpdisk ("wdX"
|
||||
;; in the "noide" case). There are no IDE drivers in Mach for
|
||||
;; hurd64, so always use rumpdisk there.
|
||||
(rumpdisk? (or (target-hurd64?)
|
||||
(member "noide" arguments)))
|
||||
(disk (if rumpdisk? "w" "h"))
|
||||
;; in the "noide" case).
|
||||
(disk (if (member "noide" arguments) "w" "h"))
|
||||
(device-spec (and=> device file-system-device->string))
|
||||
(device-name (and=> device-spec device-spec->device-name))
|
||||
(modules (menu-entry-multiboot-modules entry)))
|
||||
@@ -848,13 +844,6 @@ symlink to the store is not needed in this case."
|
||||
(name 'grub-efi32)
|
||||
(package grub-efi32)))
|
||||
|
||||
(define grub-efi32-removable-bootloader
|
||||
(bootloader
|
||||
(inherit grub-efi32-bootloader)
|
||||
(name 'grub-efi32-removable-bootloader)
|
||||
(installer (make-grub-efi-installer #:removable? #t
|
||||
#:efi32? #t))))
|
||||
|
||||
(define (make-grub-efi-netboot-bootloader name subdir)
|
||||
(bootloader
|
||||
(name name)
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
;;; Copyright © 2023-2024 Herman Rimm <herman@rimm.ee>
|
||||
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
|
||||
;;; Copyright © 2025 dan <i@dan.games>
|
||||
;;; Copyright © 2026 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -36,11 +35,11 @@
|
||||
u-boot-a20-olinuxino-lime2-bootloader
|
||||
u-boot-a20-olinuxino-micro-bootloader
|
||||
u-boot-bananapi-m2-ultra-bootloader
|
||||
u-boot-am335x-evm-bootloader
|
||||
u-boot-beaglebone-black-bootloader
|
||||
u-boot-cubietruck-bootloader
|
||||
u-boot-firefly-rk3399-bootloader
|
||||
u-boot-mx6cuboxi-bootloader
|
||||
u-boot-nintendo-nes-classic-edition-bootloader
|
||||
u-boot-novena-bootloader
|
||||
u-boot-orangepi-r1-plus-lts-rk3328-bootloader
|
||||
u-boot-orangepi-zero2w-bootloader
|
||||
@@ -65,12 +64,7 @@
|
||||
((? string?)
|
||||
(list #~(install-file (string-append bootloader #$file)
|
||||
install-dir)))
|
||||
((? file-like?)
|
||||
(list #~(mkdir-p install-dir)
|
||||
#~(copy-file #$file
|
||||
(string-append install-dir
|
||||
"/"
|
||||
#$(plain-file-name file)))))
|
||||
((? file-like?) (list #~(install-file #$file install-dir)))
|
||||
(#f '()))))
|
||||
#~(lambda (bootloader device mount-point)
|
||||
(let ((install-dir (string-append mount-point "/boot")))
|
||||
@@ -97,48 +91,6 @@ is BLOCK-SIZE * COUNT, or FILE size if COUNT is not given."
|
||||
(if bootloader
|
||||
(error "Failed to install U-Boot"))))
|
||||
|
||||
(define install-am335x-evm-u-boot
|
||||
(write-u-boot-image
|
||||
;; According to the "26.1.8.5.5 MMC/SD Read Sector Procedure in Raw Mode"
|
||||
;; section in the "AM335x and AMIC110 Sitara™ Processors Technical
|
||||
;; Reference Manual", we have offset, the bootrom tries to load code at the
|
||||
;; offsets 0x0, 0x20000 (128KB), 0x40000 (256KB) and 0x60000 (384KB).
|
||||
;;
|
||||
;; The MBR is 512 Bytes
|
||||
;; (https://en.wikipedia.org/wiki/Master_boot_record#Sector_layout).
|
||||
;;
|
||||
;; At the time of writing, u-boot.img is 1.4 MiB, and it is at offset
|
||||
;; 0x60000 (384KB) as per CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR.
|
||||
;;
|
||||
;; We also need to align the first partition to make sure read/writes are
|
||||
;; properly aligned.
|
||||
;;
|
||||
;; Given these constraints, we chose the following partitioning:
|
||||
;;
|
||||
;; 0 512 Bytes 128 KiB
|
||||
;; | | (0x20000) 256 KiB
|
||||
;; | | / (0x40000) 384 KiB 4 MiB
|
||||
;; | | / | (0x60000) |
|
||||
;; | | / | | |
|
||||
;; v v / v v v
|
||||
;; +-------+ +--------------+---------------+----------------+
|
||||
;; | MBR | ... | First MLO | Second MLO | u-boot.img |
|
||||
;; +-------+ +--------------+---------------+----------------+
|
||||
;; <-512 B-> ... <-- 128 KiB --> <-- 128 KiB --> <-- 3712 KiB -->
|
||||
;;
|
||||
;; The rationale for that is as follows:
|
||||
;;
|
||||
;; - We add a second copy of the MLO at 256 KiB for improving reliability
|
||||
;; as the doc/board/ti/am335x_evm.rst documentation in u-boot advise us
|
||||
;; to do that, and also because the space there isn't used.
|
||||
;;
|
||||
;; - All can fit into 2MiB (u-boot.img can grow up to 1664 KiB), but we
|
||||
;; want a bit more space in case u-boot.img grows over time, so we allow
|
||||
;; u-boot to grow until the 4 MiB offset.
|
||||
'(("MLO" 256 256) ;; First MLO
|
||||
("MLO" 256 512) ;; Second MLO
|
||||
("u-boot.img" 7424 768)) 512))
|
||||
|
||||
(define install-beaglebone-black-u-boot
|
||||
;; http://wiki.beyondlogic.org/index.php?title=BeagleBoneBlack_Upgrading_uBoot
|
||||
;; This first stage bootloader called MLO (U-Boot SPL) is expected at
|
||||
@@ -180,12 +132,7 @@ is BLOCK-SIZE * COUNT, or FILE size if COUNT is not given."
|
||||
;; starfive_visionfive2.dtb. We cannot guarantee that users will
|
||||
;; update this U-Boot, so set the FDT explicitly.
|
||||
(plain-file "uEnv.txt"
|
||||
(string-join
|
||||
(list
|
||||
"boot_targets=mmc1 nvme0 mmc0 dhcp"
|
||||
"bootcmd_mmc1=bootflow scan"
|
||||
"fdtfile=starfive/jh7110-starfive-visionfive-2-v1.3b.dtb")
|
||||
"\n"))))
|
||||
"fdtfile=starfive/jh7110-starfive-visionfive-2-v1.3b.dtb~%")))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -200,33 +147,6 @@ is BLOCK-SIZE * COUNT, or FILE size if COUNT is not given."
|
||||
(installer #f)
|
||||
(disk-image-installer install-u-boot)))
|
||||
|
||||
(define u-boot-am335x-evm-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
;; This bootloader supports the following computers:
|
||||
;; - SanCloud BeagleBone Enhanced
|
||||
;; - SanCloud BeagleBone Enhanced Extended WiFi
|
||||
;; - SanCloud BeagleBone Enhanced Lite
|
||||
;; - Seeed Studio BeagleBone Green Eco
|
||||
;; - TI AM3359 ICE-V2
|
||||
;; - TI AM335x BeagleBone
|
||||
;; - TI AM335x BeagleBone Black
|
||||
;; - TI AM335x BeagleBone Green
|
||||
;; - TI AM335x EVM
|
||||
;; - TI AM335x EVM-SK
|
||||
;; - TI AM335x PocketBeagle
|
||||
;;
|
||||
;; This list was made by retrieving the list of Devicetrees used in
|
||||
;; configs/am335x_evm_defconfig in u-boot source code. Once we have that we
|
||||
;; can look at each Devicetree in arch/arm/boot/dts/ti/omap/ inside Linux,
|
||||
;; and in each file, look at the model property to find the name of the
|
||||
;; computers that this image supports.
|
||||
(package u-boot-am335x-evm)
|
||||
;; At the time of writing, our u-boot.img is 1.4 MiB. This is why we can't
|
||||
;; reuse install-beaglebone-black-u-boot. And having the same image being
|
||||
;; able to boot on multiple computers is useful.
|
||||
(disk-image-installer install-am335x-evm-u-boot)))
|
||||
|
||||
(define u-boot-beaglebone-black-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
@@ -254,6 +174,11 @@ is BLOCK-SIZE * COUNT, or FILE size if COUNT is not given."
|
||||
(inherit u-boot-bootloader)
|
||||
(disk-image-installer install-rockchip-u-boot)))
|
||||
|
||||
(define u-boot-nintendo-nes-classic-edition-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-allwinner-bootloader)
|
||||
(package u-boot-nintendo-nes-classic-edition)))
|
||||
|
||||
(define u-boot-a20-olinuxino-lime-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-allwinner-bootloader)
|
||||
|
||||
+9
-16
@@ -359,7 +359,7 @@ to it atomically and set the appropriate permissions."
|
||||
(left unused-subid-range-left ;previous unused subuid range or #f
|
||||
(default #f))
|
||||
(min unused-subid-range-min ;lower bound of this unused subuid range
|
||||
(default 0))
|
||||
(default %subordinate-id-min))
|
||||
(max unused-subid-range-max ;upper bound
|
||||
(default %subordinate-id-max))
|
||||
(right unused-subid-range-right ;next unused subuid range or #f
|
||||
@@ -555,10 +555,7 @@ will be marked as used in it."
|
||||
(define actual-range
|
||||
(subid-range
|
||||
(inherit range)
|
||||
;; New IDs are only allocated between %subordinate-id-min and
|
||||
;; %subordinate-id-max.
|
||||
(start
|
||||
(max allocation-start %subordinate-id-min))))
|
||||
(start allocation-start)))
|
||||
|
||||
(if (within-interval? allocation actual-range)
|
||||
(values
|
||||
@@ -606,6 +603,13 @@ is visited to find the best unused range that can hold RANGE."
|
||||
(define range-end
|
||||
(subid-range-end range))
|
||||
|
||||
(unless (and (subordinate-id? range-start)
|
||||
(subordinate-id? range-end))
|
||||
(raise
|
||||
(condition
|
||||
(&invalid-subid-range-error
|
||||
(range range)))))
|
||||
|
||||
(define less?
|
||||
(< range-end allocation-start))
|
||||
(define more?
|
||||
@@ -798,23 +802,12 @@ new UIDs."
|
||||
(define* (allocate-subids ranges #:optional (current-ranges '()))
|
||||
"Return a list of subids entries for RANGES, a list of <subid-range>. IDs
|
||||
found in CURRENT-RANGES, a list of subid entries, are reused."
|
||||
;; Ranges from disk must always have a start.
|
||||
(let ((generic (any (compose not subid-range-has-start?) current-ranges)))
|
||||
(when generic
|
||||
(raise
|
||||
(condition
|
||||
(&specific-subid-range-expected-error
|
||||
(range generic))))))
|
||||
(for-each
|
||||
(lambda (range)
|
||||
;; New ranges must always be included in the current supported set.
|
||||
(unless (or (not (subid-range-has-start? range))
|
||||
(and (subordinate-id? (subid-range-start range))
|
||||
(subordinate-id? (subid-range-end range))))
|
||||
(raise
|
||||
(condition (&invalid-subid-range-error (range range))))))
|
||||
ranges)
|
||||
|
||||
(define sorted-ranges
|
||||
(stable-sort ranges
|
||||
subid-range-less))
|
||||
|
||||
+24
-38
@@ -11,7 +11,6 @@
|
||||
;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
|
||||
;;; Copyright © 2024 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -141,13 +140,12 @@ and bits are set according to the default behaviour of 'mkdir'."
|
||||
#:key
|
||||
(directory %skeleton-directory)
|
||||
uid gid)
|
||||
"Copy the account skeletons from DIRECTORY to HOME and make them writable.
|
||||
When UID is an integer, make it the owner of all the files created except the
|
||||
home directory; likewise for GID."
|
||||
(define (set-permission file)
|
||||
"Copy the account skeletons from DIRECTORY to HOME. When UID is an integer,
|
||||
make it the owner of all the files created except the home directory; likewise
|
||||
for GID."
|
||||
(define (set-owner file)
|
||||
(when (or uid gid)
|
||||
(chown file (or uid -1) (or gid -1)))
|
||||
(make-file-writable file))
|
||||
(chown file (or uid -1) (or gid -1))))
|
||||
|
||||
(let ((files (scandir directory (negate dot-or-dot-dot?)
|
||||
string<?)))
|
||||
@@ -157,9 +155,10 @@ home directory; likewise for GID."
|
||||
(copy-recursively (string-append directory "/" file)
|
||||
target
|
||||
#:log (%make-void-port "w"))
|
||||
(for-each set-permission
|
||||
(for-each set-owner
|
||||
(find-files target (const #t)
|
||||
#:directories? #t))))
|
||||
#:directories? #t))
|
||||
(make-file-writable target)))
|
||||
files)))
|
||||
|
||||
(define* (make-skeletons-writable home
|
||||
@@ -279,17 +278,6 @@ they already exist."
|
||||
|
||||
(for-each ensure-user-home users))
|
||||
|
||||
(define* (canonicalize-path* file)
|
||||
"A safe version of `canonicalize-path' that warns rather than raises on errors.
|
||||
`canonicalize-path' uses `realpath(2)', which can return various errors like
|
||||
EINVAL, ELOOP, etc."
|
||||
(or (false-if-exception (canonicalize-path file))
|
||||
(begin
|
||||
(format (current-warning-port)
|
||||
"warning: could not canonicalize file `~a'; using as-is~%"
|
||||
file)
|
||||
file)))
|
||||
|
||||
(define (activate-etc etc)
|
||||
"Install ETC, a directory in the store, as the source of static files for
|
||||
/etc."
|
||||
@@ -312,28 +300,26 @@ EINVAL, ELOOP, etc."
|
||||
(rm-f "/etc/ssl")
|
||||
(symlink "/run/current-system/profile/etc/ssl" "/etc/ssl")
|
||||
|
||||
(rm-f "/etc/static")
|
||||
(symlink etc "/etc/static")
|
||||
(for-each (lambda (file)
|
||||
(let ((target (string-append "/etc/" file))
|
||||
;; Canonicalize the file names to resolve any symlinks, to
|
||||
;; ensure /etc/localtime points to a timezone data file in
|
||||
;; the store containing the timezone name. This is done
|
||||
;; for compatibility with software expecting this systemd
|
||||
;; convention to be followed.
|
||||
(source (canonicalize-path* (string-append etc "/" file))))
|
||||
(source (string-append "/etc/static/" file)))
|
||||
(rm-f target)
|
||||
(cond ((string=? (basename target) "sudoers")
|
||||
(begin
|
||||
;; /etc/sudoers must be a regular file.
|
||||
(copy-file source target)
|
||||
;; XXX: dirty hack to meet sudo's expectations
|
||||
(chmod target #o440)))
|
||||
((string=? (basename target) "hosts")
|
||||
;; /etc/hosts must be a regular file, as some software
|
||||
;; like vpn-slice expect to be able to write to it.
|
||||
(copy-file source target))
|
||||
(else ;usual case
|
||||
(symlink source target)))))
|
||||
|
||||
;; Things such as /etc/sudoers must be regular files, not
|
||||
;; symlinks; furthermore, they could be modified behind our
|
||||
;; back---e.g., with 'visudo'. Thus, make a copy instead of
|
||||
;; symlinking them.
|
||||
(if (file-is-directory? source)
|
||||
(symlink source target)
|
||||
(copy-file source target))
|
||||
|
||||
;; XXX: Dirty hack to meet sudo's expectations.
|
||||
(when (string=? (basename target) "sudoers")
|
||||
(chmod target #o440))))
|
||||
(scandir etc (negate dot-or-dot-dot?)
|
||||
|
||||
;; The default is 'string-locale<?', but we don't have
|
||||
;; it when run from the initrd's statically-linked
|
||||
;; Guile.
|
||||
|
||||
@@ -91,7 +91,7 @@ each retry."
|
||||
((sleep*) delay) ;else wait and retry
|
||||
(loop (+ 1 attempts)))
|
||||
(error "maximum number of retry attempts reached"
|
||||
(quote (begin body ...)) args))))))
|
||||
(quote body ...) args))))))
|
||||
|
||||
|
||||
;;;
|
||||
|
||||
+31
-60
@@ -37,7 +37,6 @@
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (ice-9 exceptions)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:use-module (ice-9 regex)
|
||||
@@ -46,8 +45,6 @@
|
||||
#:autoload (system repl repl) (start-repl)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:export (disk-partitions
|
||||
partition-label-predicate
|
||||
partition-uuid-predicate
|
||||
@@ -68,9 +65,6 @@
|
||||
|
||||
cleanly-unmounted-ext2?
|
||||
|
||||
partition-lookup-error?
|
||||
&partition-lookup-error
|
||||
|
||||
bind-mount
|
||||
|
||||
system*/tty
|
||||
@@ -1188,10 +1182,6 @@ were found."
|
||||
(define find-partition-by-luks-uuid
|
||||
(find-partition luks-partition-uuid-predicate))
|
||||
|
||||
(define-condition-type &partition-lookup-error &condition
|
||||
partition-lookup-error?
|
||||
(spec partition-lookup-error-spec))
|
||||
|
||||
|
||||
(define (canonicalize-device-spec spec)
|
||||
"Return the device name corresponding to SPEC, which can be a <uuid>, a
|
||||
@@ -1211,25 +1201,22 @@ file name or an nfs-root containing ':/')."
|
||||
;; Some devices take a bit of time to appear, most notably USB
|
||||
;; storage devices. Thus, wait for the device to appear.
|
||||
(if (> count max-trials)
|
||||
(raise (condition
|
||||
(&partition-lookup-error
|
||||
(spec (fmt spec)))))
|
||||
(error "failed to resolve partition" (fmt spec))
|
||||
(begin
|
||||
(format #t "waiting for partition '~a' to appear...~%"
|
||||
(fmt spec))
|
||||
(sleep 1)
|
||||
(loop (+ 1 count))))))))
|
||||
|
||||
(define (device-exists? device)
|
||||
(and (file-exists? device)
|
||||
device))
|
||||
|
||||
(match spec
|
||||
((? string?)
|
||||
(if (string-prefix? "/dev/" spec)
|
||||
(if (or (string-contains spec ":/") ;nfs
|
||||
(and (>= (string-length spec) 2)
|
||||
(equal? (string-take spec 2) "//")) ;cifs
|
||||
(string=? spec "none"))
|
||||
spec ; do not resolve NFS / CIFS / tmpfs devices
|
||||
;; Nothing to do, but wait until SPEC shows up.
|
||||
(resolve device-exists? spec identity)
|
||||
spec)) ; do not resolve NFS / CIFS / tmpfs devices
|
||||
(resolve identity spec identity)))
|
||||
((? file-system-label?)
|
||||
;; Resolve the label.
|
||||
(resolve find-partition-by-label
|
||||
@@ -1332,14 +1319,6 @@ corresponds to the symbols listed in FLAGS."
|
||||
(()
|
||||
0))))
|
||||
|
||||
(define kind-and-args-exception?
|
||||
(exception-predicate &exception-with-kind-and-args))
|
||||
|
||||
(define (system-error? exception)
|
||||
"Return true if EXCEPTION is a Guile 'system-error exception."
|
||||
(and (kind-and-args-exception? exception)
|
||||
(eq? 'system-error (exception-kind exception))))
|
||||
|
||||
(define* (mount-file-system fs #:key (root "/root")
|
||||
(check? (file-system-check? fs))
|
||||
(skip-check-if-clean?
|
||||
@@ -1360,8 +1339,8 @@ corresponds to the symbols listed in FLAGS."
|
||||
(host-part (string-take source idx))
|
||||
;; Strip [] from around host if present
|
||||
(host (match (string-split host-part (string->char-set "[]"))
|
||||
(("" h "") h)
|
||||
((h) h)))
|
||||
(("" h "") h)
|
||||
((h) h)))
|
||||
(inet-addr (host-to-ip host "nfs")))
|
||||
;; Mounting an NFS file system requires passing the address
|
||||
;; of the server in the addr= option
|
||||
@@ -1447,37 +1426,26 @@ corresponds to the symbols listed in FLAGS."
|
||||
"," 'prefix)
|
||||
"")))))
|
||||
|
||||
(guard (c ((partition-lookup-error? c)
|
||||
(format (current-error-port)
|
||||
"could not find the partition: ~a~%"
|
||||
(partition-lookup-error-spec c))
|
||||
(unless (file-system-mount-may-fail? fs)
|
||||
(raise c)))
|
||||
((system-error? c)
|
||||
(format (current-error-port)
|
||||
"could not mount partition ~a: ~a~%"
|
||||
(file-system-device fs)
|
||||
(exception-message c))
|
||||
(unless (file-system-mount-may-fail? fs)
|
||||
(raise c))))
|
||||
(let* ((type (file-system-type fs))
|
||||
(source (canonicalize-device-spec (file-system-device fs)))
|
||||
(target (string-append root "/"
|
||||
(file-system-mount-point fs)))
|
||||
(flags (logior (mount-flags->bit-mask (file-system-flags fs))
|
||||
(let* ((type (file-system-type fs))
|
||||
(source (canonicalize-device-spec (file-system-device fs)))
|
||||
(target (string-append root "/"
|
||||
(file-system-mount-point fs)))
|
||||
(flags (logior (mount-flags->bit-mask (file-system-flags fs))
|
||||
|
||||
;; For bind mounts, preserve the original flags such
|
||||
;; as MS_NOSUID, etc. Failing to do that, the
|
||||
;; MS_REMOUNT call below fails with EPERM.
|
||||
;; See <https://bugs.gnu.org/46292>
|
||||
(if (memq 'bind-mount (file-system-flags fs))
|
||||
(statfs-flags->mount-flags
|
||||
(file-system-mount-flags (statfs source)))
|
||||
0)))
|
||||
(options (file-system-options fs)))
|
||||
(when check?
|
||||
(check-file-system source type (not skip-check-if-clean?) repair))
|
||||
;; For bind mounts, preserve the original flags such
|
||||
;; as MS_NOSUID, etc. Failing to do that, the
|
||||
;; MS_REMOUNT call below fails with EPERM.
|
||||
;; See <https://bugs.gnu.org/46292>
|
||||
(if (memq 'bind-mount (file-system-flags fs))
|
||||
(statfs-flags->mount-flags
|
||||
(file-system-mount-flags (statfs source)))
|
||||
0)))
|
||||
(options (file-system-options fs)))
|
||||
(when check?
|
||||
(check-file-system source type (not skip-check-if-clean?) repair))
|
||||
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
;; Create the mount point. Most of the time this is a directory, but
|
||||
;; in the case of a bind mount, a regular file or socket may be
|
||||
;; needed.
|
||||
@@ -1506,7 +1474,10 @@ corresponds to the symbols listed in FLAGS."
|
||||
(when (and (= MS_BIND (logand flags MS_BIND))
|
||||
(= MS_RDONLY (logand flags MS_RDONLY)))
|
||||
(let ((flags (logior MS_REMOUNT flags)))
|
||||
(mount source target type flags options))))))
|
||||
(mount source target type flags options))))
|
||||
(lambda args
|
||||
(or (file-system-mount-may-fail? fs)
|
||||
(apply throw args))))))
|
||||
|
||||
(define %device-name-regexp "/dev/[hsvw]d([abcd])([0-9]*)")
|
||||
(define %hurd-device-name-regexp "part:([0-9]*):device:[hw]d([0-9]*)")
|
||||
|
||||
+8
-72
@@ -1,12 +1,12 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013-2020, 2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
|
||||
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
|
||||
;;; Copyright © 2022, 2025 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
||||
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -66,14 +66,12 @@
|
||||
(number->string
|
||||
(inexact->exact (ceiling (/ size 1024)))))
|
||||
|
||||
(define* (estimate-partition-size root #:optional (margin .25))
|
||||
(define (estimate-partition-size root)
|
||||
"Given the ROOT directory, evaluate and return its size. As this doesn't
|
||||
take the partition metadata size into account, take a MARGIN. As this in
|
||||
take the partition metadata size into account, take a 25% margin. As this in
|
||||
turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(max (ash 1 20)
|
||||
;; without inexact->exact, 'guess can result in an error like that:
|
||||
;; "Wrong type (expecting exact integer): 7179941140.0".
|
||||
(inexact->exact (round (* (+ 1. margin) (file-size root))))))
|
||||
(* 1.25 (file-size root))))
|
||||
|
||||
(define* (make-btrfs-image partition target root)
|
||||
"Handle the creation of BTRFS partition images. See
|
||||
@@ -83,8 +81,7 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(label (partition-label partition))
|
||||
(uuid (partition-uuid partition)))
|
||||
(apply invoke
|
||||
`("unshare" "--map-root-user" "mkfs.btrfs"
|
||||
"-r" ,root
|
||||
`("fakeroot" "mkfs.btrfs" "-r" ,root
|
||||
"-L" ,label
|
||||
,@(if uuid
|
||||
`("-U" ,(uuid->string uuid))
|
||||
@@ -119,43 +116,7 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(size-in-kib
|
||||
(if (eq? size 'guess)
|
||||
(estimate-partition-size root)
|
||||
size)))))
|
||||
|
||||
;; 'mke2fs' does not create directory indexes by default, meaning that
|
||||
;; directories have a limit of 65,000 sub-directories, which can be
|
||||
;; problematic for the store. To avoid that, run 'e2fsck -D' to create
|
||||
;; those directory indexes. See
|
||||
;; <https://github.com/tytso/e2fsprogs/issues/257>.
|
||||
(invoke "e2fsck" "-fDy" target)))
|
||||
|
||||
(define* (make-f2fs-image partition target root
|
||||
#:key
|
||||
(owner-uid 0)
|
||||
(owner-gid 0))
|
||||
"Handle the creation of F2FS partition images. See 'make-partition-image'."
|
||||
(let ((size (partition-size partition))
|
||||
(label (partition-label partition))
|
||||
(uuid (partition-uuid partition))
|
||||
(fs-options (partition-file-system-options partition)))
|
||||
;; The mkfs.f2fs utility can't create files, so we need to create one
|
||||
;; before running it.
|
||||
(call-with-output-file target (const #t))
|
||||
(truncate-file
|
||||
target
|
||||
(if (eq? size 'guess)
|
||||
;; The F2FS filesystem has more overhead than other filesystems like
|
||||
;; BTRFS and ext4.
|
||||
(estimate-partition-size root .50)
|
||||
size))
|
||||
(apply invoke "fakeroot" "mkfs.f2fs"
|
||||
"-l" label
|
||||
"-R" (format #f "~a:~a" owner-uid owner-gid)
|
||||
`(,@(if uuid
|
||||
`("-U" ,(uuid->string uuid))
|
||||
'())
|
||||
,@fs-options
|
||||
,target))
|
||||
(invoke "fakeroot" "sload.f2fs" "-P" "-f" root target)))
|
||||
size)))))))
|
||||
|
||||
(define* (make-vfat-image partition target root fs-bits)
|
||||
"Handle the creation of VFAT partition images. See 'make-partition-image'."
|
||||
@@ -183,23 +144,6 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(string-append "::" file))))
|
||||
(scandir root))))
|
||||
|
||||
(define* (make-swap-image partition target)
|
||||
"Make a swap partition of a certain size."
|
||||
(let ((size (partition-size partition))
|
||||
(label (partition-label partition))
|
||||
(uuid (partition-uuid partition))
|
||||
(fs-options (partition-file-system-options partition)))
|
||||
(apply invoke "fakeroot" "mkswap"
|
||||
"--pagesize" "4096"
|
||||
"--endianness" "little"
|
||||
"-L" label
|
||||
"--file" target
|
||||
"--size" (number->string size)
|
||||
`(,@(if uuid
|
||||
`("-U" ,(uuid->string uuid))
|
||||
'())
|
||||
,@fs-options))))
|
||||
|
||||
(define* (make-unformatted-image partition target)
|
||||
"Make an unformatted partition of a certain size."
|
||||
(let ((size (partition-size partition)))
|
||||
@@ -218,14 +162,10 @@ ROOT directory to populate the image."
|
||||
(make-btrfs-image partition target root))
|
||||
((string-prefix? "ext" type)
|
||||
(make-ext-image partition target root))
|
||||
((string=? "f2fs" type)
|
||||
(make-f2fs-image partition target root))
|
||||
((or (string=? type "vfat") (string=? type "fat16"))
|
||||
(make-vfat-image partition target root 16))
|
||||
((string=? type "fat32")
|
||||
(make-vfat-image partition target root 32))
|
||||
((string=? "swap" type)
|
||||
(make-swap-image partition target))
|
||||
((string=? type "unformatted")
|
||||
(make-unformatted-image partition target))
|
||||
(else
|
||||
@@ -429,11 +369,7 @@ GRUB configuration and OS-DRV as the stuff in it."
|
||||
"-not" "-wholename" "/System/*"
|
||||
"-not" "-name" "unicode.pf2"
|
||||
"-not" "-name" "bzImage"
|
||||
"-not" "-name" "zImage"
|
||||
"-not" "-name" "Image"
|
||||
"-not" "-name" "vmlinuz"
|
||||
"-not" "-name" "*.gz" ; initrd
|
||||
"-not" "-name" "*.zst" ; all man pages
|
||||
"-not" "-name" "*.gz" ; initrd & all man pages
|
||||
"-not" "-name" "*.png" ; includes grub-image.png
|
||||
"-exec" "set_filter" "--zisofs"
|
||||
"--")
|
||||
|
||||
@@ -46,26 +46,7 @@
|
||||
make-static-device-nodes
|
||||
configure-qemu-networking
|
||||
|
||||
boot-system
|
||||
|
||||
linux-console
|
||||
|
||||
linux-console?
|
||||
linux-console-device
|
||||
linux-console-can-read?
|
||||
linux-console-can-write?
|
||||
linux-console-can-unblank?
|
||||
linux-console-enabled?
|
||||
linux-console-preferred?
|
||||
linux-console-primary?
|
||||
linux-console-printk?
|
||||
linux-console-braille?
|
||||
linux-console-safe-when-cpu-offline?
|
||||
linux-console-major
|
||||
linux-console-minor
|
||||
linux-console-virtual?
|
||||
|
||||
read-linux-consoles))
|
||||
boot-system))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
@@ -694,56 +675,4 @@ the root file system...\n" root-delay)
|
||||
(start-repl)))))
|
||||
#:on-error on-error))
|
||||
|
||||
(define-record-type <linux-console>
|
||||
(make-linux-console device can-read? can-write? can-unblank?
|
||||
enabled? preferred? primary? printk? braille?
|
||||
safe-when-cpu-offline? major minor virtual?)
|
||||
linux-console?
|
||||
(device linux-console-device)
|
||||
(can-read? linux-console-can-read?)
|
||||
(can-write? linux-console-can-write?)
|
||||
(can-unblank? linux-console-can-unblank?)
|
||||
(enabled? linux-console-enabled?)
|
||||
(preferred? linux-console-preferred?)
|
||||
(primary? linux-console-primary?)
|
||||
(printk? linux-console-printk?)
|
||||
(braille? linux-console-braille?)
|
||||
(safe-when-cpu-offline? linux-console-safe-when-cpu-offline?)
|
||||
(major linux-console-major)
|
||||
(minor linux-console-minor)
|
||||
(virtual? linux-console-virtual?))
|
||||
|
||||
(define* (read-linux-consoles #:optional (consoles-file "/proc/consoles"))
|
||||
"Parses CONSOLES-FILE and returns a list of <linux-console> records."
|
||||
(if (not (file-exists? consoles-file))
|
||||
'()
|
||||
(with-input-from-file consoles-file
|
||||
(lambda ()
|
||||
(let ((line-regex (make-regexp
|
||||
"^([^ ]+)[ ]+(.+)[ ]+([0-9]+):([0-9]+)$"))
|
||||
(virt-regex (make-regexp "^tty[0-9]+$")))
|
||||
(let loop ((line (read-line))
|
||||
(results '()))
|
||||
(cond
|
||||
((eof-object? line)
|
||||
(reverse results))
|
||||
((regexp-exec line-regex line)
|
||||
=> (lambda (m)
|
||||
(let* ((dev (match:substring m 1))
|
||||
(flags (match:substring m 2))
|
||||
(major (string->number (match:substring m 3)))
|
||||
(minor (string->number (match:substring m 4)))
|
||||
(virtual? (regexp-exec virt-regex dev))
|
||||
(has? (lambda (c)
|
||||
(string-any (lambda (f) (char=? f c)) flags))))
|
||||
(loop (read-line)
|
||||
(cons (make-linux-console
|
||||
dev
|
||||
(has? #\R) (has? #\W) (has? #\U) (has? #\E)
|
||||
(has? #\C) (has? #\B) (has? #\p) (has? #\b)
|
||||
(has? #\a)
|
||||
major minor virtual?)
|
||||
results)))))
|
||||
(else (loop (read-line) results)))))))))
|
||||
|
||||
;;; linux-boot.scm ends here
|
||||
|
||||
@@ -107,8 +107,8 @@ QEMU monitor and to the guest's backdoor REPL."
|
||||
(define extra-options
|
||||
(list "-nographic"
|
||||
"-monitor" (string-append "unix:" socket-directory "/monitor")
|
||||
"-chardev" (string-append "socket,id=repl,path="
|
||||
socket-directory "/repl")
|
||||
"-chardev" (string-append "socket,id=repl,path=" socket-directory
|
||||
"/repl,reconnect=1")
|
||||
"-chardev" (string-append "socket,id=qga,server=on,wait=off,path="
|
||||
socket-directory "/qemu-ga")
|
||||
|
||||
|
||||
+7
-9
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012-2024, 2026 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017, 2020, 2026 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2020, 2021 Mathieu Othacehe <othacehe@gnu.org>
|
||||
@@ -232,18 +232,17 @@ SYSTEM."
|
||||
|
||||
(define* (guix-jobs store systems #:key source commit)
|
||||
"Return a list of jobs for Guix itself."
|
||||
(define instance
|
||||
(checkout->channel-instance source
|
||||
#:url (channel-url %default-guix-channel)
|
||||
#:commit commit))
|
||||
(define build
|
||||
(primitive-load (string-append source "/build-aux/build-self.scm")))
|
||||
|
||||
(map
|
||||
(lambda (system)
|
||||
(let ((name (string->symbol
|
||||
(string-append "guix." system)))
|
||||
(drv (run-with-store store
|
||||
(channel-instances->derivation (list instance)
|
||||
#:system system))))
|
||||
(build source #:version commit #:system system
|
||||
#:pull-version 1
|
||||
#:guile-version "2.2"))))
|
||||
(derivation->job name drv)))
|
||||
systems))
|
||||
|
||||
@@ -255,7 +254,6 @@ SYSTEM."
|
||||
|
||||
(define %guix-system-images
|
||||
(list hurd-barebones-qcow2-image
|
||||
hurd64-barebones-qcow2-image
|
||||
pine64-barebones-raw-image
|
||||
pinebook-pro-barebones-raw-image
|
||||
novena-barebones-raw-image
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2022-2023, 2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2023 Carlo Zancanaro <carlo@zancanaro.id.au>
|
||||
;;; Copyright © 2025 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -52,7 +51,6 @@
|
||||
home-activation-service-type
|
||||
home-run-on-change-service-type
|
||||
home-provenance-service-type
|
||||
home-gc-root-service-type
|
||||
|
||||
literal-string
|
||||
literal-string?
|
||||
@@ -759,16 +757,6 @@ environment, and its configuration file, when available.")))
|
||||
(define sexp->home-provenance sexp->system-provenance)
|
||||
(define home-provenance system-provenance)
|
||||
|
||||
|
||||
;;;
|
||||
;;; Garbage collector roots.
|
||||
;;;
|
||||
|
||||
(define home-gc-root-service-type
|
||||
(service-type
|
||||
(inherit (system->home-service-type gc-root-service-type))
|
||||
(default-value '())))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Searching
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2022 ( <paren@disroot.org>
|
||||
;;; Copyright © 2023 conses <contact@conses.eu>
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2025 dan <i@dan.games>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -26,7 +25,7 @@
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services xorg)
|
||||
#:autoload (gnu packages glib) (dbus)
|
||||
#:autoload (gnu packages xdisorg) (darkman redshift unclutter)
|
||||
#:autoload (gnu packages xdisorg) (redshift unclutter)
|
||||
#:autoload (gnu packages xorg) (setxkbmap xmodmap)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
@@ -47,11 +46,7 @@
|
||||
home-xmodmap-configuration
|
||||
home-xmodmap-service-type
|
||||
|
||||
home-startx-command-service-type
|
||||
|
||||
home-darkman-configuration
|
||||
home-darkman-configuration?
|
||||
home-darkman-service-type))
|
||||
home-startx-command-service-type))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -452,93 +447,3 @@ buttons under the Xorg display server via user-defined expressions.")))
|
||||
|
||||
(define-service-type-mapping
|
||||
startx-command-service-type => home-startx-command-service-type)
|
||||
|
||||
|
||||
;;;
|
||||
;;; Darkman.
|
||||
;;;
|
||||
|
||||
(define-maybe number)
|
||||
|
||||
(define (serialize-number field value)
|
||||
(string-append (match field
|
||||
('latitude "lat")
|
||||
('longitude "lng")
|
||||
(_ (symbol->string field)))
|
||||
": " (number->string value) "\n"))
|
||||
|
||||
(define (serialize-boolean field value)
|
||||
(string-append (match field
|
||||
('use-geoclue "usegeoclue")
|
||||
('dbus-server "dbusserver")
|
||||
(_ "portal"))
|
||||
": " (if value "true" "false") "\n"))
|
||||
|
||||
(define-configuration home-darkman-configuration
|
||||
(darkman
|
||||
(file-like darkman)
|
||||
"The @code{darkman} package to use.")
|
||||
|
||||
(latitude
|
||||
maybe-number
|
||||
"Latitude, used at startup or when @code{use-geoclue} is @code{#f}. More than
|
||||
one decimal point is generally not needed.")
|
||||
|
||||
(longitude
|
||||
maybe-number
|
||||
"Longitude, used at startup or when @code{use-geoclue} is @code{#f}. More than
|
||||
one decimal point is generally not needed.")
|
||||
|
||||
(use-geoclue
|
||||
(boolean #f)
|
||||
"Whether to use a local geoclue instance to determine the current location.
|
||||
Setting this to false without explicitly setting latitude and longtitude
|
||||
disables automatic transitions entirely.")
|
||||
|
||||
(dbus-server
|
||||
(boolean #t)
|
||||
"Whether to expose the current mode via darkman's own D-Bus API.")
|
||||
|
||||
(portal
|
||||
(boolean #t)
|
||||
"Whether to expose the current mode via the XDG settings portal D-Bus API."))
|
||||
|
||||
(define (serialize-home-darkman-configuration config)
|
||||
(mixed-text-file
|
||||
"config.yaml"
|
||||
(serialize-configuration config home-darkman-configuration-fields)))
|
||||
|
||||
(define (home-darkman-configuration-files config)
|
||||
`(("darkman/config.yaml" ,(serialize-home-darkman-configuration config))))
|
||||
|
||||
(define (home-darkman-profile-service config)
|
||||
(list (home-darkman-configuration-darkman config)))
|
||||
|
||||
(define (home-darkman-shepherd-service config)
|
||||
(list
|
||||
(shepherd-service
|
||||
(provision '(darkman))
|
||||
(requirement '(dbus))
|
||||
(modules '((shepherd support))) ;for '%user-log-dir'
|
||||
(start #~(make-forkexec-constructor
|
||||
(list #$(file-append (home-darkman-configuration-darkman config)
|
||||
"/bin/darkman")
|
||||
"run")
|
||||
#:log-file
|
||||
(string-append %user-log-dir "/darkman.log")))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
(define home-darkman-service-type
|
||||
(service-type
|
||||
(name 'home-darkman)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-darkman-shepherd-service)
|
||||
(service-extension home-xdg-configuration-files-service-type
|
||||
home-darkman-configuration-files)
|
||||
(service-extension home-profile-service-type
|
||||
home-darkman-profile-service)))
|
||||
(default-value (home-darkman-configuration))
|
||||
(description "Run the @code{darkman} daemon, which will invoke scripts in
|
||||
$XDG_DATA_DIRS/dark-mode.d/ when sundown, and invoke scripts in
|
||||
$XDG_DATA_DIRS/light-mode.d/ when sunrise.")))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2024 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2024, 2026 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;; Copyright © 2024 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -45,9 +45,7 @@
|
||||
(define %home-dotfiles-excluded
|
||||
'(".*~"
|
||||
".*\\.swp"
|
||||
;; This first / is safe until regexp-exec in directory-contents
|
||||
;; is passed an absolute file name.
|
||||
"/\\.git/.*"
|
||||
"\\.git"
|
||||
"\\.gitignore"))
|
||||
|
||||
(define %home-dotfiles-layouts
|
||||
@@ -62,7 +60,10 @@
|
||||
or 'stow, but ~a was found.")
|
||||
value))))
|
||||
|
||||
(define-maybe/no-serialization list-of-strings)
|
||||
(define list-of-strings?
|
||||
(list-of string?))
|
||||
|
||||
(define-maybe list-of-strings)
|
||||
|
||||
(define-configuration/no-serialization home-dotfiles-configuration
|
||||
(source-directory
|
||||
@@ -137,7 +138,8 @@ value, excluding files that match any of the patterns configured."
|
||||
(define (filter-files directory)
|
||||
(find-files directory
|
||||
(lambda (file stat)
|
||||
(not (regexp-exec exclusion-rx file)))))
|
||||
(not (regexp-exec exclusion-rx
|
||||
(basename file))))))
|
||||
(if (and stow? packages (maybe-value-set? packages))
|
||||
(append-map filter-files
|
||||
(map (lambda (pkg)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2023 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;; Copyright © 2023 Andrew Patterson <andrewpatt7@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Giacomo Leidi <therewasa@fishinthecalculator.me>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation, either version 3 of the License, or
|
||||
;;; (at your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful,
|
||||
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
(define-module (gnu home services gnome)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu system accounts)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:export (gcr-ssh-agent-configuration
|
||||
gcr-ssh-agent-configuration?
|
||||
gcr-ssh-agent-configuration-fields
|
||||
gcr-ssh-agent-configuration-package
|
||||
gcr-ssh-agent-configuration-log-file
|
||||
|
||||
home-gcr-ssh-agent-log-file
|
||||
home-gcr-ssh-agent-shepherd-service
|
||||
|
||||
home-gcr-ssh-agent-service-type))
|
||||
|
||||
(define-maybe/no-serialization string)
|
||||
|
||||
(define-configuration/no-serialization gcr-ssh-agent-configuration
|
||||
(package
|
||||
(package gcr)
|
||||
"The @code{gcr} package to use.")
|
||||
(log-file
|
||||
(maybe-string)
|
||||
"Where the service will write its logs. If unset, it defaults to
|
||||
@file{$HOME/.local/state/shepherd/gcr-ssh-agent.log}."))
|
||||
|
||||
(define (home-gcr-ssh-agent-log-file config)
|
||||
(define maybe-log-file (gcr-ssh-agent-configuration-log-file config))
|
||||
(if (maybe-value-set? maybe-log-file)
|
||||
maybe-log-file
|
||||
#~(string-append %user-log-dir "/gcr-ssh-agent.log")))
|
||||
|
||||
(define (home-gcr-ssh-agent-shepherd-service config)
|
||||
(let ((package
|
||||
(gcr-ssh-agent-configuration-package config))
|
||||
(log-file (home-gcr-ssh-agent-log-file config)))
|
||||
(list
|
||||
(shepherd-service
|
||||
(provision '(gcr-ssh-agent ssh-agent))
|
||||
(modules
|
||||
;;for '%user-log-dir' and '%user-runtime-dir'
|
||||
'((shepherd support)))
|
||||
(start
|
||||
#~(let* ((socket-directory
|
||||
(string-append %user-runtime-dir
|
||||
"/gcr"))
|
||||
(socket-endpoint
|
||||
(endpoint
|
||||
(make-socket-address
|
||||
AF_UNIX
|
||||
(string-append socket-directory "/ssh"))
|
||||
#:name "ssh"
|
||||
#:socket-directory-permissions #o700)))
|
||||
(make-systemd-constructor
|
||||
(list #$(file-append package
|
||||
"/libexec/gcr-ssh-agent")
|
||||
"-d" socket-directory)
|
||||
(list socket-endpoint)
|
||||
;; With #:lazy-start #t the first ssh connection
|
||||
;; hangs indefinitely.
|
||||
#:lazy-start? #f
|
||||
#:log-file #$log-file)))
|
||||
(stop #~(make-systemd-destructor))))))
|
||||
|
||||
(define (home-gcr-ssh-agent-environment-variables config)
|
||||
`(("SSH_AUTH_SOCK" . "${XDG_RUNTIME_DIR}/gcr/ssh")))
|
||||
|
||||
(define home-gcr-ssh-agent-service-type
|
||||
(service-type
|
||||
(name 'home-gcr-ssh-agent)
|
||||
(extensions
|
||||
(list (service-extension
|
||||
home-shepherd-service-type
|
||||
home-gcr-ssh-agent-shepherd-service)
|
||||
(service-extension home-environment-variables-service-type
|
||||
home-gcr-ssh-agent-environment-variables)))
|
||||
(default-value (gcr-ssh-agent-configuration))
|
||||
(description
|
||||
"Provides @code{gcr-ssh-agent} Shepherd service and installs
|
||||
@code{gcr} in the system profile.")))
|
||||
@@ -23,7 +23,6 @@
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages wm)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services shepherd)
|
||||
@@ -72,8 +71,7 @@ environment variables set for a Wayland desktop session."
|
||||
niri
|
||||
xdg-desktop-portal
|
||||
xdg-desktop-portal-gnome
|
||||
xdg-desktop-portal-gtk
|
||||
xwayland-satellite)))))
|
||||
xdg-desktop-portal-gtk)))))
|
||||
(description "Install and configure Niri, a scrollable tiling Wayland
|
||||
compositor. This service starts Niri as a user-level desktop session with
|
||||
proper environment variables set for Wayland compatibility. It ensures Niri
|
||||
|
||||
@@ -1,221 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2025 Lilah Tascheter <lilah@lunabee.space>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services secrets)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu packages password-utils)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (wrap-himitsu-prompter
|
||||
home-himitsu-configuration
|
||||
home-himitsu-service-type
|
||||
|
||||
home-himitsu-ssh-configuration
|
||||
home-himitsu-ssh-service-type
|
||||
|
||||
home-himitsu-secret-service-configuration
|
||||
home-himitsu-secret-service-type))
|
||||
|
||||
;;
|
||||
;; himitsu
|
||||
;;
|
||||
|
||||
(define (wrap-himitsu-prompter prompter)
|
||||
"Wraps a prompter to autodetect DISPLAY and WAYLAND_DISPLAY, necessary since
|
||||
shepherd typically starts before a graphical session."
|
||||
(program-file "himitsu-wrapped-prompter"
|
||||
#~(begin (use-modules (ice-9 ftw) (ice-9 match) (srfi srfi-26))
|
||||
(unless (or (getenv "DISPLAY") (getenv "WAYLAND_DISPLAY"))
|
||||
(for-each (lambda (dir pat cont)
|
||||
(match (scandir dir (cut regexp-exec pat <>) string<?)
|
||||
((file . _) (cont file)) (_ #f)))
|
||||
(list "/tmp/.X11-unix" (or (getenv "XDG_RUNTIME_DIR")
|
||||
(string-append "/run/user/" (getuid))))
|
||||
(map make-regexp '("^X[0-9]+$" "^wayland-[0-9]+$"))
|
||||
(list (lambda (f)
|
||||
(setenv "DISPLAY" (string-append ":" (string-drop f 1))))
|
||||
(cut setenv "WAYLAND_DISPLAY" <>))))
|
||||
(apply execl #$prompter #$prompter (cdr (command-line))))))
|
||||
|
||||
(define-maybe string (prefix himitsu-))
|
||||
|
||||
(define (string-or-gexp? s)
|
||||
(or (string? s) (gexp? s)))
|
||||
|
||||
(define list-of-strings-or-gexps? (list-of string-or-gexp?))
|
||||
|
||||
(define (himitsu-serialize-string label val)
|
||||
#~(format #f "~a=~a~%" '#$label #$val))
|
||||
|
||||
(define himitsu-serialize-file-like himitsu-serialize-string)
|
||||
|
||||
(define (himitsu-serialize-list-of-strings-or-gexps label vals)
|
||||
#~(string-join (list #$@vals) "\n" 'suffix))
|
||||
|
||||
(define-configuration home-himitsu-configuration
|
||||
(package (file-like himitsu) "himitsu package to use." empty-serializer)
|
||||
(notify-reuse maybe-string "Command run to notify the user upon use of a
|
||||
secret it was already authorized to use. Limited shell expansion available.")
|
||||
(prompter (file-like (wrap-himitsu-prompter
|
||||
(file-append hiprompt-gtk "/bin/hiprompt-gtk")))
|
||||
"himitsu prompter to use to request user authorization for secret access.")
|
||||
(extra-options (list-of-strings-or-gexps '()) "A list of extra options, one
|
||||
per line, to put verbatim into the config file.")
|
||||
(prefix himitsu-))
|
||||
|
||||
(define (himitsu-serialize config)
|
||||
(mixed-text-file "himitsu.ini" "[himitsud]\n"
|
||||
(serialize-configuration config home-himitsu-configuration-fields)))
|
||||
|
||||
(define (himitsu-shepherd-service config)
|
||||
(define start
|
||||
#~(lambda _
|
||||
(let ((data (or (getenv "XDG_DATA_HOME")
|
||||
(string-append user-homedir "/.local/share"))))
|
||||
(if (directory-exists? (string-append data "/himitsu"))
|
||||
(fork+exec-command
|
||||
(list #$(let ((pkg (home-himitsu-configuration-package config)))
|
||||
(file-append pkg "/bin/himitsud"))
|
||||
"-C" #$(himitsu-serialize config))
|
||||
#:log-file (string-append %user-log-dir "/himitsu.log"))
|
||||
(error "Himitsu store must exist before the service can run! Try \
|
||||
running 'himitsu-store -i' first?")))))
|
||||
(list (shepherd-service
|
||||
(documentation "Run the Himitsu secret service manager.")
|
||||
(provision '(himitsud))
|
||||
(modules (cons* '(shepherd support) %default-modules))
|
||||
(start start)
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
;; we need to install the file or else himitsu-store will gen it
|
||||
(define (himitsu-xdg-configuration-service config)
|
||||
`(("himitsu/config.ini" ,(himitsu-serialize config))))
|
||||
|
||||
(define home-himitsu-service-type
|
||||
(service-type
|
||||
(name 'himitsu)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
himitsu-shepherd-service)
|
||||
(service-extension home-xdg-configuration-files-service-type
|
||||
himitsu-xdg-configuration-service)
|
||||
(service-extension home-profile-service-type
|
||||
(const (list himitsu)))))
|
||||
(compose concatenate)
|
||||
(extend (lambda (config exts)
|
||||
(let ((opts (home-himitsu-configuration-extra-options config)))
|
||||
(home-himitsu-configuration
|
||||
(inherit config)
|
||||
(extra-options (append exts opts))))))
|
||||
(default-value (home-himitsu-configuration))
|
||||
(description "Run the Himitsu secret storage manager upon login. You
|
||||
should create the Himitsu database in advance.")))
|
||||
|
||||
;;
|
||||
;; himitsu-ssh
|
||||
;;
|
||||
|
||||
(define (remember-option? opt)
|
||||
(or (number? opt) (memq opt '(session skip refuse))))
|
||||
|
||||
(define list-of-remember-options? (list-of remember-option?))
|
||||
|
||||
(define (himitsu-serialize-list-of-remember-options label val)
|
||||
(himitsu-serialize-string label
|
||||
(string-join (map (lambda (x) (cond ((number? x) (number->string x))
|
||||
((symbol? x) (symbol->string x))))
|
||||
val)
|
||||
",")))
|
||||
|
||||
(define-configuration home-himitsu-ssh-configuration
|
||||
(package (file-like himitsu-ssh) "himitsu-ssh package to use."
|
||||
empty-serializer)
|
||||
(persist (list-of-remember-options '(session 300 refuse)) "List of options
|
||||
given when prompting to allow himitsu-ssh to see your keys. The option chosen
|
||||
decides how long himitsu-ssh has this access. Options can be either 'session,
|
||||
'refuse, 'skip, or a timeout in seconds. 'session means until the daemon
|
||||
closes, 'refuse to decline and never ask again, and 'skip means to ask again
|
||||
next use.")
|
||||
(disclose (list-of-remember-options '(skip session 300)) "List of options
|
||||
given when prompting to allow himitsu-ssh use of your keys. The format is the
|
||||
same has persist.")
|
||||
(prefix himitsu-))
|
||||
|
||||
(define (himitsu-ssh-shepherd-service config)
|
||||
(let* ((package (home-himitsu-ssh-configuration-package config))
|
||||
(binary (file-append package "/bin/hissh-agent")))
|
||||
(list (shepherd-service
|
||||
(documentation "Start the Himitsu ssh-agent implementation.")
|
||||
(provision '(himitsu-ssh ssh-agent))
|
||||
(requirement '(himitsud))
|
||||
(start #~(make-forkexec-constructor (list #$binary)))
|
||||
(stop #~(make-kill-destructor))))))
|
||||
|
||||
(define (himitsu-ssh-himitsu.ini config)
|
||||
(list "[ssh.remember]"
|
||||
(serialize-configuration config home-himitsu-ssh-configuration-fields)))
|
||||
|
||||
(define (himitsu-ssh-environment-variables _)
|
||||
'(("SSH_AUTH_SOCK" . "${XDG_RUNTIME_DIR:-/run/user/$UID}/hissh-agent")))
|
||||
|
||||
(define home-himitsu-ssh-service-type
|
||||
(service-type
|
||||
(name 'himitsu-ssh)
|
||||
(extensions (list (service-extension home-shepherd-service-type
|
||||
himitsu-ssh-shepherd-service)
|
||||
(service-extension home-himitsu-service-type
|
||||
himitsu-ssh-himitsu.ini)
|
||||
(service-extension home-environment-variables-service-type
|
||||
himitsu-ssh-environment-variables)
|
||||
(service-extension home-profile-service-type
|
||||
(const (list himitsu-ssh)))))
|
||||
(default-value (home-himitsu-ssh-configuration))
|
||||
(description "Add support for ssh to store keys in Himitsu.")))
|
||||
|
||||
;;
|
||||
;; himitsu-secret-service
|
||||
;;
|
||||
|
||||
(define-configuration home-himitsu-secret-service-configuration
|
||||
(package (file-like himitsu-secret-service) "himitsu-secret-service package to
|
||||
use." empty-serializer)
|
||||
(prefix himitsu-))
|
||||
|
||||
(define (himitsu-secret-service-shepherd-service config)
|
||||
(let* ((package (home-himitsu-secret-service-configuration-package config))
|
||||
(binary (file-append package "/bin/hisecrets-agent")))
|
||||
(list (shepherd-service
|
||||
(documentation "Start the Himitsu secret-service implementation.")
|
||||
(provision '(himitsu-secret-service secret-service))
|
||||
(requirement '(himitsud dbus))
|
||||
(start #~(make-forkexec-constructor (list #$binary)))
|
||||
(stop #~(make-kill-destructor))))))
|
||||
|
||||
(define home-himitsu-secret-service-type
|
||||
(service-type
|
||||
(name 'himitsu-secret-service)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
himitsu-secret-service-shepherd-service)))
|
||||
(default-value (home-himitsu-secret-service-configuration))
|
||||
(description "Add support to Himitsu for the freedesktop.org
|
||||
secret-service protocol.")))
|
||||
@@ -95,10 +95,6 @@ PulseAudio clients to use PipeWire transparently.")
|
||||
(list (home-pipewire-pulseaudio-shepherd-service config))
|
||||
'())))
|
||||
|
||||
(define (home-pipewire-profile-service config)
|
||||
(list (home-pipewire-configuration-pipewire config)
|
||||
(home-pipewire-configuration-wireplumber config)))
|
||||
|
||||
(define (home-pipewire-asoundrc config)
|
||||
(match-record config <home-pipewire-configuration>
|
||||
(pipewire extra-content)
|
||||
@@ -130,8 +126,6 @@ PulseAudio clients to use PipeWire transparently.")
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-pipewire-shepherd-services)
|
||||
(service-extension home-profile-service-type
|
||||
home-pipewire-profile-service)
|
||||
(service-extension home-xdg-configuration-files-service-type
|
||||
home-pipewire-xdg-configuration)))
|
||||
(description
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2026 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -312,8 +311,6 @@ through before connecting to the server.")
|
||||
(default #f))
|
||||
(known-hosts home-openssh-configuration-known-hosts ;unspec | list of file-like
|
||||
(default *unspecified*))
|
||||
(known-hosts2 home-openssh-configuration-known-hosts2 ;unspec | list of file-like
|
||||
(default *unspecified*))
|
||||
(hosts home-openssh-configuration-hosts ;list of <openssh-host>
|
||||
(default '()))
|
||||
(add-keys-to-agent home-openssh-configuration-add-keys-to-agent ;string with limited values
|
||||
@@ -379,7 +376,6 @@ inserted after each of them."
|
||||
(let* ((ssh-config (plain-file "ssh.conf"
|
||||
(openssh-configuration->string config)))
|
||||
(known-hosts (home-openssh-configuration-known-hosts config))
|
||||
(known-hosts2 (home-openssh-configuration-known-hosts2 config))
|
||||
(authorized-keys (home-openssh-configuration-authorized-keys config))
|
||||
(authorized-keys (and
|
||||
authorized-keys
|
||||
@@ -391,10 +387,6 @@ inserted after each of them."
|
||||
'()
|
||||
`((".ssh/known_hosts"
|
||||
,(file-join "known_hosts" known-hosts "\n"))))
|
||||
,@(if (unspecified? known-hosts2)
|
||||
'()
|
||||
`((".ssh/known_hosts2"
|
||||
,(file-join "known_hosts2" known-hosts2 "\n"))))
|
||||
(".ssh/config" ,ssh-config))))
|
||||
|
||||
(define openssh-activation
|
||||
|
||||
@@ -102,6 +102,17 @@
|
||||
;; Convenient value to inherit for extensions.
|
||||
%empty-sway-configuration))
|
||||
|
||||
;; Helper function.
|
||||
(define (flatmap f l)
|
||||
(let loop ((lst (reverse l)) (acc '()))
|
||||
(match lst
|
||||
(() acc)
|
||||
((head . tail)
|
||||
(let* ((h (f head))
|
||||
(acc (append h acc)))
|
||||
(loop tail acc))))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Definition of configurations.
|
||||
;;;
|
||||
@@ -118,6 +129,9 @@
|
||||
(define (list-of-string-ish? lst)
|
||||
(every string-ish? lst))
|
||||
|
||||
(define (list-of-packages? lst)
|
||||
(every package? lst))
|
||||
|
||||
(define (bar-position? p)
|
||||
(member p '(top bottom)))
|
||||
|
||||
@@ -882,13 +896,13 @@
|
||||
|
||||
;; Outputs.
|
||||
#$@(with-heading "Outputs."
|
||||
(append-map serialize-output
|
||||
(sway-configuration-outputs conf)))
|
||||
(flatmap serialize-output
|
||||
(sway-configuration-outputs conf)))
|
||||
|
||||
;; Inputs.
|
||||
#$@(with-heading "Inputs."
|
||||
(append-map serialize-input
|
||||
(sway-configuration-inputs conf)))
|
||||
(flatmap serialize-input
|
||||
(sway-configuration-inputs conf)))
|
||||
|
||||
;; Bar configuration:
|
||||
;; If the bar is unset, do not include anything.
|
||||
@@ -908,8 +922,8 @@
|
||||
|
||||
;; Modes.
|
||||
#$@(with-heading "Modes."
|
||||
(append-map serialize-mode
|
||||
(sway-configuration-modes conf)))
|
||||
(flatmap serialize-mode
|
||||
(sway-configuration-modes conf)))
|
||||
|
||||
;; Startup-Programs.
|
||||
#$@(with-heading
|
||||
|
||||
@@ -103,21 +103,10 @@ subdirectory from XDG_CONFIG_HOME to generate a target path."
|
||||
(define backup
|
||||
(string-append backup-directory "/" (preprocess-file file)))
|
||||
|
||||
(define (copy-file* oldfile newfile)
|
||||
"Like 'copy-file', but also copies dangling symlinks."
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(copy-file oldfile newfile))
|
||||
(lambda args
|
||||
(if (and (eq? 'symlink (stat:type (lstat oldfile)))
|
||||
(= ENOENT (system-error-errno args)))
|
||||
(symlink (readlink oldfile) newfile)
|
||||
(apply throw args)))))
|
||||
|
||||
(mkdir-p backup-directory)
|
||||
(format #t (G_ "Backing up ~a...") (target-file file))
|
||||
(mkdir-p (dirname backup))
|
||||
(copy-file* (target-file file) backup)
|
||||
(copy-file (target-file file) backup)
|
||||
(delete-file (target-file file))
|
||||
(display (G_ " done\n")))
|
||||
|
||||
|
||||
@@ -108,11 +108,10 @@ like sockets.")
|
||||
@file{/var/log}, but for user. It is not a part of XDG Base Directory
|
||||
Specification, but helps to make implementation of home services more
|
||||
consistent."
|
||||
(serializer
|
||||
(lambda (field-name val)
|
||||
(when (maybe-value-set? val)
|
||||
(warn-about-deprecation field-name #f #:replacement 'state-home))
|
||||
(serialize-path field-name val))))
|
||||
(lambda (field-name val)
|
||||
(when (maybe-value-set? val)
|
||||
(warn-about-deprecation field-name #f #:replacement 'state-home))
|
||||
(serialize-path field-name val)))
|
||||
(state-home
|
||||
(path "$HOME/.local/state")
|
||||
"Base directory for programs to store state data that should persist
|
||||
|
||||
+7
-6
@@ -367,13 +367,14 @@ purposes."
|
||||
'unknown)
|
||||
((channels ...)
|
||||
(map (lambda (channel)
|
||||
;; NOTE: URL is not logged to synchronize the derivations
|
||||
;; coming out of pre-inst-env, time-machine and Cuirass
|
||||
;; for generating release artifacts.
|
||||
`(channel ,(channel-name channel) ,(channel-commit channel)))
|
||||
(let* ((uri (string->uri (channel-url channel)))
|
||||
(url (if (or (not uri) (eq? 'file (uri-scheme uri)))
|
||||
"local checkout"
|
||||
(channel-url channel))))
|
||||
`(channel ,(channel-name channel) ,url ,(channel-commit channel))))
|
||||
channels))))
|
||||
|
||||
(define* (installer-program #:key dry-run? (guix-for-installer (current-guix)))
|
||||
(define* (installer-program #:key dry-run?)
|
||||
"Return a file-like object that runs the given INSTALLER."
|
||||
(define init-gettext
|
||||
;; Initialize gettext support, so that installer messages can be
|
||||
@@ -422,7 +423,7 @@ purposes."
|
||||
guile-gnutls
|
||||
guile-zlib ;for (gnu build linux-modules)
|
||||
guile-zstd ;for (gnu build linux-modules)
|
||||
guix-for-installer)
|
||||
(current-guix))
|
||||
(with-imported-modules `(,@(source-module-closure
|
||||
`(,@modules
|
||||
(gnu services herd)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2024,2026 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -168,10 +168,8 @@ or #f. Return #t on success and #f on failure."
|
||||
(const '())))
|
||||
(install-command (append `( "guix" "system" "init"
|
||||
"--fallback"
|
||||
,@(if (%current-target-system)
|
||||
`(,(string-append
|
||||
"--target="
|
||||
(%current-target-system)))
|
||||
,@(if (target-hurd?)
|
||||
'("--target=i586-pc-gnu")
|
||||
'()))
|
||||
options
|
||||
(list (%installer-configuration-file)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2024, 2026 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,8 +27,7 @@
|
||||
str)
|
||||
|
||||
(define (kernel->configuration kernel dry-run?)
|
||||
(if (and (string? kernel)
|
||||
(string-prefix? "Hurd" kernel))
|
||||
(if (equal? kernel "Hurd")
|
||||
`((kernel %hurd-default-operating-system-kernel)
|
||||
,(comment (G_ ";; \"noide\" disables the gnumach IDE driver, enabling rumpdisk.\n"))
|
||||
(kernel-arguments '("noide"))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2024, 2026 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,48 +23,23 @@
|
||||
#:export (run-kernel-page))
|
||||
|
||||
(define (run-kernel-page)
|
||||
;; TRANSLATORS: "Hurd" is a proper noun and must not be translated.
|
||||
(let* ((hurd-x86 (G_ "Hurd 32-bit (experimental)"))
|
||||
(hurd-x86_64 (G_ "Hurd 64-bit (highly experimental!)"))
|
||||
(linux-libre "Linux Libre")
|
||||
(kernels (parameterize ((%current-target-system #f))
|
||||
`(,linux-libre
|
||||
,@(cond ((target-x86-64?)
|
||||
(list hurd-x86 hurd-x86_64))
|
||||
((target-x86?)
|
||||
(list hurd-x86))
|
||||
(else
|
||||
'())))))
|
||||
(default (cond ((equal? (%current-target-system) "i586-pc-gnu")
|
||||
hurd-x86)
|
||||
((equal? (%current-target-system) "x86_64-pc-gnu")
|
||||
hurd-x86_64)
|
||||
(else
|
||||
linux-libre)))
|
||||
(let* ((kernels `(,@(if (target-x86?) '("Hurd") '())
|
||||
"Linux Libre"))
|
||||
(result
|
||||
(run-listbox-selection-page
|
||||
#:title (G_ "Kernel")
|
||||
#:info-text
|
||||
;; TRANSLATORS: "Hurd" is a proper noun and must not be translated.
|
||||
;; TRANSLATORS: "Linux Libre" is a literal and must not be translated.
|
||||
(G_ "Please select a kernel. When in doubt, choose \"Linux Libre\".
|
||||
|
||||
The Hurd is offered as a technology preview and development aid; many packages \
|
||||
are not yet available in Guix, such as a desktop environment or even a \
|
||||
windowing system (X, Wayland).")
|
||||
are not yet available in Guix, such as a desktop environment or even a windowing \
|
||||
system (X, Wayland).")
|
||||
#:listbox-items kernels
|
||||
#:listbox-item->text identity
|
||||
#:listbox-default-item default
|
||||
#:sort-listbox-items? #f ;keep Linux first
|
||||
#:listbox-default-item "Linux Libre"
|
||||
#:button-text (G_ "Back")
|
||||
#:button-callback-procedure
|
||||
(lambda _
|
||||
(abort-to-prompt 'installer-step 'abort)))))
|
||||
(let ((target (cond ((equal? result hurd-x86)
|
||||
"i586-pc-gnu")
|
||||
((equal? result hurd-x86_64)
|
||||
"x86_64-pc-gnu")
|
||||
(else
|
||||
#f))))
|
||||
(%current-target-system target))
|
||||
(when (equal? result "Hurd")
|
||||
(%current-target-system "i586-pc-gnu"))
|
||||
result))
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-11)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (ice-9 match)
|
||||
@@ -113,24 +112,20 @@ network devices were found. Do you want to continue anyway?"))
|
||||
full-value
|
||||
(+ value 1)))))))
|
||||
|
||||
(define* (url-alive? url #:key (ensure-ok-status? #f))
|
||||
(define (url-alive? url)
|
||||
(false-if-exception
|
||||
(let ((response (http-request url)))
|
||||
(or (not ensure-ok-status?)
|
||||
(= (response-code response)
|
||||
200)))))
|
||||
(begin
|
||||
(http-request url)
|
||||
#t)))
|
||||
|
||||
(define* (common-urls-alive? urls #:key (ensure-ok-status? #f))
|
||||
"Return #t if at least some of the given URLS are alive,
|
||||
meaning that they do respond to a HTTP request. If ENSURE-OK-STATUS? is
|
||||
#t, return #t only if the code is 200."
|
||||
(define (common-urls-alive? urls)
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
(sigaction SIGALRM
|
||||
(lambda _ #f))
|
||||
(alarm 3))
|
||||
(lambda ()
|
||||
(any (cut url-alive? <> #:ensure-ok-status? ensure-ok-status?)
|
||||
(any url-alive?
|
||||
urls))
|
||||
(lambda ()
|
||||
(alarm 0))))
|
||||
@@ -145,9 +140,7 @@ FULL-VALUE tentatives, spaced by 1 second."
|
||||
"https://bordeaux.guix.gnu.org"
|
||||
"https://ci.guix.gnu.org"
|
||||
"https://guix.gnu.org"
|
||||
"https://gnu.org")
|
||||
;; Any HTTP response means the users is online.
|
||||
#:ensure-ok-status? #f))
|
||||
"https://gnu.org")))
|
||||
(file-exists? "/tmp/installer-assume-online")))
|
||||
|
||||
(let* ((full-value 5))
|
||||
@@ -180,8 +173,7 @@ Do you want to continue anyway?"))
|
||||
(common-urls-alive?
|
||||
(list
|
||||
"https://bordeaux.guix.gnu.org/nix-cache-info"
|
||||
"https://ci.guix.gnu.org/nix-cache-info")
|
||||
#:ensure-ok-status? #t)))
|
||||
"https://ci.guix.gnu.org/nix-cache-info"))))
|
||||
|
||||
(let* ((full-value 5))
|
||||
(run-scale-page
|
||||
|
||||
@@ -108,23 +108,20 @@ all data on disk will be lost, are you sure you want to proceed?") item)
|
||||
|
||||
(define (run-label-page button-text button-callback)
|
||||
"Run a page asking the user to select a partition table label."
|
||||
;; Force the GPT label if UEFI is supported.
|
||||
(cond ((efi-installation?)
|
||||
((run-label-confirmation-page button-callback) "gpt"))
|
||||
;; Force the MSDOS label on Hurd.
|
||||
((target-hurd?)
|
||||
((run-label-confirmation-page button-callback) "msdos"))
|
||||
(else (run-listbox-selection-page
|
||||
#:info-text (G_ "Select a new partition table type. \
|
||||
;; Force the GPT label if UEFI is supported.
|
||||
(if (efi-installation?)
|
||||
((run-label-confirmation-page button-callback) "gpt")
|
||||
(run-listbox-selection-page
|
||||
#:info-text (G_ "Select a new partition table type. \
|
||||
Be careful, all data on the disk will be lost.")
|
||||
#:title (G_ "Partition table")
|
||||
#:listbox-items '("msdos" "gpt")
|
||||
#:listbox-default-item (if (target-hurd?) "msdos" "gpt")
|
||||
#:listbox-item->text identity
|
||||
#:listbox-callback-procedure
|
||||
(run-label-confirmation-page button-callback)
|
||||
#:button-text button-text
|
||||
#:button-callback-procedure button-callback))))
|
||||
#:title (G_ "Partition table")
|
||||
#:listbox-items '("msdos" "gpt")
|
||||
#:listbox-default-item (if (target-hurd?) "msdos" "gpt")
|
||||
#:listbox-item->text identity
|
||||
#:listbox-callback-procedure
|
||||
(run-label-confirmation-page button-callback)
|
||||
#:button-text button-text
|
||||
#:button-callback-procedure button-callback)))
|
||||
|
||||
(define (run-type-page partition)
|
||||
"Run a page asking the user to select a partition type."
|
||||
|
||||
@@ -36,9 +36,11 @@
|
||||
environments."
|
||||
(let ((items (filter desktop-system-service? (%system-services))))
|
||||
(run-checkbox-tree-page
|
||||
#:info-text (G_ "Please select the desktop environment(s) you wish to \
|
||||
#:info-text (if (target-hurd?)
|
||||
(G_ "Currently, none of these is available for the Hurd.")
|
||||
(G_ "Please select the desktop environment(s) you wish to \
|
||||
install. If you select multiple desktop environments here, you will be able \
|
||||
to choose from them later when you log in.")
|
||||
to choose from them later when you log in."))
|
||||
#:title (G_ "Desktop environment")
|
||||
#:items items
|
||||
#:selection (map system-service-recommended? items)
|
||||
@@ -48,16 +50,6 @@ to choose from them later when you log in.")
|
||||
(lambda ()
|
||||
(abort-to-prompt 'installer-step 'abort)))))
|
||||
|
||||
;; FIXME: all platforms should support %desktop-services and some of the
|
||||
;; offered desktop environments. Instead of globally disabling the desktop
|
||||
;; page, disable only non-working desktop environments.
|
||||
(define (run-desktop-environments-cbt-page/maybe)
|
||||
"Run page with desktop environments, as long as the user is on
|
||||
a system that supports them."
|
||||
(if (or (target-hurd?) (target-x86-32?))
|
||||
'()
|
||||
(run-desktop-environments-cbt-page)))
|
||||
|
||||
(define (run-networking-cbt-page)
|
||||
"Run a page allowing the user to select networking services."
|
||||
(let ((items (filter (lambda (service)
|
||||
@@ -139,7 +131,7 @@ client may be enough for a server.")
|
||||
(abort-to-prompt 'installer-step 'abort)))))
|
||||
|
||||
(define (run-services-page)
|
||||
(let ((desktop (run-desktop-environments-cbt-page/maybe)))
|
||||
(let ((desktop (run-desktop-environments-cbt-page)))
|
||||
;; When the user did not select any desktop services, and thus didn't get
|
||||
;; '%desktop-services', offer network management services.
|
||||
(append desktop
|
||||
|
||||
@@ -233,12 +233,11 @@ force a wifi scan."
|
||||
(lambda ()
|
||||
(when (eq? exit-reason 'exit-component)
|
||||
(cond
|
||||
((components=? argument exit-button)
|
||||
(abort-to-prompt 'installer-step 'abort))
|
||||
((or (components=? argument scan-button)
|
||||
(null? service-items))
|
||||
((components=? argument scan-button)
|
||||
(run-wifi-scan-page)
|
||||
(run-wifi-page))
|
||||
((components=? argument exit-button)
|
||||
(abort-to-prompt 'installer-step 'abort))
|
||||
((components=? argument listbox)
|
||||
(let ((result (connect-wifi-service listbox service-items)))
|
||||
(unless result
|
||||
|
||||
+36
-38
@@ -195,21 +195,8 @@
|
||||
(define (system-services->configuration services)
|
||||
"Return the configuration field for SERVICES."
|
||||
(let* ((snippets (append-map system-service-snippet services))
|
||||
(packages (append-map system-service-packages services))
|
||||
(desktop? (find desktop-system-service? services))
|
||||
(packages
|
||||
(append (append-map system-service-packages services)
|
||||
(if desktop?
|
||||
(cons (comment (G_ ";; Fonts to cover all languages.\n"))
|
||||
(map (lambda (package)
|
||||
`(specification->package ,package))
|
||||
'("font-google-noto"
|
||||
"font-google-noto-emoji"
|
||||
;; FIXME: Selection of fonts depends on the
|
||||
;; locale. Use a monospaced CJK font with
|
||||
;; latin letters before there's proper fix.
|
||||
;; See <https://codeberg.org/guix/guix/pulls/5654#issuecomment-9928509>
|
||||
"font-sarasa-gothic")))
|
||||
'())))
|
||||
(base (if desktop?
|
||||
(if (target-hurd?)
|
||||
'%desktop-services/hurd
|
||||
@@ -243,33 +230,44 @@
|
||||
;; under their own account: use 'guix search KEYWORD' to search
|
||||
;; for packages and 'guix install PACKAGE' to install a package.\n")))))
|
||||
|
||||
`(,@(if (null? packages)
|
||||
(if (target-hurd?)
|
||||
(if (null? snippets)
|
||||
`(,@(if (null? packages)
|
||||
(if (target-hurd?)
|
||||
`(,@package-heading
|
||||
(packages %base-packages/hurd))
|
||||
'())
|
||||
`(,@package-heading
|
||||
(packages %base-packages/hurd))
|
||||
'())
|
||||
`(,@package-heading
|
||||
(packages (append (list ,@packages)
|
||||
,(if (target-hurd?)
|
||||
'%base-packages/hurd
|
||||
'%base-packages)))))
|
||||
(packages (append (list ,@packages)
|
||||
,(if (target-hurd?)
|
||||
'%base-packages/hurd
|
||||
'%base-packages)))))
|
||||
|
||||
,@service-heading
|
||||
,(if (and (null? snippets)
|
||||
(not desktop?))
|
||||
`(services ,services)
|
||||
`(services
|
||||
(append (list ,@snippets
|
||||
,@service-heading
|
||||
(services ,services))
|
||||
`(,@(if (null? packages)
|
||||
(if (target-hurd?)
|
||||
`(,@package-heading
|
||||
(packages %base-packages/hurd))
|
||||
'())
|
||||
`(,@package-heading
|
||||
(packages (append (list ,@packages)
|
||||
,(if (target-hurd?)
|
||||
'%base-packages/hurd
|
||||
'%base-packages)))))
|
||||
|
||||
,@(if desktop?
|
||||
;; XXX: Assume 'keyboard-layout' is in scope.
|
||||
`((set-xorg-configuration
|
||||
(xorg-configuration
|
||||
(keyboard-layout keyboard-layout))))
|
||||
'()))
|
||||
,@service-heading
|
||||
(services (append (list ,@snippets
|
||||
|
||||
,(vertical-space 1)
|
||||
,(comment (G_ "\
|
||||
,@(if desktop?
|
||||
;; XXX: Assume 'keyboard-layout' is in
|
||||
;; scope.
|
||||
`((set-xorg-configuration
|
||||
(xorg-configuration
|
||||
(keyboard-layout keyboard-layout))))
|
||||
'()))
|
||||
|
||||
,(vertical-space 1)
|
||||
,(comment (G_ "\
|
||||
;; This is the default list of services we
|
||||
;; are appending to.\n"))
|
||||
,services))))))
|
||||
,services))))))
|
||||
|
||||
+99
-220
File diff suppressed because it is too large
Load Diff
@@ -651,7 +651,7 @@ fdisk -l /dev/sda"
|
||||
(format #f "#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
apt-get update
|
||||
apt-get install cloud-initramfs-growroot uidmap --assume-yes"))
|
||||
apt-get install cloud-initramfs-growroot --assume-yes"))
|
||||
(format #t "successfully installed rescue system packages on '~a'\n" name)))
|
||||
|
||||
(define (hetzner-machine-delete machine server)
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system glib-or-gtk)
|
||||
#:use-module (guix build-system pyproject)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
@@ -78,43 +77,36 @@
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(outputs '("out" "bin"))
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; Tests require drivers
|
||||
#:configure-flags
|
||||
#~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
|
||||
"--disable-static"
|
||||
"--enable-fake")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
#$@(if (this-package-native-input "config")
|
||||
#~((add-after 'unpack 'update-config-scripts
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(for-each
|
||||
(lambda (dir)
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(install-file
|
||||
(search-input-file
|
||||
(or native-inputs inputs)
|
||||
(string-append "/bin/" file)) dir))
|
||||
(list "config.guess" "config.sub")))
|
||||
(list "." "libltdl")))))
|
||||
(list)))))
|
||||
`(#:tests? #f ; Tests require drivers
|
||||
#:configure-flags
|
||||
(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
|
||||
"--disable-static"
|
||||
"--enable-fake")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
,@(if (this-package-native-input "config")
|
||||
`((add-after 'unpack 'update-config-scripts
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(for-each
|
||||
(lambda (dir)
|
||||
(for-each (lambda (file)
|
||||
(install-file
|
||||
(search-input-file
|
||||
(or native-inputs inputs)
|
||||
(string-append "/bin/" file)) dir))
|
||||
'("config.guess" "config.sub")))
|
||||
'("." "libltdl")))))
|
||||
'()))))
|
||||
(native-inputs
|
||||
(append
|
||||
(if (or (target-aarch64?)
|
||||
(target-ppc64le?)
|
||||
(target-riscv64?))
|
||||
(list config)
|
||||
(list))
|
||||
(list latex2html
|
||||
pkg-config
|
||||
python-wrapper
|
||||
swig-4.0)))
|
||||
(if (or (target-aarch64?)
|
||||
(target-ppc64le?)
|
||||
(target-riscv64?))
|
||||
(list config)
|
||||
'())
|
||||
(list latex2html pkg-config python-wrapper swig)))
|
||||
(inputs
|
||||
(list glib
|
||||
gtk+-2
|
||||
libusb-compat))
|
||||
(list glib gtk+-2 libusb-compat))
|
||||
(synopsis "Portable Braille Library")
|
||||
(description "Libbraille is a library to easily access Braille displays and
|
||||
terminals.")
|
||||
@@ -160,11 +152,11 @@ terminals.")
|
||||
"PYTHON_ROOT=/"
|
||||
(string-append "TCL_DIR=" #$output "/lib")
|
||||
"INSTALL_WRITABLE_DIRECTORY=no-thanks")
|
||||
#:imported-modules (append %glib-or-gtk-build-system-modules
|
||||
%pyproject-build-system-modules)
|
||||
#:imported-modules `((guix build python-build-system)
|
||||
,@%glib-or-gtk-build-system-modules)
|
||||
#:modules '((guix build utils)
|
||||
(guix build glib-or-gtk-build-system)
|
||||
((guix build pyproject-build-system) #:prefix python:))
|
||||
((guix build python-build-system) #:prefix python:))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-errors
|
||||
@@ -236,6 +228,50 @@ incorporated.")
|
||||
(home-page "https://brltty.app/")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public florence
|
||||
(package
|
||||
(name "florence")
|
||||
(version "0.6.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/florence/florence/" version
|
||||
"/florence-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"07h9qm22krlwayhzvc391lr23vicw81s48g7rirvx1fj0zyr4aa2"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "--with-xtst"
|
||||
"--without-docs"
|
||||
"--with-notification")))
|
||||
(inputs
|
||||
(list libxml2
|
||||
libglade
|
||||
(librsvg-for-system)
|
||||
gstreamer
|
||||
cairo
|
||||
gtk+
|
||||
libxtst
|
||||
libxcomposite
|
||||
libnotify))
|
||||
(native-inputs
|
||||
(list gettext-minimal intltool pkg-config))
|
||||
(home-page "https://florence.sourceforge.net/")
|
||||
(synopsis "Extensible, scalable virtual keyboard for X11")
|
||||
(description
|
||||
"Florence is an extensible scalable virtual keyboard for X11.
|
||||
It is useful for people who can't use a real hardware keyboard (for
|
||||
example for people with disabilities), but you must be able to use
|
||||
a pointing device (as a mouse, a trackball, a touchscreen or opengazer).
|
||||
|
||||
Florence stays out of your way when you don't need it: it appears on the
|
||||
screen only when you need it. A timer-based auto-click input method is
|
||||
available to help to click.")
|
||||
;; The documentation is under FDL1.2, but we do not install the
|
||||
;; documentation.
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public footswitch
|
||||
(let ((commit "e455d6752221b9e9c3818cc304c873b9c2792490")
|
||||
(revision "0"))
|
||||
|
||||
+24
-22
@@ -30,13 +30,10 @@
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages python-build)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system pyproject)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix utils))
|
||||
|
||||
@@ -98,28 +95,33 @@
|
||||
(define-public python-pylibacl
|
||||
(package
|
||||
(name "python-pylibacl")
|
||||
(version "0.7.3")
|
||||
(version "0.6.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "pylibacl" version))
|
||||
(sha256
|
||||
(base32 "08pr5cbipij3j591bihh72r5h14lyrspy24qwmfjsn0c1rcgp7wx"))))
|
||||
(build-system pyproject-build-system)
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "pylibacl" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1zyrk2m20p5b6bdwxhrwib273i6i71zyr5hzssbxfqis5qra9848"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'disable-tests
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
;; These tests operate on real files, but our tmpfs does not support
|
||||
;; ACLs.
|
||||
(substitute* "tests/test_acls.py"
|
||||
(("( *)def test_applyto(_extended(_mixed)?)?" match indent)
|
||||
(string-append indent "@pytest.mark.skip(reason=\"guix\")\n"
|
||||
match))))))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'disable-tests
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
;; These tests operate on real files, but our tmpfs does not support
|
||||
;; ACLs.
|
||||
(substitute* "tests/test_acls.py"
|
||||
(("( *)def test_applyto(_extended(_mixed)?)?" match indent)
|
||||
(string-append indent "@pytest.mark.skip(reason=\"guix\")\n"
|
||||
match)))))
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
(invoke "pytest" "tests")))))))
|
||||
(inputs (list acl))
|
||||
(native-inputs (list python-pytest python-setuptools))
|
||||
(native-inputs (list python-pytest))
|
||||
(home-page "https://pylibacl.k1024.org/")
|
||||
(synopsis "POSIX.1e @acronym{ACLs, access control lists} for Python")
|
||||
(description
|
||||
|
||||
+151
-449
File diff suppressed because it is too large
Load Diff
@@ -197,7 +197,7 @@ come from Agda's standard library.")
|
||||
(define-public agda-stdlib
|
||||
(package
|
||||
(name "agda-stdlib")
|
||||
(version "2.3")
|
||||
(version "2.1.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -206,7 +206,7 @@ come from Agda's standard library.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"17w5vfn5pb2cgfs22zph3jfqnki52ja8y4zwyqj24zwf9rxairr4"))))
|
||||
"1n742qvlxaj4dprnknvzrr876af6yjfwa4ps1dr4v1h814sg0xz0"))))
|
||||
(build-system agda-build-system)
|
||||
(arguments
|
||||
(list
|
||||
|
||||
+57
-87
@@ -9,7 +9,6 @@
|
||||
;;; Copyright © 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
|
||||
;;; Copyright © 2024, 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -73,30 +72,22 @@
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:test-flags
|
||||
;; This tests if find_library was called once, but we remove the call in
|
||||
;; the stage below to make the library find libzbar.
|
||||
#~(list #$@(map (lambda (test) (string-append "--deselect="
|
||||
"pyzbar/tests/"
|
||||
"test_zbar_library.py::"
|
||||
"TestLoad::"
|
||||
test))
|
||||
(list "test_found_non_windows"
|
||||
"test_not_found_non_windows")))
|
||||
#:test-backend #~'unittest
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'remove-failing-test
|
||||
(lambda _
|
||||
;; This tests if find_library was called once, but we remove
|
||||
;; the call in the stage below to make the library find libzbar.
|
||||
(delete-file "pyzbar/tests/test_zbar_library.py")))
|
||||
(add-before 'build 'set-library-file-name
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "pyzbar/zbar_library.py"
|
||||
(("find_library\\('zbar'\\)")
|
||||
(format #f "~s"
|
||||
(search-input-file inputs "/lib/libzbar.so.0")))))))))
|
||||
(lambda _
|
||||
(let ((libzbar #$(this-package-input "zbar")))
|
||||
(substitute* "pyzbar/zbar_library.py"
|
||||
(("find_library\\('zbar'\\)")
|
||||
(string-append "'" libzbar "/lib/libzbar.so.0'")))))))))
|
||||
(native-inputs
|
||||
(list pkg-config
|
||||
python-numpy
|
||||
python-pillow
|
||||
python-pytest
|
||||
python-setuptools))
|
||||
(list pkg-config python-numpy python-pillow python-setuptools))
|
||||
(inputs
|
||||
(list zbar))
|
||||
(home-page "https://github.com/NaturalHistoryMuseum/pyzbar/")
|
||||
@@ -140,24 +131,29 @@ read all zbar supported codes.")
|
||||
(define-public zint
|
||||
(package
|
||||
(name "zint")
|
||||
(version "2.16.0")
|
||||
(version "2.15.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/zint/zint")
|
||||
(commit version)))
|
||||
(url "https://github.com/zint/zint")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1zpv9ar1kfjl3bb27jc8hd8601zcda9yv4dz1jhxfhdsg6v4cdg7"))))
|
||||
(build-system cmake-build-system)
|
||||
"0arnpdqspyy3bxafm3lqc020bhwq3vazfnja2fk2s8c7mr9wimgr"))))
|
||||
(build-system qt-build-system)
|
||||
(arguments
|
||||
(list #:disallowed-references (list qtbase)
|
||||
#:parallel-tests? #f ;test suite fails otherwise
|
||||
#:configure-flags #~(list "-DZINT_TEST=ON"
|
||||
"-DZINT_UNINSTALL=OFF")))
|
||||
(native-inputs (list pkg-config))
|
||||
(inputs (list libpng))
|
||||
(list #:qtbase qtbase
|
||||
#:parallel-tests? #f
|
||||
#:configure-flags
|
||||
#~(list "-DZINT_QT6=ON"
|
||||
"-DZINT_TEST=ON"
|
||||
"-DZINT_UNINSTALL=OFF")))
|
||||
(native-inputs
|
||||
(list pkg-config qttools))
|
||||
(inputs
|
||||
(list libpng
|
||||
qtsvg))
|
||||
(synopsis "Barcode encoding library")
|
||||
(description "Zint is a suite of programs to allow easy encoding of data in
|
||||
any of the wide range of public domain barcode standards and to allow
|
||||
@@ -165,23 +161,6 @@ integration of this capability into your own programs.")
|
||||
(home-page "https://www.zint.org.uk/")
|
||||
(license (list license:bsd-3 license:gpl3+))))
|
||||
|
||||
(define-public zint-with-qt
|
||||
(package/inherit zint
|
||||
(name "zint-with-qt")
|
||||
(build-system qt-build-system)
|
||||
(arguments (substitute-keyword-arguments (package-arguments zint)
|
||||
((#:disallowed-references references)
|
||||
(delete qtbase references))
|
||||
((#:qtbase _ #f)
|
||||
qtbase)
|
||||
((#:configure-flags flags ''())
|
||||
#~(cons "-DZINT_QT6=ON" #$flags))))
|
||||
(inputs (modify-inputs (package-inputs zint)
|
||||
;; The UI library of qttools is linked to; hence it must be used
|
||||
;; as an input rather than a native input.
|
||||
(append qtsvg qttools)))
|
||||
(synopsis "Barcode encoding library (with graphical user interface)")))
|
||||
|
||||
(define-public zxing-cpp
|
||||
(package
|
||||
(name "zxing-cpp")
|
||||
@@ -219,6 +198,27 @@ integration of this capability into your own programs.")
|
||||
(home-page "https://github.com/zxing-cpp/zxing-cpp")
|
||||
(license license:asl2.0)))
|
||||
|
||||
;;; This older variant is kept for gst-plugins-bad (see:
|
||||
;;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1684).
|
||||
(define-public zxing-cpp-1.2
|
||||
(package/inherit zxing-cpp
|
||||
(name "zxing-cpp")
|
||||
(version "1.2.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/zxing-cpp/zxing-cpp")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(patches (search-patches "zxing-cpp-1.2.0-gcc-14.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gjj9c7h634rrmmgzbc7cxjqsxdq0paj6113k02ncjm1s9abk7ik"))))
|
||||
;; Disable tests to avoid bundled dependencies.
|
||||
(arguments '(#:tests? #f
|
||||
#:configure-flags '("-DBUILD_BLACKBOX_TESTS=OFF")))
|
||||
(native-inputs '())))
|
||||
|
||||
(define-public barcode
|
||||
(package
|
||||
(name "barcode")
|
||||
@@ -300,38 +300,6 @@ barcodes of the modern ECC200 variety. libdmtx is a shared library, allowing
|
||||
C/C++ programs to use its capabilities without restrictions or overhead.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public dmtx-utils
|
||||
(package
|
||||
(name "dmtx-utils")
|
||||
(version "0.7.6")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/dmtx/dmtx-utils/")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
"06m3qncqdlcnmw83n95yrx2alaq6bld320ax26z4ndnla41yk0p4")))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list autoconf automake libtool pkg-config))
|
||||
(inputs (list libdmtx imagemagick libjpeg-turbo))
|
||||
(home-page "https://github.com/dmtx/dmtx-utils/")
|
||||
(synopsis "Utilities for working with Data Matrix barcodes")
|
||||
(description
|
||||
"libdmtx is a software library that enables programs to read and write Data
|
||||
Matrix barcodes of the modern ECC200 variety. This package, dmtx-utils,
|
||||
provides command line utilities that allow scripts and command line users to
|
||||
use libdmtx functionality.
|
||||
|
||||
This package includes the following programs:
|
||||
@enumerate
|
||||
@item @code{dmtxquery}: Extract information from dmtxread output.
|
||||
@item @code{dmtxread}: Scan Data Matrix barcodes.
|
||||
@item @code{dmtxwrite}: Create Data Matrix barcodes.
|
||||
@end enumerate")
|
||||
(license (list license:lgpl2.1 license:gpl2))))
|
||||
|
||||
;; XXX: qt variant utils are broken: zbarcam-qt fails with segmentation fault.
|
||||
(define-public zbar
|
||||
(package
|
||||
@@ -350,11 +318,12 @@ This package includes the following programs:
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(list "--disable-static"
|
||||
"--without-dbus" ;See <https://github.com/mchehab/zbar/issues/104>
|
||||
"--with-gtk=auto"
|
||||
"--with-python=auto")))
|
||||
#:configure-flags '(list "--disable-static"
|
||||
"--with-gtk=auto"
|
||||
"--with-python=auto"
|
||||
(string-append "--with-dbusconfdir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/etc"))))
|
||||
(native-inputs
|
||||
(list autoconf
|
||||
automake
|
||||
@@ -366,7 +335,8 @@ This package includes the following programs:
|
||||
pkg-config
|
||||
python-wrapper))
|
||||
(inputs
|
||||
(list imagemagick
|
||||
(list dbus
|
||||
imagemagick
|
||||
libjpeg-turbo
|
||||
perl
|
||||
python
|
||||
|
||||
+61
-147
@@ -17,11 +17,10 @@
|
||||
;;; Copyright © 2022 宋文武 <iyzsong@envs.net>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;; Copyright © 2023 Mehmet Tekman <mtekman89@gmail.com>
|
||||
;;; Copyright © 2025-2026 Sharlatan Hellseher <sharlatanus@gmail.com>
|
||||
;;; Copyright © 2025 Sharlatan Hellseher <sharlatanus@gmail.com>
|
||||
;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com>
|
||||
;;; Copyright © 2025 Skylar Hill <stellarskylark@posteo.net>
|
||||
;;; Copyright © 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2025 Andy Tai <atai@atai.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -61,7 +60,6 @@
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages java)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
@@ -269,7 +267,7 @@ the real span of the lattice.")
|
||||
(define-public pari-gp
|
||||
(package
|
||||
(name "pari-gp")
|
||||
(version "2.17.3")
|
||||
(version "2.17.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -277,7 +275,7 @@ the real span of the lattice.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jrd8q8bii109i01qjsc15948a47cn1kcg7jw0kqsijcb36lz74d"))))
|
||||
"0qahws0jmmqv3v611zdwhvg0rz5a678lhi8z51x16yzrbj7mfc3x"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list (texlive-local-tree)))
|
||||
(inputs (list gmp libx11 perl readline))
|
||||
@@ -313,7 +311,7 @@ PARI is also available as a C library to allow for faster computations.")
|
||||
(define-public gp2c
|
||||
(package
|
||||
(name "gp2c")
|
||||
(version "0.0.14pl1")
|
||||
(version "0.0.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -321,7 +319,7 @@ PARI is also available as a C library to allow for faster computations.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1g160xg8p624vg1ms7mz34zrb9132ppwwrpqi4ldqqkqzlhf0p14"))))
|
||||
"0c3v1g04mkb45xrcrxr9xzp61nnql38k6i6s77i5f14l0b614qdg"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list perl))
|
||||
(inputs (list pari-gp))
|
||||
@@ -498,20 +496,25 @@ or text interfaces) or as a C++ library.")
|
||||
(define-public flint
|
||||
(package
|
||||
(name "flint")
|
||||
(version "3.4.0")
|
||||
(version "3.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://flintlib.org/download/flint-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0csa8n7d4l3mh892q36nhiv1r7bkb168vszz79p95bfy0jc6g5wl"))))
|
||||
(base32 "0gyjbkhwrmx2vgb1gailnmmzacl4aikzgi70dzmpf8lpfxny8yya"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list ntl))
|
||||
(propagated-inputs
|
||||
(list gmp mpfr)) ; header files included by flint.h or mpfr_mat.h
|
||||
(arguments
|
||||
;; Parallel tests failed in the past on ARM, this may need to be
|
||||
;; tested again.
|
||||
`(#:parallel-tests? #f
|
||||
;; Prevent build machine specifics from ending up in the binary.
|
||||
'(#:configure-flags '("--disable-assembly")))
|
||||
#:configure-flags '("--disable-assembly")))
|
||||
(synopsis "Fast library for number theory")
|
||||
(description
|
||||
"FLINT is a C library for number theory. It supports arithmetic
|
||||
@@ -529,43 +532,31 @@ fast arithmetic.")
|
||||
(properties
|
||||
'((release-monitoring-url . "http://flintlib.org/downloads.html")))))
|
||||
|
||||
(define-public flint-3.3
|
||||
(package
|
||||
(inherit flint)
|
||||
(version "3.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://flintlib.org/download/flint-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1yzasdcv90f6w926p9g92cli2daxvb0mh2s1w1qskkvn618hxmv4"))))))
|
||||
|
||||
(define-public python-flint
|
||||
(package
|
||||
(name "python-flint")
|
||||
(version "0.8.0")
|
||||
(version "0.7.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/fredrik-johansson/python-flint")
|
||||
(commit version)))
|
||||
(url "https://github.com/fredrik-johansson/python-flint")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1xdclpxpas29v3g14z2fxqf7hv4a6iq7bknl9d9r1510dcpxm67a"))))
|
||||
(base32 "09nsys2cajxsfh2c13nf98a2kwnm0msmab9f9zcjpkndj4ir453a"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
;; tests: 905 passed
|
||||
#:test-flags #~(list "--pyargs" "flint")))
|
||||
(native-inputs
|
||||
(list pkg-config
|
||||
python-meson
|
||||
(list meson-python
|
||||
pkg-config
|
||||
python-cython
|
||||
python-pytest))
|
||||
(inputs
|
||||
(list gmp
|
||||
flint-3.3))
|
||||
flint))
|
||||
(propagated-inputs
|
||||
(list python-numpy))
|
||||
(home-page "https://fredrikj.net/python-flint/")
|
||||
@@ -627,7 +618,7 @@ matrices, and polynomials over the integers and over finite fields.")
|
||||
(define-public singular
|
||||
(package
|
||||
(name "singular")
|
||||
(version "4.4.1p5")
|
||||
(version "4.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -643,7 +634,7 @@ matrices, and polynomials over the integers and over finite fields.")
|
||||
"/singular-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1pwygpmhf4sddf1v5x5fr1kbbkb29wlfd5yyj7lryvhbs45s9rdw"))))
|
||||
"16xlhar1krlskh9gxbw1gw4qi8248c95w71vzxdw72avs2pblkva"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -805,7 +796,7 @@ a C program.")
|
||||
(native-inputs
|
||||
(list googletest
|
||||
pkg-config
|
||||
python-numpy
|
||||
python-numpy-2
|
||||
python-wrapper))
|
||||
(inputs
|
||||
(list fftw
|
||||
@@ -817,80 +808,6 @@ a C program.")
|
||||
principle, 'Keep It Simple, Stupid.'")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public kissfft-for-tflite-micro
|
||||
(package
|
||||
(inherit kissfft)
|
||||
(name "kissfft-for-tflite-micro")
|
||||
(version "130")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/mborgerding/kissfft")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
"137h3pkn6jmc3pcgnqsq481f6jjblx7ygw9gyipgcdysmnhrwiv2")
|
||||
(patches (search-patches "kissfft-tflite-micro.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(delete 'build)
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(for-each (lambda (f)
|
||||
(install-file f
|
||||
(string-append #$output "/include")))
|
||||
'("kiss_fft.h" "kissfft.hh"))
|
||||
(for-each (lambda (f)
|
||||
(install-file f
|
||||
(string-append #$output
|
||||
"/include/tools")))
|
||||
(find-files "tools"))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "make" "CC=gcc" "testall")))))))
|
||||
(native-inputs (list procps))
|
||||
(inputs (list fftw))))
|
||||
|
||||
(define-public clac
|
||||
(package
|
||||
(name "clac")
|
||||
(version "0.3.4")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/soveran/clac")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
"0crpm5rxxipiz6kqs5ip900d77vvnslyjn5f6nj0lrc86bkbgi8d")))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:test-target "test"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'set-env
|
||||
(lambda _
|
||||
(setenv "CC" "gcc")
|
||||
(setenv "PREFIX" #$output))))))
|
||||
(home-page "https://github.com/soveran/clac")
|
||||
(synopsis "Command-line, stack-based calculator with postfix notation")
|
||||
(description
|
||||
"Clac is a command line, stack-based calculator with postfix notation
|
||||
that displays the stack contents at all times. As you type, the stack
|
||||
changes are reflected immediately.")
|
||||
;; Bundles two dependencies, both also BSD-2. SDS is not yet packaged.
|
||||
;; linenoise is packaged, but the package doesn't provide shared
|
||||
;; object files so we have to build it anyway.
|
||||
(license license:bsd-2)))
|
||||
(define-public fftw
|
||||
(package
|
||||
(name "fftw")
|
||||
@@ -985,44 +902,6 @@ gnu build version."))))
|
||||
(string-append (package-description fftw)
|
||||
" With OpenMPI parallelism support."))))
|
||||
|
||||
(define-public python-pyflct
|
||||
(package
|
||||
(name "python-pyflct")
|
||||
(version "0.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "pyflct" version))
|
||||
(sha256
|
||||
(base32 "1xv4h1a4f8y3ww97g2vc7fg2scfi142vwjz556nx0r1nnpgggj41"))))
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
;; tests: 6 passed
|
||||
#:test-flags
|
||||
#~(list "--pyargs" "pyflct")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'check 'remove-local-source
|
||||
(lambda _
|
||||
(delete-file-recursively "pyflct"))))))
|
||||
(native-inputs
|
||||
(list python-cython
|
||||
python-extension-helpers
|
||||
python-pytest
|
||||
python-setuptools
|
||||
python-setuptools-scm))
|
||||
(inputs
|
||||
(list fftw))
|
||||
(propagated-inputs
|
||||
(list python-numpy
|
||||
python-packaging))
|
||||
(home-page "https://docs.sunpy.org/projects/pyflct/")
|
||||
(synopsis "Python wrapper for Fourier Local Correlation Tracking")
|
||||
(description
|
||||
"This package provides a Python wrapper for Fourier Local Correlation Tracking.")
|
||||
(license license:lgpl2.1)))
|
||||
|
||||
(define-public java-la4j
|
||||
(package
|
||||
(name "java-la4j")
|
||||
@@ -2022,14 +1901,14 @@ no more than about 20 bits long).")
|
||||
(define-public r-dtt
|
||||
(package
|
||||
(name "r-dtt")
|
||||
(version "0.1-2.1")
|
||||
(version "0.1-2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "dtt" version))
|
||||
(sha256
|
||||
(base32
|
||||
"113qb6fjp08gcmv4cgq3cm2fk6k3r3j1wfsrygq8889i2bq4a073"))))
|
||||
"0n8gj5iylfagdbaqirpykb01a9difsy4zl6qq55f0ghvazxqdvmn"))))
|
||||
(properties `((upstream-name . "dtt")))
|
||||
(build-system r-build-system)
|
||||
(home-page "https://www.r-project.org")
|
||||
@@ -2336,3 +2215,38 @@ systems. This encompasses:
|
||||
@item the computation of the dimension and the degree of the solution set.
|
||||
@end itemize")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public clac
|
||||
(package
|
||||
(name "clac")
|
||||
(version "0.3.4")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/soveran/clac")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
"0crpm5rxxipiz6kqs5ip900d77vvnslyjn5f6nj0lrc86bkbgi8d")))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:test-target "test"
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'set-env
|
||||
(lambda _
|
||||
(setenv "CC" "gcc")
|
||||
(setenv "PREFIX" #$output))))))
|
||||
(home-page "https://github.com/soveran/clac")
|
||||
(synopsis "Command-line, stack-based calculator with postfix notation")
|
||||
(description
|
||||
"Clac is a command line, stack-based calculator with postfix notation
|
||||
that displays the stack contents at all times. As you type, the stack
|
||||
changes are reflected immediately.")
|
||||
;; Bundles two dependencies, both also BSD-2. SDS is not yet packaged.
|
||||
;; linenoise is packaged, but the package doesn't provide shared
|
||||
;; object files so we have to build it anyway.
|
||||
(license license:bsd-2)))
|
||||
|
||||
+141
-139
@@ -37,7 +37,6 @@
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system android-ndk)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system copy)
|
||||
#:use-module (guix build-system emacs)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system go)
|
||||
@@ -426,7 +425,7 @@ various Android core host applications.")
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(install-file "diagnose_usb.h" (string-append (assoc-ref outputs "out") "/include"))
|
||||
#t)))))
|
||||
(native-inputs (list linux-libre-headers-5.15 gcc-11))
|
||||
(native-inputs (list linux-libre-headers-5.4 gcc-11))
|
||||
(inputs
|
||||
(list android-libbase android-libcutils android-liblog openssl))
|
||||
(home-page "https://developer.android.com/studio/command-line/adb.html")
|
||||
@@ -468,17 +467,29 @@ the corresponding @command{rsync} flags.")
|
||||
(package
|
||||
(name "mkbootimg")
|
||||
(version (android-platform-version))
|
||||
(source (android-platform-system-core version))
|
||||
(build-system copy-build-system)
|
||||
(source (origin
|
||||
(inherit (android-platform-system-core version))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:install-plan
|
||||
''(("mkbootimg/mkbootimg" "bin/")
|
||||
("mkbootimg/bootimg.h" "include/"))))
|
||||
(inputs (list python-wrapper))
|
||||
`(#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-source
|
||||
(lambda _ (chdir "mkbootimg") #t))
|
||||
(delete 'configure)
|
||||
(delete 'build)
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(include (string-append out "/include")))
|
||||
(install-file "mkbootimg" bin)
|
||||
(install-file "bootimg.h" include)
|
||||
#t))))))
|
||||
(home-page "https://developer.android.com/studio/command-line/adb.html")
|
||||
(synopsis "Tool to create Android boot images")
|
||||
(description "This package provides a tool to create Android Boot Images.")
|
||||
(description "This package provides a tool to create Android Boot
|
||||
Images.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public android-safe-iop
|
||||
@@ -972,7 +983,7 @@ The standard for the ETC1 texture format can be found at
|
||||
(define-public git-repo
|
||||
(package
|
||||
(name "git-repo")
|
||||
(version "2.60.1")
|
||||
(version "2.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -981,90 +992,88 @@ The standard for the ETC1 texture format can be found at
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (string-append "git-repo-" version "-checkout"))
|
||||
(sha256
|
||||
(base32 "1cx1b0zmvnmglyn6kbdifcy6w3gm89z2icw4pykxm0wyasy7sc1c"))))
|
||||
(build-system pyproject-build-system)
|
||||
(base32 "0khg1731927gvin73dcbw1657kbfq4k7agla5rpzqcnwkk5agzg3"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:test-flags
|
||||
#~(list
|
||||
;; XXX: Requires GnuPG.
|
||||
"--deselect=tests/test_wrapper.py::SetupGnuPG::test_full"
|
||||
;; This is expected, as the package is patched for this.
|
||||
"-k" "not test_fetches_when_stale")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'build 'set-executable-paths
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(substitute* '("repo" "git_command.py")
|
||||
(("^GIT = 'git'")
|
||||
(format #f "GIT = '~a'"
|
||||
(search-input-file inputs "/bin/git"))))
|
||||
(substitute* "git_config.py"
|
||||
((" command_base = \\['ssh',")
|
||||
(format #f " command_base = ['~a',"
|
||||
(search-input-file inputs "/bin/ssh"))))))
|
||||
(add-before 'build 'do-not-self-update
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Setting the REPO_MAIN variable to an absolute file name is
|
||||
;; enough to have _FindRepo return the store main.py file. The
|
||||
;; self update mechanism is activated with the call to _Init() in
|
||||
;; main(), so we bypass it.
|
||||
|
||||
;; Ticket requesting upstream to provide a mean to disable the
|
||||
;; self update mechanism:
|
||||
;; https://bugs.chromium.org/p/gerrit/issues/detail?id=12407.
|
||||
(let ((repo-main (string-append #$output
|
||||
"/share/git-repo/main.py")))
|
||||
(substitute* "repo"
|
||||
(("^REPO_MAIN = .*")
|
||||
(format #f "REPO_MAIN = ~s~%" repo-main))
|
||||
((" _Init\\(args, gitc_init=\\(cmd ==.*" all)
|
||||
(string-append "True #" all)))
|
||||
;; Prevent repo from trying to git describe its version from
|
||||
;; the (disabled) self updated copy.
|
||||
(substitute* "git_command.py"
|
||||
(("ver = getattr\\(RepoSourceVersion.*")
|
||||
(format #f "ver = ~s~%" #$version)))
|
||||
(substitute* "subcmds/version.py"
|
||||
(("rp_ver = .*")
|
||||
(format #f "rp_ver = ~s~%" #$version)))
|
||||
;; Prevent repo from adding its (disabled) self update copy to
|
||||
;; the list of projects to fetch when using 'repo sync'.
|
||||
(substitute* "subcmds/sync.py"
|
||||
(("to_fetch\\.extend\\(all_projects\\).*" all)
|
||||
(string-append "#" all))
|
||||
(("self\\._Fetch\\(to_fetch")
|
||||
"self._Fetch(all_projects")
|
||||
(("_PostRepoFetch\\(rp, opt\\.repo_verify).*" all)
|
||||
(string-append "pass #" all))))))
|
||||
(delete 'build) ;nothing to build
|
||||
(add-before 'check 'configure-git
|
||||
(lambda _
|
||||
(setenv "HOME" (getcwd))
|
||||
;; XXX: pytest needs this for conftest to import local modules.
|
||||
(setenv "PYTHONPATH" (getcwd))
|
||||
(invoke "git" "config" "--global" "user.email" "you@example.com")
|
||||
(invoke "git" "config" "--global" "user.name" "Your Name")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((bin-dir (string-append #$output "/bin"))
|
||||
(repo-dir (string-append #$output "/share/"
|
||||
#$name)))
|
||||
(mkdir-p bin-dir)
|
||||
(mkdir-p repo-dir)
|
||||
(copy-recursively "." repo-dir)
|
||||
(delete-file-recursively (string-append repo-dir "/tests"))
|
||||
(symlink (string-append repo-dir "/repo")
|
||||
(string-append bin-dir "/repo"))))))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'build 'set-executable-paths
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(git (assoc-ref inputs "git"))
|
||||
(ssh (assoc-ref inputs "ssh")))
|
||||
(substitute* '("repo" "git_command.py")
|
||||
(("^GIT = 'git'")
|
||||
(string-append "GIT = '" git "/bin/git'")))
|
||||
(substitute* "git_config.py"
|
||||
((" command_base = \\['ssh',")
|
||||
(string-append " command_base = ['" ssh "/bin/ssh',")))
|
||||
#t)))
|
||||
(add-before 'build 'do-not-self-update
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Setting the REPO_MAIN variable to an absolute file name is
|
||||
;; enough to have _FindRepo return the store main.py file. The
|
||||
;; self update mechanism is activated with the call to _Init() in
|
||||
;; main(), so we bypass it.
|
||||
|
||||
;; Ticket requesting upstream to provide a mean to disable the
|
||||
;; self update mechanism:
|
||||
;; https://bugs.chromium.org/p/gerrit/issues/detail?id=12407.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(repo-main (string-append out "/share/git-repo/main.py")))
|
||||
(substitute* "repo"
|
||||
(("^REPO_MAIN = .*")
|
||||
(format #f "REPO_MAIN = ~s~%" repo-main))
|
||||
((" _Init\\(args, gitc_init=\\(cmd ==.*" all)
|
||||
(string-append "True #" all)))
|
||||
;; Prevent repo from trying to git describe its version from
|
||||
;; the (disabled) self updated copy.
|
||||
(substitute* "git_command.py"
|
||||
(("ver = getattr\\(RepoSourceVersion.*")
|
||||
(format #f "ver = ~s~%" ,version)))
|
||||
(substitute* "subcmds/version.py"
|
||||
(("rp_ver = .*")
|
||||
(format #f "rp_ver = ~s~%" ,version)))
|
||||
;; Prevent repo from adding its (disabled) self update copy to
|
||||
;; the list of projects to fetch when using 'repo sync'.
|
||||
(substitute* "subcmds/sync.py"
|
||||
(("to_fetch\\.extend\\(all_projects\\).*" all)
|
||||
(string-append "#" all))
|
||||
(("self\\._Fetch\\(to_fetch")
|
||||
"self._Fetch(all_projects")
|
||||
(("_PostRepoFetch\\(rp, opt\\.repo_verify).*" all)
|
||||
(string-append "#" all))))))
|
||||
(delete 'build) ; nothing to build
|
||||
(add-before 'check 'configure-git
|
||||
(lambda _
|
||||
(setenv "HOME" (getcwd))
|
||||
(invoke "git" "config" "--global" "user.email" "you@example.com")
|
||||
(invoke "git" "config" "--global" "user.name" "Your Name")))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "./run_tests")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin-dir (string-append out "/bin"))
|
||||
(repo-dir (string-append out "/share/" ,name)))
|
||||
(mkdir-p bin-dir)
|
||||
(mkdir-p repo-dir)
|
||||
(copy-recursively "." repo-dir)
|
||||
(delete-file-recursively (string-append repo-dir "/tests"))
|
||||
(symlink (string-append repo-dir "/repo")
|
||||
(string-append bin-dir "/repo"))
|
||||
#t))))))
|
||||
(inputs
|
||||
;; TODO: Add git-remote-persistent-https once it is available in guix
|
||||
(list git openssh))
|
||||
(native-inputs (list python-pytest python-setuptools))
|
||||
`(("git" ,git)
|
||||
("ssh" ,openssh)))
|
||||
(native-inputs
|
||||
`(("pytest" ,python-pytest)))
|
||||
(home-page "https://code.google.com/p/git-repo/")
|
||||
(synopsis "Helps to manage many Git repositories")
|
||||
(description
|
||||
"Repo is a tool built on top of Git. Repo helps manage many Git
|
||||
repositories, does the uploads to revision control systems, and automates
|
||||
(description "Repo is a tool built on top of Git. Repo helps manage many
|
||||
Git repositories, does the uploads to revision control systems, and automates
|
||||
parts of the development workflow. Repo is not meant to replace Git, only to
|
||||
make it easier to work with Git. The repo command is an executable Python
|
||||
script that you can put anywhere in your path.")
|
||||
@@ -1077,7 +1086,7 @@ script that you can put anywhere in your path.")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://deb.debian.org/debian/pool/main/a/abootimg/"
|
||||
(uri (string-append "http://http.debian.net/debian/pool/main/a/abootimg/"
|
||||
"abootimg_" version ".orig.tar.gz"))
|
||||
(sha256
|
||||
(base32 "0sfc2k011l1ymv97821w89391gnqdh8pp0haz4sdcm5hx0axv2ba"))))
|
||||
@@ -1168,6 +1177,7 @@ useful for reverse engineering, analysis of Android applications and more.")
|
||||
python-croniter
|
||||
python-cryptography
|
||||
python-defusedxml
|
||||
python-importlib-metadata
|
||||
python-netifaces
|
||||
python-pytz
|
||||
python-pyyaml
|
||||
@@ -1296,58 +1306,50 @@ emulator inside the comfort of Emacs.")
|
||||
(package
|
||||
(name "enjarify")
|
||||
(version "1.0.3")
|
||||
(home-page "https://github.com/Storyyeller/enjarify")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/Storyyeller/enjarify")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(patches
|
||||
(search-patches "enjarify-setup-py.patch"))
|
||||
(sha256
|
||||
(base32 "1nam7h1g4f1h6jla4qcjjagnyvd24dv6d5445w04q8hx07nxdapk"))))
|
||||
(build-system pyproject-build-system)
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(patches
|
||||
(search-patches "enjarify-setup-py.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1nam7h1g4f1h6jla4qcjjagnyvd24dv6d5445w04q8hx07nxdapk"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'check 'fix-tests
|
||||
(lambda _
|
||||
(substitute* "enjarify/runtests.py"
|
||||
(("from \\.main") "from enjarify.main")
|
||||
(("from \\.jvm") "from enjarify.jvm"))
|
||||
;; Upstream adjusted this test in commit:
|
||||
;; 3ae884a6485af82d300515813f537685b08dd800
|
||||
(substitute* "tests/test2/expected.txt"
|
||||
(("^20") "0"))
|
||||
;; Upstream removed this argument in order to support 32-bit
|
||||
;; architectures. commit:
|
||||
;; 4be0111d879aa95fdc0d9f24fe529f8c664d4093
|
||||
(substitute* "enjarify/runtests.py"
|
||||
(("java -Xss515m") "java "))))
|
||||
(add-after 'install 'install-enjarify-wrapper
|
||||
(lambda _
|
||||
(let ((bin (string-append #$output "/bin")))
|
||||
(install-file "enjarify.sh" bin)
|
||||
(symlink (string-append bin "/enjarify.sh")
|
||||
(string-append bin "/enjarify")))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? test-flags #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "python" "-m" "enjarify.runtests")))))))
|
||||
(native-inputs
|
||||
(list openjdk12
|
||||
python-setuptools))
|
||||
(home-page "https://github.com/Storyyeller/enjarify")
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'fixup-expected-test-results
|
||||
;; Upstream adjusted this test in commit:
|
||||
;; 3ae884a6485af82d300515813f537685b08dd800
|
||||
(lambda _
|
||||
(substitute* "tests/test2/expected.txt"
|
||||
(("^20") "0"))
|
||||
#t))
|
||||
(add-before 'check 'drop-java-xss-argument
|
||||
;; Upstream removed this argument in order to support 32-bit
|
||||
;; architectures. commit: 4be0111d879aa95fdc0d9f24fe529f8c664d4093
|
||||
(lambda _
|
||||
(substitute* "enjarify/runtests.py"
|
||||
(("java -Xss515m") "java "))
|
||||
#t))
|
||||
(add-after 'install 'install-enjarify-wrapper
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out")))
|
||||
(mkdir-p (string-append out "/bin/"))
|
||||
(copy-file "enjarify.sh" (string-append out "/bin/enjarify"))
|
||||
#t))))))
|
||||
(native-inputs (list openjdk12))
|
||||
(synopsis "Translate Dalvik bytecode to equivalent Java bytecode")
|
||||
(description
|
||||
"Android applications are Java programs that run on a customized virtual
|
||||
machine, which is part of the Android operating system, the Dalvik VM. Their
|
||||
bytecode differs from the bytecode of normal Java applications. Enjarify can
|
||||
translate the Dalvik bytecode back to equivalent Java bytecode, which
|
||||
simplifies the analysis of Android applications. It's an alternative fork of
|
||||
not maintained Goole's project https://github.com/google/enjarify.")
|
||||
(description "Android applications are Java programs that run on a
|
||||
customized virtual machine, which is part of the Android operating system, the
|
||||
Dalvik VM. Their bytecode differs from the bytecode of normal Java
|
||||
applications. Enjarify can translate the Dalvik bytecode back to equivalent
|
||||
Java bytecode, which simplifies the analysis of Android applications.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public android-file-transfer
|
||||
|
||||
@@ -316,7 +316,7 @@ language.")
|
||||
;; Ensure that all required Qt plugins are found at runtime.
|
||||
(add-after 'install 'wrap-executable
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((qt '("qtbase" "qtmultimedia" "qtwayland")))
|
||||
(let ((qt '("qtbase" "qtmultimedia")))
|
||||
(wrap-program (string-append #$output "/bin/Papagayo")
|
||||
`("QT_PLUGIN_PATH" ":" prefix
|
||||
,(map (lambda (label)
|
||||
@@ -324,7 +324,7 @@ language.")
|
||||
"/lib/qt5/plugins/"))
|
||||
qt)))))))))
|
||||
(inputs
|
||||
(list bash-minimal qtbase-5 qtmultimedia-5 qtwayland-5 libsndfile))
|
||||
(list bash-minimal qtbase-5 qtmultimedia-5 libsndfile))
|
||||
(native-inputs
|
||||
(list qttools-5))
|
||||
(home-page "https://www.lostmarble.com/papagayo/")
|
||||
@@ -352,8 +352,7 @@ waveform until they line up with the proper sounds.")
|
||||
"0b1nwiwyg01087q318vymg4si76dw41ykxbn2zwd6dqbxzbpr1dh"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list bash-minimal qtbase-5 qtxmlpatterns-5 qtmultimedia-5 qtsvg-5
|
||||
qtwayland-5))
|
||||
(list bash-minimal qtbase-5 qtxmlpatterns-5 qtmultimedia-5 qtsvg-5))
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
(define-public libapparmor
|
||||
(package
|
||||
(name "libapparmor")
|
||||
(version "4.1.2")
|
||||
(version "3.1.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -50,7 +50,7 @@
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0p3vq0awvn4ar6sblmhcs0i9m7zc9kbwm3f3zcggx4lqgmy8s18b"))))
|
||||
"1h77a7ww0rxfv5nsi1iy4fffklxdr2vq6r7kdsqm15yysglhbjyi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:configure-flags
|
||||
@@ -84,7 +84,6 @@
|
||||
(chdir "libraries/libapparmor"))))))
|
||||
(native-inputs
|
||||
(list autoconf
|
||||
autoconf-archive
|
||||
automake
|
||||
bison
|
||||
dejagnu
|
||||
@@ -93,7 +92,7 @@
|
||||
perl
|
||||
python-minimal
|
||||
ruby
|
||||
swig-4.0
|
||||
swig
|
||||
which))
|
||||
(home-page "https://apparmor.net")
|
||||
(synopsis "Linux kernel security module")
|
||||
|
||||
+25
-27
@@ -40,15 +40,13 @@
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/AppImage/type2-runtime")
|
||||
(commit commit)))
|
||||
(url "https://github.com/AppImage/type2-runtime")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0954crhlbapxis96g1s0vfpf78ybr64zvjalak387ksxj560g44x"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; No tests
|
||||
#:make-flags
|
||||
#~(list "-Csrc/runtime" "runtime-fuse3"
|
||||
(string-append "CC=" #$(cc-for-target))
|
||||
@@ -62,33 +60,34 @@
|
||||
`((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(ice-9 binary-ports))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(install-file "src/runtime/runtime-fuse3"
|
||||
(string-append #$output "/bin"))))
|
||||
;; Must be after all elf reliant phases. Used to identify the
|
||||
;; executable as an AppImage as per the specification.
|
||||
(add-after 'make-dynamic-linker-cache 'set-magic-bytes
|
||||
(lambda _
|
||||
(let ((port (open (string-append #$output
|
||||
"/bin/runtime-fuse3")
|
||||
(logior O_WRONLY))))
|
||||
(seek port 8 SEEK_SET)
|
||||
(put-bytevector port #vu8(#x41 #x49 #x02))
|
||||
(close-port port)))))
|
||||
#:disallowed-references
|
||||
(list (this-package-input "squashfuse-for-appimage")
|
||||
(this-package-input "fuse")
|
||||
(gexp-input (this-package-input "zstd") "static")
|
||||
(gexp-input (this-package-input "zlib") "static"))))
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(delete 'check) ; No tests.
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(install-file "src/runtime/runtime-fuse3"
|
||||
(string-append #$output "/bin"))))
|
||||
;; Must be after all elf reliant phases. Used to identify the
|
||||
;; executable as an AppImage as per the specification.
|
||||
(add-after 'make-dynamic-linker-cache 'set-magic-bytes
|
||||
(lambda _
|
||||
(let ((port (open (string-append #$output
|
||||
"/bin/runtime-fuse3")
|
||||
(logior O_WRONLY))))
|
||||
(seek port 8 SEEK_SET)
|
||||
(put-bytevector port #vu8(#x41 #x49 #x02))
|
||||
(close-port port)))))
|
||||
#:disallowed-references (list squashfuse-for-appimage
|
||||
fuse-for-appimage
|
||||
(gexp-input zstd "static")
|
||||
(gexp-input zlib "static"))))
|
||||
;; Only needed at build time.
|
||||
(inputs (list squashfuse-for-appimage
|
||||
fuse-for-appimage
|
||||
`(,zstd "static")
|
||||
`(,zlib "static")))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://github.com/AppImage/type2-runtime")
|
||||
(synopsis "Runtime for executing AppImages")
|
||||
(description "The runtime is the executable part of every AppImage. It mounts
|
||||
the payload via @acronym{FUSE} and executes the entrypoint, allowing users to run
|
||||
@@ -97,5 +96,4 @@ ensures that the AppImage can access its bundled libraries and resources seamles
|
||||
providing a consistent environment across different Linux distributions. In the
|
||||
absence of @acronym{FUSE}, the AppImage can still be started using the
|
||||
@option{--appimage-extract-and-run} flag.")
|
||||
(home-page "https://github.com/AppImage/type2-runtime")
|
||||
(license license:expat))))
|
||||
|
||||
@@ -65,16 +65,16 @@
|
||||
(define-public arcan
|
||||
(package
|
||||
(name "arcan")
|
||||
(version "0.7.1")
|
||||
(version "0.6.3.3")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(file-name (git-file-name name version))
|
||||
(uri (git-reference
|
||||
(url "https://codeberg.org/letoram/arcan")
|
||||
(url "https://github.com/letoram/arcan")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"1sn8rljghrw57q99n9hl03pr2ndgkzg4g3p443iaslg42bmww05c"))
|
||||
"0rbswqqrgh9bkv0fzsswpkfw2zp1a7znwy0abgrxha5vpn13qd8c"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Remove some bundled packages.
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2026 Carlos Durán Domínguez <wurt@wurt.eu>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages array-languages)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system go)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages bash))
|
||||
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define-public goal
|
||||
(package
|
||||
(name "goal")
|
||||
(version "1.5.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://codeberg.org/anaseto/goal")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1ckkjd2hf2v6f8x0ck9brp1ii4q8lcssvvwn7d6l1l5n9kcfjw7n"))))
|
||||
(build-system go-build-system)
|
||||
(inputs (list bash-minimal))
|
||||
(outputs (list "out" "lib"))
|
||||
(arguments
|
||||
(list
|
||||
#:unpack-path "codeberg.org/anaseto/goal"
|
||||
#:import-path "codeberg.org/anaseto/goal/cmd/goal"
|
||||
#:build-flags
|
||||
#~(list "-tags" "full,nosse4") ;disable SSE4.2 optimizations
|
||||
#:test-flags
|
||||
#~(list "-skip" "TestSources/version.goal" ;git tests require a repo
|
||||
"-tags" "full,nosse4")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; Goal requires a shell interpreter.
|
||||
(add-after 'unpack 'fix-sh-path
|
||||
(lambda* (#:key unpack-path #:allow-other-keys)
|
||||
(substitute* (string-append "src/" unpack-path "/os/os.go")
|
||||
(("/bin/sh")
|
||||
#$(file-append bash-minimal "/bin/sh")))))
|
||||
;; Tests require the goal binary.
|
||||
(add-before 'check 'add-goal-path
|
||||
(lambda _
|
||||
(setenv "PATH"
|
||||
(string-append (getenv "PATH") ":" #$output "/bin"))))
|
||||
;; Goal is embeddable, but end users typically don't need the source
|
||||
;; code.
|
||||
(replace 'install
|
||||
(lambda* (#:key unpack-path #:allow-other-keys #:rest arguments)
|
||||
(apply (assoc-ref %standard-phases 'install)
|
||||
`(,@arguments #:import-path ,unpack-path))
|
||||
(mkdir-p #$output:lib)
|
||||
(rename-file (string-append #$output "/src")
|
||||
(string-append #$output:lib "/src"))))
|
||||
(add-after 'install 'install-goal-libs-and-documentation
|
||||
(lambda* (#:key unpack-path inputs #:allow-other-keys #:rest
|
||||
arguments)
|
||||
(let ((outdir (string-append #$output "/share/goal/"
|
||||
#$(version-major version) "/lib")))
|
||||
(mkdir-p outdir)
|
||||
(copy-recursively (string-append "src/" unpack-path "/lib")
|
||||
outdir))
|
||||
(install-file (string-append "src/" unpack-path "/docs/goal.1")
|
||||
(string-append #$output "/share/man/man1")))))))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "GOALLIB")
|
||||
(separator #f)
|
||||
(files `(,(string-append "share/goal/"
|
||||
(version-major version) "/lib"))))))
|
||||
(home-page "https://anaseto.codeberg.page/goal-docs/")
|
||||
(synopsis "Embeddable scripting array language")
|
||||
(description
|
||||
"Goal is an embeddable array programming language with a bytecode
|
||||
interpreter, written in Go. The command line intepreter can execute scripts
|
||||
or run in interactive mode. Goal shines the most in common scripting tasks,
|
||||
like handling columnar data or text processing. It is also suitable for
|
||||
exploratory programming.")
|
||||
(license license:isc)))
|
||||
|
||||
;;;
|
||||
;;; Avoid adding new packages to the end of this file. To reduce the chances
|
||||
;;; of a merge conflict, place them above in alphabetic order.
|
||||
;;;
|
||||
+7
-36
@@ -15,7 +15,7 @@
|
||||
;;; Copyright © 2021 Sergiu Ivanov <sivanov@colimite.fr>
|
||||
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
|
||||
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
|
||||
;;; Copyright © 2024, 2025 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;; Copyright © 2024 Maxim Cournoyer <maxim@guixotic.coop>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -52,7 +52,7 @@
|
||||
(define-public aspell
|
||||
(package
|
||||
(name "aspell")
|
||||
(version "0.60.8.1")
|
||||
(version "0.60.8")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -60,8 +60,9 @@
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"06yjhwlgpcvbrl5g83qjrpzjwjx7hka5lhsfc3x5gm229nri5nnn"))
|
||||
(patches (search-patches "aspell-default-dict-dir.patch"))))
|
||||
"1wi60ankalmh8ds7nplz434jd7j94gdvbahdwsr539rlad8pxdzr"))
|
||||
(patches (search-patches "aspell-default-dict-dir.patch"
|
||||
"aspell-CVE-2019-25051.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -77,7 +78,8 @@
|
||||
(substitute* "common/config.cpp"
|
||||
(("\"filter-path(.*)DICT_DIR" _ middle)
|
||||
(string-append "\"filter-path" middle
|
||||
"\"" libdir "\"")))))))))
|
||||
"\"" libdir "\"")))
|
||||
#t))))))
|
||||
(native-inputs (list perl))
|
||||
|
||||
(native-search-paths
|
||||
@@ -480,34 +482,3 @@ European languages.")
|
||||
(for-each (cut install-file <> include-dir)
|
||||
'("config.h" "defhash.h" "ispell.h"
|
||||
"libispell.h" "local.h")))))))))))))
|
||||
|
||||
(define-public spell
|
||||
(package
|
||||
(name "spell")
|
||||
(version "1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/spell/spell-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0i4pqbhzkv5y4c2j7ajx713jykxsnn4dqdcqfvzn04xkgra47hkw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-commands
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "spell.c"
|
||||
(("aspell")
|
||||
(search-input-file inputs "bin/aspell"))
|
||||
(("ispell_prog = \"ispell\"")
|
||||
(format #f "ispell_prog = ~s"
|
||||
(search-input-file inputs "bin/ispell")))))))))
|
||||
(inputs (list aspell ispell))
|
||||
(synopsis "Spell checking")
|
||||
(description
|
||||
"Spell is a command-line spell-checking program. It reads through
|
||||
a text input and prints each misspelled word on a line of its own. It is
|
||||
implemented as a wrapper for GNU aspell or ispell.")
|
||||
(home-page "https://savannah.gnu.org/projects/spell/")
|
||||
(license gpl3+)))
|
||||
|
||||
@@ -749,7 +749,24 @@ files.")
|
||||
(list
|
||||
#:tests? #f ;; XXX: insists on using bundled googletest
|
||||
#:configure-flags
|
||||
#~(list "-DBUILD_SHARED_LIBS=ON")))
|
||||
#~(list "-DBUILD_SHARED_LIBS=ON"
|
||||
#$@(let ((target (%current-target-system)))
|
||||
(if target
|
||||
(cond ((string-prefix? "arm" target)
|
||||
'("-DCMAKE_SYSTEM_PROCESSOR=arm"))
|
||||
((string-prefix? "aarch64" target)
|
||||
'("-DCMAKE_SYSTEM_PROCESSOR=aarch64"))
|
||||
((string-prefix? "i686" target)
|
||||
'("-DCMAKE_SYSTEM_PROCESSOR=x86"))
|
||||
((string-prefix? "x86_64" target)
|
||||
'("-DCMAKE_SYSTEM_PROCESSOR=x86_64"))
|
||||
;; 32-bit and 64-bit
|
||||
((string-prefix? "powerpc" target)
|
||||
'("-DCMAKE_SYSTEM_PROCESSOR=powerpc"))
|
||||
((string-prefix? "riscv64" target)
|
||||
'("-DCMAKE_SYSTEM_PROCESSOR=riscv64"))
|
||||
(else '()))
|
||||
'())))))
|
||||
(home-page "https://github.com/google/cpu_features")
|
||||
(synopsis "Cross platform C99 library to get cpu features at runtime")
|
||||
(description
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user