unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: Leo Prikler <leo.prikler@student.tugraz.at>
Cc: 38309@debbugs.gnu.org
Subject: bug#38309: Recent $EMACSLOADPATH changes crash gnome-session
Date: Wed, 27 Nov 2019 22:58:31 +0900	[thread overview]
Message-ID: <87o8wxto8o.fsf@gmail.com> (raw)
In-Reply-To: <674732dc751fbafbdb1e3fd4464d19e27e36607f.camel@student.tugraz.at> (Leo Prikler's message of "Wed, 27 Nov 2019 01:01:31 +0100")


[-- Attachment #1.1: Type: text/plain, Size: 3275 bytes --]

Hello Leo!

Leo Prikler <leo.prikler@student.tugraz.at> writes:

> Hi everyone,
>
> Am Dienstag, den 26.11.2019, 09:56 +0100 schrieb Ludovic Courtès: 
>> are we not going overboard with that big a environment variable? :-)
> I think I vaguely remember a related discussion about the Emacs build
> system adding the guix.d directory, which further worsens this problem
> [1].  Putting that aside however, $EMACSLOADPATH should not contain
> more than
> - $GUIX_PROFILE/share/emacs/$EMACS_VERSION/lisp
> - $GUIX_PROFILE/share/emacs/$EMACS_VERSION/site-lisp
> - $GUIX_PROFILE/share/emacs/site-lisp
> If I read (elisp)Library Search correctly, these directories each
> contain a file to add their subdirectories to the load-path variable.  
> This can be confirmed by searching in the store or through message-
> debugging.  It appears, however, that these files are not quite
> sufficient.  While the load-path is indeed modified, no autoloading
> occurs for files inside guix.d -- indeed, I doubt it would occur for
> any package, regardless of how we name it.

That's a precious find!  I could validate your findings.  The only place
we don't have a union of the Elisp directories (with a subdirs.el file)
is at build time, but in the event we'd stop producing guix.d the search
path would work natively there (as well as causing any newly installed
libraries to be found without any rescanning of directories).

> After further digging around, this appears to be a bug in guix-emacs. 
> Rather than using the load-path variable, it uses $EMACSLOADPATH
> directly via getenv.  I suggest either recursing into subdirectories as
> Emacs itself would or using load-path instead of reverse engineering
> it, preferring the latter if applicable.
>
> Now that this has been cleared up, a fix should be in reach.  First we
> would fix guix-emacs, then we can restrict $EMACSLOADPATH to the above
> three -- perhaps two, as the versioned site-lisp appears unused.

Neat!  I find that this works best when guix.d is removed, as otherwise

1) relying on the load-path would mean we'd have to restart Emacs when
installed new libraries under guix.d directories (to have subdirs.el to
its magic and add them to the load-path)

2) the emacs-build-system simplifications that were made would need to
be reverted because at build time we don't have a profile with
subdirs.el readily available, and must manually hunt for the guix.d
subdirectories.

3) Even if we scanned directories recursively for autoloads from
EMACSLOADPATH ourselves in emacs-guix.el, a user would still need to
call the guix-emacs-autoload-packages manually after installing new
Elisp packages to have Emacs find them.

I've tested these changes with a Gnome VM and the EMACSLOADPATH is now
reduced to just the Emacs' lisp directory as well as the
share/emacs/site-lisp directory of any profile.  Thanks for the great
ideas :-).

Some packages would need to be adapted to finalize the move to a
guix.d-less installation directory (some recipes refer to it), but this
is trivial to do.  The documentation would need to be adapted as well.
I can take care of this if someones deems the attached patches fit to
fix the problems mentioned in this ticket.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-build-emacs-build-system-Unify-the-installation-dire.patch --]
[-- Type: text/x-patch, Size: 6530 bytes --]

From 141e7e8c45c39fbe2e6cfa879f1dc7b7f721bbfc Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Sat, 23 Nov 2019 12:04:50 +0900
Subject: [PATCH 1/6] build: emacs-build-system: Unify the installation
 directory.

This change aims to reduce the length of the EMACSLOADPATH environment
variable, which was found to cause issues such as bug
\#38309 (https://bugs.gnu.org/38309).

