134dbcbb08
The org version on my current v29 build of Emacs seems to be broken, so I'm now downloading the latest org version.
115 lines
3.2 KiB
Bash
Executable file
115 lines
3.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# ----------------------------------------------------------------------
|
|
# INITIALIZE the HAMACS SYSTEM
|
|
# ----------------------------------------------------------------------
|
|
|
|
HAMACS_DIR=$(cd "$(dirname "$0")"; pwd)
|
|
HAMACS_DEST=$HOME/.emacs.d
|
|
|
|
cd $HAMACS_DIR
|
|
mkdir -p $HAMACS_DEST
|
|
|
|
for LINK in snippets templates elisp
|
|
do
|
|
echo Symlinking $HAMACS_DEST/$LINK to $HAMACS_DIR/$LINK ...
|
|
rm -rf $HAMACS_DEST/$LINK
|
|
ln -s $HAMACS_DIR/$LINK $HAMACS_DEST
|
|
done
|
|
|
|
cat > $HAMACS_DEST/early-init.el <<EOF
|
|
;;; early-init.el --- Hamacs Early Init -*- lexical-binding: t; -*-
|
|
;;
|
|
;;; Commentary:
|
|
;;
|
|
;; This is my early Emacs configuration file. See init.el for the real
|
|
;; boot process. Since we are using straight or elpaca, we just need to
|
|
;; stop the normal package process.
|
|
;;
|
|
;;; Code:
|
|
|
|
;; We'll be using straight. So, we don't want duplicated package loading:
|
|
(setq package-enable-at-startup nil)
|
|
|
|
;; While I would rather program my configurations, sometimes the Emacs
|
|
;; menu system is _good enough_, but I want it in its own file:
|
|
|
|
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
|
(when (file-exists-p custom-file)
|
|
(load custom-file))
|
|
|
|
;; Let's build the \`exec-path' from the _real_ shell path:
|
|
EOF
|
|
|
|
IFS=":" read -r -a PATH_ARRAY <<< "${PATH}"
|
|
for P in "${PATH_ARRAY[@]}"
|
|
do
|
|
echo "(add-to-list 'exec-path \"${P}\")" >> $HAMACS_DEST/early-init.el
|
|
done
|
|
|
|
cat >> $HAMACS_DEST/early-init.el <<EOF
|
|
;; Local Variables:
|
|
;; no-byte-compile: t
|
|
;; no-native-compile: t
|
|
;; no-update-autoloads: t
|
|
;; End:
|
|
|
|
;;; early-init.el ends here
|
|
EOF
|
|
|
|
echo Created $HAMACS_DEST/early-init.el
|
|
|
|
|
|
cat > $HAMACS_DEST/init.el <<EOF
|
|
;;; init.el --- Hamacs Init -*- lexical-binding: t; -*-
|
|
;;
|
|
;;; Commentary:
|
|
;;
|
|
;; This is my Emacs Bootloader. Simply put, I initialize the package management
|
|
;; system, and then tangle my literate files. This simple idea came from
|
|
;; https://github.com/susamn/dotfiles
|
|
;;
|
|
;;; Code:
|
|
|
|
(defvar hamacs-source-dir "$HAMACS_DIR" "Where we be.")
|
|
|
|
;; Configure straight https://github.com/raxod502/straight.el#getting-started
|
|
|
|
(defvar bootstrap-version)
|
|
(let ((bootstrap-file
|
|
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
|
(bootstrap-version 6))
|
|
(unless (file-exists-p bootstrap-file)
|
|
(with-current-buffer
|
|
(url-retrieve-synchronously
|
|
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
|
|
'silent 'inhibit-cookies)
|
|
(goto-char (point-max))
|
|
(eval-print-last-sexp)))
|
|
(load bootstrap-file nil 'nomessage))
|
|
|
|
(straight-use-package 'use-package)
|
|
|
|
;; While that enables the :straight t extension to use-package, let's just have that be the default:
|
|
(use-package straight
|
|
:custom (straight-use-package-by-default t
|
|
straight-default-vc 'git))
|
|
|
|
;; See the details in https://dev.to/jkreeftmeijer/emacs-package-management-with-straight-el-and-use-package-3oc8
|
|
|
|
;; Bug fixes for ORG (there always seems to be something):
|
|
(defvar native-comp-deferred-compilation-deny-list nil)
|
|
|
|
(use-package org
|
|
;; TODO: Using the latest org-mode
|
|
;; :straight (:type built-in)
|
|
)
|
|
|
|
;; Let's rock:
|
|
(org-babel-load-file "$HAMACS_DIR/bootstrap.org")
|
|
|
|
(provide 'init)
|
|
;;; init.el ends here
|
|
EOF
|
|
|
|
echo Created $HAMACS_DEST/init.el
|