Subject: bug#48974: A possible shepherd bug (it's very minor)

From: Joshua Branson <[email-masked]>
Date: Fri, 02 Jul 2021 18:57:38 -0400

Leo Prikler <[email-masked]> writes:

> Am Freitag, den 25.06.2021, 14:06 -0400 schrieb Joshua Branson:
>> Leo Prikler <[email-masked]> writes:
>>
>> > Hi,
>> >
>> > Am Freitag, den 25.06.2021, 05:31 -0400 schrieb Joshua Branson:
>> > > Leo Prikler <[email-masked]> writes:
>>
>> Thanks again!  The current code doesn't quite work for me yet.  I'll
>> try using match-lambda to define it.  I'll post again when I have a
>> free moment.  When i get it working, I'll send a patch to the manual
>> via guix-patches and CC you.  Is that ok?  Or would you rather that
>> documentation be in the cookbook?
> Did I make a mistake or does it do the job only in a somewhat inelegant
> way?  I'm perfectly fine with the latter as I'm not the one using the
> code :P

I've got some code now that works!

#+BEGIN_SRC scheme
(define (auto-login-to-tty tty user config)
  (if (string=? tty (mingetty-configuration-tty config))
        (mingetty-configuration
         (inherit config)
         (auto-login user))
        (mingetty-configuration
         (inherit config))))

;; allegedly %desktop-services now contains network-manager-applet...?  Can I remove that?
(define %my-desktop-services
  (modify-services %desktop-services ;;end of remove services
    (mingetty-service-type config =>
                           (auto-login-to-tty "3" "joshua" config))))

#+END_SRC

> I think the cookbook is a better destination for stuff like this.

I agree, but we should also probably fix the manual:

10.1 Using the Configuration System
===================================

System Services

   For example, suppose you want to modify ‘guix-daemon’ and Mingetty
(the console log-in) in the ‘%base-services’ list (*note
‘%base-services’: Base Services.).  To do that, you can write the
following in your operating system declaration:

     (define %my-services
       ;; My very own list of services.
       (modify-services %base-services
         (guix-service-type config =>
                            (guix-configuration
                             (inherit config)
                             ;; Fetch substitutes from example.org.
                             (substitute-urls
                               (list "https://example.org/guix"
                                     "https://ci.guix.gnu.org"))))
            ;; it looks like the manual is telling you to set up
            ;; auto login on ALL ttys.
         (mingetty-service-type config =>
                                (mingetty-configuration
                                 (inherit config)
                                 ;; Automatially log in as "guest".
                                 (auto-login "guest")))))

     (operating-system
       ;; ...
       (services %my-services))

How about I delete that section in the manual about automatic login and
instead add this to the cookbook?

Section Title:  Setting up automatic login for one tty 

The interested hacker, who wishes to set up automatic login to tty three
can use the following code snippet:

#+BEGIN_SRC scheme
(define (auto-login-to-tty tty user config)
  (if (string=? tty (mingetty-configuration-tty config))
        (mingetty-configuration
         (inherit config)
         (auto-login user))
        (mingetty-configuration
         (inherit config))))

(operating-system
  (host-name "dobby")
  ...
  (services
    (cons*
      (modify-services %base-services
        (mingetty-service-type config =>
                               (auto-login-to-tty "3" "joshua" config))))
#+END_SRC

> Regards,
> Leo

--
Joshua Branson (joshuaBPMan in #guix)
Sent from Emacs and Gnus
  https://gnucode.me
  https://video.hardlimit.com/accounts/joshua_branson/video-channels
  https://propernaming.org
  "You can have whatever you want, as long as you help
enough other people get what they want." - Zig Ziglar