Subject: bug#20037: problem still persist

From: [email-masked] (Ludovic Courtès)
Date: Sun, 05 Apr 2015 23:05:34 +0200

Tomáš Čech <[email-masked]> skribis:

> I'm afraid I can reproduce it.

It’s a different problem this time.  :-)

> ----------------------%<----my-config.scm----begin---->%-------------------

[...]

>  (packages
>   (append
>    (list
>     ;; absolutely necessary
>     emacs lvm2 mc bash texinfo

(Unrelated, but I personally find it more convenient to have only core
packages in the global profile, and then have the rest in user
profiles.)

[...]

>  (services
>   (append
>    (list
>     (lsh-service #:port-number 22 #:root-login? #t #:initialize? #t)
>     (slim-service)
>     (wicd-service)
>     (avahi-service)
>     (dbus-service (list avahi wicd))
>     (mingetty-service "ttyS0"))

[...]

>    ?: 0 [symlink "/gnu/store/z95z25d73kjza99s3w95lrdsiqlcdv0a-login" ...]
>
> ERROR: In procedure symlink:
> ERROR: In procedure symlink: File exists

The culprit is the ‘mingetty-service’ call above: since it uses a #:motd
different from that used in the other ‘mingetty-service’ calls in
%base-services, the thing tries to create a different pam.d/login file
for it, but that fails because there’s already a pam.d/login file.

The workaround is to write:

    (mingetty-service "ttyS0"
                      #:motd (text-file "motd" "
This is the GNU operating system, welcome!\n\n"))

Since this is the same motd as the other mingetty services, everything
is fine.

This is of course unsatisfactory.  The more general issue is that
service procedures need to be able to share state/configuration info,
which I hope we can fix soon.

Thanks,
Ludo’.