git: Guard against git submodules lacking a path.
* guix/git.scm (update-submodules) <directory>: Remove extraneous "/" in file
name. Only recurse when the directory exists.
Fixes: #5579
Change-Id: Ica5e5de196bd1a3d5a0a41c34162c68c0855298d
build-system: meson: Add kernel field to machine-alist.
* guix/build-system/meson.scm (make-machine-alist): Add kernel value.
Change-Id: I29b67d2ed28b693db524c798786c39e705619897
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
build-system: meson: Properly name cross files.
* guix/build-system/meson.scm (make-cross-file): Add triplet and file
extension to the cross file.
Change-Id: Ie8ba187687670ec483cf4555a832590ec3ee8809
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
build-system: meson: Change pkgconfig to pkg-config.
Meson is warning that the pkgconfig entry is deprecated.
DEPRECATION: "pkgconfig" entry is deprecated and should be replaced by "pkg-config".
* guix/build-system/meson.scm (make-binaries-alist): Replace deprecated 'pkgconfig with 'pkg-config.
Change-Id: Ic7f2ce5503661ad163c4cfe9cd307ff6175134ff
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
build-system: meson: Add windres compiler for mingw.
* guix/build-system/meson.scm (make-binaries-alist): Add windres when
compiling for mingw.
Change-Id: I7f1f34cd5129918f4aba0baf1d2742e0bfbbb751
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
import: elpa: Fix glob->regexp conversion.
* guix/import/elpa.scm (melpa-recipe->maybe-arguments)[glob->regexp]:
Treat '*' as zero or more characters.
Merges guix/guix!5408
Change-Id: I1630d17c7693a30110551e91405e1580d1e8a477
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
ssh: Add 'none' to compression for dropbear compatibility.
Without this change `guix deploy` fails the following way when connecting to a
dropbear ssh server:
guix deploy: error: failed to deploy example: SSH connection to 'example.com'
port 22 failed: kex error : no match for method compression algo
client->server: server [none], client [zlib@openssh.com,zlib]
Fixes guix/guix#5479.
* guix/ssh.scm (%compression): Add 'none' as a possible compression.
Change-Id: I4c6214035d79a4dd9a77dc1563d9614b9604a7e0
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5480
ui: It’s 2026 now!
* guix/ui.scm (show-version-and-exit): Change year to 2026.
Change-Id: I7895df5c279569e1c87104dfc0dc6a1c51c553c9
guix: lint: Check if minimal packages should be native-inputs.
* guix/lint.scm (check-inputs-should-be-native): Add minimal variants of
packages.
Change-Id: I8a05a5390092d776cb30c424b11645e650636ec0
guix: lint: Add another package to the minimal variant list.
* guix/lint.scm (check-inputs-should-use-a-minimal-variant): Add po4a.
Change-Id: Ibba2cfe0067690bd1c4c6768af4b6e1924758792
build-system: cargo: Use the correct guile-json when cross-compiling.
* guix/build-system/cargo.scm (cargo-cross-build): Use the defined
cargo-guile-json as the guile-json implementation.
Reported-by: Christopher Baines <mail@cbaines.net>
Change-Id: I270024c07eb8fff452b7671d7d45fbe37300f54d
scripts: package: Encourage unsetting GUIX_PROFILE.
GUIX_PROFILE should typically be unset, to prevent issues when sourcing
etc/profile of other profiles. So encourage it by showing it in the hint.
Followup of 50a2d73eac1577e35b526d3fc91423b97e581aef.
* guix/scripts/package.scm (display-search-path-hint): Add unset GUIX_PROFILE
to displayed hint.
Change-Id: Ie1564750017dde8bf896c79e463067699df709eb
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
Merges: #5118
guix: import: go: Sort inputs alphabetically.
* guix/import/go.scm: (go-module->guix-package): Sort propagated-inputs
alphabetically.
Change-Id: Ie21e7a819ba706c63f16ebf407ae0461780fa2d1
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
describe: Add channels to the load path right after ‘guix’.
* guix/describe.scm (append-channels-to-load-path!): Add ‘channels-scm’ and
‘channels-go’ in second position.
Fixes: guix/guix#4819
Fixes: https://issues.guix.gnu.org/74396
Reported-by: Thijs Paelman <thijs@ouroboros.rocks>
Reported-by: Tomas Volf <~@wolfsden.cz>
Change-Id: I430dd6e6e2bd9e423d47dbb310d4553f6cd7f19b
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5074
self: Install AppArmor profile.
* guix/self.scm (apparmor-tunables): New procedure.
(miscellaneous-files): Add etc/apparmor.d/{guix,guix-daemon,tunables/guix}.
Change-Id: I8952ef4097924d62432775cc39d38098785fdcdf
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
archive: Make /etc/guix/signing-key.* readable by ‘guix-daemon’.
The manual suggests running ‘guix archive --generate-key’ as root, but that
would lead to root-owned /etc/guix/signing-key.{pub,sec}, with the secret key
unreadable by the unprivileged guix-daemon. This fixes it.
Reported in guix/guix#4844.
* guix/scripts/archive.scm (generate-key-pair)[ensure-daemon-ownership]: New
procedure.
Use it for ‘%public-key-file’, ‘%private-key-file’, and their parent
directory.
Reported-by: Rutherther <rutherther@ditigal.xyz>
Change-Id: I7ae980bfd40078fb7ef27a193217b15f366d5d50
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #4958
authenticate: Report failure to load keys to the daemon.
Previously, when failing to load a signing key, ‘guix authenticate’ would
print a backtrace and exit with a non-zero code. That, in turn, would lead
the guix-daemon child process to crash with:
nix/libutil/serialise.cc:15: virtual nix::BufferedSink::~BufferedSink(): Assertion `!bufPos' failed.
This patch fixes it by reporting the error to the daemon as was intended.
* guix/scripts/authenticate.scm (guix-authenticate): Arrange to call
‘load-key-pair’ from within ‘with-reply’.
* tests/guix-authenticate.sh: Test it.
Fixes: guix/guix#4928
Reported-by: Rutherther <rutherther@ditigal.xyz>
Change-Id: I8654ad6fdfbe18c55e1e85647d0c49f408d0574a
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #4961
authenticate: Improve error replies.
* guix/scripts/authenticate.scm (guix-authenticate)[send-reply]: Wrap guard in
‘with-fluids’. Call ‘string-trim-right’ on the message string of ‘c’.
Change-Id: I6ab5f645f2dc9d6f53bb57eabb4de1df8212892f
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
scripts: system: Do not pull checkouts for same commit.
In case a user reconfigures to the same commit, do not
update cached checkout unnecessarily.
* guix/scripts/system/reconfigure.scm (channel-relations): Return early for
matching old and new commits.
Change-Id: Ia4b7300bbce40f7d809946dd3514715b74cd17f9
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
monad-repl: Add "graft?" command.
Grafts are not always required when just exploring in the REPL, and they do
take time, so this commit adds easy way to disable them.
* guix/monad-repl.scm (build-graft): New meta command.
* doc/guix.texi (Using Guix Interactively): Document it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>