97 lines
3.4 KiB

;;; packages.el --- guix layer packages file for Spacemacs.
;; Copyright (c) 2012-2022 Sylvain Benner & Contributors
;; Author: TakeV <>
;; URL:
;; This file is not part of GNU Emacs.
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <>.
;;; Commentary:
;; See the Spacemacs documentation and FAQs for instructions on how to implement
;; a new layer:
;; SPC h SPC layers RET
;; Briefly, each package to be installed or configured by this layer should be
;; added to `guix-packages'. Then, for each package PACKAGE:
;; - If PACKAGE is not referenced by any other Spacemacs layer, define a
;; function `guix/init-PACKAGE' to load and initialize the package.
;; - Otherwise, PACKAGE is already referenced by another Spacemacs layer, so
;; define the functions `guix/pre-init-PACKAGE' and/or
;; `guix/post-init-PACKAGE' to customize the package as it is loaded.
;;; Code:
(defconst guix-layer-packages
'(emacs-guix evil-collection geiser geiser-guile skeletor) ; Eventually move skeletor to its own layer or in projectile. Also add way to enable it with hall.
"The list of Lisp packages required by the guix layer.
Each entry is either:
1. A symbol, which is interpreted as a package to be installed, or
2. A list of the form (PACKAGE KEYS...), where PACKAGE is the
name of the package to be installed or loaded, and KEYS are
any number of keyword-value-pairs.
The following keys are accepted:
- :excluded (t or nil): Prevent the package from being loaded
if value is non-nil
- :location: Specify a custom installation location.
The following values are legal:
- The symbol `elpa' (default) means PACKAGE will be
installed using the Emacs package manager.
- The symbol `local' directs Spacemacs to load the file at
- A list beginning with the symbol `recipe' is a melpa
recipe. See:")
(defun guix-layer/init-emacs-guix ()
(use-package emacs-guix
:defer t
(spacemacs/declare-prefix "atg" "guix")
"atg" 'guix))))
(defun guix-layer/pre-init-evil-collection ()
(when configuration-layer/layer-used-p 'spacemacs-evil
(add-to-list spacemacs-evil-collection-allowed-list 'guix)))
(defun guix-layer/init-skeletor ()
(use-package skeletor :defer t))
(defun guix-layer/post-init-skeletor ()
(skeletor-define-constructor "Hall"
:requires-executables '(("hall" . ""))
(lambda (spec)
(let-alist spec
(skeletor-shell-command (format "hall init -x %s" (shell-quote-argument .project-name))