1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00
Commit Graph

3524 Commits

Author SHA1 Message Date
Giacomo Leidi
bfa4e179e2 services: Support list of strings for oci-container-configuration's entrypoint.
Dockerfile's ENTRYPOINT statement supports also a list of strings. This
patch implements this behavior for oci-container-configuration.

* oci/services/containers.scm (string-or-list-of-strings?): New
procedure.
(oci-container-configuration)[entrypoint]: Change field type to
maybe-string-or-list-of-strings.
(oci-container-configuration->options): Use it.
* doc/guix.texi: Document it.

Change-Id: I1c94dec79c9f4b2324225810a7926be251bfd795
Reviewed-by: Owen T. Heisler <writer@owenh.net>
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2026-02-25 22:17:41 +00:00
Giacomo Leidi
4533da834d gnu: home: dotfiles: Files not excluded when they should.
* gnu/home/services/dotfiles.scm (%home-dotfiles-excluded): Match
content of .git directories.
(directory-contents): Match whole file-name instead of basename.
* doc/guix.texi: Document it.

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

Authored-by: Nicolas Odermatt-Lemay <nodermattlemay@gmail.com>
Change-Id: I2929fe3318e1f9f0b552c891207524dea25389ed
Signed-off-by: Cayetano Santos <csantosb@inventati.org>
2026-02-22 19:51:46 +01:00
Hugo Buddelmeijer
f333fb810d doc: Improve raid-device-mapping documentation.
* doc/guix.texi (Mapped Devices): Move examples into the mapping defvars.
Add how to load kernel modules for raid.  Add RAID cindex.

Change-Id: If2d3f3c48940d2428b36bdd85d31c8288db35f3b
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Modified-by: Ludovic Courtès <ludo@gnu.org>
Merges: #6512
2026-02-22 19:01:34 +01:00
Ludovic Courtès
ccce417a6c doc: Mention online documentation.
* doc/guix.texi (Documentation): Mention the online manual and
doc.guix.gnu.org.

Change-Id: I5abdd85fa2166890323f99a99c30136400791bdd
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #6563
2026-02-22 18:59:31 +01:00
Sughosha
f19ddd6dfe services: readymedia: Fix configurations.
* gnu/services/upnp.scm (%readymedia-default-log-directory): Remove variable.
(%readymedia-default-log-file): New procedure.
(%readymedia-default-cache-directory): Turn it into a procedure.
(<readymedia-configuration>)[log-directory]: Remove field.
[log-file]: New field.
[cache-directory]: Set to %readymedia-default-cache-directory.
(readymedia-configuration->config-file): Remove "user" and "log_dir" fields.
(readymedia-shepherd-service)[modules]: Add (shepherd support).
[start]: Do not map the log-directory. For home services, do not wrap the
program with least-authority-wrapper.
(readymedia-activation): Do not create the log-directory.
* gnu/home/services/upnp.scm (%readymedia-cache-file, %readymedia-cache-path,
%readymedia-log-path): Remove variables.
(run-readymedia-test): Use the procedures properly. Do not test the
log directory. Test the log file.
* doc/guix.texi (Miscellaneous Services)[DLNA/UPnP Services]: Update doc.

Change-Id: I97d84b5287c374ddb26a495f20a36f986b0c142d
Signed-off-by: Giacomo Leidi <therewasa@fishinthecalculator.me>
2026-02-22 17:15:16 +01:00
David Elsing
96bd726277 gexp: Add 'delayed-object'.
* guix/gexp.scm (<delayed-object>): New record type.
(delayed-object): New macro.
(delayed-object-compiler): New gexp compiler.
* tests/gexp.scm ("delayed-object"): New test.
* doc/guix.texi (G-Expressions): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-02-10 23:46:34 +01:00
Maxim Cournoyer
90b1546bc2 services: Fix logging for jami-service-type.
Its default behavior changed and it no longer logs to syslog by default;
update to log to /var/log/jami.log instead.

* gnu/services/telephony.scm (jami-configuration->command-line-arguments):
Drop /dev/log mapping. Add /var/log/jami.log mapping. Always add --console argument.
(jami-shepherd-services): Conditionally add #:log-file argument; simplify
usernames logic a bit.
* gnu/services/telephony.scm (jami-configuration): Update doc.
* doc/guix.texi (Telephony Services): Likewise.

