Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
straight.el
Discontinued 🍀 Next-generation, purely functional package manager for the Emacs hacker. [Moved to: https://github.com/radian-software/straight.el] (by raxod502)
I follow a very similar approach, keeping everything related to Emacs in one org file to be tangled to early init, init, or system specific files. I do however install org mode via straight.el by triggering the install in my init.el before tangling the org file. Here is my config: https://github.com/xcapaldi/dotfiles/blob/main/config.org
;;; init.el -*- lexical-binding: t; -*- (require 'subr-x) ; for string-remove-suffix ;;; We will be using no-littering, but we need first to tell straight to keep ;;; repo and build directories out of the way (defun neo/litter-directory (&optional leaf-dir version) (let* ((dir (directory-file-name (file-name-directory user-emacs-directory))) (distribution (string-remove-suffix ".d" dir)) (package-dir (if leaf-dir leaf-dir "")) (version-dir (if version version ""))) (file-name-as-directory (format "%s-save.d/%s/%s" distribution package-dir version-dir)))) (setq straight-base-dir (neo/litter-directory)) (setq straight-build-dir (neo/litter-directory "straight/build" emacs-version)) ;;; streaight.el bootstrap code from https://github.com/raxod502/straight.el#getting-started ;;; NOTE: the directory used to be user-emacs-directory, we are moving packages ;;; out of our configuration and in places compatible with no-littering (defvar bootstrap-version) (let ((bootstrap-file (expand-file-name "straight/repos/straight.el/bootstrap.el" straight-base-dir)) (bootstrap-version 5)) (unless (file-exists-p bootstrap-file) (with-current-buffer (url-retrieve-synchronously "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el" 'silent 'inhibit-cookies) (goto-char (point-max)) (eval-print-last-sexp))) (load bootstrap-file nil 'nomessage)) ;;; Install org from upstream repo before using org-babel, or we would ;;; get whatever old version is distributed with Emacs. (straight-use-package '(org :type git :repo "https://code.orgmode.org/bzg/org-mode.git" :local-repo "org" :depth full :pre-build (straight-recipes-org-elpa--build) :build (:not autoloads) :files (:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*")))) (straight-use-package 'use-package) ;; Configure use-package to use straight.el by default (use-package straight :custom (straight-use-package-by-default t)) (require 'ox-org) (with-temp-buffer (insert-file-contents "~/neo/neo.org") ;; TODO should export to a different file and move to this only if different ;; this would allow us to cache neo-flat.el. (let* ((flat-neo-config-dir (neo/litter-directory "neo")) (flat-neo-config-file (expand-file-name "neo-flat.org" flat-neo-config-dir))) (make-directory flat-neo-config-dir t) (org-export-to-file 'org flat-neo-config-file) (org-babel-load-file flat-neo-config-file)))
It is possible to install custom packages using package.el by maintaining your own registry. See https://github.com/jcs-emacs/jcs-elpa for example