<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix/gnu/home/services/shells.scm, branch master</title>
<subtitle>Transactional package manager, declarative GNU/Linux distribution, reproducible deployment tool, and more! https://guix.gnu.org</subtitle>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/'/>
<entry>
<title>home: bash: Use (negate null?) instead of (compose not null?).</title>
<updated>2026-06-01T06:44:59+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim@guixotic.coop</email>
</author>
<published>2026-06-01T06:44:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=8da24daee168dd5f861e07954f1eb0b973b986d9'/>
<id>8da24daee168dd5f861e07954f1eb0b973b986d9</id>
<content type='text'>
* gnu/home/services/shells.scm (add-bash-configuration): Use (negate null?)
instead of (compose not null?).

Change-Id: Ifbeead79a43e659db6b41bc73e444c7ea9224770
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/home/services/shells.scm (add-bash-configuration): Use (negate null?)
instead of (compose not null?).

Change-Id: Ifbeead79a43e659db6b41bc73e444c7ea9224770
</pre>
</div>
</content>
</entry>
<entry>
<title>home: services: bash: Support setting shell variables.</title>
<updated>2025-10-23T17:35:07+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2025-09-30T09:08:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=3f900442b4b3199f8601934ee1674b178858a412'/>
<id>3f900442b4b3199f8601934ee1674b178858a412</id>
<content type='text'>
* gnu/home/services.scm (shell-variable-definitions): New procedure.
* gnu/home/services/shells.scm (serialize-shell-variables): New procedure.
(home-bash-configuration)[variables]: New field.
(add-bash-configuration): Honor it.
(home-bash-extension)[variables]: New field.
(home-bash-extensions): Handle ‘variables’.
* doc/guix.texi (Shells Home Services): Update.  Change ‘PS1’ example to use
‘variables’, not ‘environment-variables’.
* doc/he-config-bare-bones.scm: Use ‘variables’ instead of ‘bash-profile’.

Change-Id: I29083d6313d10b1eb9d91eccacfb33efefe60d58
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/home/services.scm (shell-variable-definitions): New procedure.
* gnu/home/services/shells.scm (serialize-shell-variables): New procedure.
(home-bash-configuration)[variables]: New field.
(add-bash-configuration): Honor it.
(home-bash-extension)[variables]: New field.
(home-bash-extensions): Handle ‘variables’.
* doc/guix.texi (Shells Home Services): Update.  Change ‘PS1’ example to use
‘variables’, not ‘environment-variables’.
* doc/he-config-bare-bones.scm: Use ‘variables’ instead of ‘bash-profile’.

Change-Id: I29083d6313d10b1eb9d91eccacfb33efefe60d58
</pre>
</div>
</content>
</entry>
<entry>
<title>system: Factorize bashrc default configuration.</title>
<updated>2025-05-26T04:43:03+00:00</updated>
<author>
<name>Maxim Cournoyer</name>
<email>maxim.cournoyer@gmail.com</email>
</author>
<published>2025-05-08T02:03:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=c743d646ee9104aa14d066cdf6657a0fac82ebea'/>
<id>c743d646ee9104aa14d066cdf6657a0fac82ebea</id>
<content type='text'>
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):
&lt;profile&gt;: Guard against souring /etc/bashrc in non-interactive, SSH case.
&lt;bashrc&gt;: 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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):
&lt;profile&gt;: Guard against souring /etc/bashrc in non-interactive, SSH case.
&lt;bashrc&gt;: 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
</pre>
</div>
</content>
</entry>
<entry>
<title>home: services: Unset variables after profile init.</title>
<updated>2025-02-21T14:27:10+00:00</updated>
<author>
<name>Liam Hupfer</name>
<email>liam@hpfr.net</email>
</author>
<published>2025-02-06T04:24:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=50a2d73eac1577e35b526d3fc91423b97e581aef'/>
<id>50a2d73eac1577e35b526d3fc91423b97e581aef</id>
<content type='text'>
While they aren’t exported, these temporary variables show up in the
resulting shell, cluttering tab completion and declare -p.

* gnu/home/services.scm (environment-variables-&gt;setup-environment-script):
Unset shell variables.
* gnu/home/services/shells.scm (add-shell-profile-file): Likewise.

Change-Id: Ibb634849d9f38c1a9a44c0d493e92231364de958
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While they aren’t exported, these temporary variables show up in the
resulting shell, cluttering tab completion and declare -p.

* gnu/home/services.scm (environment-variables-&gt;setup-environment-script):
Unset shell variables.
* gnu/home/services/shells.scm (add-shell-profile-file): Likewise.

Change-Id: Ibb634849d9f38c1a9a44c0d493e92231364de958
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>home: services: bash: Move default PS1 prompt to bashrc</title>
<updated>2024-04-29T21:54:13+00:00</updated>
<author>
<name>Richard Sent</name>
<email>richard@freakingpenguin.com</email>
</author>
<published>2024-04-04T22:53:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=44c8ce8334ade3612747d72784fa4af9fdaa71f4'/>
<id>44c8ce8334ade3612747d72784fa4af9fdaa71f4</id>
<content type='text'>
Fixes &lt;https://issues.guix.gnu.org/70164&gt;.

* home/services/shells.scm (add-bash-configuration): Move default PS1 prompt
from .bash_profile to .bashrc.

Change-Id: Ic437458ee362cc4aa803a71c9962af866749f59a
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes &lt;https://issues.guix.gnu.org/70164&gt;.

* home/services/shells.scm (add-bash-configuration): Move default PS1 prompt
from .bash_profile to .bashrc.