Change-Id: Ia2819866c84db4cba92fad52dfd0a74acdc887fc
2026-02-10 18:07:49 +09:00
Wilko Meyer
eee1bfbec5 gnu: services: Add xandikos-service-type.
* gnu/services/dav.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add file.
* doc/guix.texi (DAV Services): Document the service.

Change-Id: I5345efd579f9e527eb8798397b52bf1b9b4cab56
2026-02-09 16:27:42 +01:00
Sören Tempel
64622248cd services: web: Add go-webdav.
* gnu/services/web.scm (go-webdav-service-type): New service.
(go-webdav-account-service): New variable.
(go-webdav-shepherd-service): New procedures.
* gnu/tests/web.scm (%test-go-webdav): Add tests for the service.
* doc/guix.texi (Web Services): Document it.

Signed-off-by: Danny Milosavljevic <dannym@friendly-machines.com>
2026-02-08 23:53:58 +01:00
Maxim Cournoyer
8a744a0b0c import/elpa: Add GNU-devel repository.
* guix/import/elpa.scm (%elpa-archives): Register GNU-devel archive.
* doc/guix.texi (Invoking guix import): Document it.

Change-Id: If036334477be7537ff70a62d4900427d74bc05db
2026-02-08 08:23:19 +09:00
Ludovic Courtès
f4d42db437 services: static-networking: Add ‘scope’ field to <network-route>.
* gnu/services/base.scm (assert-network-route-scope): New procedure.
(<network-route>)[scope]: New field.
(network-set-up/linux)[route-scope->constant]: New procedure.
Use it to pass #:scope to ‘route-add’.
* doc/guix.texi (Networking Setup): Document it.

Fixes: guix/guix#4175
Reported-by: Christopher Baines <mail@cbaines.net>
Change-Id: I24399eca6e691d63fa3d01be564060a3d693d650
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5507
2026-02-06 20:49:02 +01:00
Oleg Pykhalov
f86f25377a home: services: ssh: Add support for known_hosts2 file.
This commit adds a new 'known-hosts2' field to the OpenSSH home service
configuration, enabling a hybrid approach to SSH host key management.

* gnu/home/services/ssh.scm (<home-openssh-configuration>)[known-hosts2]: New field.
(openssh-configuration-files): Generate ~/.ssh/known_hosts2 when specified.
* doc/guix.texi (Secure Shell): Document new 'known-hosts2' field.

Change-Id: I1d314706eaf6af9547833020abe857f4d8c44b86
2026-02-02 15:43:22 +03:00
Clombrong
8dc57904e3 services: Add endlessh-service-type.
* docs/guix.texi: Document EndleSSH service and configuration.
* gnu/services/ssh.scm: New service.
* gnu/services/ssh.scm: Define shepherd service.

Merges: https://codeberg.org/guix/guix/pulls/5910
Co-Authored-By: Giacomo Leidi <therewasa@fishinthecalculator.me>
Change-Id: Ief4520b536276b88f2e5027ef0897bf84b2835df
Signed-off-by: Giacomo Leidi <therewasa@fishinthecalculator.me>
2026-01-27 11:46:03 +01:00
Maxim Cournoyer
cdd80c5ad7 doc: Fix typo.
* doc/guix.texi (Invoking guix import): Fix typo.

Change-Id: I4d9234ac3c4d83f64d36e7aedf4c67e9eaf79167
2026-01-27 14:27:25 +09:00
Charles Roelli
d7e71dad6d doc: Fix hello package example.
* doc/guix.texi (Defining Packages): Fix package example.

Change-Id: Ib3bf14f50a938de569b7eb1927ec18d9ee5d1e5c
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5838
2026-01-26 10:24:00 +01:00
Ludovic Courtès
0c5d65d540 transformations: Add ‘--amd-gpu’ transformation option.
* guix/transformations.scm (split-on-commas): New procedure, moved from…
(transform-package-toolchain): … here.
(package-amd-gpu-specialization, transform-package-amd-gpu-targets): New
procedures.
(%transformations, %options): Add ‘amd-gpu’.
* tests/transformations.scm ("options->transformations, amd-gpu")
("options->transformations, amd-gpu, not applicable")
("options->transformations, amd-gpu, missing clang-rocm input")
("options->transformations, amd-gpu, wrong GPU"): New tests.
* doc/guix.texi (Package Transformation Options): Document it.

Change-Id: I56bf0dffbf12bc08cf6318fe56952473b395c303
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5583
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-25 21:25:40 +01:00
Hartmut Goebel
3da67d6d68 doc: Add an URL link.
* doc/guix.texi (Services)[Telephony Services]{Jami}: Add link to the Jami
  project home-page.

