summaryrefslogtreecommitdiff
path: root/tw
diff options
context:
space:
mode:
authorTimo Wilken2023-01-25 21:07:03 +0100
committerTimo Wilken2023-01-25 21:07:03 +0100
commit12687e76aa91c3baa6ee1ba564c493de859aba7b (patch)
tree6f21e245c69b7d3a26016c0c3552b9cf2ebb862c /tw
parent41433914225e876ffcae5692d927b534f0bb2f11 (diff)
Export laptop home env as a variable
Diffstat (limited to 'tw')
-rw-r--r--tw/home/lap.scm499
1 files changed, 251 insertions, 248 deletions
diff --git a/tw/home/lap.scm b/tw/home/lap.scm
index 424d64a8..32e59525 100644
--- a/tw/home/lap.scm
+++ b/tw/home/lap.scm
@@ -99,251 +99,254 @@
(default-environment-variables))))
(stop #~(make-kill-destructor))))
-(home-environment
- (packages
- ;; These packages will show up in the home profile, under ~/.guix-home/profile.
- (cons*
- ;; CLI tools
- adb beets bsd-games powertop
-
- ;; Work
- s3cmd python-alibuild ; python-alidistlint
-
- ;; i3 and Xorg. i3 itself must be installed system-wide for gdm to pick it up.
- ;; acpilight is a drop-in xbacklight replacement, as xbacklight doesn't work on my system.
- acpilight arandr blueman dunst gimp hsetroot inkscape icecat kdeconnect
- kitty libreoffice mpv nheko polybar pulsemixer rofi rofi-calc
- signal-desktop simple-scan tk transmission-remote-gtk xdg-utils xdot xclip
- xcwd xdotool xdpyinfo xev xfd xfontsel xinput xkill xprop xrandr xrdb xsel
- xset xwininfo zoom zathura zathura-ps zathura-pdf-poppler
- dconf dconf-editor ; required for config by blueman, cozy, ...
- ;; gnome-keyring ; installed system-wide; see system-configuration.scm
- ;; geoclue ; for redshift -- installed system-wide
- ;; Games are installed in ~/.guix-profile instead, to make updates of the
- ;; home environment faster.
- ;; 0ad flightgear freeciv simutrans/pak128 warzone2100 widelands pioneer
- ;; Fonts
- font-hermit font-inconsolata font-fira-code font-fira-sans
- font-libertinus font-openmoji
- ;; Theming
- papirus-icon-theme catppuccin-gtk-theme catppuccin-mocha-dark-cursors
-
- (append common-packages emacs-packages pim-packages)))
-
- ;; To search for available home services, run 'guix home search KEYWORD'.
- (services
- (cons*
- ;; Configuration files for terminal-only programs in $XDG_CONFIG_HOME.
- (simple-service 'laptop-config home-xdg-configuration-files-service-type
- `(;; All alibuild needs is an empty file.
- ("alibuild/disable-analytics"
- ,(plain-file "alibuild-disable-analytics" ""))
- ("X11/XCompose" ,(local-file "files/XCompose")) ; see also: $XCOMPOSEFILE variable
- ("X11/Xresources" ,(local-file "files/Xresources"))))
-
- ;; This can't be a `service' as that would remove the 'guix channel.
- (simple-service 'nonfree-channels home-channels-service-type
- (list
- ;; Nonguix is also needed system-wide for non-free drivers!
- (channel
- (name 'nonguix)
- (url "https://gitlab.com/nonguix/nonguix")
- ;; Enable signature verification:
- (introduction
- (make-channel-introduction
- "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
- (openpgp-fingerprint
- "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
- (channel
- (name 'guix-gaming-games)
- (url "https://gitlab.com/guix-gaming-channels/games")
- ;; Enable signature verification:
- (introduction
- (make-channel-introduction
- "c23d64f1b8cc086659f8781b27ab6c7314c5cca5"
- (openpgp-fingerprint
- "50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"))))))
-
- ;; Batsignal: battery level notifications.
- (service home-batsignal-service-type
- (home-batsignal-configuration
- (batteries '("BAT0"))))
-
- ;; Redshift: make the screen turn redder at night.
- (service home-redshift-service-type
- (home-redshift-configuration
- ;; See info '(guix)Desktop Home Services'.
- (location-provider 'manual)
- ;; Approximate location
- (latitude 46.0)
- (longitude 6.0)
- ;; (location-provider 'geoclue2) ; TODO: currently waits forever for a location -- not sure why geoclue doesn't work
- ;; (daytime-temperature 6500) ; default 6500
- ;; (nighttime-temperature 4500) ; default 4500
- (daytime-brightness 1.0)
- (nighttime-brightness 0.7)
- (extra-content "fade=0"))) ; with fade=1, restarting redshift causes flickering for a few secs
-
- ;; The dbus service doesn't seem to be added automatically.
- (service home-dbus-service-type
- (home-dbus-configuration))
-
- (simple-service 'gui-services home-shepherd-service-type
- (list
- (shepherd-service
- (documentation "KDE connect applet.")
- (provision '(kdeconnect-applet))
- (requirement '(kdeconnectd))
- (start #~(make-forkexec-constructor
- (list #$(file-append kdeconnect "/bin/kdeconnect-indicator"))))
- (stop #~(make-kill-destructor)))
- (shepherd-service
- (documentation "KDE connect daemon.")
- (provision '(kdeconnectd))
- (start #~(make-forkexec-constructor
- (list #$(file-append kdeconnect "/libexec/kdeconnectd"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "NetworkManager applet; provides a GUI for network connections.")
- (provision '(nm-applet))
- (start #~(make-forkexec-constructor
- (list #$(file-append network-manager-applet "/bin/nm-applet"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Blueman applet; provides a GUI for connection to bluetooth devices.")
- (provision '(blueman-applet))
- (start #~(make-forkexec-constructor
- (list #$(file-append blueman "/bin/blueman-applet"))))
- (stop #~(make-kill-destructor)))
-
- (polybar-service "eDP-1")
- (polybar-service "HDMI-1-1")
-
- (shepherd-service
- (documentation "Dunst notification daemon; displays desktop notifications.")
- (provision '(dunst))
- (start #~(make-forkexec-constructor
- (list #$(file-append dunst "/bin/dunst"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Picom compositor; enables transparent windows in X.")
- (provision '(picom))
- (start #~(make-forkexec-constructor
- (list #$(file-append picom "/bin/picom")
- "--config" #$(local-file "files/picom.conf"))))
- (stop #~(make-kill-destructor)))
-
- (shepherd-service
- (documentation "Source Xresources on login.")
- (provision '(xrdb))
- (one-shot? #t)
- (start #~(lambda _
- (invoke #$(file-append xrdb "/bin/xrdb") "-merge"
- (string-append (getenv "XDG_CONFIG_HOME") "/X11/Xresources")))))
-
- ;; By default, xdotool gets most of "#@\|~()<>[]{} wrong. Make
- ;; it use the correct keymap by re-setting the same one again.
- (shepherd-service
- (documentation "Fix X keyboard map on login; passmenu needs this.")
- (provision '(fix-xdotool))
- (one-shot? #t)
- (start #~(lambda _
- (use-modules (ice-9 rdelim)
- (ice-9 regex)
- (ice-9 popen))
- (let ((port (open-pipe* OPEN_READ #$(file-append setxkbmap "/bin/setxkbmap")
- "-query")))
- (let loop ((line (read-line port)))
- (unless (eof-object? line)
- (let ((mtch (string-match "^layout:[[:space:]]*" line)))
- (if mtch
- (system* #$(file-append setxkbmap "/bin/setxkbmap")
- (match:suffix mtch))
- (loop (read-line port))))))))))
-
- (shepherd-service
- (documentation "Set up X displays on login.")
- (provision '(xorg-setup))
- (one-shot? #t)
- (start #~(lambda _
- (system* #$(file-append numlockx "/bin/numlockx") "on")
- ;; Turn off the monitors if there is no input for 10 minutes.
- (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600")
- (system* #$(file-append xrandr "/bin/xrandr")
- "--output" "eDP-1" "--auto"
- ;; Don't use --auto for this monitor. That
- ;; configures it at 60 Hz, which causes
- ;; it to briefly turn off every few minutes.
- "--output" "HDMI-1-1" "--mode" "2560x1440" "--rate" "120.00"
- "--right-of" "eDP-1")
- ;; Set the desktop background picture. Hopefully doing this just after
- ;; xrandr works and sets it for both screens.
- (system* #$(file-append hsetroot "/bin/hsetroot") "-cover"
- (string-append (getenv "HOME")
- "/pictures/Backgrounds/greece/IMG_20181201_104748_DRO.jpg")))))))
-
- ;; Configuration files for GUI programs in $XDG_CONFIG_HOME.
- (simple-service 'gui-config home-xdg-configuration-files-service-type
- `(("dunst/dunstrc" ,(local-file "files/dunstrc"))
- ("dunst/dunstrc.d/50-catppuccin.conf" ,catppuccin-dunstrc)
- ("gtk-2.0/gtkrc" ,(local-file "files/gtk2.ini"))
- ("gtk-3.0/settings.ini" ,(local-file "files/gtk3.ini"))
- ("i3/config" ,(local-file "files/i3.conf"))
- ;; TODO: "kdeglobals" works for some programs (e.g. kdeconnect-app),
- ;; but not for others (e.g. nheko, kdeconnect-settings)...
- ("kdeglobals" ,catppuccin-kdeglobals)
- ("kitty/diff.conf" ,catppuccin-kitty-diff)
- ("kitty/kitty.conf"
- ,(combined-text-file "kitty.conf"
- (local-file "files/kitty.conf")
- catppuccin-kitty))
- ("polybar/config.ini" ,(local-file "files/polybar.ini"))
- ("polybar/catppuccin.ini" ,catppuccin-polybar)
- ("rofi/config.rasi" ,(local-file "files/rofi.rasi"))
- ("rofi/themes/catppuccin.rasi" ,catppuccin-rofi)
- ("zathura/zathurarc" ,(local-file "files/zathurarc"))
- ("zathura/catppuccin" ,catppuccin-zathura)))
-
- (simple-service 'cursor-theme home-files-service-type
- `((".icons/default/index.theme" ,(local-file "files/cursors.ini"))))
-
- (simple-service 'gui-environment home-environment-variables-service-type
- `(("TERMINAL" . "kitty")
- ("_JAVA_OPTIONS" .
- ,(string-append
- "$_JAVA_OPTIONS${_JAVA_OPTIONS:+ }-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true "
- "-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel "
- "-Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"))
- ;; Smooth trackpad scrolling in Firefox/Icecat.
- ;; https://wiki.archlinux.org/index.php/Firefox/Tweaks#Pixel-perfect_trackpad_scrolling
- ("MOZ_USE_XINPUT2" . "1")))
-
- (simple-service 'gui-scripts home-files-service-type
- `(;; https://sw.kovidgoyal.net/kitty/kittens/diff/
- (".local/bin/kdiff" ; show a diff
- ,(program-file "kdiff" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
- "+kitten" "diff" (cdr (command-line)))))
- (".local/bin/icat" ; kitty's "catimg" equivalent
- ,(program-file "icat" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
- "+kitten" "icat" (cdr (command-line)))))
- (".local/bin/screenlock"
- ,(program-file
- "screenlock"
- #~(begin ; Wrapper around i3lock to turn off the screen and pause notifications.
- (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "true")
- (system* #$(file-append xset "/bin/xset") "dpms" "0" "0" "5")
- ;; We mustn't use `file-append' here, as we have to pick up the
- ;; setuid binary for i3lock installed by the system config.
- (system* "i3lock" "-nc" #$catppuccin-background-color)
- (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600")
- (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "false"))))
- ;; With #:recursive? #t, Guix keeps the files' permission bits, i.e. makes them executable.
- (".local/bin/sessionmenu" ,(local-file "files/sessionmenu" #:recursive? #t))
- (".local/bin/passmenu" ,(local-file "files/passmenu" #:recursive? #t))
- (".local/bin/volume" ,(local-file "files/volume" #:recursive? #t))))
-
- (append (gnupg-services #:gui-pinentry? #t)
- common-services emacs-services pim-services))))
+(define-public %lap-home
+ (home-environment
+ (packages
+ ;; These packages will show up in the home profile, under ~/.guix-home/profile.
+ (cons*
+ ;; CLI tools
+ adb beets bsd-games powertop
+
+ ;; Work
+ s3cmd python-alibuild ; python-alidistlint
+
+ ;; i3 and Xorg. i3 itself must be installed system-wide for gdm to pick it up.
+ ;; acpilight is a drop-in xbacklight replacement, as xbacklight doesn't work on my system.
+ acpilight arandr blueman dunst gimp hsetroot inkscape icecat kdeconnect
+ kitty libreoffice mpv nheko polybar pulsemixer rofi rofi-calc
+ signal-desktop simple-scan tk transmission-remote-gtk xdg-utils xdot xclip
+ xcwd xdotool xdpyinfo xev xfd xfontsel xinput xkill xprop xrandr xrdb xsel
+ xset xwininfo zoom zathura zathura-ps zathura-pdf-poppler
+ dconf dconf-editor ; required for config by blueman, cozy, ...
+ ;; gnome-keyring ; installed system-wide; see system-configuration.scm
+ ;; geoclue ; for redshift -- installed system-wide
+ ;; Games are installed in ~/.guix-profile instead, to make updates of the
+ ;; home environment faster.
+ ;; 0ad flightgear freeciv simutrans/pak128 warzone2100 widelands pioneer
+ ;; Fonts
+ font-hermit font-inconsolata font-fira-code font-fira-sans
+ font-libertinus font-openmoji
+ ;; Theming
+ papirus-icon-theme catppuccin-gtk-theme catppuccin-mocha-dark-cursors
+
+ (append common-packages emacs-packages pim-packages)))
+
+ ;; To search for available home services, run 'guix home search KEYWORD'.
+ (services
+ (cons*
+ ;; Configuration files for terminal-only programs in $XDG_CONFIG_HOME.
+ (simple-service 'laptop-config home-xdg-configuration-files-service-type
+ `(;; All alibuild needs is an empty file.
+ ("alibuild/disable-analytics"
+ ,(plain-file "alibuild-disable-analytics" ""))
+ ("X11/XCompose" ,(local-file "files/XCompose")) ; see also: $XCOMPOSEFILE variable
+ ("X11/Xresources" ,(local-file "files/Xresources"))))
+
+ ;; This can't be a `service' as that would remove the 'guix channel.
+ (simple-service 'nonfree-channels home-channels-service-type
+ (list
+ ;; Nonguix is also needed system-wide for non-free drivers!
+ (channel
+ (name 'nonguix)
+ (url "https://gitlab.com/nonguix/nonguix")
+ ;; Enable signature verification:
+ (introduction
+ (make-channel-introduction
+ "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
+ (openpgp-fingerprint
+ "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
+ (channel
+ (name 'guix-gaming-games)
+ (url "https://gitlab.com/guix-gaming-channels/games")
+ ;; Enable signature verification:
+ (introduction
+ (make-channel-introduction
+ "c23d64f1b8cc086659f8781b27ab6c7314c5cca5"
+ (openpgp-fingerprint
+ "50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"))))))
+
+ ;; Batsignal: battery level notifications.
+ (service home-batsignal-service-type
+ (home-batsignal-configuration
+ (batteries '("BAT0"))))
+
+ ;; Redshift: make the screen turn redder at night.
+ (service home-redshift-service-type
+ (home-redshift-configuration
+ ;; See info '(guix)Desktop Home Services'.
+ (location-provider 'manual)
+ ;; Approximate location
+ (latitude 46.0)
+ (longitude 6.0)
+ ;; (location-provider 'geoclue2) ; TODO: currently waits forever for a location -- not sure why geoclue doesn't work
+ ;; (daytime-temperature 6500) ; default 6500
+ ;; (nighttime-temperature 4500) ; default 4500
+ (daytime-brightness 1.0)
+ (nighttime-brightness 0.7)
+ (extra-content "fade=0"))) ; with fade=1, restarting redshift causes flickering for a few secs
+
+ ;; The dbus service doesn't seem to be added automatically.
+ (service home-dbus-service-type
+ (home-dbus-configuration))
+
+ (simple-service 'gui-services home-shepherd-service-type
+ (list
+ (shepherd-service
+ (documentation "KDE connect applet.")
+ (provision '(kdeconnect-applet))
+ (requirement '(kdeconnectd))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append kdeconnect "/bin/kdeconnect-indicator"))))
+ (stop #~(make-kill-destructor)))
+ (shepherd-service
+ (documentation "KDE connect daemon.")
+ (provision '(kdeconnectd))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append kdeconnect "/libexec/kdeconnectd"))))
+ (stop #~(make-kill-destructor)))
+
+ (shepherd-service
+ (documentation "NetworkManager applet; provides a GUI for network connections.")
+ (provision '(nm-applet))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append network-manager-applet "/bin/nm-applet"))))
+ (stop #~(make-kill-destructor)))
+
+ (shepherd-service
+ (documentation "Blueman applet; provides a GUI for connection to bluetooth devices.")
+ (provision '(blueman-applet))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append blueman "/bin/blueman-applet"))))
+ (stop #~(make-kill-destructor)))
+
+ (polybar-service "eDP-1")
+ (polybar-service "HDMI-1-1")
+
+ (shepherd-service
+ (documentation "Dunst notification daemon; displays desktop notifications.")
+ (provision '(dunst))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append dunst "/bin/dunst"))))
+ (stop #~(make-kill-destructor)))
+
+ (shepherd-service
+ (documentation "Picom compositor; enables transparent windows in X.")
+ (provision '(picom))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append picom "/bin/picom")
+ "--config" #$(local-file "files/picom.conf"))))
+ (stop #~(make-kill-destructor)))
+
+ (shepherd-service
+ (documentation "Source Xresources on login.")
+ (provision '(xrdb))
+ (one-shot? #t)
+ (start #~(lambda _
+ (invoke #$(file-append xrdb "/bin/xrdb") "-merge"
+ (string-append (getenv "XDG_CONFIG_HOME") "/X11/Xresources")))))
+
+ ;; By default, xdotool gets most of "#@\|~()<>[]{} wrong. Make
+ ;; it use the correct keymap by re-setting the same one again.
+ (shepherd-service
+ (documentation "Fix X keyboard map on login; passmenu needs this.")
+ (provision '(fix-xdotool))
+ (one-shot? #t)
+ (start #~(lambda _
+ (use-modules (ice-9 rdelim)
+ (ice-9 regex)
+ (ice-9 popen))
+ (let ((port (open-pipe* OPEN_READ #$(file-append setxkbmap "/bin/setxkbmap")
+ "-query")))
+ (let loop ((line (read-line port)))
+ (unless (eof-object? line)
+ (let ((mtch (string-match "^layout:[[:space:]]*" line)))
+ (if mtch
+ (system* #$(file-append setxkbmap "/bin/setxkbmap")
+ (match:suffix mtch))
+ (loop (read-line port))))))))))
+
+ (shepherd-service
+ (documentation "Set up X displays on login.")
+ (provision '(xorg-setup))
+ (one-shot? #t)
+ (start #~(lambda _
+ (system* #$(file-append numlockx "/bin/numlockx") "on")
+ ;; Turn off the monitors if there is no input for 10 minutes.
+ (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600")
+ (system* #$(file-append xrandr "/bin/xrandr")
+ "--output" "eDP-1" "--auto"
+ ;; Don't use --auto for this monitor. That
+ ;; configures it at 60 Hz, which causes
+ ;; it to briefly turn off every few minutes.
+ "--output" "HDMI-1-1" "--mode" "2560x1440" "--rate" "120.00"
+ "--right-of" "eDP-1")
+ ;; Set the desktop background picture. Hopefully doing this just after
+ ;; xrandr works and sets it for both screens.
+ (system* #$(file-append hsetroot "/bin/hsetroot") "-cover"
+ (string-append (getenv "HOME")
+ "/pictures/Backgrounds/greece/IMG_20181201_104748_DRO.jpg")))))))
+
+ ;; Configuration files for GUI programs in $XDG_CONFIG_HOME.
+ (simple-service 'gui-config home-xdg-configuration-files-service-type
+ `(("dunst/dunstrc" ,(local-file "files/dunstrc"))
+ ("dunst/dunstrc.d/50-catppuccin.conf" ,catppuccin-dunstrc)
+ ("gtk-2.0/gtkrc" ,(local-file "files/gtk2.ini"))
+ ("gtk-3.0/settings.ini" ,(local-file "files/gtk3.ini"))
+ ("i3/config" ,(local-file "files/i3.conf"))
+ ;; TODO: "kdeglobals" works for some programs (e.g. kdeconnect-app),
+ ;; but not for others (e.g. nheko, kdeconnect-settings)...
+ ("kdeglobals" ,catppuccin-kdeglobals)
+ ("kitty/diff.conf" ,catppuccin-kitty-diff)
+ ("kitty/kitty.conf"
+ ,(combined-text-file "kitty.conf"
+ (local-file "files/kitty.conf")
+ catppuccin-kitty))
+ ("polybar/config.ini" ,(local-file "files/polybar.ini"))
+ ("polybar/catppuccin.ini" ,catppuccin-polybar)
+ ("rofi/config.rasi" ,(local-file "files/rofi.rasi"))
+ ("rofi/themes/catppuccin.rasi" ,catppuccin-rofi)
+ ("zathura/zathurarc" ,(local-file "files/zathurarc"))
+ ("zathura/catppuccin" ,catppuccin-zathura)))
+
+ (simple-service 'cursor-theme home-files-service-type
+ `((".icons/default/index.theme" ,(local-file "files/cursors.ini"))))
+
+ (simple-service 'gui-environment home-environment-variables-service-type
+ `(("TERMINAL" . "kitty")
+ ("_JAVA_OPTIONS" .
+ ,(string-append
+ "$_JAVA_OPTIONS${_JAVA_OPTIONS:+ }-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true "
+ "-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel "
+ "-Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"))
+ ;; Smooth trackpad scrolling in Firefox/Icecat.
+ ;; https://wiki.archlinux.org/index.php/Firefox/Tweaks#Pixel-perfect_trackpad_scrolling
+ ("MOZ_USE_XINPUT2" . "1")))
+
+ (simple-service 'gui-scripts home-files-service-type
+ `(;; https://sw.kovidgoyal.net/kitty/kittens/diff/
+ (".local/bin/kdiff" ; show a diff
+ ,(program-file "kdiff" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
+ "+kitten" "diff" (cdr (command-line)))))
+ (".local/bin/icat" ; kitty's "catimg" equivalent
+ ,(program-file "icat" #~(apply execl #$(file-append kitty "/bin/kitty") "kitty"
+ "+kitten" "icat" (cdr (command-line)))))
+ (".local/bin/screenlock"
+ ,(program-file
+ "screenlock"
+ #~(begin ; Wrapper around i3lock to turn off the screen and pause notifications.
+ (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "true")
+ (system* #$(file-append xset "/bin/xset") "dpms" "0" "0" "5")
+ ;; We mustn't use `file-append' here, as we have to pick up the
+ ;; setuid binary for i3lock installed by the system config.
+ (system* "i3lock" "-nc" #$catppuccin-background-color)
+ (system* #$(file-append xset "/bin/xset") "dpms" "600" "600" "600")
+ (system* #$(file-append dunst "/bin/dunstctl") "set-paused" "false"))))
+ ;; With #:recursive? #t, Guix keeps the files' permission bits, i.e. makes them executable.
+ (".local/bin/sessionmenu" ,(local-file "files/sessionmenu" #:recursive? #t))
+ (".local/bin/passmenu" ,(local-file "files/passmenu" #:recursive? #t))
+ (".local/bin/volume" ,(local-file "files/volume" #:recursive? #t))))
+
+ (append (gnupg-services #:gui-pinentry? #t)
+ common-services emacs-services pim-services)))))
+
+%lap-home