2023-07-03 00:54:47 +00:00
;;; packages.el --- guix layer packages file for Spacemacs.
;;
;; Copyright (c) 2012-2022 Sylvain Benner & Contributors
;;
;; Author: TakeV <takev@disroot.org>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; 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
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; 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 <http://www.gnu.org/licenses/>.
;;; 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:
2023-07-03 01:22:21 +00:00
( defconst guix-layer-packages
2023-07-03 00:54:47 +00:00
' ( 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
` . /local/PACKAGE/PACKAGE.el '
- A list beginning with the symbol ` recipe ' is a melpa
recipe. See: https://github.com/milkypostman/melpa#recipe-format " )
2023-07-03 01:22:21 +00:00
( defun guix-layer/init-emacs-guix ( )
2023-07-03 00:54:47 +00:00
( use-package emacs-guix
:defer t
:init
( progn
( spacemacs/declare-prefix " atg " " guix " )
( spacemacs/set-leader-keys
" atg " 'guix ) ) ) )
2023-07-03 01:22:21 +00:00
( defun guix-layer/pre-init-evil-collection ( )
2023-07-03 00:54:47 +00:00
( when configuration-layer/layer-used-p 'spacemacs-evil
( add-to-list spacemacs-evil-collection-allowed-list 'guix ) ) )
2023-07-03 01:22:21 +00:00
( defun guix-layer/init-skeletor ( )
2023-07-03 00:54:47 +00:00
( use-package skeletor :defer t ) )
2023-07-03 01:22:21 +00:00
( defun guix-layer/post-init-skeletor ( )
2023-07-03 00:54:47 +00:00
( skeletor-define-constructor " Hall "
:requires-executables ' ( ( " hall " . " https://gitlab.com/a-sassmannshausen/guile-hall " ) )
:initialise
( lambda ( spec )
( let-alist spec
( skeletor-shell-command ( format " hall init -x %s " ( shell-quote-argument . project-name ) )
. project-dir ) ) ) ) )