;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Provides a set of my preferred ;; ;; program and services for desktops ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-module (desktop) #:use-module (gnu) #:use-module (gnu home services) #:use-module (gnu home services desktop) #:use-module (gnu home services shells) #:use-module (gnu packages image) #:use-module (gnu packages suckless) #:use-module (gnu packages xorg) #:use-module (gnu services) #:use-module (gnu services admin) #:use-module (gnu services audio) #:use-module (gnu services avahi) #:use-module (gnu services dbus) #:use-module (gnu services desktop) #:use-module (gnu services networking) #:use-module (gnu services sound) #:use-module (gnu services xorg) #:use-module (guix gexp) #:use-module (guix packages) #:export (bd-desktop-system-packages bd-desktop-system-services bd-desktop-home-services)) (define programs '( "dmenu" "flameshot" "font-google-noto-emoji" "gimp" "icecat" "imagemagick" "libnotify" "librewolf" "mpv" "pavucontrol" "picom" "pulseaudio" "sxiv" "xprop" "zathura" "zathura-pdf-poppler" )) (define x-server '( "feh" "ffmpeg" "gtk+" "xdotool" "xf86-input-libinput" "xf86-video-fbdev" "xinit" "xmodmap" "xorg-server" "xrdb" "xset" )) (define dwm-package (package (inherit dwm) (name "bdunahu-dwm") (inputs (modify-inputs (package-inputs dwm))) (source (local-file "dwm" #:recursive? #t)))) (define bd-desktop-system-packages `(,@(map specification->package (append! programs x-server )) ,dwm-package )) (define bd-desktop-system-services (list (service screen-locker-service-type (screen-locker-configuration (name "slock") (program (file-append slock "/bin/slock")))) ;; so that non-root users in the wheel group can ;; perform administrative tasks (similar to "sudo"). polkit-wheel-service ;; The global fontconfig cache directory can sometimes contain ;; stale entries, possibly referencing fonts that have been GC'd, ;; so mount it read-only. fontconfig-file-system-service (service network-manager-service-type) (service wpa-supplicant-service-type) ; needed by NetworkManager (service modem-manager-service-type) (service usb-modeswitch-service-type) ;; The D-Bus clique. (service avahi-service-type) (service udisks-service-type) (service upower-service-type) (service accountsservice-service-type) (service cups-pk-helper-service-type) (service colord-service-type) (service geoclue-service-type) (service polkit-service-type) (service elogind-service-type (elogind-configuration (handle-power-key 'hibernate) ;; (idle-action-seconds (* 5 60)) ;; (idle-action 'suspend) )) (service dbus-root-service-type) (service ntp-service-type) (service x11-socket-directory-service-type) (service pulseaudio-service-type) (service alsa-service-type))) (define bd-desktop-home-services (list (simple-service 'dotfiles home-files-service-type `((".Xresources" ,(plain-file "Xresources" " Sxiv.background: #000000 Sxiv.foreground: #00C0FF ")) (".Xmodmap" ,(plain-file "Xmodmap" " clear lock clear control clear mod1 clear mod2 clear mod3 clear mod4 clear mod5 keycode 37 = Hyper_L keycode 66 = Control_L add control = Control_L Control_R add mod1 = Alt_L Alt_R Meta_L add mod2 = Num_Lock add mod3 = Hyper_L add mod4 = Super_L Super_R add mod5 = Mode_switch ISO_Level3_Shift ")) (".xinitrc" ,(plain-file "xinitrc" " #!/bin/sh userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/etc/X11/xinit/.Xresources sysmodmap=/etc/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f \"$userresources\" ]; then xrdb -merge \"$userresources\" fi if [ -f \"$usermodmap\" ]; then xmodmap \"$usermodmap\" fi # start some programs if [ -d /etc/X11/xinit/xinitrc.d ] ; then for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do [ -x \"$f\" ] && . \"$f\" done unset f fi picom & time-getter & set-bg xset r rate 250 70 exec dwm")) (".config/gtk-2.0/settings.ini" ,(plain-file "settings.ini" " [Settings] gtk-application-prefer-dark-theme=1\n")) (".config/gtk-3.0/settings.ini" ,(plain-file "settings.ini" " [Settings] gtk-application-prefer-dark-theme=1\n"))))))