Use doomscript instead of cli.el for dumping
Removes the need to build a stage1 DOOMDIR, we can just use the user's DOOMDIR directly. The same approach should work for the next stage, removing the need to leave our cli.el in the final DOOMDIR.
This commit is contained in:
parent
6c394ec081
commit
e41bb2e0e5
2 changed files with 11 additions and 12 deletions
56
build-helpers/dump
Executable file
56
build-helpers/dump
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env doomscript
|
||||
;; -*- lexical-binding: t; -*-
|
||||
|
||||
(require 'json)
|
||||
|
||||
(defcli! dump
|
||||
((output-directory ("-o" dir) "Directory to dump into.")
|
||||
(&flag full? ("--full")))
|
||||
"Dump intermediates for nix-doom-emacs-unstraightened."
|
||||
;; Load the user's init.el, or we'll dump only core packages.
|
||||
(load! doom-module-init-file doom-user-dir t)
|
||||
(let* ((all-packages (doom-package-list full?))
|
||||
;; For built-in packages, the :ignore property is the location of the
|
||||
;; built-in library, which is a Nix store path. We do not want that
|
||||
;; path to escape: avoid it by just filtering ignored packages here.
|
||||
(packages (seq-remove (lambda (p) (or (plist-get (cdr p) :ignore)
|
||||
(plist-get (cdr p) :disable)))
|
||||
all-packages))
|
||||
;; For recipes with :files, print it to a string before json-encode.
|
||||
;; Otherwise it is serialized as a plist if it starts with :defaults.
|
||||
;; We either ignore this or pass it to melpa2nix in a recipe.
|
||||
(packages
|
||||
(mapcar (lambda (p)
|
||||
(let* ((plist (cdr p))
|
||||
(recipe (plist-get plist :recipe))
|
||||
(files (plist-get recipe :files)))
|
||||
(when files
|
||||
(setcdr p
|
||||
(plist-put plist :recipe
|
||||
(plist-put recipe :files
|
||||
(prin1-to-string files)))))
|
||||
p))
|
||||
packages))
|
||||
(json (json-encode packages))
|
||||
(json-path (expand-file-name "packages.json" output-directory)))
|
||||
(write-region json nil json-path)
|
||||
(with-temp-buffer
|
||||
(insert ";;; packages.el -*- no-byte-compile: t; -*-
|
||||
|
||||
;; Package list generated by nix-doom-emacs-unstraightened.
|
||||
|
||||
;; Disabled packages:
|
||||
")
|
||||
(dolist (kp all-packages)
|
||||
(when (plist-get (cdr kp) :disable)
|
||||
(insert "(package! " (symbol-name (car kp)) " :disable t)\n")))
|
||||
(insert "
|
||||
;; Packages installed by nix-doom-emacs-unstraightened or ignored by you:
|
||||
")
|
||||
(dolist (kp all-packages)
|
||||
(let ((p (cdr kp)))
|
||||
(when (not (plist-get p :disable))
|
||||
(insert "(package! " (symbol-name (car kp)) " :ignore t)\n"))))
|
||||
(write-region nil nil (expand-file-name "packages.el" output-directory)))))
|
||||
|
||||
(run! "dump" (cdr (member "--" argv)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue