dotfiles/oni/home/config/rincewind.scm
Tom Willemse b144e84ea5 Add ‘emacs-oni-hy’
I just added a configuration for programming in Hy. This is the first step for
moving more of my Emacs configuration into guix home. Instead of adding the
autoload for ‘oni-hy’ in the ‘oni-core’ package, I've added it directly to my
Guix configuration. In the future I'll want to change this so that each package
gets its own configuration and also extends my Emacs configuration so that it
automatically adds these autoloads when I add a package.
2023-07-14 00:54:48 -07:00

330 lines
13 KiB
Scheme

(define-module (oni home config rincewind)
#:use-module ((gnu home services guix)
#:select (home-channels-service-type))
#:use-module ((gnu home)
#:select (home-environment))
#:use-module ((gnu packages certs)
#:select (nss-certs))
#:use-module ((gnu packages databases)
#:select (recutils
emacs-rec-mode))
#:use-module ((gnu packages emacs)
#:select (emacs-next))
#:use-module ((gnu packages emacs-xyz)
#:select (emacs-org-roam
emacs-vterm
emacs-guix
emacs-org-contacts))
#: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 linux)
#:select (fakeroot))
#:use-module ((gnu packages mail)
#:select (notmuch
emacs-notmuch))
#:use-module ((gnu packages music)
#:select (easytag))
#:use-module ((gnu packages video)
#:select (mpv
mpv-mpris))
#:use-module ((gnu packages)
#:select (specification->package+output))
#: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))
#: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))
#: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))
#: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 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))
#: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))
#: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))
#:use-module ((oni packages count-emails)
#:select (count-emails))
#:use-module ((oni packages emacs)
#:select (emacs-inkplate))
#:use-module ((oni packages emacs-config)
#:select (emacs-oni-org-roam
emacs-oni-vterm
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))
#:use-module ((oni packages hlwm-run-or-raise)
#:select (hlwm-run-or-raise))
#:use-module ((oni packages inbox-size)
#:select (inbox-size))
#:use-module ((oni packages mpd-random-albums)
#: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 stumpwm)
#:select (stumpwm+swank))
#:use-module ((oni packages emacs-outli)
#:select (emacs-outli))
#: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 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))))
(corner-radius 15)
(inactive-opacity 75)
(active-opacity 95)
(frame-opacity 100)
(inactive-opacity-override #t)
(opacity-rule
'("100:name *?= '(Meeting) | Microsoft Teams'"
"100:name *?= 'freerdp'"))
(blur-background #t)
(blur-background-frame #t)
(blur
'((method . "dual_kawase")
(strength . 6.9)))
(blur-background-fixed #t)
(blur-background-exclude
'("name *= 'rofi'"
"class_g = 'i3lock'"))
(focus-exclude
'("name *= 'rofi'"
"class_g = 'i3lock'"))
(fading #t)
(fade-exclude
`("class_g = 'i3lock'"))
(fade-in-step 3)
(fade-out-step 3))))
(home-environment
(packages (list mpv mpv-mpris easytag
(specification->package+output "glibc-locales")
(specification->package+output "font-fantasque-sans")
(specification->package+output "font-comic-neue")
hlwm-run-or-raise
pick-random-wallpaper
notmuch-collect-tasks
notmuch-tag-mailinglists
(inbox-size emacs-next)
count-emails
shutdown-rofi
emacs-org-roam
emacs-org-roam-ui
emacs-vterm
emacs-org-contacts
fakeroot ; Needed for build arch packages
tmsu
mpd-random-albums
notmuch
emacs-notmuch
emacs-inkplate
emacs-outli
emacs-guix
emacs-oni-org-roam
emacs-oni-vterm
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
gforth
recutils
emacs-rec-mode
;; Might be needed for certain icons?
hicolor-icon-theme
;; Might be needed for cetrificates
nss-certs))
(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)
(simple-service 'my-channel-service
home-channels-service-type
(list
(channel
(name 'oni)
(url "https://code.ryuslash.org/ryuslash/guix-packages.git")
(introduction
(make-channel-introduction
"646573578b7adfbff415645fed201269076cebf6"
(openpgp-fingerprint
"061C C5C4 D936 C9A8 AECC 1A17 7D5C 407B 4350 25C1"))))
(channel
(name 'guix-gaming-games)
(url "https://gitlab.com/guix-gaming-channels/games.git")
(introduction
(make-channel-introduction
"c23d64f1b8cc086659f8781b27ab6c7314c5cca5"
(openpgp-fingerprint
"50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"))))
(channel
(name 'rosenthal)
(url "https://codeberg.org/hako/rosenthal.git")
(branch "trunk")
(introduction
(make-channel-introduction
"7677db76330121a901604dfbad19077893865f35"
(openpgp-fingerprint
"13E7 6CD6 E649 C28C 3385 4DF5 5E5A A665 6149 17F7"))))))
;; (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 emacs-next)
(configurations
(list
(local-file "../services/emacs/init.el")
(mixed-text-file
"init.el"
"(with-eval-after-load 'hy-mode (require 'oni-hy))\n"
"(setq custom-file \"~/.config/emacs/custom.el\")\n"
"(load custom-file)\n"
"(provide 'init)\n"
";;; init.el ends here\n")))))
(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-stumpwm-service-type
(home-stumpwm-configuration
(package stumpwm+swank)))
(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")))))))