;;; package-management.el --- Initialize package management -*- lexical-binding: t; -*- ;;; Commentary: ;; * Set up straight ;; * Set up use-package. ;;; Code: ;; Workaround for < 26.3 . (when (and (< emacs-major-version 27) (not (string= emacs-version "26.3"))) (defvar gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) ;; Define variables for straight. (customize-set-variable 'straight-use-package-by-default t "Makes use-package invoke straight.el to install the package.") (customize-set-variable 'straight-cache-autoloads t "Cache the autoloads of all packages in a single file.") ;; Use shallow clones if available disk space is under 5 GiB. (when (or (< emacs-major-version 27) ; file-system-info was introduced in 27. (< (nth 2 (file-system-info user-emacs-directory)) (* 1024 1024 1024 5))) ; 5 GiB. (customize-set-variable 'straight-vc-git-default-clone-depth 1 "Make shallow clones to save space.")) (customize-set-variable 'straight-repository-branch "master") ;; Bootstrap straight. (defvar bootstrap-version) (let ((bootstrap-file (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) (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)) (require 'straight) ;; Isolate package configurations. (straight-use-package 'use-package) (customize-set-variable 'use-package-always-defer t) (require 'use-package) (use-package straight :config (progn (defun my/straight-update-repos () "Update recipe repositories." (interactive) (dolist (package straight-recipe-repositories) (message "Updating %s package list …" package) (straight-pull-package package))) (defun my/straight-check-last-update () "Update recipe repositories after 7 days have passed since the last package was built." (let ((days 7) (mtime-seconds (time-to-seconds (file-attribute-modification-time (file-attributes (straight--build-dir)))))) (when (> (- (time-to-seconds) mtime-seconds) (* 60 60 24 days)) (my/straight-update-repos))))) :hook ((emacs-startup . my/straight-check-last-update) ((after-init . straight-prune-build)))) (provide 'basics/package-management) ;;; package-management.el ends here