1
Fork 0
mirror of https://https.git.savannah.gnu.org/git/guix.git/ synced 2025-07-14 11:00:36 +02:00
Commit graph

1217 commits

Author SHA1 Message Date
Ludovic Courtès
437bb9ece5
linux-container: Do not attempt to lock mounts for ‘guix system container’.
Fixes <https://issues.guix.gnu.org/78356>.

* gnu/system/linux-container.scm (container-script): Pass #:lock-mounts? #f
to ‘call-with-container’.

Reported-by: Rutherther <rutherther@ditigal.xyz>
Change-Id: Ie670868147f32baf2c2a94c9c7b1636bc84d0a0a
2025-05-12 10:40:02 +02:00
Ludovic Courtès
94c9e53fa4
install: Do not leak local checkout URL.
Fixes <https://issues.guix.gnu.org/67707>.

Previously ‘guix describe’ in the installation image would show the
URL of the local checkout that was used to build the image.  It now
shows the default URL.

* gnu/system/install.scm (%installation-services): Change channel of
‘guix’ package to inherit from ‘%default-guix-channel’.

Change-Id: If848b5a6166904e982e0f9a0780f3e3f53bdfc28
2025-05-06 00:16:33 +02:00
Ludovic Courtès
a391394a22
linux-container: Support having a read-only root file system.
Until now, the read-only file system set up by ‘call-with-container’
would always be writable.  With this change, it can be made read-only.
With this patch, only ‘least-authority-wrapper’ switches to a read-only
root file system.

* gnu/build/linux-container.scm (remount-read-only): New procedure.
(mount-file-systems): Add #:writable-root? and #:populate-file-system
and honor them.
(run-container): Likewise.
(call-with-container): Likewise.
* gnu/system/linux-container.scm (container-script): Pass #:writable-root?
to ‘call-with-container’.
(eval/container): Add #:populate-file-system and #:writable-root? and
honor them.
* guix/scripts/environment.scm (launch-environment/container):
Pass #:writable-root? to ‘call-with-container’.
* guix/scripts/home.scm (spawn-home-container): Likewise.
* tests/containers.scm ("call-with-container, mnt namespace, read-only root")
("call-with-container, mnt namespace, writable root"): New tests.

Change-Id: I603e2fd08851338b737bb16c8af3f765e2538906
2025-05-05 14:33:59 +02:00
Ludovic Courtès
d4c3b31b86
linux-container: Add #:mounts to ‘eval/container’.
* gnu/system/linux-container.scm (eval/container): Add #:mounts
parameter and honor it.

Change-Id: I1d5970f53a3d67db93e937e392f9bf36e75d1573
2025-05-05 14:33:59 +02:00
Leo Famulari
8f885a2bb3
vm: Account for an upstream change in the name of the Cirrus kernel module.
* gnu/system/vm.scm (virtualized-operating-system): Choose the module name based
on the kernel version

Change-Id: I77d70fa44a8d5d2412ae0aaa645fa67146b76432
2025-04-27 02:29:41 -04:00
Ludovic Courtès
da741d8931
services: account: Create /var/guix/profiles/per-user/$USER.
* gnu/system/shadow.scm (account-shepherd-service): Create
/var/guix/profiles/per-user/$USER in ‘user-homes’ service.

Change-Id: I22e66e8a34d63686df9bae64c68df65c8889e72a
2025-04-20 18:50:51 +02:00
Feng Shu
2934de1447
gnu: Fix guix system vm --share argument error.
* gnu/system/vm.scm (common-qemu-options): Fix guix system vm --share argument error.

Change-Id: I4182e2dbe1b54e6eec2fb6ca53f9345f6d396f14
Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2025-04-10 01:30:38 +02:00
Zheng Junjie
0770929dde
images: visionfive2: Add support for booting from nvme.
* gnu/system/images/visionfive2.scm (visionfive2-barebones-os):
[initrd-modules]: Add mmc_block, clk-starfive-jh7110-aon,
clk-starfive-jh7110-stg, phy-jh7110-dphy-tx, pcie_starfive and nvme.

