radix/home-environments/radio.scm

529 lines
23 KiB
Scheme

#|Modules|#
(use-modules
#|GNU |# (gnu)
(gnu home)
(gnu home services)
#|Guix |# (guix channels)
#|Radix|# (radix packages fonts)
(radix packages wm)
(radix packages syndication)
(radix home services)
(radix home services shells)
(radix home services gnupg)
(radix home services xdg)
(radix home services zathura)
(radix utils)
((radix files awesome) #:prefix file:awesome-)
((radix files emacs) #:prefix file:emacs-)
((radix files fish) #:prefix file:fish-)
((radix files git) #:prefix file:git-)
((radix files info) #:prefix file:info-)
((radix files kakoune) #:prefix file:kak-)
((radix files lf) #:prefix file:lf-)
((radix files mpv) #:prefix file:mpv-)
((radix files newsraft) #:prefix file:newsraft-))
(use-package-modules
#|A|# admin
#|B|# bittorrent
#|C|# c calendar curl
#|D|# disk
#|F|# file fonts freedesktop
#|G|# games gnome gnu-doc gnupg gnuzilla guile-xyz
#|I|# image-viewers
#|L|# linux
#|M|# maths minetest
#|P|# password-utils pdf pulseaudio python-xyz
#|S|# scheme shells ssh suckless
#|T|# telegram text-editors tor toys
#|V|# version-control video
#|W|# wm
#|X|# xdisorg xorg)
(use-home-service-modules
#|D|# desktop
#|G|# guix
#|M|# mcron
#|S|# ssh shepherd sound)
(home-environment
(packages
(list #|admin |# neofetch netcat-openbsd
#|bittorrent |# aria2 qbittorrent
#|c |# c-intro-and-ref
#|calendar |# remind
#|curl |# curl
#|disk |# lf
#|file |# file
#|fonts |# font-arabic-misc font-liberation font-meslo-lg-dz
font-misc-misc font-un font-wqy-zenhei
#|freedesktop |# xdg-utils
#|games |# minetest supertuxkart xonotic
#|gnome |# adwaita-icon-theme
#|gnu-doc |# gnu-standards
#|gnupg |# gnupg pinentry
#|gnuzilla |# icecat
#|guile-xyz |# haunt
#|image-viewers |# imv
#|linux |# alsa-utils
#|math |# libqalculate
#|password-utils|# keepassxc
#|pdf |# zathura zathura-pdf-mupdf zathura-djvu
#|pulseaudio |# pamixer pavucontrol
#|python-xyz |# python-ueberzug
#|scheme |# sicp
#|shells |# fish
#|syndication |# newsraft
#|ssh |# openssh
#|suckless |# xst
#|telegram |# telegram-desktop
#|tor |# torbrowser
#|toys |# oneko
#|vesion-control|# git
#|video |# ffmpeg mpv yt-dlp
#|wm |# awesome-git
#|xdisorg |# maim xbanish xclip xinit xsel
#|xorg |# setxkbmap xinput xf86-input-libinput xkill xmodmap
xorg-server xrdb xset))
(services
(list #|XDG services|#
(service home-xdg-user-directories-service-type
(home-xdg-user-directories-configuration
(desktop "$HOME/areas")
(documents "$HOME/areas/documents")
(music "$HOME/media/music")
(pictures "$HOME/media/pictures")
(videos "$HOME/media/videos")
(publicshare "$HOME/resources/public")
(download "$HOME/.local/share/downloads")
(templates "$HOME/.local/share/templates")))
(service home-xdg-mime-applications-service-type
(home-xdg-mime-applications-configuration
(default (associate-right
('icecat.desktop
`("text/html"
"application/xhtml+xml"
"application/x-extension-htm"
"application/x-extension-xhtml"
"application/x-extension-xht"
"x-scheme-handler/http"
"x-scheme-handler/https"))
('kak.desktop
`("text/plain"
"text/troff"
"text/xml"
"text/x-c"
"text/x-c++"
"text/x-diff"
"text/x-lisp"
"text/x-scheme"
"text/x-shellscript"
"text/x-tex"))
('lf.desktop
`("inode/directory"
"x-scheme-handler/ftp"
"x-scheme-handler/nfs"
"x-scheme-handler/smb"
"x-scheme-handler/ssh"
"application/x-directory"))
('mpv.desktop
`("image/gif"
"audio/mpeg"
"audio/ogg"
"audio/opus"
"audio/x-opus+ogg"
"video/mp4"
"video/x-matroska"
"video/webm"))
('imv.desktop
`("image/avif"
"image/bmp"
"image/jpeg"
"image/png"
"image/svg+xml"
"image/webp"))
('org.pwmt.zathura.desktop
`("image/vnd.djvu"
"application/pdf"
"application/epub+zip"))))))
(service home-xdg-configuration-files-service-type
`(("awesome/rc.lua" ,file:awesome-config)
("awesome/themes/current.lua" ,file:awesome-theme)
("emacs/init.el" ,file:emacs-init)
("emacs/theme.el" ,file:emacs-theme)
("fish/functions" ,file:fish-functions)
("fish/conf.d" ,file:fish-config)
("git" ,file:git-config)
("info" ,file:info-config)
("kak/kakrc" ,file:kak-config)
("kak/autoload/colorscheme.kak" ,file:kak-colorscheme)
("lf" ,file:lf-config)
("mpv" ,file:mpv-config)
("newsraft" ,file:newsraft-config)))
#|Guix service|#
(simple-service 'channels-service
home-channels-service-type
(list (channel
(name 'radix)
(url "https://codeberg.org/anemofilia/radix")
(branch "main")
(introduction
(make-channel-introduction
"f9130e11e35d2c147c6764ef85542dc58dc09c4f"
(openpgp-fingerprint
(format #f "F164 709E 5FC7 B32B AEC7 ~
9F37 1F2E 76AC E3F5 31C8")))))))
#|Shepherd service|#
(service home-shepherd-service-type)
#|Shell services|#
(service home-fish-service-type
(home-fish-configuration
(config (list file:fish-custom-functions))
(environment-variables
`(("GPG_TTY" . "(tty)")
("fish_complete_path"
. ,(format #f "$fish_complete_path~@{ ~a/fish/completions}"
"$HOME/.guix-home/profile/share"))))
(aliases
`(#|Common aliases|#
("df" . "df -h")
("du" . "du -h")
("diff" . "diff --color=auto")
("grep" . "grep --color=auto")
("ip" . "ip --color=auto")
("ls" . ,(format #f "ls --color=auto ~
--group-directories-first ~
--classify ~
-hv"))
#|Clear terminal screen without ncurses|#
("clear" . "printf \"\\033c\"")
#|Make ln idempotent|#
("ln" . "ln -sfn")
#|Kakoune bindings for info|#
("info" . "info --init-file $XDG_CONFIG_HOME/info")
#|Easy presentation setup with xrandr|#
("present" . ,(format #f "xrandr --output LVDS-1 ~
--mode 1366x768 ~
--scale 1x1 ~
--output VGA-1 ~
--same-as LVDS-1 ~
--mode 1920x1080 ~
--scale 0.711x0.711"))
#|Display images in lf using ueberzug|#
("lf" . "$HOME/.local/bin/lf/lfrun")
#|Listen to libre music on vern's radio|#
("radio" . "https://radio.vern.cc")
#|Kakoune aliases for the shell|#
("':e'" . "kak")
("':q'" . "exit")))
(abbreviations
(let ((code-projects "~/projects/code")
(code-project-extensions
'(c clj cpp el html kak md org pl py scm sh tex zig))
(xdg-user-directories
'(desktop documents downloads music
pictures public templates videos))
(bookmarks
'(emacs guile guix haunt misc)))
(list #|Quick access|#
(abbreviation
(name "@user-dirs")
(position 'anywhere)
(pattern
(apply format #f "@(~a~@{|~a~})"
xdg-user-directories))
(expansion (fish-function "xdg-user-directory")))
(abbreviation
(name "@extension")
(position 'anywhere)
(pattern
(apply format #f "@(~a~@{|~a~})"
code-project-extensions))
(expansion
(fish-function "code-projects")))
(abbreviation
(name "@punk")
(position 'anywhere)
(expansion
(format #f "~a/cpp/punk"
code-projects)))
(abbreviation
(name "@guix")
(position 'anywhere)
(expansion
(format #f "~a/scm/guix"
code-projects)))
(abbreviation
(name "@radix")
(position 'anywhere)
(expansion
(format #f "~a/scm/radix"
code-projects)))
(abbreviation
(name "@files")
(position 'anywhere)
(expansion
(format #f "~a/scm/radix/files"
code-projects)))
(abbreviation
(name "@modules")
(position 'anywhere)
(expansion
(format #f "~a/scm/radix/modules/radix"
code-projects)))
(abbreviation
(name "@research")
(position 'anywhere)
(expansion "~/areas/research"))
(abbreviation
(name "@bookmarks")
(position 'anywhere)
(expansion "~/resources/bookmarks"))
(abbreviation
(name "@git-root")
(pattern "@git-root")
(position 'anywhere)
(expansion
(fish-function "git-root")))
#|Quick edit|#
(abbreviation
(name ":e")
(expansion "$EDITOR"))
(abbreviation
(name ":system")
(expansion
(format #f "~a/scm/radix && $EDITOR buer.scm"
code-projects)))
(abbreviation
(name ":home")
(expansion
(format #f "~a/scm/radix && $EDITOR radio.scm"
code-projects)))
(abbreviation
(name ":todo")
(expansion "~/areas/organization/todo"))
(abbreviation
(name ":bookmark")
(position 'anywhere)
(pattern
(apply format #f ":(~a~@{|~a~})" bookmarks))
(expansion
(fish-function "bookmarks")))
#|Media downloading|#
(abbreviation
(name "i")
(expansion "ipfs get %"))
(abbreviation
(name "d")
(expansion "aria -j 10 '%'"))
(abbreviation
(name "m")
(expansion
(format #f "yt-dlp --prefer-free-formats ~
--extract-audio '%'")))
(abbreviation
(name "v")
(expansion
"yt-dlp --prefer-free-formats '%'"))
#|Command history reuse|#
(abbreviation
(name "!!")
(position 'anywhere)
(expansion
(fish-function "bang-bang")))
(abbreviation
(name "!!:k")
(position 'anywhere)
(pattern "!!:[0-9]+")
(expansion
(fish-function "bang-bang-k")))
(abbreviation
(name "!$")
(position 'anywhere)
(expansion
(fish-function "bang-dollar")))
(abbreviation
(name "!*")
(position 'anywhere)
(expansion
(fish-function "bang-star")))
#|Guix reconfiguration|#
(abbreviation
(name "!dgen")
(position 'anywhere)
(expansion "guix % delete-generations 2w"))
(abbreviation
(name "!repair")
(expansion "doas guix build --repair"))
(abbreviation
(name "!pull")
(position 'anywhere)
(expansion "guix pull"))
(abbreviation
(name "!home")
(expansion
"guix home reconfigure ~/.config/guix/home.scm"))
(abbreviation
(name "!system")
(expansion
"doas guix system reconfigure /etc/config.scm"))
#|Utils|#
(abbreviation
(name "zedit")
(expansion "zcat % | $EDITOR"))
(abbreviation
(name "tf")
(position 'anywhere)
(expansion
"setsid -f %>/dev/null 2>&1 & disown"))
(abbreviation
(name "zxz")
(expansion
"curl -F file=@% https://0x0.st | xsel -b")))))))
(simple-service 'environment-variables-service
home-environment-variables-service-type
`(#|Shells|#
("HISTFILE" . "$XDG_CACHE_HOME/bash/history")
("HISTSIZE" . "-1")
("HISTFILESIZE" . "-1")
("PATH" . "$HOME/.local/bin:$PATH")
("ENV" . "$XDG_CONFIG_HOME/dash/init.sh")
#|Language|#
("LANG" . "en_US.UTF-8")
("LANGUAGE" . "en_US.UTF-8")
("LC_COLLATE" . "C")
#|Default applications|#
("BROWSER" . "icecat")
("EDITOR" . "kak")
("FCEDIT" . "kak")
("PAGER" . "less")
("READER" . "zathura")
("SHELL" . "fish")
("TERMINAL" . "xst")
("VISUAL" . "kak")
("WM" . "awesome")
#|Xorg|#
("XINITRC" . "$XDG_CONFIG_HOME/x11/xinitrc")
#|Readline|#
("INPUTRC" . "$XDG_CONFIG_HOME/readline/inputrc")
#|GTK|#
("GTK_RC_FILES" . "$XDG_CONFIG_HOME/gtk-2.0/gtkrc")
#|Guile|#
("GUILE_WARN_DEPRECATED" . "detailed")
("GUILE_HISTORY" . "$XDG_CACHE_HOME/guile/history")
("GUILE_LOAD_PATH"
. ,(format #f "~a~@{:~a/share/guile/site/3.0~}"
"$HOME/areas/code/scm/radix/modules"
"$HOME/.guix-home/profile"
"$XDG_CONFIG_HOME/guix/current"
"/run/current-system/profile"))
#|Guix|#
("GUIX_PROFILE" . "$XDG_CONFIG_HOME/guix/current")
#|IPFS|#
("IPFS_PATH" . "$XDG_DATA_HOME/ipfs")
#|Other program settings|#
("RUNLEVEL" . "3")
("TERMINFO" . "$XDG_DATA_HOME/terminfo")
("GRADLE_USER_HOME" . "$XDG_DATA_HOME/gradle")
("RUSTUP_HOME" . "$XDG_DATA_HOME/rustup")
("CARGO_HOME" . "$XDG_DATA_HOME/cargo")
("DOTREMINDERS" . "$XDG_DATA_HOME/reminders")))
(service home-openssh-service-type
(home-openssh-configuration
(hosts (list (openssh-host
(name "codeberg.org")
(host-name "codeberg.org")
(user "git")
(identity-file "~/.ssh/codeberg"))
(openssh-host
(name "github.com")
(host-name "github.com")
(user "git")
(identity-file "~/.ssh/github"))
(openssh-host
(name "*.onion")
(identity-file "~/.ssh/codeberg")
(proxy
(proxy-command
"nc -x 127.0.0.1:9050 -X5 %h %p")))))
(authorized-keys #f)))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(gnupghome ".local/share/gnupg")
(pinentry-program
(file-append pinentry "/bin/pinentry-curses"))))
#|Session services|#
(service home-dbus-service-type)
#|Sound services|#
(service home-pipewire-service-type)
#|Desktop application services|#
(service home-zathura-service-type
(home-zathura-configuration
(selection-clipboard 'clipboard)
(pages-per-row 1)
(statusbar-home-tilde? #t)
(recolor (recolor-configuration
(keephue? #t)
(reverse-video? #t)))
(key-maps
(list (key-map
(binding "gk")
(command "goto top"))
(key-map
(binding "gj")
(command "goto bottom"))
(key-map
(binding "d")
(command #f))))
(index-face
(face (background "#000000")
(foreground "#dddddd")))
(index-active-face
(face (background "#9688d9")
(foreground "#000000")))
(completion-face
(face (background "#000000")
(foreground "#dddddd")))
(completion-highlight-face
(face (background "#000000")
(foreground "#9688d9")))))
#|Mcron service|#
(service home-mcron-service-type
(home-mcron-configuration
(jobs (list #~(job "30 5 * * *"
"mpv --shuffle ~/media/music"))))))))