From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id uDTQM/yv02FRZQEAgWs5BA (envelope-from ) for ; Tue, 04 Jan 2022 03:25:00 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id GOtcLPyv02HqSgEAG6o9tA (envelope-from ) for ; Tue, 04 Jan 2022 03:25:00 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id BFF9ADB61 for ; Tue, 4 Jan 2022 03:24:59 +0100 (CET) Received: from localhost ([::1]:36438 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n4ZVS-0007Fo-Kq for larch@yhetil.org; Mon, 03 Jan 2022 21:24:58 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51182) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n4ZNo-0004pd-Dw for bug-guix@gnu.org; Mon, 03 Jan 2022 21:17:07 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:53338) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n4ZNm-0008PR-Qd for bug-guix@gnu.org; Mon, 03 Jan 2022 21:17:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1n4ZNm-00084H-HL for bug-guix@gnu.org; Mon, 03 Jan 2022 21:17:02 -0500 X-Loop: help-debbugs@gnu.org Subject: bug#52908: 'tests/guix-system.sh' fails on aarch64-linux Resent-From: Chris Marusich Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Tue, 04 Jan 2022 02:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52908 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Leo Famulari , Aiko Kyle Received: via spool by 52908-submit@debbugs.gnu.org id=B52908.164126258230948 (code B ref 52908); Tue, 04 Jan 2022 02:17:02 +0000 Received: (at 52908) by debbugs.gnu.org; 4 Jan 2022 02:16:22 +0000 Received: from localhost ([127.0.0.1]:36651 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n4ZMv-00082s-Qh for submit@debbugs.gnu.org; Mon, 03 Jan 2022 21:16:22 -0500 Received: from mail-pg1-f171.google.com ([209.85.215.171]:46981) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n4ZMp-000823-P7 for 52908@debbugs.gnu.org; Mon, 03 Jan 2022 21:16:08 -0500 Received: by mail-pg1-f171.google.com with SMTP id i8so22930462pgt.13 for <52908@debbugs.gnu.org>; Mon, 03 Jan 2022 18:16:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=5gltP0rVW7XfNnKcG9LWiTY5/iSuNdCxTYjqFm6vUeU=; b=BuiMRZ3eqFthavsn+DYn53jctl/pA7cIQwEwE8rom5ypuDpIUeCM2eAKJ294yqtfFn r2a3TPK/jPbp3iUsgh5rz/pojc1fPD/gMxZd7iIV8B7caFZzw10VJmyCN4kGMEUy8avF RALy1mLnCyV4UeFEejeum3oQQ5EtWzbD84VHb22FXzcDCYxCLkJwSexy09NDl4/WbBnA PTDQuvvpkDe32MdXNYmKlAun85+Dfc9m/sEcTJK0u76A5BKWI5mjrtx2uNSxd5fyEpYN 6Zx6DfopW6r2JjHRxx54utX1vfUxMrmvAA16DRElH4uABhrE+5VzSp2o9yspoUL+boDK zI9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=5gltP0rVW7XfNnKcG9LWiTY5/iSuNdCxTYjqFm6vUeU=; b=cIssKKlSmgiuQV4hmD59uhBgQSVIVpBhZ7/jEAGzvXNCDORHkuXKPwrwpbftgbt1M4 iX4uwUyRP3jfGWOdUYCggYOM7Nqt3KMUskw6HJdbjEJS/nxpBKrEr4X3nTa6g3SFroGC kPQ2AgkqAHm1ID3f8pcZ4uzfeOrW7Gfhup5H7+pcqgLSHQi7oBsKpbyEn+8jDQ8g41pG vCOUBaZtucMGMZ0b2ea6sNpG9HoMKzgsipUAU5ny+YQZZPjZUduihrI5iotKRhk4mmjI 2/rjMl5snPhnxJLLqLbkE5nh824qdiXbHKfswP7GiyTK7Qs92zOQg6/VXBWz4JghhPQd QBeA== X-Gm-Message-State: AOAM530f0b6UveYG7Fp7g8evNAKrN/3r5+K04EYPxOkcqSZQMk3LimbP ydEJZ5IkiRjpsrHToksCuUkksdQm+vA= X-Google-Smtp-Source: ABdhPJz89Pg06wDrUjshaqK8LJDSCdEKSce/floRHT9KlB8HgPJXYCCHF4IsL8I6tZbmsCjeEExbHw== X-Received: by 2002:a05:6a00:1592:b0:4bb:361b:b381 with SMTP id u18-20020a056a00159200b004bb361bb381mr49653036pfk.33.1641262557682; Mon, 03 Jan 2022 18:15:57 -0800 (PST) Received: from garuda-lan (c-24-18-44-142.hsd1.wa.comcast.net. [24.18.44.142]) by smtp.gmail.com with ESMTPSA id 13sm40438956pfm.161.2022.01.03.18.15.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Jan 2022 18:15:57 -0800 (PST) From: Chris Marusich References: Date: Mon, 03 Jan 2022 18:15:52 -0800 In-Reply-To: (Leo Famulari's message of "Thu, 30 Dec 2021 18:52:57 -0500") Message-ID: <87wnjgqm93.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: 52908@debbugs.gnu.org Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1641263100; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=5gltP0rVW7XfNnKcG9LWiTY5/iSuNdCxTYjqFm6vUeU=; b=jhKMPtOicaL4MbWM/PnOw5Eu28HmO1BxuqkyXATDqPggeRT5qL5cBvYjU83gu2wx56YEpf PrKE8o64yxUpum6Zd0eaGw79GCEexMoxFMZ9nuzzlB18tf08ITLBYup7Jn9tQ1hGmZsBR3 zkMCljPdcJcjF97zyNz84ADvQ6VKMWyFex+SyajRdPbBSA3TXmo8Z7cRnUwD/7LQ1L3ksp LHN7xoDy5lVdc4Fl/rb1cdehklZomepkqGq0r7Oke/NJEMuBKtvnktG0KkcaASypugDbma FuSrvZNf83W6lf4VAOU6fWE5iqlnBFc1gwvF5hwZHVEWdnVxYf+YVNZIP/ttTA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1641263100; a=rsa-sha256; cv=none; b=osonl+EzUPUMCGDyis+pKK6SP+BhWeE7LiFWQVUn/ne4W/lJgX5dWMtiMhqZXi8iHrI7P4 e5P3Y36SV/nzHB9tssE0a1aCd2Xyl8G/UC0bgfrd6Kp40KnDe3TzqI2kTPZxNuK1NuZ8+z vQzRrBUVAomu54NDVjoJfjmiVJOsGRzkuCqiDAFIiP6a2BHFDw8/teN0zFTsE/QZaghbeS CFHRe28uKSolTemp6Sw4BHPNPTgKCoYzfgLvtqeUke6w1m++5VUSpHJ+yWq02t8ykvR9fG wi33LFFAmpAnHYKT3YBeoIEx7gT5X7iItAMQ75nTWrE0uqd2aieYFNbtjwhQbA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=BuiMRZ3e; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -4.09 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=BuiMRZ3e; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: BFF9ADB61 X-Spam-Score: -4.09 X-Migadu-Scanner: scn1.migadu.com X-TUID: q2xAHgP2AZiN --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi Leo and Aiko, This issue also affects powerpc64le-linux. Aiko's patch would indeed fix the failing test. Thank you, Aiko, for taking the initiative to help investigate and solve the issue! However, even though that patch would fix the test, anyone who is using set-xorg-configuration on a non-x86_64 system would still need to change the way they call it, which is not ideal. I've attached a different patch that attempts to fix the issue without requiring callers of set-xorg-configuration to update their code. I believe this is more consistent with the intent of Ludo's original change in commit 49599fab564f203b8e92d32e9b28c99e99849bfb. You'll notice that this patch moves the (gnu services sddm) code into (gnu services xorg) and deprecates (gnu services sddm). I did this in order to avoid a circular dependency between the two modules. Perhaps there's a better way. However, many of the existing display managers already live in (gnu services xorg), so it seemed reasonable to me. I've verified that the tests/guix-system.sh test passes on powerpc64le-linux after applying this patch to current master branch (on top of commit 9309b488ca4ceef4fcc9283546e3b05c57b16ca8). I've also verified that the deprecation warnings are being emitted, and that the existing bindings in (gnu services sddm) are still usable, at the REPL: =2D-8<---------------cut here---------------start------------->8--- $ ./pre-inst-env guix repl GNU Guile 3.0.7 Copyright (C) 1995-2021 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guix-user)> ,use (gnu services sddm) scheme@(guix-user)> (sddm-configuration) guix repl: warning: 'sddm-configuration' is deprecated, use '(@ (gnu servic= es xorg) sddm-configuration)' instead $1 =3D #< sddm: [... omitted for brevity ...] scheme@(guix-user)> (sddm-configuration? $1) guix repl: warning: 'sddm-configuration?' is deprecated, use '(@ (gnu servi= ces xorg) sddm-configuration?)' instead $2 =3D #t scheme@(guix-user)> sddm-service-type guix repl: warning: 'sddm-service-type' is deprecated, use '(@ (gnu service= s xorg) sddm-service-type)' instead $3 =3D # scheme@(guix-user)> (sddm-service) guix repl: warning: 'sddm-service' is deprecated, use '(@ (gnu services xor= g) sddm-service)' instead guix repl: warning: 'sddm-service' is deprecated, use 'sddm-service-type' i= nstead $4 =3D #< type: # value: #< sddm: [... omitted for brevity ...] scheme@(guix-user)> =2D-8<---------------cut here---------------end--------------->8--- What do you think? =2D-=20 Chris PGP: https://savannah.gnu.org/people/viewgpg.php?user_id=3D106836 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-services-Consistently-use-SDDM-rather-than-GDM-on-no.patch Content-Transfer-Encoding: quoted-printable From=2009091cc8495e0b4c302a58961e79ac8455ecd208 Mon Sep 17 00:00:00 2001 From: Chris Marusich Date: Mon, 3 Jan 2022 14:59:35 -0800 Subject: [PATCH] services: Consistently use SDDM rather than GDM on non-x86_64. This is a follow-up to 49599fab564f203b8e92d32e9b28c99e99849bfb. Notably, = it also deprecates (gnu services sddm) and moves what was there into (gnu services xorg). Fixes: . * gnu/services/sddm.scm (sddm-configuration, sddm-configuration?) (sddm-service-type, sddm-service): Move the code for these exported bindings to gnu/services/xorg.scm. Use (guix deprecation) to ensure that existing c= ode can continue to call these original bindings in the (gnu services sddm) module, in which case a deprecation warning will be issued to the caller. (gnu-services-sddm-sentinel): New exported variable. * gnu/services/xorg.scm (sddm-configuration, sddm-configuration?) (sddm-service-type, sddm-service): New exported bindings. The code was mov= ed verbatim from gnu/services/sddm.scm. These bindings were moved here to avo= id introducing a circular dependency between the (gnu services sddm) and (gnu services xorg) modules. (set-xorg-configuration)[login-manager-service-type]: When the current syst= em or target system begins with the string "x86_64", use gdm-service type as before; otherwise, use sddm-service-type (i.e., the one from the (gnu servi= ces xorg) module). * gnu/system/examples/vm-image.tmpl (services): Add sddm-service-type to the list of service types to remove. * gnu/services/desktop.scm: Remove the #:autoload for (gnu services sddm). = It is no longer required, since (gnu services xorg) exports sddm-service-type. =2D-- gnu/services/desktop.scm | 1 - gnu/services/sddm.scm | 320 ++---------------------------- gnu/services/xorg.scm | 311 ++++++++++++++++++++++++++++- gnu/system/examples/vm-image.tmpl | 4 +- 4 files changed, 332 insertions(+), 304 deletions(-) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index c6761ca784..8395b51242 100644 =2D-- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -40,7 +40,6 @@ #:use-module (gnu services sound) #:use-module ((gnu system file-systems) #:select (%elogind-file-systems file-system)) =2D #:autoload (gnu services sddm) (sddm-service-type) #:use-module (gnu system) #:use-module (gnu system setuid) #:use-module (gnu system shadow) diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm index 694ad736dc..54c0f1b594 100644 =2D-- a/gnu/services/sddm.scm +++ b/gnu/services/sddm.scm @@ -3,6 +3,7 @@ ;;; Copyright =C2=A9 2019 Ludovic Court=C3=A8s ;;; Copyright =C2=A9 2019 Jesse Gildersleve ;;; Copyright =C2=A9 2020 Jakub K=C4=85dzio=C5=82ka +;;; Copyright =C2=A9 2022 Chris Marusich ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,313 +21,32 @@ ;;; along with GNU Guix. If not, see . =20 (define-module (gnu services sddm) =2D #:use-module (gnu packages admin) =2D #:use-module (gnu packages display-managers) =2D #:use-module (gnu packages freedesktop) =2D #:use-module (gnu packages xorg) =2D #:use-module (gnu services) =2D #:use-module (gnu services shepherd) =2D #:use-module (gnu services xorg) =2D #:use-module (gnu system pam) =2D #:use-module (gnu system shadow) =2D #:use-module (guix gexp) =2D #:use-module (guix records) #:use-module (guix deprecation) + #:use-module (gnu services xorg) #:export (sddm-configuration sddm-configuration? sddm-service-type =2D sddm-service)) =2D =2D(define-record-type* =2D sddm-configuration make-sddm-configuration =2D sddm-configuration? =2D (sddm sddm-configuration-sddm =2D (default sddm)) =2D =2D ;; [General] =2D ;; valid values are x11 and wayland =2D ;; currently doesn't do anything is enabled by wayland greeter PR =2D (display-server sddm-configuration-display-server =2D (default "x11")) =2D ;; valid values are on, off or none =2D (numlock sddm-configuration-numlock =2D (default "on")) =2D (halt-command sddm-configuration-halt-command =2D (default (file-append shepherd "/sbin/halt"))) =2D (reboot-command sddm-configuration-reboot-command =2D (default (file-append shepherd "/sbin/reboot")= )) =2D =2D ;; [Theme] =2D ;; valid values are elarun, maldives or maya =2D (theme sddm-configuration-theme =2D (default "maldives")) =2D (themes-directory sddm-configuration-themes-directory =2D (default "/run/current-system/profile/share/sd= dm/themes")) =2D (faces-directory sddm-configuration-faces-directory =2D (default "/run/current-system/profile/share/sd= dm/faces")) =2D =2D ;; [Users] =2D (default-path sddm-configuration-default-path =2D (default "/run/current-system/profile/bin")) =2D (minimum-uid sddm-configuration-minimum-uid =2D (default 1000)) =2D (maximum-uid sddm-configuration-maximum-uid =2D (default 2000)) =2D (remember-last-user? sddm-configuration-remember-last-user? =2D (default #t)) =2D (remember-last-session? sddm-configuration-remember-last-session? =2D (default #t)) =2D (hide-users sddm-configuration-hide-users =2D (default "")) =2D (hide-shells sddm-configuration-hide-shells =2D (default (file-append shadow "/sbin/nologin"))) =2D =2D ;; [Wayland] =2D (session-command sddm-configuration-session-command =2D (default (file-append sddm "/share/sddm/script= s/wayland-session"))) =2D (sessions-directory sddm-configuration-sessions-directory =2D (default "/run/current-system/profile/share/wa= yland-sessions")) =2D ;; [X11] =2D (xorg-configuration sddm-configuration-xorg =2D (default (xorg-configuration))) =2D (xauth-path sddm-configuration-xauth-path =2D (default (file-append xauth "/bin/xauth"))) =2D (xephyr-path sddm-configuration-xephyr-path =2D (default (file-append xorg-server "/bin/Xephyr= "))) =2D (xdisplay-start sddm-configuration-xdisplay-start =2D (default (file-append sddm "/share/sddm/script= s/Xsetup"))) =2D (xdisplay-stop sddm-configuration-xdisplay-stop =2D (default (file-append sddm "/share/sddm/script= s/Xstop"))) =2D (xsession-command sddm-configuration-xsession-command =2D (default (xinitrc))) =2D (xsessions-directory sddm-configuration-xsessions-directory =2D (default "/run/current-system/profile/share/xs= essions")) =2D (minimum-vt sddm-configuration-minimum-vt =2D (default 7)) =2D =2D ;; [Autologin] =2D (auto-login-user sddm-configuration-auto-login-user =2D (default "")) =2D ;; valid values are xfce.desktop gnome.desktop weston.desktop hawaii.d= esktop =2D (auto-login-session sddm-configuration-auto-login-session =2D (default "")) =2D (relogin? sddm-configuration-relogin? =2D (default #f))) =2D =2D(define (sddm-configuration-file config) =2D (mixed-text-file "sddm.conf" " =2D[General] =2DDisplayServer=3D" (sddm-configuration-display-server config) = " =2DNumlock=3D" (sddm-configuration-numlock config) = " =2DHaltCommand=3D" (sddm-configuration-halt-command config) = " =2DRebootCommand=3D" (sddm-configuration-reboot-command config) = " =2D =2D[Users] =2DDefaultPath=3D" (sddm-configuration-default-path config) = " =2DMinimumUid=3D" (number->string (sddm-configuration-minimum-uid= config))" =2DMaximumUid=3D" (number->string (sddm-configuration-maximum-uid= config))" =2DRememberLastUser=3D" (if (sddm-configuration-remember-last-user? con= fig) =2D "true" "false") = " =2DRememberLastSession=3D" (if (sddm-configuration-remember-last-session? = config) =2D "true" "false") = " =2DHideUsers=3D" (sddm-configuration-hide-users config) = " =2DHideshells=3D" (sddm-configuration-hide-shells config) = " =2D =2D[Theme] =2DCurrent=3D" (sddm-configuration-theme config) = " =2DThemeDir=3D" (sddm-configuration-themes-directory config) = " =2DFacesDir=3D" (sddm-configuration-faces-directory config) = " =2D =2D[Wayland] =2DSessionCommand=3D" (sddm-configuration-session-command config) = " =2DSessionDir=3D" (sddm-configuration-sessions-directory config) = " =2D =2D[X11] =2DServerPath=3D" (xorg-start-command (sddm-configuration-xorg co= nfig)) " =2DXauthPath=3D" (sddm-configuration-xauth-path config) = " =2DXephyrPath=3D" (sddm-configuration-xephyr-path config) = " =2DDisplayCommand=3D" (sddm-configuration-xdisplay-start config) = " =2DDisplayStopCommand=3D" (sddm-configuration-xdisplay-stop config) = " =2DSessionCommand=3D" (sddm-configuration-xsession-command config) = " =2DSessionDir=3D" (sddm-configuration-xsessions-directory config)= " =2DMinimumVT=3D" (number->string (sddm-configuration-minimum-vt = config)) " =2DServerArguments=3D" (string-join =2D (xorg-configuration-server-arguments =2D (sddm-configuration-xorg config))) " =2D =2D[Autologin] =2DUser=3D" (sddm-configuration-auto-login-user config) = " =2DSession=3D" (sddm-configuration-auto-login-session config) = " =2DRelogin=3D" (if (sddm-configuration-relogin? config) =2D "true" "false") = " =2D")) =2D =2D(define (sddm-shepherd-service config) =2D "Return a for sddm with CONFIG." =2D =2D (define sddm-command =2D #~(list (string-append #$(sddm-configuration-sddm config) "/bin/sddm= "))) =2D =2D (list (shepherd-service =2D (documentation "SDDM display manager.") =2D (requirement '(user-processes elogind)) =2D (provision '(xorg-server display-manager)) =2D (start #~(make-forkexec-constructor #$sddm-command)) =2D (stop #~(make-kill-destructor))))) =2D =2D(define (sddm-etc-service config) =2D (list `("sddm.conf" ,(sddm-configuration-file config)))) =2D =2D(define (sddm-pam-service config) =2D "Return a PAM service for @command{sddm}." =2D (pam-service =2D (name "sddm") =2D (auth =2D (list =2D (pam-entry =2D (control "requisite") =2D (module "pam_nologin.so")) =2D (pam-entry =2D (control "required") =2D (module "pam_env.so")) =2D (pam-entry =2D (control "required") =2D (module "pam_succeed_if.so") =2D (arguments (list (string-append "uid >=3D " =2D (number->string (sddm-configuratio= n-minimum-uid config))) =2D "quiet"))) =2D ;; should be factored out into system-auth =2D (pam-entry =2D (control "required") =2D (module "pam_unix.so")))) =2D (account =2D (list =2D ;; should be factored out into system-account =2D (pam-entry =2D (control "required") =2D (module "pam_unix.so")))) =2D (password =2D (list =2D ;; should be factored out into system-password =2D (pam-entry =2D (control "required") =2D (module "pam_unix.so") =2D (arguments (list "sha512" "shadow" "try_first_pass"))))) =2D (session =2D (list =2D ;; lfs has a required pam_limits.so =2D ;; should be factored out into system-session =2D (pam-entry =2D (control "required") =2D (module "pam_unix.so")))))) =2D =2D(define (sddm-greeter-pam-service) =2D "Return a PAM service for @command{sddm-greeter}." =2D (pam-service =2D (name "sddm-greeter") =2D (auth =2D (list =2D ;; Load environment from /etc/environment and ~/.pam_environment =2D (pam-entry =2D (control "required") =2D (module "pam_env.so")) =2D ;; Always let the greeter start without authentication =2D (pam-entry =2D (control "required") =2D (module "pam_permit.so")))) =2D (account =2D (list =2D ;; No action required for account management =2D (pam-entry =2D (control "required") =2D (module "pam_permit.so")))) =2D (password =2D (list =2D ;; Can't change password =2D (pam-entry =2D (control "required") =2D (module "pam_deny.so")))) =2D (session =2D (list =2D ;; Setup session =2D (pam-entry =2D (control "required") =2D (module "pam_unix.so")))))) + sddm-service + gnu-services-sddm-sentinel)) =20 =2D(define (sddm-autologin-pam-service config) =2D "Return a PAM service for @command{sddm-autologin}" =2D (pam-service =2D (name "sddm-autologin") =2D (auth =2D (list =2D (pam-entry =2D (control "requisite") =2D (module "pam_nologin.so")) =2D (pam-entry =2D (control "required") =2D (module "pam_succeed_if.so") =2D (arguments (list (string-append "uid >=3D " =2D (number->string (sddm-configuratio= n-minimum-uid config))) =2D "quiet"))) =2D (pam-entry =2D (control "required") =2D (module "pam_permit.so")))) =2D (account =2D (list =2D (pam-entry =2D (control "include") =2D (module "sddm")))) =2D (password =2D (list =2D (pam-entry =2D (control "required") =2D (module "pam_deny.so")))) =2D (session =2D (list =2D (pam-entry =2D (control "include") =2D (module "sddm")))))) +;; All bindings originally exported by this module have been moved to (gnu +;; services xorg). They were moved to avoid a circular dependency between +;; (gnu services xorg) and this module. After a deprecation period has +;; passed, we can remove this module entirely. =20 =2D(define (sddm-pam-services config) =2D (list (sddm-pam-service config) =2D (sddm-greeter-pam-service) =2D (sddm-autologin-pam-service config))) +(define-deprecated/alias sddm-configuration + (@ (gnu services xorg) sddm-configuration)) =20 =2D(define %sddm-accounts =2D (list (user-group (name "sddm") (system? #t)) =2D (user-account =2D (name "sddm") =2D (group "sddm") =2D (system? #t) =2D (comment "SDDM user") =2D (home-directory "/var/lib/sddm") =2D (shell (file-append shadow "/sbin/nologin"))))) +(define-deprecated/alias sddm-configuration? + (@ (gnu services xorg) sddm-configuration?)) =20 =2D;; Add default themes to profile =2D(define sddm-profile-service =2D (compose list sddm-configuration-sddm)) +(define-deprecated/alias sddm-service-type + (@ (gnu services xorg) sddm-service-type)) =20 =2D(define sddm-service-type =2D (handle-xorg-configuration sddm-configuration =2D (service-type (name 'sddm) =2D (extensions =2D (list (service-extension shepherd-root-service-type =2D sddm-shepherd-service) =2D (service-extension etc-service-type =2D sddm-etc-service) =2D (service-extension pam-root-service-type =2D sddm-pam-services) =2D (service-extension account-service-type =2D (const %sddm-accounts)) =2D (service-extension profile-service-type =2D sddm-profile-service))) =2D (default-value (sddm-configuration)) =2D (description =2D "Run SDDM, a display and log-in manager for X11 and =2DWayland.")))) +(define-deprecated/alias sddm-service + (@ (gnu services xorg) sddm-service)) =20 =2D(define-deprecated (sddm-service #:optional (config (sddm-configuration)= )) =2D sddm-service-type =2D "Run the @uref{https://github.com/sddm/sddm,SDDM display manager} =2Dwith the given @var{config}, a @code{} object." =2D (service sddm-service-type config)) +;; The forms above only define macros. To ensure that the (guix +;; discovery) machinery finds this module, we must export at least one +;; public variable. Its value does not matter. +(define gnu-services-sddm-sentinel #t) diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 82a7d25602..cbe77f1891 100644 =2D-- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -2,8 +2,10 @@ ;;; Copyright =C2=A9 2017 Andy Wingo ;;; Copyright =C2=A9 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Cour= t=C3=A8s ;;; Copyright =C2=A9 2015 Sou Bunnbu +;;; Copyright =C2=A9 2016 David Craven ;;; Copyright =C2=A9 2018, 2019 Timothy Sample ;;; Copyright =C2=A9 2019 Jan (janneke) Nieuwenhuizen +;;; Copyright =C2=A9 2019 Jesse Gildersleve ;;; Copyright =C2=A9 2019 Tim Gesthuizen ;;; Copyright =C2=A9 2020 shtwzrd ;;; Copyright =C2=A9 2020 Jakub K=C4=85dzio=C5=82ka @@ -11,6 +13,7 @@ ;;; Copyright =C2=A9 2021 Brice Waegeneire ;;; Copyright =C2=A9 2021 Oleg Pykhalov ;;; Copyright =C2=A9 2021 Josselin Poiret +;;; Copyright =C2=A9 2022 Chris Marusich ;;; ;;; This file is part of GNU Guix. ;;; @@ -113,6 +116,11 @@ gdm-configuration gdm-service-type =20 + sddm-configuration + sddm-configuration? + sddm-service-type + sddm-service + handle-xorg-configuration set-xorg-configuration)) =20 @@ -1040,10 +1048,311 @@ the GNOME desktop environment.") "Run the GNOME Desktop Manager (GDM), a program that al= lows you to log in in a graphical session, whether or not you use GNOME.")))) =20 +(define-record-type* + sddm-configuration make-sddm-configuration + sddm-configuration? + (sddm sddm-configuration-sddm + (default sddm)) + + ;; [General] + ;; valid values are x11 and wayland + ;; currently doesn't do anything is enabled by wayland greeter PR + (display-server sddm-configuration-display-server + (default "x11")) + ;; valid values are on, off or none + (numlock sddm-configuration-numlock + (default "on")) + (halt-command sddm-configuration-halt-command + (default (file-append shepherd "/sbin/halt"))) + (reboot-command sddm-configuration-reboot-command + (default (file-append shepherd "/sbin/reboot"))) + + ;; [Theme] + ;; valid values are elarun, maldives or maya + (theme sddm-configuration-theme + (default "maldives")) + (themes-directory sddm-configuration-themes-directory + (default "/run/current-system/profile/share/sddm= /themes")) + (faces-directory sddm-configuration-faces-directory + (default "/run/current-system/profile/share/sddm= /faces")) + + ;; [Users] + (default-path sddm-configuration-default-path + (default "/run/current-system/profile/bin")) + (minimum-uid sddm-configuration-minimum-uid + (default 1000)) + (maximum-uid sddm-configuration-maximum-uid + (default 2000)) + (remember-last-user? sddm-configuration-remember-last-user? + (default #t)) + (remember-last-session? sddm-configuration-remember-last-session? + (default #t)) + (hide-users sddm-configuration-hide-users + (default "")) + (hide-shells sddm-configuration-hide-shells + (default (file-append shadow "/sbin/nologin"))) + + ;; [Wayland] + (session-command sddm-configuration-session-command + (default (file-append sddm "/share/sddm/scripts/= wayland-session"))) + (sessions-directory sddm-configuration-sessions-directory + (default "/run/current-system/profile/share/wayl= and-sessions")) + ;; [X11] + (xorg-configuration sddm-configuration-xorg + (default (xorg-configuration))) + (xauth-path sddm-configuration-xauth-path + (default (file-append xauth "/bin/xauth"))) + (xephyr-path sddm-configuration-xephyr-path + (default (file-append xorg-server "/bin/Xephyr")= )) + (xdisplay-start sddm-configuration-xdisplay-start + (default (file-append sddm "/share/sddm/scripts/= Xsetup"))) + (xdisplay-stop sddm-configuration-xdisplay-stop + (default (file-append sddm "/share/sddm/scripts/= Xstop"))) + (xsession-command sddm-configuration-xsession-command + (default (xinitrc))) + (xsessions-directory sddm-configuration-xsessions-directory + (default "/run/current-system/profile/share/xses= sions")) + (minimum-vt sddm-configuration-minimum-vt + (default 7)) + + ;; [Autologin] + (auto-login-user sddm-configuration-auto-login-user + (default "")) + ;; valid values are xfce.desktop gnome.desktop weston.desktop hawaii.des= ktop + (auto-login-session sddm-configuration-auto-login-session + (default "")) + (relogin? sddm-configuration-relogin? + (default #f))) + +(define (sddm-configuration-file config) + (mixed-text-file "sddm.conf" " +[General] +DisplayServer=3D" (sddm-configuration-display-server config) = " +Numlock=3D" (sddm-configuration-numlock config) = " +HaltCommand=3D" (sddm-configuration-halt-command config) = " +RebootCommand=3D" (sddm-configuration-reboot-command config) = " + +[Users] +DefaultPath=3D" (sddm-configuration-default-path config) = " +MinimumUid=3D" (number->string (sddm-configuration-minimum-uid c= onfig))" +MaximumUid=3D" (number->string (sddm-configuration-maximum-uid c= onfig))" +RememberLastUser=3D" (if (sddm-configuration-remember-last-user? confi= g) + "true" "false") = " +RememberLastSession=3D" (if (sddm-configuration-remember-last-session? co= nfig) + "true" "false") = " +HideUsers=3D" (sddm-configuration-hide-users config) = " +Hideshells=3D" (sddm-configuration-hide-shells config) = " + +[Theme] +Current=3D" (sddm-configuration-theme config) = " +ThemeDir=3D" (sddm-configuration-themes-directory config) = " +FacesDir=3D" (sddm-configuration-faces-directory config) = " + +[Wayland] +SessionCommand=3D" (sddm-configuration-session-command config) = " +SessionDir=3D" (sddm-configuration-sessions-directory config) = " + +[X11] +ServerPath=3D" (xorg-start-command (sddm-configuration-xorg conf= ig)) " +XauthPath=3D" (sddm-configuration-xauth-path config) = " +XephyrPath=3D" (sddm-configuration-xephyr-path config) = " +DisplayCommand=3D" (sddm-configuration-xdisplay-start config) = " +DisplayStopCommand=3D" (sddm-configuration-xdisplay-stop config) = " +SessionCommand=3D" (sddm-configuration-xsession-command config) = " +SessionDir=3D" (sddm-configuration-xsessions-directory config) = " +MinimumVT=3D" (number->string (sddm-configuration-minimum-vt co= nfig)) " +ServerArguments=3D" (string-join + (xorg-configuration-server-arguments + (sddm-configuration-xorg config))) " + +[Autologin] +User=3D" (sddm-configuration-auto-login-user config) = " +Session=3D" (sddm-configuration-auto-login-session config) = " +Relogin=3D" (if (sddm-configuration-relogin? config) + "true" "false") = " +")) + +(define (sddm-shepherd-service config) + "Return a for sddm with CONFIG." + + (define sddm-command + #~(list (string-append #$(sddm-configuration-sddm config) "/bin/sddm")= )) + + (list (shepherd-service + (documentation "SDDM display manager.") + (requirement '(user-processes elogind)) + (provision '(xorg-server display-manager)) + (start #~(make-forkexec-constructor #$sddm-command)) + (stop #~(make-kill-destructor))))) + +(define (sddm-etc-service config) + (list `("sddm.conf" ,(sddm-configuration-file config)))) + +(define (sddm-pam-service config) + "Return a PAM service for @command{sddm}." + (pam-service + (name "sddm") + (auth + (list + (pam-entry + (control "requisite") + (module "pam_nologin.so")) + (pam-entry + (control "required") + (module "pam_env.so")) + (pam-entry + (control "required") + (module "pam_succeed_if.so") + (arguments (list (string-append "uid >=3D " + (number->string (sddm-configuration-= minimum-uid config))) + "quiet"))) + ;; should be factored out into system-auth + (pam-entry + (control "required") + (module "pam_unix.so")))) + (account + (list + ;; should be factored out into system-account + (pam-entry + (control "required") + (module "pam_unix.so")))) + (password + (list + ;; should be factored out into system-password + (pam-entry + (control "required") + (module "pam_unix.so") + (arguments (list "sha512" "shadow" "try_first_pass"))))) + (session + (list + ;; lfs has a required pam_limits.so + ;; should be factored out into system-session + (pam-entry + (control "required") + (module "pam_unix.so")))))) + +(define (sddm-greeter-pam-service) + "Return a PAM service for @command{sddm-greeter}." + (pam-service + (name "sddm-greeter") + (auth + (list + ;; Load environment from /etc/environment and ~/.pam_environment + (pam-entry + (control "required") + (module "pam_env.so")) + ;; Always let the greeter start without authentication + (pam-entry + (control "required") + (module "pam_permit.so")))) + (account + (list + ;; No action required for account management + (pam-entry + (control "required") + (module "pam_permit.so")))) + (password + (list + ;; Can't change password + (pam-entry + (control "required") + (module "pam_deny.so")))) + (session + (list + ;; Setup session + (pam-entry + (control "required") + (module "pam_unix.so")))))) + +(define (sddm-autologin-pam-service config) + "Return a PAM service for @command{sddm-autologin}" + (pam-service + (name "sddm-autologin") + (auth + (list + (pam-entry + (control "requisite") + (module "pam_nologin.so")) + (pam-entry + (control "required") + (module "pam_succeed_if.so") + (arguments (list (string-append "uid >=3D " + (number->string (sddm-configuration-= minimum-uid config))) + "quiet"))) + (pam-entry + (control "required") + (module "pam_permit.so")))) + (account + (list + (pam-entry + (control "include") + (module "sddm")))) + (password + (list + (pam-entry + (control "required") + (module "pam_deny.so")))) + (session + (list + (pam-entry + (control "include") + (module "sddm")))))) + +(define (sddm-pam-services config) + (list (sddm-pam-service config) + (sddm-greeter-pam-service) + (sddm-autologin-pam-service config))) + +(define %sddm-accounts + (list (user-group (name "sddm") (system? #t)) + (user-account + (name "sddm") + (group "sddm") + (system? #t) + (comment "SDDM user") + (home-directory "/var/lib/sddm") + (shell (file-append shadow "/sbin/nologin"))))) + +;; Add default themes to profile +(define sddm-profile-service + (compose list sddm-configuration-sddm)) + +(define sddm-service-type + (handle-xorg-configuration sddm-configuration + (service-type (name 'sddm) + (extensions + (list (service-extension shepherd-root-service-type + sddm-shepherd-service) + (service-extension etc-service-type + sddm-etc-service) + (service-extension pam-root-service-type + sddm-pam-services) + (service-extension account-service-type + (const %sddm-accounts)) + (service-extension profile-service-type + sddm-profile-service))) + (default-value (sddm-configuration)) + (description + "Run SDDM, a display and log-in manager for X11 and +Wayland.")))) + +(define-deprecated (sddm-service #:optional (config (sddm-configuration))) + sddm-service-type + "Run the @uref{https://github.com/sddm/sddm,SDDM display manager} +with the given @var{config}, a @code{} object." + (service sddm-service-type config)) + +;; Since GDM depends on Rust (gdm -> gnome-shell -> gjs -> mozjs -> rust) +;; and Rust is currently unavailable on non-x86_64 platforms, default to +;; SDDM there (FIXME). (define* (set-xorg-configuration config #:optional (login-manager-service-type =2D gdm-service-type)) + (let ((system (or (%current-target-syste= m) + (%current-system)))) + (if (string-prefix? "x86_64" system) + gdm-service-type + sddm-service-type)))) "Tell the log-in manager (of type @var{login-manager-service-type}) to u= se @var{config}, an record." (simple-service 'set-xorg-configuration diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-ima= ge.tmpl index a59d91587b..07cf718466 100644 =2D-- a/gnu/system/examples/vm-image.tmpl +++ b/gnu/system/examples/vm-image.tmpl @@ -107,12 +107,12 @@ root ALL=3D(ALL) ALL ;; Use the DHCP client service rather than NetworkManager. (service dhcp-client-service-type)) =20 =2D ;; Remove GDM, ModemManager, NetworkManager, and wpa-supplica= nt, =2D ;; which don't make sense in a VM. + ;; Remove some services that don't make sense in a VM. (remove (lambda (service) (let ((type (service-kind service))) (or (memq type (list gdm-service-type + sddm-service-type wpa-supplicant-service-type cups-pk-helper-service-type network-manager-service-type =2D-=20 2.26.3 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJJBAEBCAAzFiEEy/WXVcvn5+/vGD+x3UCaFdgiRp0FAmHTrdgVHGNtbWFydXNp Y2hAZ21haWwuY29tAAoJEN1AmhXYIkadvM0P/0V/0ObQP0GEn9FOzMDjy7ZrCO7M Zi999aV4epia4cGzYsYb+fFNcSrXJ1fQu6hKG0QIdZGqLhLkdaXfnTcDdhPx2TDJ sEVsjisfpd1IX+JazYmQTVQzeySaBqyIJy9f/YRrkbrCVlVNyRpDwEWztCBajKtN CDeAhNG2/e9egHiq5em8D/D7ZC/QdfwRgYPUxJS3xdBEQu0XYHjziNtunDz7YVfl l3B1Xc2K20sH5qy/Rl54BUq7riIC54MzCbRYJ5MLDobv9XWSUkv/MXQPvsYNBxQS MF0ECJKDRwVJNVZsXUGoKPIvdzMO8K1VJ1Hc1mdQRPG7lARx5cQK0PfGpJiRghde ST8QNMsKhJPKejKgmCy1/fUp+Ujdr0qBS0DSim6ZrWy3j87jE4KT88zUMlRXiMBQ hLE4m4fUN0qyrl49aobDEjNbeP2MCl3Oqss8mNtxFwSFoBlseva68jLpI+EPoRlf JbMJfnwdAdm7mS3LHwaBLgRlOqQVd1hR4FUC7zaR7WTk6E+tT3GZdTCZqK9blXlQ T6GKQfNobA/asT6y8849ixLZ52Kf+KB2oopDlFjP7Y8gSTODiIv2wiWI6Ex4Visf HXR0xXCChdJSJDf+HRpw1dDF3JfvZb90zXMgbkTZ/XLC+LiTih/hMsJ5EsWsRHa6 h192cJ5SECgoVh6y =/KpX -----END PGP SIGNATURE----- --==-=-=--