Change-Id: I1d7ced9bad7e94045ab1caa2315871cd56ca50f4
2025-04-08 14:58:19 +08:00
Zheng Junjie
082923279c
linux-initrd: Add mmc_block.
This module is required when booting from MMC block device.

* gnu/system/linux-initrd.scm (default-initrd-modules): Add mmc_block.

Change-Id: I91474a62e9d7b5be07e89f657fd59d37d061b127
2025-04-08 14:57:23 +08:00
Sören Tempel
7aa855b05b
mapped-devices/luks: Add support for --allow-discards.
* gnu/system/mapped-devices.scm (open-luks-device): Support opening
LUKS devices with the --allow-discards option.
* gnu/system/mapped-devices.scm (luks-device-mapping-with-options):
Pass through the allow-discards? keyword argument.
* doc/guix.texi (Mapped Devices): Update documentation for the
luks-device-mapping-with-options procedure.

Co-authored-by: Sisiutl <sisiutl@egregore.fun>
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: Iff82d7d548486f028d19f6aa35dd30ca194f57cc
2025-03-22 22:53:13 +09:00
Ludovic Courtès
5b4ae0b5c2
install: Use ‘shepherd-system-log-service-type’.
This is a followup to d0510dcd82, which
wrongfully assumed that this was already the case.

* gnu/system/install.scm (%installation-services): Replace
‘syslog-service-type’ by ‘shepherd-system-log-service-type’.

Change-Id: I349454b8d005c67d2c6d6b5475f74d16c9006006
2025-03-10 18:22:55 +01:00
Ludovic Courtès
5d66d005bd
vm: Export ‘file-system->mount-tag’ and ‘common-qemu-options’.
* gnu/system/vm.scm (file-system->mount-tag, common-qemu-options):
Export.

Change-Id: I7228e5c02f07f8c8633a64c86d9c81aa3cb2e8b7
2025-03-05 20:34:03 +01:00
Ludovic Courtès
9939677d15
vm: ‘common-qemu-options’ splits command-line tokens.
The result returned so far by ‘common-qemu-options’ assumed that it
would be passed to a shell.  This is the case when using
‘system-qemu-image/shared-store-script’ but possibly not in other cases.

* gnu/system/vm.scm (common-qemu-options): Add #:image-format.
[virtfs-option]: Return a list of strings instead of a single
"-virtfs xyz" string.  Update caller to use ‘append-map’.
Separate "-drive" string.

Change-Id: Ib07c27e2c4b2d222d7db2c612bb045d330bc7f68
2025-03-05 20:34:03 +01:00
Hilton Chain
2bb8ecbfbf
Revert "file-systems: %base-file-systems: Add tmpfs /run."
This reverts commit e88018be70.  Since this
change breaks current dbus-service-type, it would be better to wait
https://issues.guix.gnu.org/73494 finished.
2025-03-05 14:45:15 +08:00
Hilton Chain
e88018be70
file-systems: %base-file-systems: Add tmpfs /run.
* gnu/system/file-systems (%runtime-variable-data): New variable.
(%base-file-systems): Add it.
* doc/guix.texi (File Systems): Document it.
* gnu/services.scm (cleanup-gexp): Adjust accordingly.

Change-Id: I3a95e49d396fbb2577026aefc247cfe996c5f267
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2025-03-05 14:23:42 +09:00
Florian Pelz
7790e32556
system: default-skeleton-home-config: Include %base-home-services.
* gnu/system/shadow.scm (%default-skeleton-home-config): Follow
the news entry’s instructions to add %base-home-services.

Fixes: <https://issues.guix.gnu.org/75897>
Change-Id: Ieef976f9375791502e6156a978a032fbd4c2324d
2025-02-25 15:45:36 +01:00
Efraim Flashner
66daf46b41
gnu: Fix some misspellings.
Change-Id: I316652aff7418af4b8e83bea24638b1513f8aa97
2025-02-19 11:21:47 +02:00
Andreas Enge
9a41ec5762
gnu: guix-configuration: Add a chroot? parameter.
The parameter should take the values #t, #f or 'default.
In a container environment, 'default amounts to #f, otherwise it
amounts to #t.

