This commit is contained in:
Daniel Ziltener 2023-12-22 14:59:57 +01:00
parent 6e3fd648cf
commit 925301ae9a
Signed by: zilti
GPG key ID: B38976E82C9DAE42
6 changed files with 262 additions and 122 deletions

View file

@ -7,6 +7,14 @@
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
(channel
(name 'emacs-melpa)
(url "https://github.com/babariviere/guix-emacs")
(introduction
(make-channel-introduction
"72ca4ef5b572fea10a4589c37264fa35d4564783"
(openpgp-fingerprint
"261C A284 3452 FB01 F6DF 6CF4 F9B7 864F 2AB4 6F18"))))
(channel
(name 'ziltis-channel)
(url "https://gitea.lyrion.ch/zilti/guixchannel"))

View file

@ -134,6 +134,14 @@ This adds the Nonguix channel.
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
(channel
(name 'emacs-melpa)
(url "https://github.com/babariviere/guix-emacs")
(introduction
(make-channel-introduction
"72ca4ef5b572fea10a4589c37264fa35d4564783"
(openpgp-fingerprint
"261C A284 3452 FB01 F6DF 6CF4 F9B7 864F 2AB4 6F18"))))
(channel
(name 'ziltis-channel)
(url "https://gitea.lyrion.ch/zilti/guixchannel"))
@ -152,6 +160,7 @@ This adds the Nonguix channel.
- network-manager
- podman
- readline
- xf86-video-amdgpu
#+NAME: root-package-block
#+begin_src scheme :noweb no-export
@ -342,7 +351,7 @@ This is the full operating system specification.
(name "zilti")
(group "users")
(supplementary-groups
'("users" "wheel" "netdev" "audio" "video" "libvirt" "seat")))
'("avahi" "users" "wheel" "netdev" "audio" "cdrom" "video" "libvirt" "seat")))
%base-user-accounts))
<<root-package-block>>
<<root-services-block>>

View file

@ -69,7 +69,7 @@
(name "zilti")
(group "users")
(supplementary-groups
'("users" "wheel" "netdev" "audio" "video" "libvirt" "seat")))
'("avahi" "users" "wheel" "netdev" "audio" "cdrom" "video" "libvirt" "seat")))
%base-user-accounts))
(packages
(append
@ -81,7 +81,8 @@
nss-certs
network-manager
podman
readline)
readline
xf86-video-amdgpu)
%base-packages))
(services
@ -178,6 +179,14 @@
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
(channel
(name 'emacs-melpa)
(url "https://github.com/babariviere/guix-emacs")
(introduction
(make-channel-introduction
"72ca4ef5b572fea10a4589c37264fa35d4564783"
(openpgp-fingerprint
"261C A284 3452 FB01 F6DF 6CF4 F9B7 864F 2AB4 6F18"))))
(channel
(name 'ziltis-channel)
(url "https://gitea.lyrion.ch/zilti/guixchannel"))

View file

@ -82,11 +82,11 @@
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;;;;; use-package integration
;; Use-Package Integration
(elpaca elpaca-use-package
(elpaca-use-package-mode)
(setq elpaca-use-package-by-default t))
(setq elpaca-use-package-by-default nil))
(elpaca-wait)
;;;; Package Management Configuration
@ -113,6 +113,7 @@
;;;; Emacs
(use-package emacs
:elpaca nil
:after org
:custom
(completion-cycle-threshold 10)
(display-time-mode t)
@ -120,6 +121,7 @@
(enable-remote-dir-locals t)
(fill-column 100)
(global-hl-line-mode t)
(global-prettify-symbols-mode t)
(indent-tabs-mode nil)
(menu-bar-mode nil)
(minibuffer-prompt-properties (read-only t cursor-intangible t face minibuffer-prompt))
@ -131,7 +133,8 @@
:custom-face
;;(default ((t (:weight bold :height 113 :width normal :family "VictorMono Nerd Font"))))
(fixed-pitch ((t (:weight normal :height 105 :width narrow :family "MonaspiceXe Nerd Font Mono"))))
(variable-pitch ((t (:weight normal :height 105 :width narrow :family "MonaspiceXe Nerd Font Propo"))))
(variable-pitch ((t (:weight normal :height 130 :family "LibertinusSerif Nerd Font Propo"))))
;(variable-pitch ((t (:weight normal :height 105 :width narrow :family "MonaspiceXe Nerd Font Propo"))))
:hook
(minibuffer-setup . cursor-intangible-mode)
:config
@ -139,8 +142,20 @@
(global-display-fill-column-indicator-mode t)
(pixel-scroll-precision-mode 1))
(defun set-buffer-variable-pitch ()
(interactive)
(variable-pitch-mode t)
(setq line-spacing 3)
(set-face-attribute 'org-table nil :inherit 'fixed-pitch)
(set-face-attribute 'org-code nil :inherit 'fixed-pitch)
(set-face-attribute 'org-block nil :inherit 'fixed-pitch)
;; investigate: this face does not exist
;;(set-face-attribute 'org-block-background nil :inherit 'fixed-pitch)
)
;;;; Org Mode
(use-package org
:elpaca nil
:preface
(defun cc/org-local-stuff ()
(setq-local visual-fill-column-center-text t))
@ -155,12 +170,12 @@
(org-mode . org-indent-mode)
(org-src-mode . hack-local-variables)
(org-mode . visual-line-mode)
(org-mode . set-buffer-variable-pitch)
:config
(setq org-directory "~/org")
(add-to-list 'org-modules 'collector))
(use-package org-roam
:ensure t
:custom
(org-roam-directory "~/org/roam")
:config
@ -171,11 +186,9 @@
(consult-notes-org-roam-mode t))
(use-package websocket
:ensure t
:after org-roam)
(use-package org-roam-ui
:ensure t
:after org-roam
:custom
(org-roam-ui-sync-theme t)
@ -184,10 +197,9 @@
(org-roam-ui-open-on-start t))
(use-package org-modern
:ensure t
:hook
((org-mode . org-modern-mode)
(org-agenda-finalize . org-modern-agenda)))
(org-mode . org-modern-mode)
(org-agenda-finalize . org-modern-agenda))
(use-package org-rainbow-tags
:hook
@ -243,7 +255,6 @@
(add-to-list 'default-frame-alist '(alpha-background . 90))
(use-package 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)
@ -280,7 +291,6 @@
(setq mode-line-format (list "%_"))))
(use-package 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)
@ -297,11 +307,16 @@
(visual-fill-column-enable-sensible-window-split t)
:hook
(prog-mode . visual-line-mode)
visual-line-mode)
visual-line-mode
;; :config
;; (add-hook 'prog-mode-hook #'visual-line-mode)
;; (add-hook 'visual-line-mode-hook #'visual-fill-column-mode)
)
(use-package adaptive-wrap
:config
(setq-default adaptive-wrap-extra-indent 4)
;;(add-hook 'visual-line-mode-hook #'adaptive-wrap-prefix-mode)
:hook
(visual-line-mode . adaptive-wrap-prefix-mode))
@ -311,12 +326,9 @@
(keychain-refresh-environment))
(use-package pass)
(use-package password-store)
(use-package password-store-otp)
;;;; Evil Mode
(use-package evil
;; :after evil-leader
:ensure t
:init
(setq evil-want-keybinding nil
@ -408,11 +420,13 @@
:commands
which-key-setup-minibuffer
:init
(which-key-setup-minibuffer))
(which-key-setup-minibuffer)
:config
(which-key-mode t))
;;;;; Code Completion
(use-package cape
:preface
:config
(defun my/capf ()
(setq completion-at-point-functions
(list (cape-capf-super
@ -423,11 +437,34 @@
#'cape-line
#'cape-emoji
#'cape-keyword))))
:config
(defun my/eglot-capf ()
(setq completion-at-point-functions
(list (cape-capf-super
#'eglot-completion-at-point
#'tempel-complete
#'cape-dabbrev
#'cape-file
#'cape-dict
#'cape-line
#'cape-emoji
#'cape-keyword))))
(defun my/geiser-capf ()
(setq completion-at-point-functions
(append geiser-capf--capfs
(list (cape-capf-super
#'tempel-complete
#'cape-dabbrev
#'cape-file
#'cape-dict
#'cape-line
#'cape-emoji
#'cape-keyword)))))
(advice-add 'eglot-completion-at-point :around #'cape-wrap-buster)
:hook
(org-mode . my/capf)
(prog-mode . my/capf))
(prog-mode . my/capf)
(eglot-managed-mode . my/eglot-capf)
(geiser-mode . my/geiser-capf))
(defun my/corfu-combined-sort (candidates)
"Sort CANDIDATES using both display-sort-function and corfu-sort-function."
@ -473,6 +510,7 @@
(use-package tempel)
(use-package xref-union
:elpaca t
:hook
cider-connected)
@ -484,15 +522,17 @@
("g;" . 'goto-last-change-reverse)))
(use-package evil-snipe
:delight (evil-snipe-local-mode " 󰓾 ")
:after evil-easymotion
:custom
(evil-snipe-scope 'whole-visible)
(evil-snipe-repeat-scope 'whole-buffer)
(evil-snipe-spillover-scope 'whole-buffer)
(evil-snipe-tab-increment t)
:commands
evil-snipe-override-mode
:init
(evil-snipe-override-mode 1)
:hook
evil-mode
(evil-mode . evil-snipe-override-mode)
(magit-mode . turn-off-evil-snipe-override-mode)
;; See https://github.com/hlissner/evil-snipe/issues/95
;; :config
@ -503,6 +543,7 @@
)
(use-package evil-easymotion
:after evil
:config
(evilem-default-keybindings "<leader>"))
@ -553,21 +594,20 @@ Point must be at the beginning of balanced expression (sexp)."
(looking-back (rx (or ")" "}" "]"))))
;;;;; Basic
(use-package symex
:custom
(symex-modal-backend 'evil)
:config
(symex-initialize)
:bind
(:map evil-insert-state-map
("C-ß" . #'symex-mode-interface)))
;; (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
clojure-ts-mode
emacs-lisp-mode
scheme-mode
:config
;; (add-hook 'clojure-ts-mode-hook #'paredit-mode)
;; (add-hook 'emacs-lisp-mode-hook #'paredit-mode)
;; (add-hook 'scheme-mode-hook #'paredit-mode)
(evil-define-key 'insert paredit-mode-map
(kbd "r") (conditional-keybind #'looking-at-opening-paren
#'paredit-raise-sexp)
@ -580,10 +620,13 @@ Point must be at the beginning of balanced expression (sexp)."
(kbd ">") (conditional-keybind #'being-past-closing-paren
#'cc/slurp-forward)
(kbd "<") (conditional-keybind #'being-past-closing-paren
#'cc/barf-forward)))
#'cc/barf-forward))
:hook
clojure-ts-mode
emacs-lisp-mode
scheme-mode)
;; (use-package smartparens
;; :delight (smartparens-mode " 󰅲 ")
;; :hook
;; (smartparens-mode . show-smartparens-mode)
;; (smartparens-mode . smartparens-strict-mode)
@ -656,26 +699,11 @@ Point must be at the beginning of balanced expression (sexp)."
:delight '(:eval (cons "" (flymake--mode-line-counters))))
(use-package eglot
:preface
(defun my/eglot-capf ()
(setq completion-at-point-functions
(list (cape-capf-super
#'eglot-completion-at-point
#'tempel-complete
#'cape-dabbrev
#'cape-file
#'cape-dict
#'cape-line
#'cape-emoji
#'cape-keyword))))
:custom
(eglot-connect-timeout 90)
(eglot-autoshutdown t)
(eglot-report-progress t)
:config
(defun eglot-mode ()
(eglot-inlay-hints-mode +1)
(my/eglot-capf))
(setq-default eglot-workspace-configuration
'((clojure-lsp (maxCompletions . 300))))
(add-to-list 'eglot-server-programs
@ -706,108 +734,122 @@ Point must be at the beginning of balanced expression (sexp)."
(call-interactively #'eglot-format-buffer))
nil 'local)))
(eglot-managed-mode . eglot-inlay-hints-mode)
(eglot-managed-mode . my/eglot-capf))
(clojure-mode . eglot-ensure))
(use-package consult-eglot
:after (consult eglot))
(use-package tree-sitter
:ensure t)
;;;;; Clojure
(use-package clojure-ts-mode
;; (use-package clojure-ts-mode
;; :preface
;; (defun embark-eglot-rename (from to)
;; "Renames the symbol at point."
;; (interactive "sRename: \nsRename %s to: ")
;; (funcall-interactively #'eglot-rename to))
;; (defun cc/clojure-local-stuff ()
;; (setq-local sesman-system 'CIDER)
;; (setq-local prettify-symbols-alist '(("fn" . "λ"))))
;; :delight ""
;; :after (tree-sitter embark cider clojure-mode)
;; :config
;; (require 'sesman)
;; (sesman-install-menu clojure-ts-mode-map)
;; (defvar-keymap embark-clj-identifier-map
;; :parent embark-identifier-map
;; "c" #'embark-eglot-rename)
;; (add-to-list 'embark-keymap-alist '(identifier . embark-clj-identifier-map))
;; :hook
;; ((clojure-ts-mode . eglot-ensure)
;; (clojure-ts-mode . prettify-symbols-mode)
;; (clojure-ts-mode . #'cc/clojure-local-stuff)
;; (clojure-ts-mode . (lambda ()
;; (sesman-install-menu clojure-mode-map)))
;; (clojurec-ts-mode . (lambda ()
;; (sesman-install-menu clojurec-mode-map)))
;; (clojurescript-ts-mode . (lambda ()
;; (sesman-install-menu clojurescript-mode-map))))
;; :mode
;; ("\\.clj\\'" . clojure-ts-mode)
;; ("\\.cljc\\'" . clojurec-ts-mode)
;; ("\\.cljs\\'" . clojurescript-ts-mode)
;; :init
;; (add-to-list 'tree-sitter-major-mode-language-alist
;; '(clojure-ts-mode . clojure))
;; (add-to-list 'tree-sitter-major-mode-language-alist
;; '(clojurec-ts-mode . clojure))
;; (add-to-list 'tree-sitter-major-mode-language-alist
;; '(clojurescript-ts-mode . clojure)))
(use-package clojure-mode
:preface
(defun embark-eglot-rename (from to)
"Renames the symbol at point."
(interactive "sRename: \nsRename %s to: ")
(interactive "sRename: \nRename %s to: ")
(funcall-interactively #'eglot-rename to))
(defun cc/clojure-local-stuff ()
(setq-local sesman-system 'CIDER)
(setq-local prettify-symbols-alist '(("fn" . "λ"))))
:delight ""
:after (tree-sitter embark cider)
:after (embark cider)
:config
(require 'sesman)
(sesman-install-menu clojure-ts-mode-map)
(defvar-keymap embark-clj-identifier-map
:parent embark-identifier-map
"c" #'embark-eglot-rename)
(add-to-list 'embark-keymap-alist '(identifier . embark-clj-identifier-map))
:hook
((clojure-ts-mode . eglot-ensure)
(clojure-ts-mode . prettify-symbols-mode)
(clojure-ts-mode . #'cc/clojure-local-stuff)
(clojure-ts-mode . (lambda ()
(sesman-install-menu clojure-mode-map)))
(clojurec-ts-mode . (lambda ()
(sesman-install-menu clojurec-mode-map)))
(clojurescript-ts-mode . (lambda ()
(sesman-install-menu clojurescript-mode-map))))
:mode
("\\.clj\\'" . #'clojure-ts-mode)
("\\.cljc\\'" . #'clojurec-ts-mode)
("\\.cljs\\'" . #'clojurescript-ts-mode)
:init
(add-to-list 'tree-sitter-major-mode-language-alist
'(clojure-ts-mode . clojure))
(add-to-list 'tree-sitter-major-mode-language-alist
'(clojurec-ts-mode . clojure))
(add-to-list 'tree-sitter-major-mode-language-alist
'(clojurescript-ts-mode . clojure)))
(clojure-mode . (lambda ()
(setq-local prettify-symbols-alist
'(("(fn " . "")
("(comp " . "(∘ ")
("(and " . "(∧ ")
("(or " . "( ")
("(not " . ""))))))
(use-package cider
:elpaca (:host github :repo "clojure-emacs/cider" :tag "v1.12.0")
;; :elpaca (:host github :repo "clojure-emacs/cider" :tag "v1.12.0")
:delight (cider-mode '(:eval (concat "  [" (cider--modeline-info) "]")))
:config
(evil-define-key 'insert 'cider-mode-map
"C-x C-e" #'cider-eval-last-sexp)
(evil-define-key 'normal 'cider-mode-map
(kbd "<localleader>ce") #'cider-eval-sexp-at-point))
;;;;; Scheme
(use-package geiser
:preface
(defun my/geiser-capf ()
(setq completion-at-point-functions
(append geiser-capf--capfs
(list (cape-capf-super
#'tempel-complete
#'cape-dabbrev
#'cape-file
#'cape-dict
#'cape-line
#'cape-emoji
#'cape-keyword)))))
:custom
(geiser-chicken-match-limit 200)
:config
(defalias 'run-geiser 'geiser)
:hook
(geiser-mode . my/geiser-capf))
(defalias 'run-geiser 'geiser))
(use-package paren-face
:hook
scheme-mode
emacs-lisp-mode
clojure-ts-mode)
clojure-ts-mode
;; :config
;; (add-hook 'scheme-mode-hook #'paren-face-mode)
;; (add-hook 'emacs-lisp-mode-hook #'paren-face-mode)
;; (add-hook 'clojure-ts-mode-hook #'paren-face-mode)
)
(use-package highlight-parentheses
:hook prog-mode)
:hook
prog-mode
;; :config
;; (add-hook 'prog-mode-hook #'highlight-parentheses-mode)
)
;;;;;; Chicken Scheme
(use-package scheme
:elpaca nil
:hook
(scheme-mode . eglot-ensure)
(scheme-mode . prettify-symbols-mode)
(scheme-mode . (lambda ()
(setq-local prettify-symbols-alist
'(("lambda" . "λ"))))))
'(("(lambda " . "")
("(compose " . "(∘ ")
("(and " . "(∧ ")
("(or " . "( ")
("(not " . ""))))))
(defun flymake-chicken-init ()
(add-hook 'flymake-diagnostic-functions
#'flymake-chicken-backend nil t)
(add-hook flymake-diagnostic-functions
flymake-chicken-backend nil t)
(flymake-mode))
(use-package geiser-chicken)
@ -884,8 +926,11 @@ Point must be at the beginning of balanced expression (sexp)."
(code-review-auth-login-marker 'forge))
(use-package git-gutter
:delight git-gutter-mode
:hook prog-mode)
:hook
prog-mode
;; :config
;; (add-hook 'prog-mode-hook #'git-gutter-mode)
)
;;;; LaTeX
;; https://github.com/politza/pdf-tools/#known-problems

View file

@ -69,10 +69,6 @@
("MOZ_ENABLE_WAYLAND" . "1")
("SSL_CERT_FILE" . "$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt")
("CHICKEN_DOC_REPOSITORY" . "$XDG_DATA_HOME/chicken/doc")
;; To be removed once the nss-certs thing has been figured out
("SSL_CERT_DIR" . "$HOME/.guix-profile/etc/ssl/certs")
("SSL_CERT_FILE" . "$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt")
("GIT_SSL_CAINFO" . "$SSL_CERT_FILE")
;; ("CHICKEN_INSTALL_REPOSITORY" . "$XDG_DATA_HOME/chicken/eggs")
;; ("CHICKEN_REPOSITORY_PATH" . "$HOME/.guix-home/profile/var/lib/chicken/11/:$XDG_DATA_HOME/chicken/eggs")
;; ("CHICKEN_INSTALL_PREFIX" . "$HOME/.local")
@ -120,6 +116,14 @@
(channel
(name 'ziltis-channel)
(url "https://gitea.lyrion.ch/zilti/guixchannel"))
(channel
(name 'emacs-melpa)
(url "https://github.com/babariviere/guix-emacs")
(introduction
(make-channel-introduction
"72ca4ef5b572fea10a4589c37264fa35d4564783"
(openpgp-fingerprint
"261C A284 3452 FB01 F6DF 6CF4 F9B7 864F 2AB4 6F18"))))
(channel
(name 'nongnu-guix)
(url "https://gitlab.com/nonguix/nonguix"))))
@ -146,6 +150,7 @@
"fuzzel"
"fzf"
"gammastep"
"gash"
"grim"
"guile"
"glibc-locales"
@ -154,12 +159,12 @@
"icedove-wayland"
"kitty"
"ksshaskpass"
;; "liquidprompt" https://issues.guix.gnu.org/67942
"make"
"nm-tray"
"nnn"
"nss-certs"
"nwg-displays"
#;"nss-certs" ; This package is broken
"openssh"
"password-store"
"pass-otp"
@ -169,6 +174,8 @@
"pipewire"
"pv"
"rsync"
"rust"
"rust-cargo"
"senpai"
"sideload"
"slurp"
@ -177,12 +184,74 @@
"swayfx"
"swayidle"
"swaylock-effects"
"telegram-desktop"
"tig"
"tree-sitter"
"unzip"
"visidata"
"waybar"
"wireplumber-minimal"
"wlogout"
"xdg-desktop-portal")))
"xdg-desktop-portal"
"emacs-el-patch"
"emacs-guix"
"emacs-org"
"emacs-org-roam"
"emacs-consult-notes"
"emacs-websocket"
"emacs-org-roam-ui"
"emacs-org-modern"
"emacs-org-rainbow-tags"
"emacs-color-theme-modern"
"emacs-moe-theme"
"emacs-catppuccin-theme"
"emacs-unicode-fonts"
"emacs-ligature"
"emacs-visual-fill-column"
"emacs-adaptive-wrap"
"emacs-keychain-environment"
"emacs-pass"
"emacs-evil"
"emacs-evil-collection"
"emacs-orderless"
"emacs-embark-consult"
"emacs-wgrep"
"emacs-vertico"
"emacs-marginalia"
"emacs-nerd-icons-completion"
"emacs-which-key"
"emacs-cape"
"emacs-corfu"
"emacs-nerd-icons-corfu"
;; "emacs-corfu-terminal"
"emacs-tempel"
"emacs-xref-union"
"emacs-goto-chg"
"emacs-evil-easymotion"
"emacs-evil-snipe"
"emacs-paredit"
"emacs-editorconfig"
"emacs-eglot"
"emacs-consult-eglot"
"emacs-tree-sitter"
"emacs-clojure-mode"
"emacs-cider"
"emacs-geiser"
"emacs-paren-face"
"emacs-highlight-parentheses"
"emacs-geiser-chicken"
"emacs-geiser-guile"
"emacs-zig-mode"
"emacs-dhall-mode"
"emacs-transient"
"emacs-magit"
"emacs-magit-todos"
"emacs-forge"
"emacs-code-review"
"emacs-git-gutter"
"emacs-envrc"
)))
(service home-openssh-service-type
(home-openssh-configuration
(hosts

View file

@ -121,7 +121,7 @@ bindsym $mod+Shift+r exec swaymsg "focus parent; split v; exec fuzzel"
bindsym $mod+ctrl+l exec swaylock
# Screenshots
bindsym $mod+Print exec grim -g slurp - | swappy -f -
bindsym $mod+Print exec grim -l 9 -g "`slurp`" - | swappy -f -
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.