It should also enable discovery of newly installed packages without refreshing
the session's EMACSLOADPATH of the user profile (e.g., when launching Emacs
from the desktop manager application launcher), as discussed in bug
\#38309 (https://bugs.gnu.org/38309).

* guix/build/emacs-build-system.scm (%legacy-install-suffix): Rename to...
(%install-dir): ...this.
(%install-suffix): Remove variable.
(build): Adjust installation target directory.
(patch-el-files): Likewise.
(install): Likewise.
(move-doc): Likewise.
(make-autoloads): Likewise.
---
 guix/build/emacs-build-system.scm | 39 +++++++++++++------------------
 1 file changed, 16 insertions(+), 23 deletions(-)

diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index f0c41812f1..e2b792d3dc 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -40,11 +40,10 @@
 ;;
 ;; Code:
 
-;; Directory suffix where we install ELPA packages.  We avoid ".../elpa" as
-;; Emacs expects to find the ELPA repository 'archive-contents' file and the
-;; archive signature.
-(define %legacy-install-suffix "/share/emacs/site-lisp")
-(define %install-suffix (string-append %legacy-install-suffix "/guix.d"))
+;;; All the packages are installed directly under site-lisp, which means that
+;;; having that directory in the EMACSLOADPATH is enough to have them found by
+;;; Emacs.
+(define %install-dir "/share/emacs/site-lisp")
 
 ;; These are the default inclusion/exclusion regexps for the install phase.
 (define %default-include '("^[^/]*\\.el$" "^[^/]*\\.info$" "^doc/.*\\.info$"))
@@ -87,11 +86,10 @@ environment variable\n" source-directory)))
   "Compile .el files."
   (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
          (out (assoc-ref outputs "out"))
-         (elpa-name-ver (store-directory->elpa-name-version out))
-         (el-dir (string-append out %install-suffix "/" elpa-name-ver)))
+         (site-lisp (string-append out %install-dir)))
     (setenv "SHELL" "sh")
     (parameterize ((%emacs emacs))
-      (emacs-byte-compile-directory el-dir))))
+      (emacs-byte-compile-directory site-lisp))))
 
 (define* (patch-el-files #:key outputs #:allow-other-keys)
   "Substitute the absolute \"/bin/\" directory with the right location in the
@@ -108,9 +106,7 @@ store in '.el' files."
       #:binary #t))
 
   (let* ((out (assoc-ref outputs "out"))
-         (elpa-name-ver (store-directory->elpa-name-version out))
-         (el-dir (string-append out %install-suffix "/" elpa-name-ver))
-
+         (site-lisp (string-append out %install-dir))
          ;; (ice-9 regex) uses libc's regexp routines, which cannot deal with
          ;; strings containing NULs.  Filter out such files.  TODO: Remove
          ;; this workaround when <https://bugs.gnu.org/30116> is fixed.
@@ -124,7 +120,7 @@ store in '.el' files."
              (error "patch-el-files: unable to locate " cmd-name))
            (string-append "\"" cmd "\"")))))
 