* gnu/services/base.scm (guix-configuration)<chroot?>: New field.
(guix-shepherd-service): If chroot? is #f, add "--disable-chroot".
If it is #t or 'default, do nothing.
* gnu/system/linux-container.scm (containerized-operating-system):
If chroot? is 'default, replace it by #f.
* doc/guix.texi: Document the parameter.

Change-Id: I8b9c3f46ad8650fa6ed4acee947b4ae5d002d03d
2025-02-17 14:57:55 +01:00
Maxim Cournoyer
5074871043
build: marionette: Make it possible to reboot VM during tests.
* gnu/build/marionette.scm (make-marionette): Add 'reconnect=1' socket
parameter.
* gnu/system/vm.scm (common-qemu-options): Remove '-no-reboot' option.

Change-Id: I5e100543ddddba0aea3ebe4e2f5cb8b0261c0d73
2025-02-13 00:07:21 +09:00
Maxim Cournoyer
b78794f96d
system/vm: Fix virtual-machine bug.
The virtual-machine syntax would not accept a single operating-system field,
which was puzzling.

* gnu/system/vm.scm (virtual-machine): Add a pattern matching a single literal
'operating-system' field and value.

Change-Id: If207fd71df3a3f763b2e63229eafa82f63e80773
2025-02-13 00:07:21 +09:00
Yarl Baudig
41e192c922
gnu: pinebook-pro-image-type: augment partition offset.
* gnu/system/images/pinebook-pro.scm: augment partition offset
to make room for the bootloader.

Change-Id: I91a3758243a13960165d40b94efe017e6e059a22
Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2025-01-01 13:38:27 +01:00
Janneke Nieuwenhuizen
d32a5f6eed
system: examples: Fix typo in bare-hurd.tmpl.
* gnu/system/examples/bare-hurd.tmpl: Add missing line-continuation backslash.

Change-Id: Ib918cff3ca96f2a199869e876b6a75fedb09c983
2024-12-18 21:31:43 +01:00
Giacomo Leidi
3eb720bd0b
system: pam: Export pam records predicates.
* gnu/system/pam.scm: Export pam-service-name?, pam-entry? and pam-limits-entry?.

Change-Id: I609acfcaae85b4969dc385b72b307e470f5a246e
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-12-18 18:32:40 +01:00
Giacomo Leidi
a1ecd7f56c
system: Add /etc/subuid and /etc/subgid support.
This commit adds a Guix System service to handle allocation of subuid
and subgid requests.  Users that don't care can just add themselves as a
subid-range and don't need to specify anything but their user name.
Users that care about specific ranges, such as possibly LXD, can specify
a start and a count.

* doc/guix.texi (Miscellaneous Services): Document it.
* gnu/build/activation.scm (activate-subuids+subgids): New variable.
* gnu/local.mk: Add gnu/tests/shadow.scm.
* gnu/system/accounts.scm (sexp->subid-range): New variable.
* gnu/system/shadow.scm (%root-subid): New variable;
(subids-configuration): new record;
(subid-range->gexp): new variable;
(assert-valid-subids): new variable;
(delete-duplicate-ranges): new variable;
(subids-activation): new variable;
(subids-extension): new record;
(append-subid-ranges): new variable;
(subids-extension-merge): new variable;
(subids-service-type): new variable.
* gnu/tests/shadow.scm (subids): New system test.

Change-Id: I3755e1c75771220c74fe8ae5de1a7d90f2376635
Signed-off-by: Giacomo Leidi <goodoldpaul@autistici.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-12-18 18:32:40 +01:00
Giacomo Leidi
337037d22c
accounts: Add /etc/subid and /etc/subgid allocation logic.
This commit adds allocation logic for subid ranges. Subid ranges are
ranges of contiguous subids that are mapped to a user in the host
system. This patch implements a flexible allocation algorithm allowing
users that do not want (or need) to specify details of the subid ranges
that they are requesting to avoid doing so, while upholding requests of
users that need to have specific ranges.

