72 lines
2.8 KiB
EmacsLisp
72 lines
2.8 KiB
EmacsLisp
;;; package-management.el --- Initialize package management -*- lexical-binding: t; -*-
|
|
|
|
;;; Commentary:
|
|
;; * Set up straight
|
|
;; * Set up use-package.
|
|
|
|
;;; Code:
|
|
|
|
;; Workaround for < 26.3 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34341>.
|
|
(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)
|
|
(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
|