-    (with-directory-excursion el-dir
+    (with-directory-excursion site-lisp
       ;; Some old '.el' files (e.g., tex-buf.el in AUCTeX) are still
       ;; ISO-8859-1-encoded.
       (unless (false-if-exception (substitute-program-names))
@@ -175,15 +171,14 @@ parallel. PARALLEL-TESTS? is ignored when using a non-make TEST-COMMAND."
            (not (any (cut match-stripped-file "excluded" <>) exclude)))))
 
   (let* ((out (assoc-ref outputs "out"))
-         (elpa-name-ver (store-directory->elpa-name-version out))
-         (target-directory (string-append out %install-suffix "/" elpa-name-ver))
+         (site-lisp (string-append out %install-dir))
          (files-to-install (find-files source install-file?)))
     (cond
      ((not (null? files-to-install))
       (for-each
        (lambda (file)
          (let* ((stripped-file (string-drop file (string-length source)))
-                (target-file (string-append target-directory stripped-file)))
+                (target-file (string-append site-lisp stripped-file)))
            (format #t "`~a' -> `~a'~%" file target-file)
            (install-file file (dirname target-file))))
        files-to-install)
@@ -197,14 +192,12 @@ parallel. PARALLEL-TESTS? is ignored when using a non-make TEST-COMMAND."
 (define* (move-doc #:key outputs #:allow-other-keys)
   "Move info files from the ELPA package directory to the info directory."
   (let* ((out (assoc-ref outputs "out"))
-         (elpa-name-ver (store-directory->elpa-name-version out))
-         (el-dir (string-append out %install-suffix "/" elpa-name-ver))
-         (name-ver (strip-store-file-name out))
+         (site-lisp (string-append out %install-dir))
          (info-dir (string-append out "/share/info/"))
-         (info-files (find-files el-dir "\\.info$")))
+         (info-files (find-files site-lisp "\\.info$")))
     (unless (null? info-files)
       (mkdir-p info-dir)
-      (with-directory-excursion el-dir
+      (with-directory-excursion site-lisp
         (when (file-exists? "dir") (delete-file "dir"))
         (for-each (lambda (f)
                     (copy-file f (string-append info-dir "/" (basename f)))
@@ -216,11 +209,11 @@ parallel. PARALLEL-TESTS? is ignored when using a non-make TEST-COMMAND."
   "Generate the autoloads file."
   (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
          (out (assoc-ref outputs "out"))
+         (site-lisp (string-append out %install-dir))
          (elpa-name-ver (store-directory->elpa-name-version out))
-         (elpa-name (package-name->name+version elpa-name-ver))
-         (el-dir (string-append out %install-suffix "/" elpa-name-ver)))
+         (elpa-name (package-name->name+version elpa-name-ver)))
     (parameterize ((%emacs emacs))
-      (emacs-generate-autoloads elpa-name el-dir))))
+      (emacs-generate-autoloads elpa-name site-lisp))))
 
 (define (emacs-package? name)
   "Check if NAME correspond to the name of an Emacs package."
-- 
2.24.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-gnu-emacs-Simplify-the-EMACSLOADPATH-search-path-spe.patch --]
[-- Type: text/x-patch, Size: 1742 bytes --]

From 6c2fcc4b6f4e8cf8e0b05858b2daa459cb390635 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Nov 2019 13:40:20 +0900
Subject: [PATCH 2/6] gnu: emacs: Simplify the EMACSLOADPATH search path
 specification.

The EMACSLOADPATH can be greatly simplified by relying on a subdirs.el file
that causes Emacs to search recursively a directory found in EMACSLOADPATH.

* gnu/packages/emacs.scm (emacs)[native-search-paths]: Remove the match-all
file pattern regexp.  Remove the versioned site-lisp directory from searched
files, as it appears unused by Emacs.

Reported-by: Leo Prikler <leo.prikler@student.tugraz.at>
---
 gnu/packages/emacs.scm | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 16f9af0a0a..95859b8a88 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -186,11 +186,9 @@
     (native-search-paths
      (list (search-path-specification
             (variable "EMACSLOADPATH")
-            ;; The versioned entries are for the Emacs' builtin libraries.
-            (files (list (string-append "share/emacs/" version "/site-lisp")
-                         (string-append "share/emacs/" version "/lisp")
-                         "share/emacs/site-lisp"))
-            (file-pattern ".*"))        ;recursively add any sub directory
+            ;; The versioned entry is for the Emacs' builtin libraries.
+            (files (list (string-append "share/emacs/" version "/lisp")
+                         "share/emacs/site-lisp")))
            (search-path-specification
             (variable "INFOPATH")
             (files '("share/info")))))
-- 
2.24.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.4: 0003-gnu-emacs-Fix-guix-emacs.el-indentation.patch --]
[-- Type: text/x-patch, Size: 1248 bytes --]

From 319b81ef8cbfd68c1c98fe644795ef28ad490bd9 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Nov 2019 13:51:53 +0900
Subject: [PATCH 3/6] gnu: emacs: Fix guix-emacs.el indentation.

* gnu/packages/aux-files/emacs/guix-emacs.el: Fix indentation.
---
 gnu/packages/aux-files/emacs/guix-emacs.el | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/aux-files/emacs/guix-emacs.el b/gnu/packages/aux-files/emacs/guix-emacs.el
index 46ee557f20..b4315c1a2e 100644
--- a/gnu/packages/aux-files/emacs/guix-emacs.el
+++ b/gnu/packages/aux-files/emacs/guix-emacs.el
@@ -54,8 +54,8 @@ The files in the list do not have extensions (.el, .elc)."
           (seq-filter (lambda (dir)
                         (string-match-p "/share/emacs/site-lisp" dir))
                       (split-string emacs-load-path ":")))
-          (autoloads (mapcan #'guix-emacs-find-autoloads
-                             emacs-non-core-load-path-directories)))
+         (autoloads (mapcan #'guix-emacs-find-autoloads
+                            emacs-non-core-load-path-directories)))
     (mapc (lambda (f)
             (load f 'noerror))
           autoloads)))
-- 
2.24.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.5: 0004-gnu-emacs-Use-load-path-instead-of-EMACSLOADPATH.patch --]
[-- Type: text/x-patch, Size: 1811 bytes --]

From 3c8b5f63b2e34556463c22fa1565b46c1b31033c Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Nov 2019 14:02:42 +0900
Subject: [PATCH 4/6] gnu: emacs: Use load-path instead of EMACSLOADPATH.

This enables the use of the subdirs.el feature of Emacs, where specifying a
directory in EMACSLOADPATH translates into a `load-path' variable containing
the directory and all its sub-directories.

* gnu/packages/aux-files/emacs/guix-emacs.el (guix-emacs-autoload-packages):
Use `load-path' directly instead of parsing EMACSLOADPATH.

Reported-by: Leo Prikler <leo.prikler@student.tugraz.at>
---
 gnu/packages/aux-files/emacs/guix-emacs.el | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/aux-files/emacs/guix-emacs.el b/gnu/packages/aux-files/emacs/guix-emacs.el
index b4315c1a2e..05fc9709b6 100644
--- a/gnu/packages/aux-files/emacs/guix-emacs.el
+++ b/gnu/packages/aux-files/emacs/guix-emacs.el
@@ -47,13 +47,12 @@ The files in the list do not have extensions (.el, .elc)."
   ;; FIXME: The autoloads generated by the emacs-build-system are not byte
   ;; compiled.
   (interactive)
-  (let* ((emacs-load-path (getenv "EMACSLOADPATH"))
-         (emacs-non-core-load-path-directories
+  (let* ((emacs-non-core-load-path-directories
           ;; Filter out core Elisp directories, which are already autoloaded
           ;; by Emacs.
           (seq-filter (lambda (dir)
                         (string-match-p "/share/emacs/site-lisp" dir))
-                      (split-string emacs-load-path ":")))
+                      load-path))
          (autoloads (mapcan #'guix-emacs-find-autoloads
                             emacs-non-core-load-path-directories)))
     (mapc (lambda (f)
-- 
2.24.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.6: 0005-gnu-emacs-ert-runner-Fix-build.patch --]
[-- Type: text/x-patch, Size: 1214 bytes --]

From baccbc37f60843f10e0bd384b5729e7670784b7a Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Nov 2019 22:32:40 +0900
Subject: [PATCH 5/6] gnu: emacs-ert-runner: Fix build.

* gnu/packages/emacs-xyz.scm (emacs-ert-runner): Refer to the updated
installation directory.
---
 gnu/packages/emacs-xyz.scm | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0caf12a423..7f140ad5de 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9859,8 +9859,7 @@ Emacs.")
                  (substitute* "bin/ert-runner"
                    (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)")
                     (string-append "ERT_RUNNER=\"" out
-                                   "/share/emacs/site-lisp/guix.d/ert-runner-"
-                                   ,version)))
+                                   "/share/emacs/site-lisp")))
                  (install-file "bin/ert-runner" (string-append out "/bin"))
                  (wrap-program (string-append out "/bin/ert-runner")
                    (list "EMACSLOADPATH" ":" 'prefix
-- 
2.24.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.7: 0006-gnu-emacs-emacsql-Fix-build.patch --]
[-- Type: text/x-patch, Size: 1133 bytes --]

From 0c7f859eff56d631ffe73227f012c6117040ade4 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Nov 2019 22:34:44 +0900
Subject: [PATCH 6/6] gnu: emacs-emacsql: Fix build.

* gnu/packages/emacs-xyz.scm (emacs-emacsql): Refer to the updated
installation directory.
---
 gnu/packages/emacs-xyz.scm | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 7f140ad5de..a30685189b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -11948,8 +11948,7 @@ object has been freed.")
                (install-file "sqlite/emacsql-sqlite"
                              (string-append out "/bin"))
                (for-each (cut install-file <>
-                              (string-append out "/share/emacs/site-lisp/guix.d/"
-                                             "emacsql" "-" ,version))
+                              (string-append out "/share/emacs/site-lisp"))
                          (find-files "." "\\.elc*$")))
              #t)))))
     (inputs
-- 
2.24.0


[-- Attachment #1.8: Type: text/plain, Size: 8 bytes --]


Maxim


[-- Attachment #1.9: VM config for testing --]
[-- Type: text/plain, Size: 5020 bytes --]

;; This is an operating system configuration template
;; for a "desktop" setup with GNOME and Xfce where the
;; root partition is encrypted with LUKS.

(use-modules (gnu) (gnu system nss))
(use-service-modules desktop xorg ssh)
(use-package-modules certs gnome emacs emacs-xyz databases gdb)

(operating-system
  (host-name "antelope")
  (timezone "Europe/Paris")
  (locale "en_US.utf8")

  ;; Choose US English keyboard layout.  The "altgr-intl"
  ;; variant provides dead keys for accented characters.
  (keyboard-layout (keyboard-layout "us" "altgr-intl"))

  ;; Use the UEFI variant of GRUB with the EFI System
  ;; Partition mounted on /boot/efi.
  (bootloader (bootloader-configuration
               (bootloader grub-efi-bootloader)
               (target "/boot/efi")
               (keyboard-layout keyboard-layout)))

  ;; Specify a mapped device for the encrypted root partition.
  ;; The UUID is that returned by 'cryptsetup luksUUID'.
  (mapped-devices
   (list (mapped-device
          (source (uuid "12345678-1234-1234-1234-123456789abc"))
          (target "my-root")
          (type luks-device-mapping))))

  (file-systems (append
                 (list (file-system
                         (device (file-system-label "my-root"))
                         (mount-point "/")
                         (type "ext4")
                         (dependencies mapped-devices))
                       (file-system
                         (device (uuid "1234-ABCD" 'fat))
                         (mount-point "/boot/efi")
                         (type "vfat")))
                 %base-file-systems))

  (users (cons (user-account
                (name "bob")
                (comment "Alice's brother")
                (group "users")
                (supplementary-groups '("wheel" "netdev"
                                        "audio" "video")))
               %base-user-accounts))

  ;; This is where we specify system-wide packages.
  (packages (cons* gdb
		   emacs-datetime
		   emacs-dashboard
		   emacs-dash
		   emacs-dash-docs
		   emacs-darkroom
		   emacs-dante
		   emacs-danneskjold-theme
		   emacs-daemons
		   emacs-d-mode
		   emacs-cyberpunk-theme
		   emacs-ctable
		   emacs-csv-mode
		   emacs-crux
		   emacs-counsel-tramp
		   emacs-counsel-projectile
		   emacs-counsel-etags
		   emacs-counsel-dash
		   emacs-constants
		   emacs-compdef
		   emacs-company
		   emacs-company-restclient
		   emacs-company-quickhelp
		   emacs-company-math
		   emacs-company-lua
		   emacs-company-lsp
		   emacs-company-jedi
		   emacs-company-irony
		   emacs-company-flow
		   emacs-company-cabal
		   emacs-company-auctex
		   emacs-commander
		   emacs-column-marker
		   emacs-cnfonts
		   emacs-cmake-font-lock
		   emacs-closql
		   emacs-clojure-mode
		   emacs-cl-print
		   emacs-cl-generic
		   emacs-circe
		   emacs-cider
		   emacs-cdlatex
		   emacs-ccls
		   ;emacs-calfw
		   emacs-buttercup
		   emacs-butler
		   emacs-build-farm
		   emacs-bui
		   emacs-bug-hunter
		   emacs-browse-at-remote
		   emacs-bongo
		   emacs-blimp
		   emacs-biblio
		   emacs-better-defaults
		   emacs-benchmark-init
		   emacs-beginend
		   emacs-bbdb
		   emacs-bash-completion
		   emacs-base16-theme
		   emacs-avy
		   emacs-autothemer
		   emacs-auto-yasnippet
		   emacs-auto-complete
		   emacs-auctex
		   emacs-attrap
		   emacs-atom-one-dark-theme
		   emacs-async
		   emacs-ascii-art-to-unicode
		   emacs-arduino-mode
		   emacs-apheleia
		   emacs-anzu
		   emacs-ansi
		   emacs-annalist
		   emacs-anaphora
		   emacs-amx
		   emacs-ample-regexps
		   emacs-all-the-icons
		   emacs-all-the-icons-dired
		   emacs-alert
		   emacs-alect-themes
		   emacs-ahungry-theme
		   emacs-aggressive-indent
		   emacs-ag
		   emacs-adoc-mode
		   emacs-add-node-modules-path
		   emacs-add-hooks
		   emacs-adaptive-wrap
		   emacs-ace-window
		   emacs-ace-link
		   emacs-ace-jump-mode
		   emacs-academic-phrases
		   emacs-a
		   emacs-2048-game
		   emacs-magit
		   emacs-ws-butler
		   emacs-string-inflection
		   emacs-recutils
		   emacs-grep-a-lot
		   emacs-diff-hl
		   emacs
                   %base-packages))

  ;; Add GNOME and Xfce---we can choose at the log-in screen
  ;; by clicking the gear.  Use the "desktop" services, which
  ;; include the X11 log-in service, networking with
  ;; NetworkManager, and more.
  (services (append (list (service gnome-desktop-service-type)
                          (service xfce-desktop-service-type)
			  (service openssh-service-type
                                   (openssh-configuration
                                    (permit-root-login #t)
                                    (allow-empty-passwords? #t)))
                          (set-xorg-configuration
                           (xorg-configuration
                            (keyboard-layout keyboard-layout))))
                    %desktop-services))

  ;; Allow resolution of '.local' host names with mDNS.
  (name-service-switch %mdns-host-lookup-nss))

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

  reply	other threads:[~2019-11-27 13:59 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-21  2:25 bug#38309: Recent $EMACSLOADPATH changes crash gnome-session Alex Griffin
2019-11-22 13:00 ` Clément Lassieur
2019-11-22 13:15   ` Mathieu Othacehe
2019-11-22 17:40     ` Maxim Cournoyer
2019-11-23 18:05       ` Ludovic Courtès
2019-11-24  3:45         ` Maxim Cournoyer
2019-11-24 17:56           ` Ludovic Courtès
2019-11-25 17:23             ` Maxim Cournoyer
2019-11-26  9:20               ` Clément Lassieur
2019-11-26  9:30                 ` Ludovic Courtès
2019-11-27 14:10                 ` Maxim Cournoyer
2019-11-27 14:15                   ` Clément Lassieur
2019-11-27 17:30                   ` Clément Lassieur
2019-11-26  9:43               ` Clément Lassieur
2019-11-26  4:04             ` Maxim Cournoyer
2019-11-26  8:56               ` Ludovic Courtès
2019-11-27  3:12                 ` Maxim Cournoyer
2019-11-27  9:04                   ` Clément Lassieur
2019-11-27  0:01 ` Leo Prikler
2019-11-27 13:58   ` Maxim Cournoyer [this message]
2019-11-27 14:21     ` Jelle Licht
2019-11-28  5:28       ` Maxim Cournoyer
2019-12-02 10:36     ` Clément Lassieur
2019-12-03  9:38       ` Arne Babenhauserheide
2019-12-04  9:14       ` Ludovic Courtès
2019-12-04 10:14         ` Clément Lassieur
2019-12-04 12:31           ` Arne Babenhauserheide
2019-12-04 11:11         ` Arne Babenhauserheide
2019-12-06 17:02           ` Maxim Cournoyer
2019-12-07 16:18             ` Arne Babenhauserheide

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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87o8wxto8o.fsf@gmail.com \
    --to=maxim.cournoyer@gmail.com \
    --cc=38309@debbugs.gnu.org \
    --cc=leo.prikler@student.tugraz.at \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).