* gnu/build/accounts.scm (%subordinate-id-min): New variable;
(%subordinate-id-max): new variable;
(%subordinate-id-count): new variable;
(subordinate-id?): new variable;
(&subordinate-id-error): new variable;
(&subordinate-id-overflow-error): new variable;
(&illegal-subid-range-error): new variable;
(&specific-subid-range-expected-error): new variable;
(&generic-subid-range-expected-error): new variable;
(within-interval?): new variable;
(allocate-unused-range): new variable;
(allocate-generic-range): new variable;
(allocate-specific-range): new variable;
(reserve-subids): new variable;
(range->entry): new variable;
(entry->range): new variable;
(allocate-subids): new variable;
(subuid+subgid-databases): new variable.

* gnu/system/accounts.scm (subid-range-end): New variable;
(subid-range-has-start?): new variable;
(subid-range-less): new variable.

* test/accounts.scm: Test them.

Change-Id: I8de1fd7cfe508b9c76408064d6f498471da0752d
Co-Authored-By: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Giacomo Leidi <goodoldpaul@autistici.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-12-18 18:32:40 +01:00
Giacomo Leidi
58f430f69e
accounts: Add /etc/subuid and /etc/subgid support.
This commit adds a new record type, <subid-entry> and serializers
and deserializers for it in (gnu build accounts).  Each instance of this
record represents one line in either /etc/subuid or /etc/subgid.  Since
Shadow uses the same representation for both files, it should be ok if
we do it as well.

This commit adds also <subid-range>, a user facing representation of
<subid-entry>. It is supposed to be usable directly in OS configurations.

* gnu/build/accounts.scm (subid-entry): New record;
(write-subgid): add serializer for subgids;
(write-subuid): add serializer for subuids;
(read-subgid): add serializer for subgids;
(read-subuid): add serializer for subuids.
* gnu/system/accounts.scm (subid-range): New record.
* test/accounts.scm: Test them.

Change-Id: I6b037e40e354c069bf556412bb5b626bd3ea1b2c
Signed-off-by: Giacomo Leidi <goodoldpaul@autistici.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-12-18 18:32:40 +01:00
Janneke Nieuwenhuizen
7c1199828b
system: examples: Update instructions in {bare,devel}-hurd64.tmpl.
* gnu/system/examples/bare-hurd64.tmpl: Remove --machine q35, there seems to
be no longer any need for this.  Mention that there is no login prompt.
* gnu/system/examples/devel-hurd64.tmpl: Likewise.

Change-Id: Ib918cff3ca96f2a199869e876b6a75fedb09c983
2024-12-18 17:00:13 +01:00
Maxim Cournoyer
2b32a38098
system/examples: Fix qemu invocation in comment of bare-hurd64.tmpl.
* gnu/system/examples/bare-hurd64.tmpl: Add missing backslash escape.

Change-Id: I84c5d37c6efb005a14f15b96432360628003d87b
2024-12-18 23:28:18 +09:00
Maxim Cournoyer
118d6429c8
system/examples: Use latest QEMU for hurd examples.
* gnu/system/examples/bare-hurd64.tmpl: Replace qemu@7 with qemu in invocation
example.
* gnu/system/examples/devel-hurd64.tmpl: Likewise.

Change-Id: I3cdbff6f68b810feff1d9b2929a323498af3fd29
2024-12-18 23:28:18 +09:00
Maxim Cournoyer
2dc4a9cca3
system/examples: Fix git clone instructions in devel-hurd64.tmpl template.
* gnu/system/examples/devel-hurd64.tmpl: Fix git clone instructions in
comment.

Change-Id: Id82f3e5d7888355507ac90e86e3bff4c27e6fba1
2024-12-18 23:28:18 +09:00
Ludovic Courtès
2a5c003c53
services: shepherd: Default to 1.0.
* gnu/services/shepherd.scm (<shepherd-configuration>)[shepherd]:
Default to SHEPHERD-1.0.
* gnu/system/hurd.scm (%base-packages/hurd): Change to SHEPHERD-1.0.