Change-Id: If8e5ad61f9f36c0403e74d6926e89eb463bb009b
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-25 21:25:23 +01:00
Hartmut Goebel
b20bf71e6f doc: Small rewording.
* doc/guix.texi (Services)[Continuous Integration]: Add quotes to mark terms
  as such. Fix typo.

Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-25 21:25:22 +01:00
Hartmut Goebel
ba29ecdb84 doc: Fix an URL.
* doc/guix.texi (Services)[Desktop Services]: Fix an URL.

Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-25 21:25:22 +01:00
Andreas Enge
7f46cd4bec gnu: texlive: Deprecate in favor of texlive-scheme-full.
* gnu/packages/texlive.scm (%texlive-date, %texlive-year,
texlive-extra-src, texlive-texmf-src, texlivebin, texlivetexmf): Delete
variables.
(texlive): Redefine as texlive-scheme-full.
* gnu/packages/books.scm: Remove module inclusion.
* doc/guix.texi: Remove documentation for monolithic texlive.

Change-Id: I23837ca29cbbc080833be122972dcfe31c0fd1bb
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-25 21:17:44 +01:00
Rutherther
7c0cd7e45b Merge branch 'version-1.5.0'
Change-Id: Id73c0c74600a3da3373b3a37236b505af65bfe31
2026-01-22 13:27:13 +01:00
Danny Milosavljevic
811ee1ab9f import: nuget: Add tests and documentation.
* guix/import/nuget.scm: Prevent optimizing small functions away completely.
* tests/import/nuget.scm: New file.
* doc/guix.texi (nuget): Document it.
* Makefile.am (SCM_TESTS): Add reference to it.

Fixes: guix/guix#5483
Change-Id: Id58932fe404a11a03e61a91d3b6177b39548f1bc
2026-01-19 19:21:52 +01:00
Ludovic Courtès
2e2f80faba doc: Use markup for commands in “Upgrading Guix”.
This is a followup to d5cf3b5def.

* doc/guix.texi (Upgrading Guix): Use markup for commands.

Change-Id: I0b751ddc7f0e8e57813be23c809c23ade1e6cbd1
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
Merges: #5724
2026-01-19 18:52:31 +01:00
Ludovic Courtès
b12d80aec3 doc: Move “When you’re done” instructions right after ‘guix-install.sh’.
* doc/guix.texi (Binary Installation): Move “When you’re done” instructions
right after script execution.

Change-Id: I70c9015add401a6ad6465941f423a3c4c9ef9b24
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:29 +01:00
Ludovic Courtès
02840cc74f doc: Mention the tarball URL and clarify binary installation steps.
* doc/guix.texi (Binary Installation): Mention the tarball URL.  Clarify what
the steps do.

Change-Id: Ic929b10c29b69752fd549b78295682bdf4fb76f6
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:28 +01:00
Ludovic Courtès
6e89d38ce8 doc: Move ‘guix-install.sh’ commands upfront in “Binary Installation”.
* doc/guix.texi (Binary Installation): Move installation commands upfront.

Change-Id: Ie63837f29d5c2f25e3e50039facb8cdb12ba2f82
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:27 +01:00
Ludovic Courtès
a92a0ddaea doc: Reword introduction to ‘guix-install.sh‘.
* doc/guix.texi (Binary Installation): Reword introduction to
‘guix-install.sh’.

Change-Id: I51a1f55191cccde3800ef32a7a8ebe15f5e2c813
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:26 +01:00
Ludovic Courtès
6275c911bd doc: Link to ‘guix-install.sh’ upfront under “Binary Installation”.
* doc/guix.texi (Binary Installation): Link to the script upfront rather than
in a footnote.

Change-Id: Icd89d0e9bb0c701b6b956ce214015e5466299bf3
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:26 +01:00
Ludovic Courtès
93e1f4e363 doc: Remove ‘#’ from code snippets to allow for copy/paste.
* doc/guix.texi (Binary Installation): Remove leading ‘#’ from code snippets.

Change-Id: Id459799ffdf26da3f9ab2907ed68e0ac7eb857fc
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:25 +01:00
Ludovic Courtès
f45b68feb8 doc: Use @command for commands under “Binary Installation”.
* doc/guix.texi (Binary Installation): Use @command and @code appropriately.

