From 612ce4127568020cd482ff119616a74cf1c1c29e Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Fri, 29 Jul 2022 10:32:00 +0100 Subject: [PATCH] Nix integration --- core/core-cli-lib.el | 2 +- core/core.el | 18 +++++---------- early-init.el | 55 +------------------------------------------- 3 files changed, 8 insertions(+), 67 deletions(-) diff --git a/core/core-cli-lib.el b/core/core-cli-lib.el index 158254ff7..bd7adccb5 100644 --- a/core/core-cli-lib.el +++ b/core/core-cli-lib.el @@ -116,7 +116,7 @@ If nil, falls back to less.") Only applies if (exit! :pager) or (exit! :pager?) are called.") -(defvar doom-cli-log-file-format (expand-file-name "logs/cli.%s.%s.%s" doom-local-dir) +(defvar doom-cli-log-file-format (expand-file-name "logs/cli.%s.%s.%s" doom-cache-dir) "Where to write any output/log file to. Must have two arguments, one for session id and the other for log type.") diff --git a/core/core.el b/core/core.el index 15df30f35..1ca3011e6 100644 --- a/core/core.el +++ b/core/core.el @@ -131,15 +131,7 @@ (defconst doom-docs-dir (concat doom-emacs-dir "docs/") "Where Doom's documentation files are stored. Must end with a slash.") -(defconst doom-private-dir - (if-let (doomdir (getenv-internal "DOOMDIR")) - (expand-file-name (file-name-as-directory doomdir)) - (or (let ((xdgdir - (expand-file-name "doom/" - (or (getenv-internal "XDG_CONFIG_HOME") - "~/.config")))) - (if (file-directory-p xdgdir) xdgdir)) - "~/.doom.d/")) +(defconst doom-private-dir (expand-file-name (file-name-as-directory (getenv-internal "DOOMDIR"))) "Where your private configuration is placed. Defaults to ~/.config/doom, ~/.doom.d or the value of the DOOMDIR envvar; @@ -208,7 +200,7 @@ downloaded/installed by packages. Must end in a slash.") (expand-file-name (file-name-as-directory localdir)) (if doom-profile doom-profile-dir - (expand-file-name ".local/" doom-emacs-dir))) + "@local@/")) "Root directory for local storage. Use this as a storage location for this system's installation of Doom Emacs. @@ -216,10 +208,11 @@ Use this as a storage location for this system's installation of Doom Emacs. These files should not be shared across systems. By default, it is used by `doom-etc-dir' and `doom-cache-dir'. Must end with a slash.") +; nix-doom-emacs: This doesn't meet XDG but backwards compatibility is a thing. (defconst doom-etc-dir (if doom-profile doom-profile-data-dir - (concat doom-local-dir "etc/")) + "~/.local/doom") "Directory for non-volatile local storage. Use this for files that don't change much, like server binaries, external @@ -228,7 +221,7 @@ dependencies or long-term shared data. Must end with a slash.") (defconst doom-cache-dir (if doom-profile doom-profile-cache-dir - (concat doom-local-dir "cache/")) + "~/.cache/doom") "Directory for volatile local storage. Use this for files that change often, like cache files. Must end with a slash.") @@ -294,6 +287,7 @@ users).") ;; Don't store eln files in ~/.emacs.d/eln-cache (where they can easily be ;; deleted by 'doom upgrade'). (add-to-list 'native-comp-eln-load-path (concat doom-cache-dir "eln/")) + (add-to-list 'native-comp-eln-load-path (concat doom-cache-dir "cache/eln/")) (with-eval-after-load 'comp ;; HACK Disable native-compilation for some troublesome packages diff --git a/early-init.el b/early-init.el index 19ff8a768..088125cda 100644 --- a/early-init.el +++ b/early-init.el @@ -73,60 +73,7 @@ ;; ;;; Detect `user-emacs-directory' -;; Prevent recursive profile processing, in case you're loading a Doom profile. -(unless (boundp 'doom-version) - ;; Not using `command-switch-alist' to process --profile and --init-directory - ;; was intentional. `command-switch-alist' is processed too late at startup to - ;; change `user-emacs-directory' in time. - - ;; DEPRECATED Backported from 29. Remove this when 27/28 support is removed. - (let ((initdir (or (cadr (member "--init-directory" command-line-args)) - (getenv-internal "EMACSDIR")))) - (when initdir - ;; Discard the switch to prevent "invalid option" errors later. - (add-to-list 'command-switch-alist (cons "--init-directory" (lambda (_) (pop argv)))) - (setq user-emacs-directory initdir))) - - (let ((profile (or (cadr (member "--profile" command-line-args)) - (getenv-internal "DOOMPROFILE")))) - (when profile - ;; Discard the switch to prevent "invalid option" errors later. - (add-to-list 'command-switch-alist (cons "--profile" (lambda (_) (pop argv)))) - ;; While processing the requested profile, Doom loosely expects - ;; `user-emacs-directory' to be changed. If it doesn't, then you're using - ;; profiles.el as a glorified, runtime dir-locals.el (which is fine, if - ;; intended). - (catch 'found - (let ((profiles-file (expand-file-name "profiles.el" user-emacs-directory))) - (when (file-exists-p profiles-file) - (with-temp-buffer - (let ((coding-system-for-read 'utf-8-auto)) - (insert-file-contents profiles-file)) - (condition-case-unless-debug e - (let ((profile-data (cdr (assq (intern profile) (read (current-buffer)))))) - (dolist (var profile-data (if profile-data (throw 'found t))) - (if (eq (car var) 'env) - (dolist (env (cdr var)) (setenv (car env) (cdr env))) - (set (car var) (cdr var))))) - (error (error "Failed to parse profiles.el: %s" (error-message-string e)))))) - ;; If the requested profile isn't in profiles.el, then see if - ;; $EMACSDIR/profiles/$DOOMPROFILE exists. These are implicit - ;; profiles, where `emacs --profile foo` will be equivalent to `emacs - ;; --init-directory $EMACSDIR/profile/foo', if that directory exists. - (let ((profile-dir - (expand-file-name - profile (or (getenv-internal "DOOMPROFILESDIR") - (expand-file-name "profiles/" user-emacs-directory))))) - (when (file-directory-p profile-dir) - (setq user-emacs-directory profile-dir) - (throw 'found t))) - - (user-error "No %S profile found" profile))) - - (when init-file-debug - (message "Selected profile: %s" profile)) - ;; Ensure the selected profile persists through the session - (setenv "DOOMPROFILE" profile)))) +(setq user-emacs-directory (file-name-directory load-file-name)) ;; -- 2.36.0