From b30b65170651056dad71335dbbfb88bee41a2f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Fri, 25 Oct 2019 13:59:33 +0200 Subject: [PATCH 1/7] Updating doom-emacs version It now requires emacsPackages from unstalbe or emacs-overlay --- default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index fb07c09..5a7ce55 100644 --- a/default.nix +++ b/default.nix @@ -39,8 +39,8 @@ let src = fetchFromGitHub { owner = "hlissner"; repo = "doom-emacs"; - rev = "22ae9cca15f5aa9215cf0ec2c7b0b78d64deddc0"; - sha256 = "0nya6qf2v0snd4zskxxradqdpiylpx3lxfrfi7xs04yb39ma99pn"; + rev = "eb2a67d05ff4b178fedabd36ce448191cce8d6bb"; + sha256 = "05nhsn4q2bbs8m7x88ci2k7cq7hc7ql6xkyv0hmz762ip8g1jvlp"; }; phases = ["unpackPhase" "patchPhase" "installPhase"]; patches = [ From 2dca32ed6319c315996adaf1b97d1b4f9fa4e1d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Fri, 25 Oct 2019 18:02:58 +0200 Subject: [PATCH 2/7] install the bundled package derivations by default --- default.nix | 60 ++++++++++++++++++++++++++++++++---------------- derivations.json | 20 ++++++++++++++++ derivations.lock | 54 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+), 20 deletions(-) create mode 100644 derivations.json create mode 100644 derivations.lock diff --git a/default.nix b/default.nix index 5a7ce55..0817cce 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,27 @@ { # The files would be going to ~/.config/doom (~/.doom.d) doomPrivateDir - # Package set to install emacs and dependent packages from + /* Package set to install emacs and dependent packages from + + Only used to get emacs package, if `bundledPackages` is set + */ , emacsPackages + /* Use bundled revision of github.com/nix-community/emacs-overlay + as `emacsPackages` + */ +, bundledPackages ? true + /* Override dependency versions + + Hadful for testing out updated dependencies without publishing + a new version of them. + + Type: dependencyOverrides :: attrset -> either path derivation + + Example: + dependencyOverrides = { + "emacs-overlay" = fetchFromGitHub { owner = /* ...*\/; }; + }; + */ +, dependencyOverrides ? { } , lib , pkgs , stdenv @@ -14,6 +34,12 @@ , writeTextDir }: let + lock = pkgs.callPackage + "${builtins.fetchTarball https://github.com/vlaci/nix-lock/archive/develop.tar.gz}/lock.nix" { + path = ./derivations.lock; + overrides = dependencyOverrides; + }; + # Packages we need to get the default doom configuration run overrides = self: super: { evil-escape = super.evil-escape.overrideAttrs (esuper: { @@ -24,24 +50,14 @@ let version = "1"; recipe = null; ename = pname; - src = fetchFromGitHub { - owner = "TobiasZawada"; - repo = "org-yt"; - rev = "40cc1ac76d741055cbefa13860d9f070a7ade001"; - sha256 = "0jsm3azb7lwikvc53z4p91av8qvda9s15wij153spkgjp83kld3p"; - }; + src = lock.get pname; }; }; # Stage 1: prepare source for byte-compilation doomSrc = stdenv.mkDerivation { name = "doom-src"; - src = fetchFromGitHub { - owner = "hlissner"; - repo = "doom-emacs"; - rev = "eb2a67d05ff4b178fedabd36ce448191cce8d6bb"; - sha256 = "05nhsn4q2bbs8m7x88ci2k7cq7hc7ql6xkyv0hmz762ip8g1jvlp"; - }; + src = lock.get "doom-emacs"; phases = ["unpackPhase" "patchPhase" "installPhase"]; patches = [ (substituteAll { @@ -55,16 +71,20 @@ let ''; }; + # Bundled version of `emacs-overlay` + emacs-overlay = import (lock.get "emacs-overlay") pkgs pkgs; + # Stage 2:: install dependencies and byte-compile prepared source doomLocal = let - straight-env = pkgs.callPackage (fetchFromGitHub { - owner = "vlaci"; - repo = "nix-straight.el"; - rev = "v1.0"; - sha256 = "038dss49bfvpj15psh5pr9jyavivninl0rzga9cn8qyc4g2cj5i0"; - }) { - emacsPackages = emacsPackages.overrideScope' overrides; + straight-env = pkgs.callPackage (lock.get "nix-straight.el") { + emacsPackages = + if bundledPackages then + let + epkgs = emacs-overlay.emacsPackagesNgFor emacsPackages.emacs; + in epkgs.overrideScope' overrides + else + emacsPackages.overrideScope' overrides; emacsLoadFiles = [ ./advice.el ]; emacsArgs = [ "install" diff --git a/derivations.json b/derivations.json new file mode 100644 index 0000000..af276f9 --- /dev/null +++ b/derivations.json @@ -0,0 +1,20 @@ +{ + "doom-emacs": { + "repo": "doom-emacs", + "owner": "hlissner", + "rev": "develop" + }, + "nix-straight.el": { + "owner": "vlaci", + "repo": "nix-straight.el", + "rev": "v1.0" + }, + "org-yt": { + "owner": "TobiasZawada", + "repo": "org-yt" + }, + "emacs-overlay": { + "owner": "nix-community", + "repo": "emacs-overlay" + } +} diff --git a/derivations.lock b/derivations.lock new file mode 100644 index 0000000..1a69737 --- /dev/null +++ b/derivations.lock @@ -0,0 +1,54 @@ +{ + "doom-emacs": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "hlissner", + "repo": "doom-emacs", + "rev": "019308a93c639847dccac75149d407b5a06f6c67", + "sha256": "0wqi7m6j1kcjxid651r0p08hswx8yxpshg61358n0jbzl3as1hrk" + }, + "meta": { + "updated": "2019-10-25T22:28:24+00:00", + "rev": "019308a93c639847dccac75149d407b5a06f6c67" + } + }, + "nix-straight.el": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "vlaci", + "repo": "nix-straight.el", + "rev": "6182914aefea06ef514cd3f3f7f9f67db45940db", + "sha256": "038dss49bfvpj15psh5pr9jyavivninl0rzga9cn8qyc4g2cj5i0" + }, + "meta": { + "updated": "2019-10-25T22:28:25+00:00", + "rev": "6182914aefea06ef514cd3f3f7f9f67db45940db" + } + }, + "org-yt": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "TobiasZawada", + "repo": "org-yt", + "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001", + "sha256": "0jsm3azb7lwikvc53z4p91av8qvda9s15wij153spkgjp83kld3p" + }, + "meta": { + "updated": "2019-10-25T22:28:27+00:00", + "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001" + } + }, + "emacs-overlay": { + "fetcher": "fetchFromGitHub", + "args": { + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "daf9002714e9adfa415a385d939539524482142d", + "sha256": "1w3zyk4847h1avd50cs1r7apw37bsyslv17vjkdk4h0r4gqz9cvs" + }, + "meta": { + "updated": "2019-10-25T22:28:28+00:00", + "rev": "daf9002714e9adfa415a385d939539524482142d" + } + } +} From bdbf14a95b91d6936ff9aa3681b1fe5da0912abe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Sun, 10 Nov 2019 17:00:17 +0100 Subject: [PATCH 3/7] advice.el: removing unneeded advices --- advice.el | 9 --------- 1 file changed, 9 deletions(-) diff --git a/advice.el b/advice.el index 9e85ca8..c2ab043 100644 --- a/advice.el +++ b/advice.el @@ -9,12 +9,3 @@ :around (lambda (orig-print &rest r) (let ((noninteractive nil)) (apply orig-print r)))))) - - - -(advice-add 'doom-call-process - :before (lambda (&rest r) - (message "> call-process %s" r))) -(advice-add 'doom-call-process - :after (lambda (&rest r) - (message "< call-process %s" r))) From 8e36b53b3e7a40fcb854c18e9146291cfd262a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Sun, 10 Nov 2019 17:03:33 +0100 Subject: [PATCH 4/7] Forcing no to all questions doom install would ask Newer doom versions (after 873fc5c0db4876d9e1f347fa6cbd2a3a1933df69) has a rewritten cli interface. I could not figure out how to pass `--no-env` and `--no-fonts` (should check later if it is a bug in doom) --- advice.el | 5 +++++ default.nix | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/advice.el b/advice.el index c2ab043..22ac20f 100644 --- a/advice.el +++ b/advice.el @@ -9,3 +9,8 @@ :around (lambda (orig-print &rest r) (let ((noninteractive nil)) (apply orig-print r)))))) + +(advice-add 'y-or-n-p + :override (lambda (q) + (message "%s \n--> answering NO" q) + nil)) diff --git a/default.nix b/default.nix index 0817cce..bd19ea4 100644 --- a/default.nix +++ b/default.nix @@ -87,9 +87,8 @@ let emacsPackages.overrideScope' overrides; emacsLoadFiles = [ ./advice.el ]; emacsArgs = [ + "--" "install" - "--no-fonts" - "--no-env" ]; # Need to reference a store path here, as byte-compilation will bake-in From fa93a28f81bf89c1558df5752cb0d33a5788cd99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Sun, 10 Nov 2019 17:08:59 +0100 Subject: [PATCH 5/7] emacs-overlay: updated in order to fix building of lua-mode emacsPackagesNgFor was changed to emacsPackagesFor in upstream --- default.nix | 2 +- derivations.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/default.nix b/default.nix index bd19ea4..c53ec2e 100644 --- a/default.nix +++ b/default.nix @@ -81,7 +81,7 @@ let emacsPackages = if bundledPackages then let - epkgs = emacs-overlay.emacsPackagesNgFor emacsPackages.emacs; + epkgs = emacs-overlay.emacsPackagesFor emacsPackages.emacs; in epkgs.overrideScope' overrides else emacsPackages.overrideScope' overrides; diff --git a/derivations.lock b/derivations.lock index 1a69737..4e7ca61 100644 --- a/derivations.lock +++ b/derivations.lock @@ -43,12 +43,12 @@ "args": { "owner": "nix-community", "repo": "emacs-overlay", - "rev": "daf9002714e9adfa415a385d939539524482142d", - "sha256": "1w3zyk4847h1avd50cs1r7apw37bsyslv17vjkdk4h0r4gqz9cvs" + "rev": "0bd32c063118ddc95d1a73ccd01b51a2d6dda24e", + "sha256": "1yc1az5l6073x1amk4g3rvfd98wsq3z3jvh2l7crp8q6wq9rndpa" }, "meta": { - "updated": "2019-10-25T22:28:28+00:00", - "rev": "daf9002714e9adfa415a385d939539524482142d" + "updated": "2019-11-10T14:33:57+00:00", + "rev": "0bd32c063118ddc95d1a73ccd01b51a2d6dda24e" } } } From d648dfc477b558823622b3c9647a23e49a174471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Sun, 10 Nov 2019 17:13:46 +0100 Subject: [PATCH 6/7] adding a prefix to logs emitted by the adjusted installer --- advice.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/advice.el b/advice.el index 22ac20f..43cd54f 100644 --- a/advice.el +++ b/advice.el @@ -1,10 +1,10 @@ ;;; -*- lexical-binding: t; -*- (advice-add 'nix-straight-get-used-packages :before (lambda (&rest r) - (message "Advising doom installer to gather packages to install...") + (message "[nix-doom-emacs] Advising doom installer to gather packages to install...") (advice-add 'doom-reload-autoloads :override (lambda (&optional file force-p) - (message "Skipping generating autoloads..."))) + (message "[nix-doom-emacs] Skipping generating autoloads..."))) (advice-add 'doom--format-print :around (lambda (orig-print &rest r) (let ((noninteractive nil)) @@ -12,5 +12,5 @@ (advice-add 'y-or-n-p :override (lambda (q) - (message "%s \n--> answering NO" q) + (message "%s \n[nix-doom-emacs] --> answering NO" q) nil)) From 1b540d189c2f0dd17fbb3252374c15058e5ebb8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Sun, 10 Nov 2019 17:16:52 +0100 Subject: [PATCH 7/7] updating doom emacs to upstream --- advice.el | 2 +- derivations.lock | 8 ++++---- fix-paths.patch | 36 +++++++++++++----------------------- 3 files changed, 18 insertions(+), 28 deletions(-) diff --git a/advice.el b/advice.el index 43cd54f..e5f8255 100644 --- a/advice.el +++ b/advice.el @@ -2,7 +2,7 @@ (advice-add 'nix-straight-get-used-packages :before (lambda (&rest r) (message "[nix-doom-emacs] Advising doom installer to gather packages to install...") - (advice-add 'doom-reload-autoloads + (advice-add 'doom-cli-reload-autoloads :override (lambda (&optional file force-p) (message "[nix-doom-emacs] Skipping generating autoloads..."))) (advice-add 'doom--format-print diff --git a/derivations.lock b/derivations.lock index 4e7ca61..83ee68b 100644 --- a/derivations.lock +++ b/derivations.lock @@ -4,12 +4,12 @@ "args": { "owner": "hlissner", "repo": "doom-emacs", - "rev": "019308a93c639847dccac75149d407b5a06f6c67", - "sha256": "0wqi7m6j1kcjxid651r0p08hswx8yxpshg61358n0jbzl3as1hrk" + "rev": "58e674d8fb85515e7980c87fc708dabb2b276128", + "sha256": "1algblcah2y5lbrn60fjslszx3jz1p9w7bh82c788ih1d8x7z253" }, "meta": { - "updated": "2019-10-25T22:28:24+00:00", - "rev": "019308a93c639847dccac75149d407b5a06f6c67" + "updated": "2019-11-10T14:33:52+00:00", + "rev": "58e674d8fb85515e7980c87fc708dabb2b276128" } }, "nix-straight.el": { diff --git a/fix-paths.patch b/fix-paths.patch index f6bcd81..145699f 100644 --- a/fix-paths.patch +++ b/fix-paths.patch @@ -1,25 +1,15 @@ -diff --git a/bin/doom b/bin/doom -index bd381e5ab..37cc69569 100755 ---- a/bin/doom -+++ b/bin/doom -@@ -6,7 +6,7 @@ - ":"; DOOMBASE=$(dirname "$0")/.. - ":"; [ "$1" = -d ] || [ "$1" = --debug ] && { shift; export DEBUG=1; } - ":"; [ "$1" = doc ] || [ "$1" = doctor ] && { cd "$DOOMBASE"; shift; exec $EMACS --script bin/doom-doctor "$@"; exit 0; } --":"; [ "$1" = run ] && { cd "$DOOMBASE"; shift; exec $EMACS -q --no-splash -l bin/doom "$@"; exit 0; } -+":"; [ "$1" = run ] && { cd "$DOOMBASE"; shift; exec $EMACS -q --no-splash -l bin/.doom-wrapped "$@"; exit 0; } - ":"; exec $EMACS --script "$0" -- "$@" - ":"; exit 0 - diff --git a/core/core.el b/core/core.el -index 9cc1cfc25..fcbc3a3cf 100644 +index cb12f8d08..03f370691 100644 --- a/core/core.el +++ b/core/core.el -@@ -54,20 +54,20 @@ decrease this. If you experience stuttering, increase this.") +@@ -63,22 +63,21 @@ decrease this. If you experience stuttering, increase this.") + "The root directory for Doom's modules. Must end with a slash.") - (defvar doom-local-dir - (or (getenv "DOOMLOCALDIR") -- (concat doom-emacs-dir ".local/")) + (defconst doom-local-dir +- (if-let (localdir (getenv "DOOMLOCALDIR")) +- (expand-file-name (file-name-as-directory localdir)) +- (concat doom-emacs-dir ".local/")) ++ (or (getenv "DOOMLOCALDIR") + "@local@/") "Root directory for local storage. @@ -27,19 +17,19 @@ index 9cc1cfc25..fcbc3a3cf 100644 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.") --(defvar doom-etc-dir (concat doom-local-dir "etc/") -+(defvar doom-etc-dir "~/.local/doom" +-(defconst doom-etc-dir (concat doom-local-dir "etc/") ++(defconst doom-etc-dir "~/.local/doom" "Directory for non-volatile local storage. Use this for files that don't change much, like server binaries, external dependencies or long-term shared data. Must end with a slash.") --(defvar doom-cache-dir (concat doom-local-dir "cache/") -+(defvar doom-cache-dir "~/.cache/doom/" +-(defconst doom-cache-dir (concat doom-local-dir "cache/") ++(defconst doom-cache-dir "~/.cache/doom/" "Directory for volatile local storage. Use this for files that change often, like cache files. Must end with a slash.") -@@ -189,7 +189,7 @@ users).") +@@ -196,7 +195,7 @@ users).") (setq abbrev-file-name (concat doom-local-dir "abbrev.el") async-byte-compile-log-file (concat doom-etc-dir "async-bytecomp.log") bookmark-default-file (concat doom-etc-dir "bookmarks")