Change-Id: If2d0d25a3e7e97c19f14c6f70143b5481b49b727
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:24 +01:00
Ludovic Courtès
60005904e9 doc: Move instructions about ‘guix’ from other distros to the bottom.
* doc/guix.texi (Binary Installation): Move paragraphs about ‘guix’ packages
of other distros to the bottom.

Change-Id: Ie7c3484e40fb0dbe502e81f17e2d74b7afa0e777
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:23 +01:00
Ludovic Courtès
32c28c684a doc: Remove Parabola instructions from “Binary Installation”.
This reverts 0f9fe721be.

The rationale is that there’s no reason to single out Parabola and, more
importantly, it obscures the message of this section.

* doc/guix.texi (Binary Installation): Remove Parabola instructions.

Change-Id: Ib7b2b0629d8e3a90cd09705cc2dcde15df8f51a2
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-19 18:52:22 +01:00
Simon Tournier
696b85377d doc: Rename package variants index anchor terms.
* doc/guix.texi (Package Transformation Options): Add index term and move
index term from here...
(Defining Package Variants): ...to here and add index term.

Fixes: guix/guix#2191
Change-Id: I8ed71d3db8a6c70368f9ae37d159622a5512db42
Signed-off-by: Gabriel Wicki <gabriel@erlikon.ch>
2026-01-16 00:10:43 +01:00
Christopher O'Neill
a2f6d5c4ab doc: Remove paragraph stating Xorg display server used by default.
* doc/guix.texi (Desktop Services): Remove paragraph.
(X Window): Remove corresponding anchor.
* po/doc/guix-manual.de.po, po/doc/guix-manual.fr.po: Likewise.

Change-Id: Ib545f15e51585fcc5abdb804e6d9eb0f47cb2179
Co-authored-by: Florian Pelz <pelzflorian@pelzflorian.de>
Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de>
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-15 19:07:35 +01:00
Danny Milosavljevic
ac92638bce services: Add opensnitch-service.
* gnu/services/opensnitch.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add reference to it.
* doc/guix.texi (Miscellaneous Services, Security): Document it.
* gnu/tests/security.scm (%test-opensnitch): New variable.

Change-Id: I63d1b6636b3aaecf399664ec97383d82ff1391d1
2026-01-08 01:53:57 +01:00
Christopher O'Neill
1502f231ff doc: Remove paragraph stating Xorg display server used by default.
* doc/guix.texi (Desktop Services): Remove paragraph.
(X Window): Remove corresponding anchor.
* po/doc/guix-manual.de.po, po/doc/guix-manual.fr.po: Likewise.

Change-Id: Ib545f15e51585fcc5abdb804e6d9eb0f47cb2179
Co-authored-by: Florian Pelz <pelzflorian@pelzflorian.de>
Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de>
2026-01-07 03:17:49 +01:00
Maxim Cournoyer
47af617b5c services: Add luanti-service-type.
* gnu/services/games.scm (luanti-configuration): New variable.
(%luanti-account): Likewise.
(luanti-activation): New procedure.
(luanti-shepherd-service): Likewise.
(luanti-service-type): New variable.
* gnu/tests/games.scm: New file.

Change-Id: I65a1dcf832fa8add9c9d278d82bab91ca3eef086
Reviewed-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2026-01-06 22:00:50 +09:00
Ludovic Courtès
cf005b5107 doc: Add missing double quotes in ‘mapped-device’ snippet.
* doc/guix.texi (Mapped Devices): Add missing double quotes in
‘luks-device-mapping’ example.

Change-Id: I5bcd980ec3d5d142ea37697575f539d640bc6466
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2026-01-04 12:46:57 +01:00
Ludovic Courtès
1cf00c47c0 doc: Add missing double quotes in ‘mapped-device’ snippet.
* doc/guix.texi (Mapped Devices): Add missing double quotes in
‘luks-device-mapping’ example.

Change-Id: I5bcd980ec3d5d142ea37697575f539d640bc6466
2025-12-26 00:01:43 +01:00
Rutherther
20157dae27 image: Add qcow2-gpt image type.
qcow2 is a mbr-hybrid image. But on aarch64, we
have to use grub-efi bootloader. For that bootloader,
gpt should be used and Guix errors if it isn't (due to
failed check in Guix code). So it's impossible to generate
qcow2 type aarch64 image without using customized bootloader.
One would have to define their own image instead of using
the ones pre-defined.

* gnu/system/system.scm (qcow2-gpt-image-type): New variable.
* doc/guix.texi: Document qcow2-gpt and its use.