Change-Id: Ic437458ee362cc4aa803a71c9962af866749f59a
Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>home: services: bash: Reorder aliases.</title>
<updated>2024-03-27T14:25:19+00:00</updated>
<author>
<name>Jason Darby</name>
<email>jasonkdarby@gmail.com</email>
</author>
<published>2024-02-22T04:10:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=0b38c9401bebb6b87093555ef3768a8e1855c938'/>
<id>0b38c9401bebb6b87093555ef3768a8e1855c938</id>
<content type='text'>
Reported in &lt;https://issues.guix.gnu.org/67652&gt;.

* home/services/shells.scm (add-bash-configuration): Reorder aliases.

Change-Id: I288856bb6befe378ca60ef78578acc069cb18532
Reported-by: Atte Torri &lt;atte.torri@universite-paris-saclay.fr&gt;
Signed-off-by: Hilton Chain &lt;hako@ultrarare.space&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reported in &lt;https://issues.guix.gnu.org/67652&gt;.

* home/services/shells.scm (add-bash-configuration): Reorder aliases.

Change-Id: I288856bb6befe378ca60ef78578acc069cb18532
Reported-by: Atte Torri &lt;atte.torri@universite-paris-saclay.fr&gt;
Signed-off-by: Hilton Chain &lt;hako@ultrarare.space&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>home: services: zsh: Use unified zprofile.</title>
<updated>2024-01-17T09:11:10+00:00</updated>
<author>
<name>Efraim Flashner</name>
<email>efraim@flashner.co.il</email>
</author>
<published>2023-12-31T10:18:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=0f967dde765cafb4cc64342beef01de49b85d38c'/>
<id>0f967dde765cafb4cc64342beef01de49b85d38c</id>
<content type='text'>
* gnu/home/services/shells.scm (zsh-file-zprofile): Use the zprofile
defined in (gnu system shadow) as a base.

Change-Id: Iaf4c4f66d1ccbc0bd0166136b3d082229bdec201
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/home/services/shells.scm (zsh-file-zprofile): Use the zprofile
defined in (gnu system shadow) as a base.

Change-Id: Iaf4c4f66d1ccbc0bd0166136b3d082229bdec201
</pre>
</div>
</content>
</entry>
<entry>
<title>gnu: home: zsh: Load environment when running via ssh</title>
<updated>2023-09-17T13:31:04+00:00</updated>
<author>
<name>Saku Laesvuori</name>
<email>saku@laesvuori.fi</email>
</author>
<published>2023-08-17T07:38:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=d2a751c14eac664e32c79613f09cf146504d433f'/>
<id>d2a751c14eac664e32c79613f09cf146504d433f</id>
<content type='text'>
* gnu/home/services/shells.scm (zsh-file-zshenv): Add snippet to source
/etc/profile when running via ssh.
(zsh-get-configuration-files): Always add .zshenv as it is never empty.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/home/services/shells.scm (zsh-file-zshenv): Add snippet to source
/etc/profile when running via ssh.
(zsh-get-configuration-files): Always add .zshenv as it is never empty.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>home: services: bash: Properly quote shell aliases.</title>
<updated>2023-07-11T13:47:56+00:00</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludovic.courtes@inria.fr</email>
</author>
<published>2023-07-06T14:53:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=7d9fdfb19d17dc99a4cf2548942c4f8ae7433572'/>
<id>7d9fdfb19d17dc99a4cf2548942c4f8ae7433572</id>
<content type='text'>
Fixes &lt;https://issues.guix.gnu.org/63048&gt;.
Reported by Ekaitz Zarraga &lt;ekaitz@elenq.tech&gt;.

* gnu/home/services.scm (with-shell-quotation-bindings): New procedure.
(environment-variable-shell-definitions): Use it instead of inline copy.
* gnu/home/services/shells.scm (bash-serialize-aliases): Use it.  Add
clause for 'literal-string?'.
* tests/guix-home.sh: Add 'aliases' to 'home-bash-extension' and test it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes &lt;https://issues.guix.gnu.org/63048&gt;.
Reported by Ekaitz Zarraga &lt;ekaitz@elenq.tech&gt;.

* gnu/home/services.scm (with-shell-quotation-bindings): New procedure.
(environment-variable-shell-definitions): Use it instead of inline copy.
* gnu/home/services/shells.scm (bash-serialize-aliases): Use it.  Add
clause for 'literal-string?'.
* tests/guix-home.sh: Add 'aliases' to 'home-bash-extension' and test it.
</pre>
</div>
</content>
</entry>
<entry>
<title>home: Add inputrc service.</title>
<updated>2023-07-05T15:57:32+00:00</updated>
<author>
<name>Efraim Flashner</name>
<email>efraim@flashner.co.il</email>
</author>
<published>2023-06-05T10:05:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.vineetk.net/guix/commit/?id=69d051f715fc2f2f56543edba22bae50bdcb36dd'/>
<id>69d051f715fc2f2f56543edba22bae50bdcb36dd</id>
<content type='text'>
* gnu/home/services/shells.scm (home-inputrc-service-type,
home-inputrc-configuration): New variables.
(serialize-inputrc-key-bindings, serialize-inputrc-variables,
serialize-inputrc-conditional-constructs,
serialize-inputrc-extra-content): New procedures.
* doc/guix.texi (Shells Home Services): Document it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* gnu/home/services/shells.scm (home-inputrc-service-type,
home-inputrc-configuration): New variables.
(serialize-inputrc-key-bindings, serialize-inputrc-variables,
serialize-inputrc-conditional-constructs,
serialize-inputrc-extra-content): New procedures.
* doc/guix.texi (Shells Home Services): Document it.
</pre>
</div>
</content>
</entry>
</feed>
