dotfiles/oni/home/config/rincewind.scm

566 lines
23 KiB
Scheme

(define-module (oni home config rincewind)
#:use-module ((gnu home)
#:select (home-environment))
#:use-module ((gnu home services mail)
#:select (home-msmtp-service-type
home-msmtp-configuration
msmtp-configuration
msmtp-account))
#:use-module ((gnu home services gnupg)
#:select (home-gpg-agent-service-type
home-gpg-agent-configuration))
#:use-module ((gnu home services ssh)
#:select (home-ssh-agent-service-type))
#:use-module ((gnu packages certs)
#:select (nss-certs))
#:use-module ((gnu packages cdrom)
#:select (abcde))
#:use-module ((gnu packages databases)
#:select (recutils
emacs-rec-mode))
#:use-module ((gnu packages emacs)
#:select (emacs-next-tree-sitter))
#:use-module ((gnu packages emacs-xyz)
#:select (emacs-org-roam
emacs-guix
emacs-org-contacts
emacs-fennel-mode))
#:use-module ((gnu packages file-systems)
#:select (tmsu))
#:use-module ((gnu packages forth)
#:select (gforth))
#:use-module ((gnu packages gnome)
#:select (hicolor-icon-theme))
#:use-module ((gnu packages librewolf)
#:select (librewolf))
#:use-module ((gnu packages linux)
#:select (fakeroot))
#:use-module ((gnu packages mail)
#:select (notmuch
emacs-notmuch))
#:use-module ((gnu packages music)
#:select (easytag))
#:use-module ((gnu packages tree-sitter)
#:select (tree-sitter-bash
tree-sitter-scheme
tree-sitter-python
tree-sitter-org
tree-sitter-json
tree-sitter-css))
#:use-module ((gnu packages)
#:select (specification->package+output
specification->package))
#:use-module ((gnu services)
#:select (service
simple-service))
#:use-module ((guix channels)
#:select (channel
make-channel-introduction
openpgp-fingerprint))
#:use-module ((guix gexp)
#:select (local-file
mixed-text-file))
#:use-module ((guix packages)
#:select (package-name
package-input-rewriting))
#:use-module ((guix transformations)
#:select (options->transformation))
#:use-module ((nongnu packages emacs)
#:select (emacs-org-roam-ui))
#:use-module ((oni home config common)
#:select (home-redshift-service
;; home-xbindkeys-service
home-zsh-service
home-guile-service
home-xmodmap-service
home-openssh-service
home-kitty-service
home-channels-service))
#:use-module ((oni home services autokey)
#:select (home-autokey-service-type))
#:use-module ((oni home services copyq)
#:select (home-copyq-service-type))
#:use-module ((oni home services dunst)
#:select (home-dunst-default-service))
#:use-module ((oni home services emacs)
#:select (home-emacs-service-type
home-emacs-configuration
home-emacs-helpful-service-type
home-emacs-helpful-configuration
home-emacs-yasnippet-capf-service-type
home-emacs-dashboard-service-type
home-emacs-dashboard-configuration
home-emacs-eros-service-type
home-emacs-ace-link-service-type
home-emacs-ace-link-configuration
home-emacs-ace-link-notmuch-service-type
home-emacs-ace-link-notmuch-configuration
home-emacs-golden-ratio-service-type
home-emacs-pinentry-service-type
home-emacs-vterm-service-type
home-emacs-vterm-configuration
home-emacs-org-modern-service-type
home-wakatime-service-type
home-wakatime-configuration))
#:use-module ((oni home services environment)
#:select (home-environment-service))
#:use-module ((oni home services flameshot)
#:select (home-flameshot-service-type))
#:use-module ((oni home services gnuzilla)
#:select (home-icecat-service-type
home-icecat-configuration))
#:use-module ((oni home services kdeconnect)
#:select (home-kdeconnect-service-type))
#:use-module ((oni home services mpd)
#:select (home-mpd-service-type
home-mpd-configuration
<home-mpd-audio-output>
home-mpc-update-service-type
home-mpd-notify-service-type
home-mpdscrobble-service-type))
#:use-module ((oni home services mpv)
#:select (home-mpv-service-type
home-mpv-mpris-service-type))
#:use-module ((oni home services notmuch)
#:select (home-notmuch-service-type
home-notmuch-configuration))
#:use-module ((oni home services picom)
#:select (home-picom-service-type
home-picom-configuration))
#:use-module ((oni home services polybar)
#:select (home-polybar-service-type
home-polybar-configuration))
#:use-module ((oni home services rofi)
#:select (home-rofi-default-service))
#:use-module ((oni home services stumpwm)
#:select (home-stumpwm-service-type
home-stumpwm-configuration
home-stumpwm-gaps-service-type
home-stumpwm-gaps-configuration
home-stumpwm-stumptray-service-type
home-stumpwm-stumptray-configuration))
#:use-module ((oni home services syncthing)
#:select (home-syncthing-service-type))
#:use-module ((oni home services utilities)
#:select (home-inkplate-display-service-type))
#:use-module ((oni home services zsh)
#:select (home-zsh-syntax-highlighting-service-type
home-zsh-autosuggestions-service-type
home-zsh-autopair-service-type))
#:use-module ((oni packages count-emails)
#:select (count-emails))
#:use-module ((oni packages emacs)
#:select (emacs-inkplate
emacs-outli
emacs-syncthing-status
emacs-nginx-mode))
#:use-module ((oni packages emacs-config)
#:select (emacs-oni-org-roam
emacs-oni-elfeed
emacs-oni-elisp
emacs-oni-eshell
emacs-oni-core
emacs-oni-compilation
emacs-oni-common-lisp
emacs-oni-gui
emacs-oni-magit
emacs-oni-notmuch
emacs-oni-hy
emacs-oni-project
emacs-oni-bookmark
emacs-oni-dired
emacs-oni-browse-url
emacs-oni-c
emacs-oni-circe
emacs-oni-clojure
emacs-oni-cmake
emacs-oni-conf
emacs-oni-cpp
emacs-oni-csharp
emacs-oni-css
emacs-oni-diff-hl
emacs-oni-ediff
emacs-oni-elm
emacs-oni-emms
emacs-oni-epub
emacs-oni-eww
emacs-oni-grep
emacs-oni-haskell
emacs-oni-highlight-indent-guides
emacs-oni-html
emacs-oni-java
emacs-oni-json
emacs-oni-log-edit
emacs-oni-lua
emacs-oni-makefile
emacs-oni-nxml
emacs-oni-package
emacs-oni-projectile
emacs-oni-scheme
emacs-oni-sh
emacs-oni-shr
emacs-oni-tramp
emacs-oni-embrace
emacs-oni-yaml
emacs-oni-python
emacs-oni-git-commit
emacs-oni-php
emacs-oni-web-mode))
#:use-module ((oni packages inbox-size)
#:select (inbox-size))
#:use-module ((oni packages mpd)
#:select (mpd-random-albums))
#:use-module ((oni packages notmuch-collect-tasks)
#:select (notmuch-collect-tasks))
#:use-module ((oni packages notmuch-tag-mailinglists)
#:select (notmuch-tag-mailinglists))
#:use-module ((oni packages pick-random-wallpaper)
#:select (pick-random-wallpaper))
#:use-module ((oni packages shutdown-rofi)
#:select (shutdown-rofi))
#:use-module ((oni packages snes-games)
#:select (snes-blackthorne
snes-blackthorne-icons))
#:use-module ((oni packages stumpwm)
#:select (stumpwm+swank))
#:use-module ((oni packages terminals)
#:select (tym))
#:use-module ((oop goops)
#:select (make)))
(define (with-master-branch package)
"Apply a transformation to PACKAGE so that it uses the master branch."
((options->transformation
`((with-branch . ,(string-append (package-name package) "=master"))))
package))
(define (with-source package source)
((options->transformation
`((with-source . ,(format #f "~a=~a" (package-name package) source))))
package))
(define rincewind-picom-service
(service home-picom-service-type
(home-picom-configuration
(backend "glx")
(glx-no-stencil #t)
(detect-transient #t)
(shadow #t)
(shadow-radius 5)
(shadow-opacity 85)
(shadow-offset-x 15)
(shadow-offset-y 15)
(shadow-exclude
'("name = 'mowedline'"
"class_g = 'trayer'"
"bounding_shaped"
"class_g = 'i3lock'"))
(wintypes
'((dnd (shadow . #f))
(dock (shadow . #f))))
(rounded-corners-exclude
'("window_type *= \\\"dock\\\""))
(corner-radius 15)
(blur-background #f)
(blur-background-frame #f)
(fading #f))))
(define my-emacs emacs-next-tree-sitter)
(home-environment
(packages (list easytag
(specification->package+output "glibc-locales")
(specification->package+output "font-fantasque-sans")
(specification->package+output "font-comic-neue")
(specification->package+output "font-dosis")
(specification->package "zathura")
(specification->package "zathura-ps")
(specification->package "zathura-pdf-mupdf")
pick-random-wallpaper
notmuch-collect-tasks
notmuch-tag-mailinglists
(inbox-size my-emacs)
count-emails
shutdown-rofi
emacs-org-roam
emacs-org-roam-ui
emacs-org-contacts
fakeroot ; Needed for build arch packages
tmsu
mpd-random-albums
notmuch
emacs-inkplate
emacs-syncthing-status
emacs-outli
emacs-guix
emacs-fennel-mode
(emacs-oni-org-roam my-emacs)
emacs-oni-elisp
emacs-oni-core
emacs-oni-elfeed
emacs-oni-eshell
emacs-oni-compilation
emacs-oni-common-lisp
emacs-oni-gui
emacs-oni-magit
emacs-oni-notmuch
emacs-oni-hy
emacs-oni-project
emacs-oni-bookmark
emacs-oni-dired
emacs-oni-browse-url
emacs-oni-c
emacs-oni-circe
emacs-oni-clojure
emacs-oni-cmake
emacs-oni-conf
emacs-oni-cpp
emacs-oni-csharp
emacs-oni-css
emacs-oni-diff-hl
emacs-oni-ediff
emacs-oni-elm
emacs-oni-embrace
emacs-oni-emms
emacs-oni-epub
emacs-oni-eww
emacs-oni-grep
emacs-oni-haskell
emacs-oni-highlight-indent-guides
emacs-oni-html
emacs-oni-java
emacs-oni-json
emacs-oni-log-edit
emacs-oni-lua
emacs-oni-makefile
emacs-oni-nxml
emacs-oni-package
emacs-oni-projectile
emacs-oni-scheme
emacs-oni-sh
emacs-oni-shr
emacs-oni-tramp
emacs-oni-yaml
emacs-oni-python
emacs-nginx-mode
emacs-oni-git-commit
emacs-oni-php
emacs-oni-web-mode
tree-sitter-bash
tree-sitter-scheme
tree-sitter-python
tree-sitter-org
tree-sitter-json
tree-sitter-css
gforth
recutils
emacs-rec-mode
;; Might be needed for certain icons?
hicolor-icon-theme
;; Might be needed for cetrificates
nss-certs
tym
(with-source snes-blackthorne-icons
(format #f "~a/pictures/icons/Blackthorne/blackthorne_icons.tar.gz" (getenv "HOME")))
(with-source snes-blackthorne
(format #f "~a/downloads/Blackthorne.7z" (getenv "HOME")))))
(services
(list
home-environment-service
home-rofi-default-service
home-dunst-default-service
home-redshift-service
;; home-xbindkeys-service
home-zsh-service
home-guile-service
home-xmodmap-service
home-openssh-service
home-kitty-service
rincewind-picom-service
;; This has to be the first extension because it needs to be added to the
;; configuration last.
(service home-zsh-syntax-highlighting-service-type)
(service home-zsh-autosuggestions-service-type)
(service home-zsh-autopair-service-type)
home-channels-service
;; (service home-polybar-service-type
;; (home-polybar-configuration
;; (bar "rincewind")))
(service home-kdeconnect-service-type)
(service home-syncthing-service-type)
(service home-emacs-service-type
(home-emacs-configuration
(package my-emacs)
(configurations
(list
(local-file "../services/emacs/init.el")
(mixed-text-file
"init.el"
"(with-eval-after-load 'hy-mode (require 'oni-hy))\n"
"(with-eval-after-load 'project (require 'oni-project))\n"
"(projectile-mode)\n"
"(setq custom-file \"~/.config/emacs/custom.el\")\n"
"(load custom-file)\n"
"(provide 'init)\n"
";;; init.el ends here\n")))))
(service home-emacs-helpful-service-type
(home-emacs-helpful-configuration
(configurations
(list
(local-file "../services/emacs/oni-helpful.el")))))
(service home-emacs-yasnippet-capf-service-type)
(service home-emacs-dashboard-service-type
(home-emacs-dashboard-configuration
(configurations
(list
(local-file "../services/emacs/oni-dashboard.el")))))
(service home-emacs-eros-service-type)
(service home-emacs-ace-link-service-type
(home-emacs-ace-link-configuration
(default-key "C-S-e")
(goto-address-key "C-S-e")
(org-mode-key "C-S-e")))
(service home-emacs-ace-link-notmuch-service-type
(home-emacs-ace-link-notmuch-configuration
(default-key "C-S-e")))
(service home-emacs-golden-ratio-service-type)
(service home-emacs-pinentry-service-type)
(service home-emacs-vterm-service-type
(home-emacs-vterm-configuration
(buffer-name-string "*vterm* %s")))
(service home-emacs-org-modern-service-type)
(service home-wakatime-service-type
(home-wakatime-configuration
(api-url "https://waka.ryuslash.org/api")
(exclude '("COMMIT_EDITMSG$"
"TAG_EDITMSG$"))))
(service home-flameshot-service-type)
(service home-mpd-service-type
(home-mpd-configuration
(music-directory "~/music")
(playlist-directory "~/music/playlists")
(log-file "~/.local/share/mpd/mpd.log")
(pid-file "~/.local/share/mpd/mpd.pid")
(db-file "~/.local/share/mpd/mpd.db")
(state-file "~/.local/share/mpd/mpdstate")
(audio-outputs
(list (make <home-mpd-audio-output> #:type "pulse" #:name "MPD Pulse")
(make <home-mpd-audio-output>
#:type "fifo"
#:name "Visualizer"
#:path "/tmp/mpd.fifo"
#:format "44100:16:2")))))
(service home-mpc-update-service-type)
(service home-mpd-notify-service-type)
(service home-mpdscrobble-service-type)
(service home-mpv-service-type)
;; [2024-01-05 Fri] mpv-mpris fails to compile:
;; mpris.c:1:10: fatal error: gio/gio.h: No such file or directory
;; Since I don't actually use it right now I really don't need it.
; (service home-mpv-mpris-service-type)
(service home-stumpwm-service-type
(home-stumpwm-configuration
(package stumpwm+swank)
(configurations
(list (local-file "../services/stumpwm/config")))))
(service home-stumpwm-gaps-service-type
(home-stumpwm-gaps-configuration
(configurations
(list (local-file "../services/stumpwm/config-gaps")))))
(service home-stumpwm-stumptray-service-type
(home-stumpwm-stumptray-configuration
(configurations
(list (mixed-text-file "config-stumptray"
"(require 'stumptray)\n"
"(stumptray::stumptray)\n")))))
(service home-inkplate-display-service-type)
(service home-notmuch-service-type
(home-notmuch-configuration
(database-path "/home/chelys/documents/mail")
(user-primary-email "tom@ryuslash.org")
(user-other-email '("ryuslash@gmail.com" "tom@iactor.nl"))
(new-ignore '(".nnmaildir" ".mbsyncstate" ".uidvalidity"
".mbsyncstate.journal" ".mbsyncstate.new"))))
(service home-autokey-service-type)
(service home-copyq-service-type)
(service home-msmtp-service-type
(home-msmtp-configuration
(defaults (msmtp-configuration
(auth? #t)
(tls? #t)
(tls-starttls? #t)
(port 587)))
(accounts
(list (msmtp-account
(name "gmail")
;; Use `secret-tool store --label=msmtp host smtp.gmail.com
;; service smtp user ryuslash@gmail.com' to store the
;; password.
(configuration (msmtp-configuration
(host "smtp.gmail.com")
(from "ryuslash@gmail.com")
(user "ryuslash@gmail.com"))))
(msmtp-account
(name "ryuslash")
;; Use `secret-tool store --label=msmtp host
;; smtp-ryuslash.alwaysdata.net service smtp user
;; tom@ryuslash.org' to store the password.
(configuration (msmtp-configuration
(host "smtp-ryuslash.alwaysdata.net")
(from "tom@ryuslash.org")
(user "tom@ryuslash.org"))))))
(default-account "ryuslash")))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(ssh-support? #f)
(extra-content
"allow-emacs-pinentry\n")))
(service home-ssh-agent-service-type)
(service home-icecat-service-type
(home-icecat-configuration
(package librewolf)
(settings
'(("extensions.pocket.enabled" #f)
("view_source.editor.args" "--no-wait")
("view_source.editor.external" #t)
("view_source.editor.path" "/home/chelys/.guix-home/profile/bin/emacsclient")
;; Visual modifications. Don't let websites pick the colors or
;; the fonts, use mine instead.
("browser.display.document_color_use" 2)
("browser.display.use_document_fonts" 0)
("browser.display.background_color" "#222424")
("browser.display.foreground_color" "#bfbfbf")
("browser.anchor_color" "#ff9800")
("browser.visited_color" "#0babab")
("browser.newtabpage.activity-stream.showWeather" #f)
("font.default.x-western" "sans-serif")
("font.minimum-size.x-western" 18)
("font.name.monospace.x-western" "Fantasque Sans Mono")
("font.name.sans-serif.x-western" "Dosis")
;; Sadly, with this option on it won't accept my color
;; modifications, so I turn it off, even though I would prefer
;; being able to leave everything (except the forced light
;; theme) on.
("privacy.resistFingerprinting" #f)
;; Change the accelerator key (modifier key for most keyboard
;; shortcuts) to the super key (from control).
("ui.key.accelKey" 91))))))))