From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: Tomas Volf <~@wolfsden.cz>
Cc: 74508@debbugs.gnu.org, "Ludovic Courtès" <ludo@gnu.org>
Subject: [bug#74508] [PATCH 1/2] services: mingetty: Add additional configuration options.
Date: Mon, 25 Nov 2024 10:45:24 +0900 [thread overview]
Message-ID: <87jzcsnl1n.fsf@gmail.com> (raw)
In-Reply-To: <dea211c308de823bdd8c801807db10f77c0b54fc.1732458407.git.~@wolfsden.cz> (Tomas Volf's message of "Sun, 24 Nov 2024 15:31:32 +0100")
Hello,
Tomas Volf <~@wolfsden.cz> writes:
> Not all aspects of mingetty were configurable, so this commit adds the
> additional configuration fields to support that.
>
> It also renames the accessors for all fields except `tty'. They were named
> just `mingetty-$FIELD', instead of `mingetty-configuration-$FIELD'. However
> the renaming *is* backwards compatible, since in the define-module's #:export
> argument the correct (`mingetty-configuration-$FIELD') were used already.
> Hence, until now, there was no way to access anything except the `tty' field.
Fun, good catch! I find it odd that Guile doesn't warn or error when
exporting a symbol that isn't defined; I was bit by that recently
myself. Personally I'd have effected that correction in a distinct
commit, to keep your new functionality diff to its bare minimum
(clearer/easier to review).
> * gnu/services/base.scm (<mingetty-configuration>): Add delay, print-issue,
> print-hostname, nice, chdir, chroot fields. Rename accessors for auto-login,
> login-program, login-pause?, clear-on-logout?.
Are all these expected to be functional on Guix, e.g., the 'chroot' option?
> (mingetty-shepherd-service): Use the new fields.
> (define-module)<#:export>: Export the new accessors.
> * doc/guix.texi (Base Services)<mingetty-configuration>: Document the
> additional field.
>
> Change-Id: I4557a82498805ade0b341feda9d33eccc305690f
> ---
> doc/guix.texi | 27 ++++++++++++++++++-
> gnu/services/base.scm | 62 ++++++++++++++++++++++++++++++++++++-------
> 2 files changed, 79 insertions(+), 10 deletions(-)
>
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 1c39628ffa..d689711e80 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -19285,7 +19285,32 @@ Base Services
> will have to press a key before the log-in shell is launched.
>
> @item @code{clear-on-logout?} (default: @code{#t})
> -When set to @code{#t}, the screen will be cleared after logout.
> +When set to @code{#t}, the screen will be cleared before showing the
> +login prompt. The field name is bit unfortunate, since it controls
> +clearing also before the initial login, not just after a logout.
> +
> +@item @code{delay} (default: @code{#f})
> +When set to a number, sleep that many seconds after startup.
> +
> +@item @code{print-issue} (default: @code{#t})
> +When set to @code{#t}, write out a new line and the content of
> +@file{/etc/issue}. Value of @code{'no-nl} can be used to suppress the
> +new line.
This sounds useful. Could it be used in place of a 'motd', such as in
our hydra/berlin.scm conf (from the Guix maintenance repo), which is
currently relying on PAM to work (and doesn't currently seem to do
anything, at least on berlin, for unknown reason).
> +@item @code{print-hostname} (default: @code{#t})
> +When set to @code{#t}, print the host name before the login prompt. The
> +host name is printed up to the first dot. Can be set to @code{'long} to
> +print the full host name.
> +
> +@item @code{nice} (default: @code{#f})
> +When set to a number, change the process priority using @code{nice}.
> +
> +@item @code{chdir} (default: @code{#f})
> +When set to a string, change into that directory before calling the
> +login program.
> +
> +@item @code{chroot} (default: @code{#f})
> +When set to a string, call @code{chroot} with that directory.
>
> @item @code{mingetty} (default: @var{mingetty})
> The Mingetty package to use.
> diff --git a/gnu/services/base.scm b/gnu/services/base.scm
> index 6473e1a91a..b3d3553091 100644
> --- a/gnu/services/base.scm
> +++ b/gnu/services/base.scm
> @@ -186,7 +186,12 @@ (define-module (gnu services base)
> mingetty-configuration-login-program
> mingetty-configuration-login-pause?
> mingetty-configuration-clear-on-logout?
> - mingetty-configuration-mingetty
Why is the above accessor removed?
> + mingetty-configuration-delay
> + mingetty-configuration-print-issue
> + mingetty-configuration-print-hostname
> + mingetty-configuration-nice
> + mingetty-configuration-chdir
> + mingetty-configuration-chroot
> mingetty-configuration?
> mingetty-service ; deprecated
> mingetty-service-type
> @@ -1242,20 +1247,33 @@ (define-record-type* <mingetty-configuration>
> mingetty-configuration?
> (mingetty mingetty-configuration-mingetty ;file-like
> (default mingetty))
> - (tty mingetty-configuration-tty) ;string
> - (auto-login mingetty-auto-login ;string | #f
> + (tty mingetty-configuration-tty) ;string
> + (auto-login mingetty-configuration-auto-login ;string | #f
> (default #f))
> - (login-program mingetty-login-program ;gexp
> + (login-program mingetty-configuration-login-program ;gexp
> (default #f))
> - (login-pause? mingetty-login-pause? ;Boolean
> + (login-pause? mingetty-configuration-login-pause? ;Boolean
> (default #f))
> - (clear-on-logout? mingetty-clear-on-logout? ;Boolean
> - (default #t)))
> + (clear-on-logout? mingetty-configuration-clear-on-logout? ;Boolean
> + (default #t))
> + (delay mingetty-configuration-delay ;Integer | #f
> + (default #f))
> + (print-issue mingetty-configuration-print-issue ;Boolean | Symbol
> + (default #t))
> + (print-hostname mingetty-configuration-print-hostname ;Boolean | Symbol
> + (default #t))
> + (nice mingetty-configuration-nice ;Integer | #f
> + (default #f))
> + (chdir mingetty-configuration-chdir ;String | #f
> + (default #f))
> + (chroot mingetty-configuration-chroot ;String | #f
> + (default #f)))
>
> (define (mingetty-shepherd-service config)
> (match-record config <mingetty-configuration>
> - (mingetty tty auto-login login-program
> - login-pause? clear-on-logout?)
> + (mingetty tty auto-login login-program
> + login-pause? clear-on-logout? delay
> + print-issue print-hostname nice chdir chroot)
> (list
> (shepherd-service
> (documentation "Run mingetty on an tty.")
> @@ -1286,6 +1304,32 @@ (define (mingetty-shepherd-service config)
> #~())
> #$@(if login-pause?
> #~("--loginpause")
> + #~())
> + #$@(if delay
> + #~("--delay" #$(number->string delay))
> + #~())
> + #$@(match print-issue
> + (#t
> + #~())
> + ('no-nl
> + #~("--nonewline"))
> + (#f
> + #~("--noissue")))
> + #$@(match print-hostname
> + (#t
> + #~())
> + ('long
> + #~("--long-hostname"))
> + (#f
> + #~("--nohostname")))
> + #$@(if nice
> + #~("--nice" #$(number->string nice))
> + #~())
> + #$@(if chdir
> + #~("--chdir" #$chdir)
> + #~())
> + #$@(if chroot
> + #~("--chroot" #$chroot)
> #~()))))
> (stop #~(make-kill-destructor))))))
Neatly crafted. Could you please send a v2 with my small comments above
addressed, such as splitting in two commits, and not removing the
'mingetty-configuration-mingetty' accessor? Other than that, LGTM.
--
Thanks,
Maxim
next prev parent reply other threads:[~2024-11-25 1:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-24 14:28 [bug#74508] [PATCH 0/2] Improvements for mingetty-service-type Tomas Volf
2024-11-24 14:31 ` [bug#74508] [PATCH 1/2] services: mingetty: Add additional configuration options Tomas Volf
2024-11-25 1:45 ` Maxim Cournoyer [this message]
2024-11-25 15:37 ` Tomas Volf
2024-11-24 14:31 ` [bug#74508] [PATCH 2/2] services: mingetty: Support waiting on shepherd services Tomas Volf
2024-11-25 1:49 ` Maxim Cournoyer
2024-11-25 16:05 ` [bug#74508] [PATCH v2 1/3] services: mingetty: Add additional configuration options Tomas Volf
2024-11-25 16:05 ` [bug#74508] [PATCH v2 2/3] services: mingetty: Rename misnamed accessors Tomas Volf
2024-11-25 16:05 ` [bug#74508] [PATCH v2 3/3] services: mingetty: Support waiting on shepherd services Tomas Volf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jzcsnl1n.fsf@gmail.com \
--to=maxim.cournoyer@gmail.com \
--cc=74508@debbugs.gnu.org \
--cc=ludo@gnu.org \
--cc=~@wolfsden.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.