commit 00a11b6be73b43c91c002bab613250b0ddb60240 Author: TakeV Date: Sun Jul 2 17:54:47 2023 -0700 Initial commit diff --git a/README.org b/README.org new file mode 100644 index 0000000..67cfb57 --- /dev/null +++ b/README.org @@ -0,0 +1,42 @@ +#+TITLE: guix layer +# Document tags are separated with "|" char +# The example below contains 2 tags: "layer" and "web service" +# Avaliable tags are listed in /.ci/spacedoc-cfg.edn +# under ":spacetools.spacedoc.config/valid-tags" section. +#+TAGS: layer|web service + +# The maximum height of the logo should be 200 pixels. +[[img/guix.png]] + +# TOC links should be GitHub style anchors. +* Table of Contents :TOC_4_gh:noexport: +- [[#description][Description]] + - [[#features][Features:]] +- [[#install][Install]] +- [[#key-bindings][Key bindings]] + +* Description +This layer adds support for something. + +** Features: + - Autocomplete + - Lint + - Refactor + - ... + +* Install +To use this configuration layer, add it to your =~/.spacemacs=. You will need to +add =guix= to the existing =dotspacemacs-configuration-layers= list in this +file. + +* Key bindings + +| Key Binding | Description | +|-------------+----------------| +| ~SPC x x x~ | Does thing01 | + +# Use GitHub URLs if you wish to link a Spacemacs documentation file or its heading. +# Examples: +# [[https://github.com/syl20bnr/spacemacs/blob/master/doc/VIMUSERS.org#sessions]] +# [[https://github.com/syl20bnr/spacemacs/blob/master/layers/%2Bfun/emoji/README.org][Link to Emoji layer README.org]] +# If space-doc-mode is enabled, Spacemacs will open a local copy of the linked file. diff --git a/layers.el b/layers.el new file mode 100644 index 0000000..0a93bfc --- /dev/null +++ b/layers.el @@ -0,0 +1 @@ +(configuration-layer/declare-layer 'scheme) diff --git a/packages.el b/packages.el new file mode 100644 index 0000000..efb9a85 --- /dev/null +++ b/packages.el @@ -0,0 +1,96 @@ +;;; packages.el --- guix layer packages file for Spacemacs. +;; +;; Copyright (c) 2012-2022 Sylvain Benner & Contributors +;; +;; Author: TakeV +;; 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 . + +;;; 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-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 + `./local/PACKAGE/PACKAGE.el' + + - A list beginning with the symbol `recipe' is a melpa + recipe. See: https://github.com/milkypostman/melpa#recipe-format") + +(defun guix/init-emacs-guix () + (use-package emacs-guix + :defer t + :init + (progn + (spacemacs/declare-prefix "atg" "guix") + (spacemacs/set-leader-keys + "atg" 'guix)))) + +(defun guix/pre-init-evil-collection () + (when configuration-layer/layer-used-p 'spacemacs-evil + (add-to-list spacemacs-evil-collection-allowed-list 'guix))) + +(defun guix/init-skeletor () + (use-package skeletor :defer t)) + +(defun guix/post-init-skeletor () + (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))))) +