dotfiles/.emacs.d/lisp/init-packages.el

55 lines
1.7 KiB
EmacsLisp

;;; init-packages.el --- Package Configuration File -*- lexical-binding: t -*-
;;; Commentary:
;;; Code:
;; TODO - straight.el?
(require 'package)
(require 'url)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("melpa-stable" . "https://stable.melpa.org/packages/")
("nongnu" . "https://elpa.nongnu.org/nongnu/")
("elpa" . "https://elpa.gnu.org/packages/")))
(setq package-pinned-packages '((cider . "melpa-stable")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(setq package-native-compile t)
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
(use-package diminish)
(use-package paradox
:config
(paradox-enable))
(use-package epl
:config
;; TODO make a copy of the built-in check for system packages work instead
(defvar my/system-packages '("vterm"))
(defun my/upgrade-packages ()
(interactive)
(epl-refresh)
(when-let ((upgrades (seq-filter (lambda (u)
(not (member
(epl-package-name (epl-upgrade-available u))
my/system-packages)))
(epl-find-upgrades))))
;; TODO why doesn't this work?
;; (epl-upgrade (mapcar 'epl-upgrade-available upgrades)
(dolist (upgrade upgrades)
(epl-package-install (epl-upgrade-available upgrade) 'force)
(epl-package-delete (epl-upgrade-installed upgrade))))
(message "Package upgrade finished.")))
(provide 'init-packages)
;;; init-packages.el ends here