Change-Id: I7b0c3041d61a6f5d89c9d6d3caf7a8eedf5d8ca5
2024-12-09 23:15:44 +01:00
Janneke Nieuwenhuizen
bd785af995
system: examples: Add devel-hurd64.tmpl.
This also updates comments and removes the comment about a very old
`bootstrap-profile' hack.

* gnu/system/examples/devel-hurd.tmpl (hurd-packages): New variable
(%hurd-devel-os): Use it.
* gnu/system/examples/devel-hurd64.tmpl: New file.

Change-Id: I54b6b0843f0dd635d89cca483ae43d23b20d21e8
2024-12-03 08:39:01 +01:00
Janneke Nieuwenhuizen
9e2eae54f9
system: examples: Add bare-hurd64.tmpl.
* gnu/system/examples/bare-hurd.tmpl: Update comments.
* gnu/system/examples/bare-hurd64.tmpl: New file.

Change-Id: I8d26afd19afaa8fb3558948b50b0efdc0f83f29c
2024-12-03 08:39:01 +01:00
Janneke Nieuwenhuizen
de5239b675
system: image: Add hurd64 image types.
* gnu/system/hurd.scm (%hurd64-default-operating-system-kernel,
%hurd64-default-operating-system): New variables.
* gnu/system/images/hurd.scm (hurd64-disk-image, hurd64-image-type,
hurd64-qcow2-image-type, hurd64-barebones-disk-image,
hurd64-barebones-qcow2-image): New variables.

* gnu/system/images/hurd.scm (hurd64-barebones-os): New variable.
2024-12-03 08:39:00 +01:00
Florian Pelz
84d5948ee0
install: Open info manuals that have region codes.
Because pt_PT and pt_BR have many differences, such as how
the word “file” gets translated, Guix’ pt_BR info manual is
called (guix.pt_BR) instead of (guix.pt).

* gnu/system/install.scm (log-to-info): Try region coded manual
file names.
(%installation-node-names): Add node names for pt_BR and zh_CN.

Change-Id: I89beebd323ee69ca83c22321c9d9e664b32cf6f3
2024-11-20 16:01:47 +01:00
Daniel Khodabakhsh
299ddd14d8
linux-initrd: Export ‘file-system-modules’.
* gnu/system/linux-initrd.scm (file-system-modules): Export.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: I779efe280d2e3618adcae416eafc912babdce0a3
2024-11-18 10:58:42 +01:00
Janneke Nieuwenhuizen
687a2ccabc
installer: Add "Kernel" page to select the Hurd.
This adds a "Kernel" page to the installer with the option to (cross-) install
the Hurd, if applicable (only available on x86 machines for now).

* gnu/installer/newt.scm (kernel-page): New procedure.
(newt-installer)[kernel-page]: New field.
* gnu/installer/kernel.scm,
gnu/installer/newt/kernel.scm: New files.
* gnu/local.mk (INSTALLER_MODULES): Add them.
* gnu/installer.scm (installer-steps): Use them to select kernel if
applicable.
* gnu/installer/newt/partition.scm (run-label-page): Default to "msdos" when
instaling the Hurd.
(run-fs-type-page): Add ext2 for the hurd.
(run-partitioning-page-partition): Remove `entire-encrypted' option when
installing the Hurd.
* gnu/installer/services.scm (system-services->configuration): Cater for the
Hurd with %base-services/hurd, and with %base-packages/hurd that must always
be set.
(%system-services): Change to procedure.  When installing the the Hurd, do not
recommend `ntp-service-type' and USE `openssh-sans-x' package for
`openssh-service-type'.
(system-service-none): New variable.
* gnu/installer/newt/services.scm (run-network-management-page): Include it
when installing the Hurd.
(run-desktop-environments-cbt-page): When installing the Hurd, recommend to
not select any desktop enviroment.  Update users.
* gnu/installer/parted.scm (efi-installation?): Return #f when installing for
the Hurd.
(create-ext2-file-system): New procedure.
(user-fs-type-name, user-fs-type->mount-type, partition-filesystem-user-type,
format-user-partitions): Support `ext2'.
(<user-partition> partition->user-partition): Use `ext2' when installing the
Hurd.
(auto-partition!): Likewise.  No swap partition when installing the Hurd.
* gnu/installer/final.scm (install-system): Cater for cross installation of
the Hurd.
(bootloader-configuration): Use `grub-minimal-bootloader' when installing the
Hurd.
(user-partition-missing-modules): Cater for empty user-partitions.
(initrd-configuration, user-partitions->configuration): Cater for the Hurd.
* gnu/installer/steps.scm (format-configuration,
configuration->file): Cater for the Hurd.
* gnu/system/hurd.scm (%desktop-services/hurd): New variable.
* gnu/installer/tests.scm (choose-kernel): New procedure.
* gnu/tests/install.scm (gui-test-program): Use it.

