hamacs/initialize
Howard Abrams 6ea9cc0134 Convert from straight to built-in package-vc
While I now have a dependency on Emacs 30, the new feature to be able
to install code from either *ELPA or a Git repository, is really nice.
2026-10-20 15:35:23 -07:00

135 lines
4.6 KiB
Bash
Executable file

#!/usr/bin/env bash
# ----------------------------------------------------------------------
# INITIALIZE the HAMACS SYSTEM
# ----------------------------------------------------------------------
# shellcheck disable=SC2164
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
echo Download the public keys:
gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40
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 init.el calls package-initialize itself, we just
;; need to stop the normal package process.
;;
;;; Code:
;; Need the package system near the front:
(require 'package)
;; init.el activates the packages, 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.")
;; Bug fixes for ORG (there always seems to be something):
(defvar native-comp-deferred-compilation-deny-list nil)
;; Allow the installation of unsigned packages, but verify the
;; signature if possible:
(setq package-check-signature 'allow-unsigned)
;; Packages come from Melpa and the GNU and NonGNU ELPAs (the latter
;; two are Emacs defaults). The rest are installed straight from their
;; repositories with the :vc keyword of use-package (Emacs 30+).
(require 'package)
(require 'use-package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/"))
(setq package-enable-at-startup nil)
(package-initialize)
;; Install any missing package by default, so we don't need :ensure t.
;; Use :ensure nil for libraries that ship with Emacs (or my own).
(setq use-package-always-ensure t)
(use-package org)
;; Let's rock:
(org-babel-load-file "$HAMACS_DIR/bootstrap.org")
(provide 'init)
;;; init.el ends here
EOF
echo "Created $HAMACS_DEST/init.el"