summaryrefslogtreecommitdiff
path: root/gnu/system/shadow.scm
AgeCommit message (Collapse)Author
2026-02-27system: gdbinit: Save command history by default.Ludovic Courtès
By default, GDB does not save history. This improves on the default. * gnu/system/shadow.scm (%default-gdbinit): Add ‘set history’ commands. (gdb-history-placeholder): New variable. (default-skeletons): Add it. Change-Id: Ie3f9c26098066b4bd896b0593546015a1b429209 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #6559
2026-02-27system: gdbinit: Fix default ‘debug-file-directory’ for user profiles.Ludovic Courtès
This fixes a bug whereby ‘file-exists?’ would be called on tilde-prefixed directory names before tilde expansion has taken place. As a result, ~/.guix-profile and ~/.guix-home/profile would never be included in ‘debug-file-directory’. * gnu/system/shadow.scm (%default-gdbinit): Remove call to ‘file-exists?’. Change-Id: I3a6bf1fec6bfbf208679d030dd6b380b9c6a4789 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2026-02-06system: skeleton-directory: Remove special cases of directory creation.Hilton Chain
Directories have been supported in skeleton names since d9ea94dc4487fb668f98e512f96506a5eaf566c2. * gnu/system/shadow.scm (default-skeletons): Add directories to skeleton names. (skeleton-directory): Remove special cases of directory creation. Change-Id: I7918498c2ff115ad8d1f5e3472678da1db8b4f2e Signed-off-by: Hilton Chain <hako@ultrarare.space>
2025-12-03Update Giacomo's email address.Giacomo Leidi
The change was automated via: git grep -l goodoldpaul@autistici.org | xargs sed -i 's/goodoldpaul@autistici.org/therewasa@fishinthecalculator.me/g' * .mailmap: New entry. Change-Id: I1629388334695d221647afe6a14faf61af5fe0d6 Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
2025-10-23system: Set ‘HISTSIZE’ in default bashrc.Ludovic Courtès
This provides more appropriate defaults for today. This change affects /etc/bashrc, /etc/skel/.bashrc, along with ~/.bashrc for Home users. * gnu/system/shadow.scm (%default-bashrc): Set ‘HISTSIZE’. Change-Id: I4ffa7ad75c6f39f3f36d5a15ce420eae52e241e5
2025-09-18Reapply "Update Maxim's email address."Maxim Cournoyer
This reverts commit a7db92d9b389cbe565395523882c34c6eff2c21a, this time with the more careful command, to avoid a world rebuild: grep -rl --exclude-dir=build --exclude-dir=patches --exclude=ld-wrapper.in \ --exclude=sitecustomize.py --exclude=guix-emacs.el maxim.cournoyer@gmail.com | xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g' Change-Id: I0871f5cf9ace79e34e78e24154d0da6ea95a3a91
2025-09-18Revert "Update Maxim's email address."Maxim Cournoyer
This reverts commit d0d87a744d724b7e7d5ac013c586039652087bb3. Oops! This caused a world rebuild. Change-Id: I25fff644b2b61d0ee93d69b457b04c72b5b74d15
2025-09-18Update Maxim's email address.Maxim Cournoyer
The change was automated via: git grep -l maxim.cournoyer@gmail.com | xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g' * .mailmap: New entry. Change-Id: Iaa88b1e51c94159c49138fb43910badb990eb169
2025-06-27system: skeleton-directory: Create parent directory for target.Hilton Chain
This allows specifying the following skeleton, for example: --8<---------------cut here---------------start------------->8--- `((".config/test.txt" ,[...]) --8<---------------cut here---------------end--------------->8--- * gnu/system/shadow.scm (skeleton-directory): Create parent directory for target. Change-Id: I49649000bd6cdab9060f057b47a5122b17027f10
2025-06-12system: Adjust return value of bashrc.Mazin AlHaddad
Fixes a regression introduced in c743d646ee9104aa14d066cdf6657a0fac82ebea. Without this, the fish shell integration is broken, and PATH does not include ~/.config/guix/current/bin. * gnu/system/shadow.scm (%default-bashrc): Fix return value. Change-Id: I54170caeef7ae541a4901743fcdcbfb353fa09d4 Signed-off-by: Hilton Chain <hako@ultrarare.space> Modified-by: Hilton Chain <hako@ultrarare.space>
2025-05-26system: Factorize bashrc default configuration.Maxim Cournoyer
This factorizes out the remaining bashrc bits from /etc/skel/.bashrc to a the template used for both /etc/bashrc on Guix System and ~/.bashrc for home-bash-service-type. Rationale: The use of /etc/skel introduce state: the file is only copied originally when the user account is created, and never (automatically) refreshed again. * gnu/system.scm (operating-system-etc-service): <profile>: Guard against souring /etc/bashrc in non-interactive, SSH case. <bashrc>: Use %default-bashrc, having migrated the remaining definitions to... * gnu/system/shadow.scm (%default-bashrc): ... here. Factorize aliases to... * gnu/services.scm (%default-bash-aliases): ... here. (%default-bashrc-d-aliases): New variable. (%default-etc-bashrc-d-files): Include it in the default configuration. * gnu/services/base.scm (%base-services): Register etc-bashrc-d-service-type. * gnu/home/services/shells.scm (add-bash-configuration): Do not set PS1, now part of %default-bashrc. (home-bash-configuration) [guix-defaults?]: Update doc. [aliases]: Set %default-bash-aliases as the default value. Update doc. * doc/guix.texi (Shells Home Services): Update documentation. (Service Reference): Update example. Change-Id: I340c614983a78fd20a9c4a9705e7fc542ae9b513
2025-05-26gnu: bash: Define the SYS_BASHRC macro.Maxim Cournoyer
This causes Bash to treat /etc/bashrc as a startup file, removing the need to source /etc/bashrc from ~/.bashrc. * gnu/packages/bash.scm (bash-fixed): New package, with added SYS_BASHRC define. (bash) [replacement]: Use it. * gnu/system/shadow.scm (%default-bashrc): Do not source /etc/bashrc, now done implicitly. Change-Id: I5b0afd7d81653ef19c482e5501efdf7e50ef37c0
2025-05-14system: Add sgx group to %base-groups.Maxim Cournoyer
* gnu/system/shadow.scm (%base-groups): Add 'sgx' group. Fixes: <https://issues.guix.gnu.org/70278> Change-Id: I4f9e3c7751ac11f0c7a4283390223778511494f8
2025-04-20services: account: Create /var/guix/profiles/per-user/$USER.Ludovic Courtès
* gnu/system/shadow.scm (account-shepherd-service): Create /var/guix/profiles/per-user/$USER in ‘user-homes’ service. Change-Id: I22e66e8a34d63686df9bae64c68df65c8889e72a
2025-02-25system: default-skeleton-home-config: Include %base-home-services.Florian Pelz
* 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
2024-12-18system: Add /etc/subuid and /etc/subgid support.Giacomo Leidi
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-02-28system: default-bash-profile: Add Guix Home search paths as well.Florian Pelz
Ordinary .guix-profile is searched already. Also this makes desktop environments find packages installed in Guix Home. * gnu/system/shadow.scm (%default-bash-profile): Add Home search paths.
2024-01-17system: default-zprofile: Sync with home zprofile.Efraim Flashner
The removed fields are already sourced in /etc/profile. * gnu/system/shadow.scm (%default-zprofile): Sync with default zprofile from (gnu home services shells). Change-Id: I419eadf636344e23e8fd2f7006efa81f45527756
2024-01-17system: Add default guix-home-config.Efraim Flashner
* gnu/system/shadow.scm (%deafult-skeleton-home-config): New variable. (default-skeletons): Add it. Change-Id: Ida4cca8b1b3674491a4f18d94bc1b12d426575ba
2024-01-17system: Export default guile config.Efraim Flashner
* gnu/system/shadow.scm (%default-dotguile): Extract from default-skeletons, export. (default-skeletons): Use %default-dotguile. Change-Id: Ibe91b3b517ae542bd28070a08e14152f87ed75ec
2024-01-17system: Export default nanorc.Efraim Flashner
* gnu/system/shadow.scm (%default-nanorc): Extract from default-skeletons, export. (default-skeletons): Use %default-nanorc. Change-Id: I0d07b13ed4894b1152a08b96d9ef8527dde073ce
2024-01-17system: Export default gdbinit.Efraim Flashner
* gnu/system/shadow.scm (%default-gdbinit): Extract from default-skeletons, export. (default-skeletons): Use %default-gdbinit. Change-Id: Ia5188f8083a83ad4cdb96e234dbd730b1bfe0072
2024-01-17system: Export default xdefaults.Efraim Flashner
* gnu/system/shadow.scm (%default-xdefaults): Extract from default-skeletons, export. (default-skeletons): Use %default-xdefaults. Change-Id: I44018516ec3687a68d32ca5c86c41bc29507a273
2024-01-17system: Export default zprofile.Efraim Flashner
* gnu/system/shadow.scm (%default-zprofile): Extract from default-skeletons, export. (default-skeletons): Use %default-zprofile. Change-Id: I6c6e158bca2e462a2eae709fbc2c25a2c7f3f8b4
2024-01-17system: Export default bash-profile.Efraim Flashner
gnu/system/shadow.scm (%default-bash-profile): Extract from default-skeletons, export. (default-skeletons): Use %default-bash-profile. Change-Id: I45641b1091daee3495a5f92bdc1a63050e0cc59e
2023-10-06system: Modify bash skeleton to colorize 'ip' output.Bruno Victal
* gnu/system/shadow.scm (%default-bashrc): Add an alias for 'ip' that enables output colorization. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2023-06-09system: account: Fix default value.Ludovic Courtès
Fixes a regression introduced in 66ecffbeba0685ff2f1071db8aeb2393986afb97. * gnu/system/shadow.scm (account-service-type)[default-value]: Change to the empty list.
2023-05-16services: Add default values.Andrew Tropin
* gnu/services.scm (boot-service-type, activation-service-type, etc-service-type, profile-service-type): Add default-value. * gnu/system/shadow.scm (account-service-type): Add default-value.
2023-05-12system: default-skeletons: Merge search-paths of multiple profiles.宋文武
Fixes <https://issues.guix.gnu.org/20255>. * gnu/system/shadow.scm (default-skeletons)[bash_profile, zprofile]: Merge search-paths from multiple profiles via "guix package".
2023-03-07system: Update skeleton gdbinit.Efraim Flashner
* gnu/system/shadow.scm (default-skeleton): Update gdbinit to search for more debug packages in guix-home and the system profile. (skeleton-directory): Move .gdbinit to .config/gdb/gdbinit.
2023-02-08system: Source .profile in skeleton bash_profile.Andrew Tropin
Make it consistent with bash_profile generated by Guix Home. * gnu/system/shadow.scm (default-skeletons)[bash_profile]: Source .profile in skeleton bash_profile.
2023-01-05system: Define default 'PS1' in /etc/bashrc rather than ~/.bashrc.Ludovic Courtès
Users can override 'PS1' in ~/.bashrc if they wish. Previously, on Guix Home, the "default" 'PS1' would be set in ~/.bashrc when 'home-bash-configuration-guix-defaults?' is true, preventing users from overriding it via the 'environment-variables' field of 'home-bash-extension'. * gnu/system/shadow.scm (%default-bashrc): Remove 'PS1' setting. * gnu/system.scm (operating-system-etc-service): Define PS1 in /etc/bashrc. * gnu/home/services/shells.scm (add-bash-configuration): When 'home-bash-configuration-guix-defaults?' is true, add a default 'PS1' to ~/.bash_profile.
2023-01-05system, home: Factorize default '.bashrc'.Ludovic Courtès
* gnu/system/shadow.scm (%default-bashrc): New variable. Source /etc/bashrc only if it exists. (default-skeletons): Use it. * gnu/home/services/shells.scm (guix-bashrc): Remove. (add-bash-configuration): Refer to '%default-bashrc' instead.
2021-02-03Merge branch 'master' into core-updatesChristopher Baines
2021-01-20services: Do not warn, when duplicate users are eq?.Leo Prikler
* gnu/system/shadow.scm (account-activation): Delete duplicate (eq?) users and groups before transforming them to specs and asserting, that names are unique.
2021-01-20shadow: End duplicate warnings with new lines.Leo Prikler
The change from formatted message causes the line to no longer automatically be ended. This will need to be reverted once again, when duplicate names become hard errors. * gnu/system/shadow.scm (assert-unique-account-names) (assert-unique-group-names): End format strings in ~%.
2021-01-13Reapply "system: Assert, that user and group names are unique."Leo Prikler
* gnu/system/shadow.scm (assert-unique-account-names) (assert-unique-group-names): Demote formatted-message to warning.
2021-01-12Revert "system: Assert, that user and group names are unique."Jonathan Brielmaier
This reverts commit a3002104a84c60556b6616d100cb98019e48759d, which breaks certain system configurations like: $ guix system reconfigure config.scm guix system: error: the following groups appear more than once: lp
2021-01-11system: Assert, that user and group names are unique.Leo Prikler
*gnu/system/shadow.scm (find-duplicates): New variable. (assert-unique-account-names, assert-unique-group-names): New variables. (account-activation): Use them here.
2020-08-25Remove "guile-zlib" extension when unused.Mathieu Othacehe
This is a follow-up of 755f365b02b42a5d1e8ef3000dadef069553a478. As (zlib) is autoloaded in (gnu build linux-modules), "guile-zlib" is needed as an extension only when it is effectively used. * gnu/installer.scm (installer-program): Remove "guile-zlib" from the extensions. * gnu/machine/ssh.scm (machine-check-initrd-modules): Ditto. * gnu/services.scm (activation-script): Ditto. * gnu/services/base.scm (default-serial-port): Ditto, (agetty-shepherd-service): ditto, (udev-service-type): ditto. * gnu/system/image.scm (gcrypt-sqlite3&co): Ditto. * gnu/system/shadow.scm (account-shepherd-service): Ditto.
2020-08-25linux-libre: Support module compression.Mathieu Othacehe
This commit adds support for GZIP compression for linux-libre kernel modules. The initrd modules are kept uncompressed as the initrd is already compressed as a whole. The linux-libre kernel also supports XZ compression, but as Guix does not have any available bindings for now, and the compression time is far more significant, GZIP seems to be a better option. * gnu/build/linux-modules.scm (modinfo-section-contents): Use 'call-with-gzip-input-port' to read from a module file using '.gz' extension, (strip-extension): new procedure, (dot-ko): adapt to support compression, (ensure-dot-ko): ditto, (file-name->module-name): ditto, (find-module-file): ditto, (load-linux-module*): ditto, (module-name->file-name/guess): ditto, (module-name-lookup): ditto, (write-module-name-database): ditto, (write-module-alias-database): ditto, (write-module-device-database): ditto. * gnu/installer.scm (installer-program): Add "guile-zlib" to the extensions. * gnu/machine/ssh.scm (machine-check-initrd-modules): Ditto. * gnu/services.scm (activation-script): Ditto. * gnu/services/base.scm (default-serial-port): Ditto, (agetty-shepherd-service): ditto, (udev-service-type): ditto. * gnu/system/image.scm (gcrypt-sqlite3&co): Ditto. * gnu/system/linux-initrd.scm (flat-linux-module-directory): Add "guile-zlib" to the extensions and make sure that the initrd only contains uncompressed module files. * gnu/system/shadow.scm (account-shepherd-service): Add "guile-zlib" to the extensions. * guix/profiles.scm (linux-module-database): Ditto.
2020-08-16system: Modify GDB skeleton to find debug files for any profile.Maxim Cournoyer
Instead of hard coding the debug directory to that of the user profile, use Guile scripting in combination with a new search path specification on GDB to specify the debug file directories. * gnu/packages/gdb.scm (gdb-9.1): Add a search path specification for the GDB_DEBUG_FILE_DIRECTORY environment variable. * gnu/system/shadow.scm (default-skeletons)[gdbinit]: Derive the value of DEBUG-FILE-DIRECTORY via the GDB_DEBUG_FILE_DIRECTORY environment variable. * doc/guix.texi (Installing Debugging Files): Document it.
2020-05-08services: Add descriptions.Ludovic Courtès
* gnu/services/dbus.scm (polkit-service-type)[description]: New field. * gnu/services/dict.scm (dicod-service-type)[description]: New field. * gnu/services/dns.scm (knot-service-type)[description]: New field. * gnu/services/networking.scm (dhcpd-service-type)[description]: New field. * gnu/services/shepherd.scm (shepherd-root-service-type)[description]: New field. * gnu/services/xorg.scm (slim-service-type)[description]: New field. (screen-locker-service-type)[description]: New field. * gnu/system/pam.scm (pam-root-service-type)[description]: New field. * gnu/system/shadow.scm (account-service-type)[description]: New field.
2020-04-17services: account: Have 'user-processes' depend on 'user-homes'.Ludovic Courtès
Until now, 'user-homes' happened to start right after 'user-processes' and before services that depend on a home directory but the dependency was not explicit. This addresses it. * gnu/system/shadow.scm (account-service-type): Extend USER-PROCESSES-SERVICE-TYPE.
2020-04-01system: Move nanorc to XDG_CONFIG_HOME.Efraim Flashner
* gnu/system/shadow.scm (skeleton-directory): Move .nanorc to .config/nano/nanorc.
2020-03-30Revert "system: Move nanorc to XDG_CONFIG_HOME."Leo Famulari
This reverts commit bd71818df31364bbd04f3f13b3bbb251636748b4. This changed caused system reconfiguration to fail like this: ------ building /gnu/store/y1x8asbzw624ywgkpin35p1i4bqnyfy2-skel.drv... Backtrace: 4 (primitive-load "/gnu/store/2x7d0jsbgf2ndb5fsk0nj07rhsx?") In ice-9/eval.scm: 619:8 3 (_ #f) In ice-9/boot-9.scm: 260:13 2 (for-each #<procedure 7ffff6ad8100 at ice-9/eval.scm:3?> ?) In guix/build/utils.scm: 343:27 1 (_ "/gnu/store/ajrgkj1s9vdcq00drn703f4zj9dvfrsv-nanorc" ?) In unknown file: 0 (copy-file "/gnu/store/ajrgkj1s9vdcq00drn703f4zj9dvfrs?" ?) ERROR: In procedure copy-file: In procedure copy-file: No such file or directory `/gnu/store/v1grsca743phw41lyf63dzmh9nz5jlpn-bash_profile' -> `.bash_profile' `/gnu/store/xdsaw0mj6axj427hyi6ysrnsxi21n7d5-bashrc' -> `.bashrc' `/gnu/store/6i0b236dyar78zc5k5hrj5dv3vr4zb9w-zprofile' -> `.zprofile' `/gnu/store/ajrgkj1s9vdcq00drn703f4zj9dvfrsv-nanorc' -> `.config/nano/nanorc' builder for `/gnu/store/y1x8asbzw624ywgkpin35p1i4bqnyfy2-skel.drv' failed with exit code 1 ------
2020-03-30system: Move nanorc to XDG_CONFIG_HOME.Efraim Flashner
* gnu/system/shadow.scm (default-skeletons): Move .nanorc to .config/nano/nanorc.
2020-03-19gnu: system: Remove guile-wm from skeleton.Jan Nieuwenhuizen
* gnu/system/shadow.scm (default-skeletons): Remove guile-wm (especially as a dependency).
2019-04-23services: account: Make 'user-homes' a one-shot service.Ludovic Courtès
* gnu/system/shadow.scm (account-shepherd-service): Add 'one-shot?' field. Return #t from 'start'.
2019-03-07activation: Build account databases with (gnu build accounts).Ludovic Courtès
* gnu/build/activation.scm (enumerate, current-users, current-groups) (add-group, add-user, modify-user, ensure-user): Remove. (activate-users+groups)[touch, activate-user]: Remove. [make-home-directory]: New procedure. Rewrite in terms of 'user+group-databases', 'write-group', etc. * gnu/build/install.scm (directives): Remove "/root". * gnu/system/shadow.scm (account-activation): Remove (setenv "PATH" ...) expression, which is now unneeded.