Change-Id: I93f0880c7ca2d3f934067c12dd1143ad20828333
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-12-22 23:00:38 +01:00
Noé Lopez
587fd2dad4 etc: Add AppArmor profile for the daemon.
* .gitignore: Add etc/apparmor.d/tunables/guix.
* Makefile.am (nodist_apparmor_profile_DATA)
(nodist_apparmor_profile_tunables_DATA): Define it.
* configure.ac: Generate etc/apparmor.d/tunables/guix. Add
--with-apparmor-profile-dir option.
* etc/apparmor.d/guix-daemon: New file.
* etc/apparmor.d/tunables/guix.in: New file.
* doc/guix.texi: Document AppArmor profiles.
* gnu/packages/package-management.scm (guix): Add future changes commented.

Change-Id: Iac7df9d642383cc46a2d450c3badef31199ab041
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-12-22 22:48:57 +01:00
Ashvith Shetty
4b25873c12 services: Modernize redis service.
* gnu/services/databases.scm
(redis-configuration): Rewrite using `define-configuration'.
(redis-shepherd-service): Honor it.
* doc/guix.texi (Database Services) <redis>: Regenerate
documentation.

Change-Id: I5b99822ca3d8d23fb5133497d00eada0336d0c65
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #2158
2025-12-22 15:42:39 +01:00
Nguyễn Gia Phong
ce279acd14 doc: Fix typo.
* doc/guix.texi (Mapped Devices): Fix typo.

Change-Id: I72a5e0e651e3926def0bd5fdb67ccc01cc8a2041
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-12-22 11:00:19 +01:00
Noé Lopez
1e0eb9e8df doc: Warn about specific nologin paths when it is not in PATH.
See <https://codeberg.org/guix/guix/issues/4704#issuecomment-8751141>.

* doc/guix.texi (Build Environment Setup): Add warning in case the nologin
binary is not found.

Reported-by: FuncProgLinux
Change-Id: Ib8aa2bdaf0aef6a589afe638e2fcd539c8276ac7
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-12-20 18:21:46 +01:00
Noé Lopez
2dcf1ec33e doc: Update information on installing guix with package managers.
There is no longer a guix package in Debian.  Adapt the instructions to avoid
having to list how to install on every package manager.  The specific
instructions for Parabola are kept since it is a FSDG system.

* doc/guix.texi (Binary Installation): Remove Debian and OpenSUSE installation
instructions.  Update examples of distros with a guix package.  Add
instructions for other package managers.

Change-Id: Ie34b40d7224593df8e51d62d665a15a1b16b8e70
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-12-20 18:21:44 +01:00
Rutherther
ed1b6b5451 doc: Mention that services doing mounts should depend on user-file-systems.
This is a recent change. If the services do not depend on it, it's possible
user-file-systems will try to unmount the file systems byt itself first.

* doc/guix.texi (Shepherd Services): Mention services should depend on
user-file-systems if they do mounts.

Change-Id: I87f459aa43c2a59ffcae35750e02a08abc3c1f8a
Signed-off-by: Rutherther <rutherther@ditigal.xyz>
2025-12-20 13:37:13 +01:00
Tomas Volf
55bf53fe92 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>
2025-12-19 00:05:43 +01:00
Hugo Buddelmeijer
3bebde3481 doc: Warn that extra-special-file files persist.
* doc/guix.tex (Base Services)[extra-special-file]: Add warning regarding
special files persisting after extra-special-file call is removed from the
system config.

Change-Id: I29cb3a31ee45894293d9becf3c0ebe93ea7f0da4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #2810
2025-12-13 23:14:28 +01:00
Owen T. Heisler
94b26ff284 services: oci: Fix oci-image value field handling.
* gnu/services/containers.scm (lower-oci-image-state, oci-lowerable-image?):
Remove support for gexps and correctly lower file-like objects.
* doc/guix.texi: Remove gexp from oci-image value field description.

Fixes: guix/guix#3818
Change-Id: Ib812d65b32dd68f8572fcb371ab4521d22e5336c
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #3819
2025-12-11 15:31:09 +01:00
Ludovic Courtès
2d54198f6d doc: Add reference to Guix-Packager.
* doc/guix.texi (Defining Packages): Wrap ‘guix import’ reference
in @quotation.  Add reference to Guix-Packager.

Change-Id: I5ba1b0f66e8edd2548fb05fa6fca06d3432c7460
Signed-off-by: Gabriel Wicki <gabriel@erlikon.ch>
2025-12-08 15:34:21 +01:00