This commit is contained in:
Daniel Ziltener 2023-12-14 20:57:10 +01:00
parent 9c8e94145f
commit 7cfc00fd43
Signed by: zilti
GPG key ID: B38976E82C9DAE42
4 changed files with 203 additions and 121 deletions

View file

@ -18,20 +18,11 @@
;; [[file:config.org::*Modules][Modules:1]]
(use-modules (gnu)
(gnu image)
(gnu services authentication)
(gnu services base)
(gnu services dbus)
(gnu services desktop)
(gnu services linux)
(gnu services networking)
(gnu services pm)
(gnu services virtualization)
(gnu services xorg)
(gnu system nss)
(nongnu packages linux)
(nongnu system linux-initrd))
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Wrong type to apply: "gnu"
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]>
;; Modules:1 ends here
;; Service Modules
@ -42,7 +33,11 @@
;; [[file:config.org::*Service Modules][Service Modules:1]]
(use-service-modules desktop xorg)
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Wrong type to apply: "desktop"
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]>
;; Service Modules:1 ends here
;; Package Modules
@ -62,17 +57,11 @@
;; [[file:config.org::*Package Modules][Package Modules:1]]
(use-package-modules bootloaders
certs
emacs
emacs-xyz
fonts
pciutils
readline
terminals
version-control
wm
xorg)
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Wrong type to apply: "bootloaders"
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]>
;; Package Modules:1 ends here
;; File System
@ -146,13 +135,11 @@
%base-user-accounts))
(packages
(append
(list emacs
emacs-desktop-environment
font-terminus
git
hwdata
nss-certs
readline)
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Wrong type to apply: "emacs"
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
scheme@(guile-user) [1]>
%base-packages))
(services
(append
@ -169,22 +156,7 @@
(authorized-keys
(append (list (plain-file "non-guix.pub"
"<<nonguix-pubkey>>")))))))
(list
(service tlp-service-type)
(service thermald-service-type
(thermald-configuration
(adaptive? #t)))
(service bluetooth-service-type)
(service earlyoom-service-type
(earlyoom-configuration
(minimum-available-memory 5)
(minimum-free-swap 5)))
(service inputattach-service-type)
(service libvirt-service-type
(libvirt-configuration
(unix-sock-group "libvirt")))
(service fstrim-service-type)
(service fprintd-service-type))
nil
(list
(service greetd-service-type
(greetd-configuration

1
home/emacs/early-init.el Normal file
View file

@ -0,0 +1 @@
(setq package-enable-at-startup nil)

View file

@ -12,8 +12,8 @@
;; hypermedia i18n internal languages lisp local maint mail matching
;; mouse multimedia news outlines processes terminals tex tools unix
;; vc wp
;; Homepage: https://github.com/dziltener@lyrion.ch/init
;; Package-Requires: ((emacs "24.3"))
;; Homepage: https://gitea.lyrion.ch/zilti/guixconfig
;; Package-Requires: ((emacs "29.1"))
;;
;; This file is not part of GNU Emacs.
;;
@ -32,6 +32,8 @@
(when (file-exists-p custom-file)
(load custom-file))
(defvar init-dir (file-name-directory (or load-file-name (buffer-file-name))))
;;;; Personal Information Setup
(setq user-full-name "Daniel Ziltener"
user-mail-address "dziltener@lyrion.ch")
@ -41,19 +43,67 @@
;;;; Straight.el
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 6))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(setq straight-use-package-by-default t)
;; (defvar bootstrap-version)
;; (let ((bootstrap-file
;; (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
;; (bootstrap-version 6))
;; (unless (file-exists-p bootstrap-file)
;; (with-current-buffer
;; (url-retrieve-synchronously
;; "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
;; 'silent 'inhibit-cookies)
;; (goto-char (point-max))
;; (eval-print-last-sexp)))
;; (load bootstrap-file nil 'nomessage))
;; (setq straight-use-package-by-default t)
;;;; Elpaca
;;;;; Installation
(defvar elpaca-installer-version 0.6)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (call-process "git" nil buffer t "clone"
(plist-get order :repo) repo)))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;;;;; use-package integration
(elpaca elpaca-use-package
(elpaca-use-package-mode)
(setq elpaca-use-package-by-default t))
(elpaca-wait)
;;;; Package Management Configuration
;; See: https://github.com/radian-software/el-patch
@ -78,6 +128,7 @@
;;;; Emacs
(use-package emacs
:elpaca nil
:delight (eldoc-mode " 󰙎")
:custom
(completion-cycle-threshold 10)
@ -106,6 +157,7 @@
;;;; Org Mode
(use-package org
:elpaca (:repo "https://git.savannah.gnu.org/git/emacs/org-mode.git" :branch "emacs-sync")
:ensure t
:custom
(org-babel-load-languages '((emacs-lisp . t)
@ -202,7 +254,8 @@
(add-to-list 'default-frame-alist '(alpha-background . 80))
(use-package lambda-line
:straight (:type git :host github :repo "lambda-emacs/lambda-line")
;;:straight (:type git :host github :repo "lambda-emacs/lambda-line")
:elpaca (:host github :repo "lambda-emacs/lambda-line")
:custom
(lambda-line-icon-time t) ;; requires ClockFace font (see below)
(lambda-line-clockface-update-fontset "ClockFaceRect") ;; set clock icon
@ -238,7 +291,8 @@
(setq mode-line-format (list "%_"))))
(use-package lambda-themes
:straight (:type git :host github :repo "lambda-emacs/lambda-themes")
;;:straight (:type git :host github :repo "lambda-emacs/lambda-themes")
:elpaca (:host github :repo "lambda-emacs/lambda-themes")
:custom
(lambda-themes-set-italic-comments t)
(lambda-themes-set-italic-keywords t)
@ -299,6 +353,7 @@
;;;; Search, Completion, Execution
;;;;; Preliminary Packages
(use-package savehist
:elpaca nil
:init
(savehist-mode))
@ -312,11 +367,8 @@
completion-category-overrides '((file (styles basic partial-completion)))))
(use-package embark-consult
:after (embark consult)
:hook
(embark-collect-mode . consult-preview-at-point-mode))
(use-package consult
(embark-collect-mode . consult-preview-at-point-mode)
:config
(require 'consult-flymake)
(require 'consult-xref)
@ -328,12 +380,9 @@
("<leader>gb" . 'consult-project-buffer)
("<leader>g/" . 'consult-git-grep)
("<leader>/" . 'consult-grep)
("/" . 'consult-line)))
(use-package embark
:bind
("C-<SPC>" . 'embark-act)
("C-M-<return>" . 'embark-bindings))
("/" . 'consult-line))
("C-<SPC>" . 'embark-act)
("C-M-<return>" . 'embark-bindings))
(use-package wgrep
:config
@ -449,6 +498,7 @@
:hook
evil-mode
(evil-mode . evil-snipe-override-mode)
(evil-mode . evil-snipe-mode)
(magit-mode . turn-off-evil-snipe-override-mode)
;; See https://github.com/hlissner/evil-snipe/issues/95
;; :config
@ -479,6 +529,29 @@ Point must be at the beginning of balanced expression (sexp)."
(transpose-sexps 1)
(forward-sexp -1))
(defvar last-sexp nil)
(defun cc/clone-sexp ()
"Clone the sexp right after the cursor."
(interactive)
(call-interactively #'mark-sexp)
(call-interactively #'kill-ring-save)
(call-interactively #'evil-paste-before)
(call-interactively #'forward-char)
(call-interactively #'paredit-newline))
(defun cc/slurp-forward ()
"Slurps forward when the key is after the closing paren."
(interactive)
(call-interactively #'backward-char)
(call-interactively #'paredit-forward-slurp-sexp))
(defun cc/barf-forward ()
"Barfs forward even when the key is after the closing paren."
(interactive)
(call-interactively #'backward-char)
(call-interactively #'paredit-forward-barf-sexp))
(defun looking-at-opening-paren ()
(looking-at (rx (or "(" "{" "["))))
@ -486,58 +559,90 @@ Point must be at the beginning of balanced expression (sexp)."
(looking-back (rx (or ")" "}" "]"))))
;;;;; Basic
(use-package smartparens
:delight (smartparens-mode " 󰅲 ")
(use-package symex
:custom
(symex-modal-backend 'evil)
:config
(symex-initialize)
:bind
(:map evil-insert-state-map
("C-ß" . #'symex-mode-interface)))
(use-package paredit
:hook
(smartparens-mode . show-smartparens-mode)
(smartparens-mode . smartparens-strict-mode)
clojure-ts-mode
clojure-mode
emacs-lisp-mode
scheme-mode
:custom
(sp-undo-pairs-separately t)
:config
(add-to-list 'sp-clojure-modes 'clojure-ts-mode)
(add-to-list 'sp-clojure-modes 'clojurec-ts-mode)
(add-to-list 'sp-clojure-modes 'clojurescript-ts-mode)
(add-to-list 'sp-lisp-modes 'clojure-ts-mode)
(add-to-list 'sp-lisp-modes 'clojurec-ts-mode)
(add-to-list 'sp-lisp-modes 'clojurescript-ts-mode)
(sp-local-pair '(emacs-lisp-mode scheme-mode clojure-ts-mode)
"'" nil)
(sp-local-pair '(emacs-lisp-mode scheme-mode clojure-ts-mode)
"`" nil)
(evil-define-key 'insert smartparens-mode-map
(evil-define-key 'insert paredit-mode-map
(kbd "r") (conditional-keybind #'looking-at-opening-paren
#'sp-raise-sexp)
#'paredit-raise-sexp)
(kbd "w") (conditional-keybind #'looking-at-opening-paren
#'cc/move-sexp-backward)
(kbd "s") (conditional-keybind #'looking-at-opening-paren
#'cc/move-sexp-forward)
(kbd "c") (conditional-keybind #'looking-at-opening-paren
#'sp-clone-sexp)
(kbd "m") (conditional-keybind #'looking-at-opening-paren
#'sp-mark-sexp)
(kbd "DEL") (conditional-keybind #'being-past-closing-paren
#'sp-backward-delete-sexp
#'evil-delete-backward-char-and-join)
#'cc/clone-sexp)
(kbd ">") (conditional-keybind #'being-past-closing-paren
(lambda (prefix)
(interactive "P")
(call-interactively #'backward-char)
(call-interactively #'sp-forward-slurp-sexp)
(call-interactively #'sp-forward-sexp)
(call-interactively #'forward-char)))
#'cc/slurp-forward)
(kbd "<") (conditional-keybind #'being-past-closing-paren
(lambda (prefix)
(interactive "P")
(call-interactively #'backward-char)
(call-interactively #'sp-forward-barf-sexp)
(call-interactively #'forward-char)))))
#'cc/barf-forward)))
(use-package evil-cleverparens
:after smartparens
:hook smartparens)
;; (use-package smartparens
;; :delight (smartparens-mode " 󰅲 ")
;; :hook
;; (smartparens-mode . show-smartparens-mode)
;; (smartparens-mode . smartparens-strict-mode)
;; clojure-ts-mode
;; emacs-lisp-mode
;; scheme-mode
;; :custom
;; (sp-undo-pairs-separately t)
;; :config
;; (add-to-list 'sp-clojure-modes 'clojure-ts-mode)
;; (add-to-list 'sp-clojure-modes 'clojurec-ts-mode)
;; (add-to-list 'sp-clojure-modes 'clojurescript-ts-mode)
;; (add-to-list 'sp-lisp-modes 'clojure-ts-mode)
;; (add-to-list 'sp-lisp-modes 'clojurec-ts-mode)
;; (add-to-list 'sp-lisp-modes 'clojurescript-ts-mode)
;; ;; TODO: Remove the following three lines once merge request got accepted
;; (load-file (concat init-dir "lib/smartparens-clojure.el"))
;; (load-file (concat init-dir "lib/smartparens-emacs-lisp.el"))
;; (load-file (concat init-dir "lib/smartparens-scheme.el"))
;; (require 'smartparens-clojure)
;; (require 'smartparens-emacs-lisp)
;; (require 'smartparens-scheme)
;; (evil-define-key 'insert smartparens-mode-map
;; (kbd "r") (conditional-keybind #'looking-at-opening-paren
;; #'sp-raise-sexp)
;; (kbd "w") (conditional-keybind #'looking-at-opening-paren
;; #'cc/move-sexp-backward)
;; (kbd "s") (conditional-keybind #'looking-at-opening-paren
;; #'cc/move-sexp-forward)
;; (kbd "c") (conditional-keybind #'looking-at-opening-paren
;; #'sp-clone-sexp)
;; (kbd "m") (conditional-keybind #'looking-at-opening-paren
;; #'sp-mark-sexp)
;; (kbd "DEL") (conditional-keybind #'being-past-closing-paren
;; #'sp-backward-delete-sexp
;; #'evil-delete-backward-char-and-join)
;; (kbd ">") (conditional-keybind #'being-past-closing-paren
;; (lambda (prefix)
;; (interactive "P")
;; (call-interactively #'backward-char)
;; (call-interactively #'sp-forward-slurp-sexp)
;; (call-interactively #'sp-forward-sexp)
;; (call-interactively #'forward-char)))
;; (kbd "<") (conditional-keybind #'being-past-closing-paren
;; (lambda (prefix)
;; (interactive "P")
;; (call-interactively #'backward-char)
;; (call-interactively #'sp-forward-barf-sexp)
;; (call-interactively #'forward-char)))))
;; (use-package evil-cleverparens
;; :after smartparens
;; :hook smartparens)
;;;;; Visual Aid
;; (use-package rainbow-delimiters
@ -580,7 +685,7 @@ Point must be at the beginning of balanced expression (sexp)."
(setq-default eglot-workspace-configuration
'((clojure-lsp (maxCompletions . 300))))
(add-to-list 'eglot-server-programs
'((clojure-ts-mode clojurec-ts-mode clojurescript-ts-mode)
'((clojure-mode clojurec-mode clojurescript-mode)
"clojure-lsp"
:initializationOptions
(:preferences
@ -645,9 +750,8 @@ Point must be at the beginning of balanced expression (sexp)."
'(clojurescript-ts-mode . clojure)))
(use-package cider
:elpaca (:host github :repo "clojure-emacs/cider" :tag "v1.12.0")
:delight (cider-mode '(:eval (concat "  [" (cider--modeline-info) "]")))
:hook
(clojure-ts-mode . cider-mode)
:config
(evil-define-key 'insert 'cider-mode-map
"C-x C-e" #'cider-eval-last-sexp)
@ -679,13 +783,15 @@ Point must be at the beginning of balanced expression (sexp)."
(use-package paren-face
:hook
scheme-mode
emacs-lisp-mode)
emacs-lisp-mode
clojure-ts-mode)
(use-package highlight-parentheses
:hook prog-mode)
;;;;;; Chicken Scheme
(use-package scheme
:elpaca nil
:config
(setq prettify-symbols-alist
'(("lambda" . "λ")))
@ -771,7 +877,9 @@ Point must be at the beginning of balanced expression (sexp)."
;;;; Communication
;;;;; IRC
(use-package rcirc
:elpaca nil
:ensure t
:after password-store
:custom
(rcirc-server-alist
`(("liberachat.irc.lyrion.ch"

View file

@ -134,6 +134,7 @@
("fuzzel/fuzzel.ini" ,(local-file "./fuzzel/fuzzel.ini"))
("git/config" ,(local-file "./git/config"))
("emacs/init.el" ,(local-file "./emacs/init.el"))
("emacs/early-init.el" ,(local-file "./emacs/early-init.el"))
("emacs/init.org" ,(local-file "./emacs/init.org"))
("emacs/templates" ,(local-file "./emacs/templates"))
("kitty/kitty.conf" ,(local-file "./kitty/kitty.conf"))