I am not sure how things worked on Emacs version < 29. But I have a very similar literal config file, where I am slowly trying to 'create' a 'lightweight' Spacemacs alternative (or more a Spacemacs complementary for easy debugging/testing. Only tested on Emacs 30 b.t.w., but I am almost sure it should work just fine also on Emacs 29).
You can find it here.
The file currently is not for public use (otherwise you probably have to comment out some sections). But anyway, I can explain how it works.
So, when tangling the org-file, whole sections can be excluded by commenting out the relevant sections, as explained in under the 'Usage info' section.
The first line of the file makes sure that the file gets tangled on save automatically.
Then, the first thing I do is to define a use
function that installs a package if not installed yet, and then activates it.
For it to work correctly, I have the line:
(setq package-enable-at-startup nil)
in my early-init.el file.
Subsequently, I can include packages by just adding a
(use 'package-name)
to any of the code blocks.
Finally, I can provide all layers which I have placed under the section modules
(it's not real layers, but it is a somewhat similar concept) in a single org file, and users can (de)activate it by (un)commenting some relevant section.
Of course, this has advantages and disadvantages compared to the real Spacemacs config. The main advanatage is that I can easily 'deactivate' layers, without them (and all their packages) getting uninstalled. And also, of course, there are no 'hidden/mystery' configurations inside the org/el file(s) (which makes it a good start for debugging/development).
P.S.
Personally, I think I like this design better than the heavily preconfigured Doom/Spacemacs distributions. But I must add that I am a very lightweight user. If I would like to use a fully configured IDE, I might still head for Spacemacs (or maybe not... I am still exploring. In the end, this might become a community configured init (template) file, or it might not. Let's see where it goes...).
:disabled
and teach them the basic movement commands andC-k
/kill-line
?:disabled
to the packages still installs them. What is the wrong in using a flag and a conditional in disabling a whole group of packages? Isn't it easier to use a conditional than writing:disabled
for 100 programming related packages which someone who writes in Org doesn't need?:ensure nil
will not cause a package to be installed. there's also the variableuse-package-always-ensure
. i wouldn't write:disabled
for a hundred packages. i'd use a keyboard macro orsed