Implement pre-built Doom Emacs packages for the live USB image, eliminating the need to run `doom sync` after first boot. Changes: - Add nix-doom-emacs-unstraightened flake input - Add homeModule to all three module sets (nixos, unstable, darwin) - Add `prebuiltDoom` option to emacs role (default: false) - Enable prebuiltDoom for live-usb configuration - Pin custom packages in packages.el for deterministic builds: - claude-code-ide, gptel-tool-library, beads When prebuiltDoom=true, all Doom packages are compiled at nix build time using emacs-overlay. The doom configuration is stored in the nix store (read-only), and no `doom sync` is required at runtime. This is ideal for: - Live USB images - Immutable/reproducible systems - Offline deployments Closes: nixos-configs-1wd
72 lines
2.8 KiB
EmacsLisp
72 lines
2.8 KiB
EmacsLisp
;; -*- no-byte-compile: t; -*-
|
|
;;; $DOOMDIR/packages.el
|
|
|
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
|
;; use 'M-x doom/reload'.
|
|
|
|
|
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
|
;; (package! some-package)
|
|
|
|
;; To install a package directly from a remote git repo, you must specify a
|
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
|
;; https://github.com/radian-software/straight.el#the-recipe-format
|
|
;; (package! another-package
|
|
;; :recipe (:host github :repo "username/repo"))
|
|
|
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
|
;; `:files' in the `:recipe':
|
|
;; (package! this-package
|
|
;; :recipe (:host github :repo "username/repo"
|
|
;; :files ("some-file.el" "src/lisp/*.el")))
|
|
|
|
;; If you'd like to disable a package included with Doom, you can do so here
|
|
;; with the `:disable' property:
|
|
;; (package! builtin-package :disable t)
|
|
|
|
;; You can override the recipe of a built in package without having to specify
|
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
|
;; (package! builtin-package :recipe (:nonrecursive t))
|
|
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
|
|
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
|
;; This is required for some packages whose default branch isn't 'master' (which
|
|
;; our package manager can't deal with; see radian-software/straight.el#279)
|
|
;; (package! builtin-package :recipe (:branch "develop"))
|
|
|
|
;; Use `:pin' to specify a particular commit to install.
|
|
;; (package! builtin-package :pin "1a2b3c4d5e")
|
|
|
|
|
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
|
;; (unpin! pinned-package)
|
|
;; ...or multiple packages
|
|
;; (unpin! pinned-package another-pinned-package)
|
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
|
;; (unpin! t)
|
|
|
|
;; (package! org-caldav)
|
|
|
|
;; Note: Packages with custom recipes must be pinned for nix-doom-emacs-unstraightened
|
|
;; to build deterministically. Update pins when upgrading packages.
|
|
|
|
(package! gptel :recipe (:nonrecursive t))
|
|
|
|
(package! claude-code-ide
|
|
:recipe (:host github :repo "manzaltu/claude-code-ide.el")
|
|
:pin "760240d7f03ff16f90ede9d4f4243cd94f3fed73")
|
|
|
|
(package! gptel-tool-library
|
|
:recipe (:host github :repo "aard-fi/gptel-tool-library"
|
|
:files ("*.el"))
|
|
:pin "baffc3b0d74a2b7cbda0d5cd6dd7726d6ccaca83")
|
|
|
|
(package! beads
|
|
:recipe (:type git :repo "https://codeberg.org/ctietze/beads.el.git"
|
|
:files ("lisp/*.el"))
|
|
:pin "f40a6461d3c0fa0969311bbb6a1e30d1bba86c88")
|