Change-Id: Ifafb27b8a2f933944c77223a27ec151757237e36
2024-11-11 07:28:35 +01:00
Janneke Nieuwenhuizen
2390db7f46
system: examples: Add devel-hurd.tmpl.
This operating system specification for the Hurd creates a system that
supports building the guix package from git natively.

Do something like

    ./pre-inst-env guix system build --target=i586-pc-gnu \
       gnu/system/examples/devel-hurd.tmpl

    ./pre-inst-env guix system image --image-type=hurd-qcow2 --image-size=15G \
       --no-offload gnu/system/examples/devel-hurd.tmpl

    cp /gnu/store/...disk-image devel.img

    guix shell qemu -- qemu-system-i386 -enable-kvm -m 4096 \
     -device rtl8139,netdev=net0                            \
     -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
     -hda devel-hurd.img

    ssh -p 10022 root@localhost
    GUIX_PROFILE=/run/current-system/bootstrap-profile
    source $GUIX_PROFILE/etc/profile
    mkdir -p ~/src/guix
    cd src/guix
    git clone git://git.savannah.gnu.org/guix
    cd guix
    ./bootstrap
    ./configure --with-courage
    make

* gnu/system/examples/devel-hurd.tmpl: New file.

Change-Id: I097c7c00a9ab9602db7f8f3305827c815f308d1e
2024-11-11 07:28:33 +01:00
Janneke Nieuwenhuizen
6dbfe1a118
system: hurd: Remove qemu networking from %base-services/hurd.
This allows us to use %base-services/hurd for services in a Hurd config for a
real machine without removing static-networking.

* gnu/system/hurd.scm (%base-services/hurd): Factor networking out to...
(%base-services+qemu-networking/hurd): ..this new variable.
* gnu/system/examples/bare-hurd.tmpl (%hurd-os): Use it.
* gnu/services/virtualization.scm (%hurd-vm-operating-system): Use it.
* gnu/system/images/hurd.scm (hurd-barebones-os): Use it.  Add comment about
QEMU and networking for a real machine.

Change-Id: I777a63410383b9bf8b5740e4513dbc1e9fb0fd41
2024-11-11 07:28:33 +01:00
Roman Scherer
886b410e6f
image: Add support for btrfs.
* gnu/build/image.scm (make-btrfs-image): New variable.
* gnu/system/image.scm (system-disk-image): Support btrfs.

Change-Id: I80a5b52ec478ce5927d6208e324cbb70282c647a
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-10-14 14:08:43 +02:00
Tobias Geerinckx-Rice
7eddfea4a0
images: wsl2: Update comment.
* gnu/system/images/wsl2.scm (wsl-boot-program): Update privileged
program directory in a comment.

Change-Id: I65906cbfbcd17ff164837ad293dc4324314bfcf1
2024-09-08 02:00:00 +02:00
Tobias Geerinckx-Rice
0dd8e4c351
privilege: Add file-like->setuid-program helper.
* gnu/system/privilege.scm (file-like->setuid-program): New public
procedure.
* gnu/system/setuid.scm: Re-export it for compatibility.
(file-like->setuid-program): Remove this old version.
* gnu/services/docker.scm (singularity-setuid-programs): Use it (again).
* gnu/services/desktop.scm (enlightenment-privileged-programs): Likewise.

Change-Id: I8e41144438677a15cdadb3063651dbc780715497
2024-09-08 02:00:00 +02:00
Tobias Geerinckx-Rice
876c343bbf
uuid: Add support for exFAT.
We expect users to use the generic STRING->FAT-UUID procedure.
This is consistent with how we already treat FAT32 vs FAT16.
It is not consistent with how we export 8 different aliases for
STRING->DCE-UUID, but I'm unconvinced that would be better.

* gnu/system/uuid.scm (%uuid-parsers, %uuid-printers):
Add the ‘exfat’ file system type.

Change-Id: Ia31482716e4395f9f10f794f49fb31c9f330a2e3
2024-09-01 02:00:00 +02:00
Ludovic Courtès
9d17cda3d9
system: locale: ‘glibc-supported-locales’ uses zstd instead of xz.
This is a followup to c9666c120b.

Fixes <https://issues.guix.gnu.org/73065>.

* gnu/system/locale.scm (glibc-supported-locales): Change XZ to ZSTD.

Change-Id: Ie3cb5d50648a0698ce5246591fb405e4eb690af5
2024-09-09 17:17:55 +02:00
Josselin Poiret
ede5ae459b
gnu: %default-locale-libcs: Add glibc-2.35 and generalize for Hurd.
* gnu/system/locale.scm (%default-locale-libcs): Stop checking for Hurd, since
we have the same libc now.  Also add glibc-2.35 while the transition happens.

Change-Id: I1f4980d18184580f3a42a86ca244c8015df15269
2024-08-31 10:45:04 +02:00
Ludovic Courtès
ce40b1c655
install: Set ‘privileged-programs’ rather than ‘setuid-programs’.
* gnu/system/install.scm (installation-os)[setuid-programs]: Remove.
[privileged-programs]: New field.

Change-Id: I5c93f282f5ec790f13ac076e0ab0f6d59d92d59d
2024-08-19 16:41:07 +02:00
Ludovic Courtès
b51990057c
system: hurd: Empty default ‘privileged-programs’ list.
Fixes a bug whereby Hurd systems would find themselves including
‘%default-privileged-programs’ in addition to ‘%setuid-programs/hurd’.

* gnu/system/hurd.scm (%hurd-default-operating-system)[privileged-programs]:
New field.

Change-Id: I5b6a55a8df7e6af697d22166e9f483f6dd816e64
2024-08-19 16:36:44 +02:00
Tobias Geerinckx-Rice
71f0676a29
privilege: Add POSIX capabilities(7) support.
* gnu/system/privilege.scm (<privileged-program>): Add a field
representing the program's POSIX capabilities.
(privileged-program-capabilities): New public procedure.
* doc/guix.texi (Privileged Programs): Document it.
* gnu/build/activation.scm (activate-privileged-programs): Take a LIBCAP
package argument providing setcap(8) to apply said capabilities.
* gnu/services.scm (privileged-program->activation-gexp): Pass said
package argument where supported.  Include privileged-program-capabilities
in the compatibility hack.
2024-08-11 02:00:00 +02:00
Tobias Geerinckx-Rice
9099f8bdcc
system: (gnu system setuid) wraps (gnu system privilege).
* gnu/system/setuid.scm (setuid-program): Rewrite as syntax to create a
<privileged-program> record that is setuid by default.
(setuid-program?, setuid-program-program, setuid-program-setuid?)
(setuid-program-setgid?, setuid-program-user, setuid-program-group):
Alias their privileged-program equivalent.
2024-08-11 02:00:00 +02:00
Tobias Geerinckx-Rice
39471f2627
system: Add (gnu system privilege).
* gnu/system/privilege.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
2024-08-11 02:00:00 +02:00