mirror of
				https://codeberg.org/hako/Rosenthal.git
				synced 2025-11-04 03:34:37 +00:00 
			
		
		
		
	services: desktop: Use ‘define-configuration’.
This commit is contained in:
		
							parent
							
								
									20bac9c7a4
								
							
						
					
					
						commit
						7a185369e9
					
				@ -14,6 +14,7 @@
 | 
			
		||||
 | 
			
		||||
  #:use-module (gnu services)
 | 
			
		||||
  #:use-module (gnu services base)
 | 
			
		||||
  #:use-module (gnu services configuration)
 | 
			
		||||
  #:use-module (gnu services desktop)
 | 
			
		||||
  #:use-module (gnu services sddm)
 | 
			
		||||
  #:use-module (gnu services xorg)
 | 
			
		||||
@ -74,15 +75,12 @@
 | 
			
		||||
;;; Blueman
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-blueman-applet-configuration>
 | 
			
		||||
  home-blueman-applet-configuration
 | 
			
		||||
  make-home-blueman-applet-configuration
 | 
			
		||||
  home-blueman-applet-configuration?
 | 
			
		||||
  this-home-blueman-applet-configuration
 | 
			
		||||
  (blueman home-blueman-applet-configuration-blueman
 | 
			
		||||
           (default (spec->pkg+out "blueman"))))
 | 
			
		||||
(define-configuration/no-serialization home-blueman-applet-configuration
 | 
			
		||||
  (blueman
 | 
			
		||||
   (file-like (spec->pkg+out "blueman"))
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define home-blueman-applet-shepherd-service
 | 
			
		||||
(define %home-blueman-applet-shepherd
 | 
			
		||||
  (match-record-lambda <home-blueman-applet-configuration>
 | 
			
		||||
      (blueman)
 | 
			
		||||
    (list (shepherd-service
 | 
			
		||||
@ -100,7 +98,7 @@
 | 
			
		||||
     (list (service-extension home-profile-service-type
 | 
			
		||||
                              (compose list home-blueman-applet-configuration-blueman))
 | 
			
		||||
           (service-extension home-shepherd-service-type
 | 
			
		||||
                              home-blueman-applet-shepherd-service)))
 | 
			
		||||
                              %home-blueman-applet-shepherd)))
 | 
			
		||||
    (default-value (home-blueman-applet-configuration))
 | 
			
		||||
    (description "Run blueman applet, a tray applet for managing bluetooth.")))
 | 
			
		||||
 | 
			
		||||
@ -109,38 +107,32 @@
 | 
			
		||||
;;; Fcitx5
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-fcitx5-configuration>
 | 
			
		||||
  home-fcitx5-configuration
 | 
			
		||||
  make-home-fcitx5-configuration
 | 
			
		||||
  home-fcitx5-configuration?
 | 
			
		||||
  this-home-fcitx5-configuration
 | 
			
		||||
  (fcitx5                home-fcitx5-configuration-fcitx5
 | 
			
		||||
                         (default (spec->pkg   "fcitx5")))
 | 
			
		||||
  (utilities             home-fcitx5-configuration-utilities
 | 
			
		||||
                         (default (specs->pkgs "fcitx5-configtool")))
 | 
			
		||||
  (themes                home-fcitx5-configuration-themes
 | 
			
		||||
                         (default '()))
 | 
			
		||||
  (input-method-editors  home-fcitx5-configuration-input-method-editors
 | 
			
		||||
                         (default '()))
 | 
			
		||||
  (gtk-im-module?        home-fcitx5-configuration-gtk-im-module?
 | 
			
		||||
                         (default #f))
 | 
			
		||||
  (qt-im-module?         home-fcitx5-configuration-qt-im-module?
 | 
			
		||||
                         (default #f))
 | 
			
		||||
  (xim?                  home-fcitx5-configuration-xim?
 | 
			
		||||
                         (default #t))
 | 
			
		||||
  ;; Extensions
 | 
			
		||||
  (environment-variables home-fcitx5-configuration-environment-variables
 | 
			
		||||
                         (default (%home-fcitx5-environment-variables
 | 
			
		||||
                                   this-home-fcitx5-configuration))
 | 
			
		||||
                         (thunked))
 | 
			
		||||
  (profile               home-fcitx5-configuration-profile
 | 
			
		||||
                         (default (%home-fcitx5-profile
 | 
			
		||||
                                   this-home-fcitx5-configuration))
 | 
			
		||||
                         (thunked))
 | 
			
		||||
  (shepherd              home-fcitx5-configuration-shepherd
 | 
			
		||||
                         (default (%home-fcitx5-shepherd
 | 
			
		||||
                                   this-home-fcitx5-configuration))
 | 
			
		||||
                         (thunked)))
 | 
			
		||||
(define list-of-file-likes?
 | 
			
		||||
  (list-of file-like?))
 | 
			
		||||
(define-maybe file-like)
 | 
			
		||||
 | 
			
		||||
(define-configuration/no-serialization home-fcitx5-configuration
 | 
			
		||||
  (fcitx5
 | 
			
		||||
   (file-like (spec->pkg   "fcitx5"))
 | 
			
		||||
   "")
 | 
			
		||||
  (utilities
 | 
			
		||||
   (list-of-file-likes (specs->pkgs "fcitx5-configtool"))
 | 
			
		||||
   "")
 | 
			
		||||
  (themes
 | 
			
		||||
   (list-of-file-likes '())
 | 
			
		||||
   "")
 | 
			
		||||
  (input-method-editors
 | 
			
		||||
   (list-of-file-likes '())
 | 
			
		||||
   "")
 | 
			
		||||
  (gtk-im-module?
 | 
			
		||||
   (boolean #f)
 | 
			
		||||
   "")
 | 
			
		||||
  (qt-im-module?
 | 
			
		||||
   (boolean #f)
 | 
			
		||||
   "")
 | 
			
		||||
  (xim?
 | 
			
		||||
   (boolean #t)
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define %home-fcitx5-environment-variables
 | 
			
		||||
  (match-record-lambda <home-fcitx5-configuration>
 | 
			
		||||
@ -186,11 +178,11 @@
 | 
			
		||||
    (name 'fcitx5)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-environment-variables-service-type
 | 
			
		||||
                              home-fcitx5-configuration-environment-variables)
 | 
			
		||||
                              %home-fcitx5-environment-variables)
 | 
			
		||||
           (service-extension home-profile-service-type
 | 
			
		||||
                              home-fcitx5-configuration-profile)
 | 
			
		||||
                              %home-fcitx5-profile)
 | 
			
		||||
           (service-extension home-shepherd-service-type
 | 
			
		||||
                              home-fcitx5-configuration-shepherd)))
 | 
			
		||||
                              %home-fcitx5-shepherd)))
 | 
			
		||||
    (default-value (home-fcitx5-configuration))
 | 
			
		||||
    (description "Run fcitx5, an input method framework.")))
 | 
			
		||||
 | 
			
		||||
@ -199,32 +191,21 @@
 | 
			
		||||
;;; mako
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define %rosenthal-example-mako-config
 | 
			
		||||
  (local-file "../examples/mako.conf"))
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-mako-configuration>
 | 
			
		||||
  home-mako-configuration
 | 
			
		||||
  make-home-mako-configuration
 | 
			
		||||
  home-mako-configuration?
 | 
			
		||||
  this-home-mako-configuration
 | 
			
		||||
  (mako       home-mako-configuration-mako
 | 
			
		||||
              (default (spec->pkg "mako")))
 | 
			
		||||
  (config     home-mako-configuration-config
 | 
			
		||||
              (default %rosenthal-example-mako-config))
 | 
			
		||||
  ;; Extensions.
 | 
			
		||||
  (xdg-config home-mako-configuration-xdg-config
 | 
			
		||||
              (default (%home-mako-xdg-config
 | 
			
		||||
                        this-home-mako-configuration))
 | 
			
		||||
              (thunked))
 | 
			
		||||
  (shepherd   home-mako-configuration-shepherd
 | 
			
		||||
              (default (%home-mako-shepherd
 | 
			
		||||
                        this-home-mako-configuration))
 | 
			
		||||
              (thunked)))
 | 
			
		||||
(define-configuration/no-serialization home-mako-configuration
 | 
			
		||||
  (mako
 | 
			
		||||
   (file-like (spec->pkg "mako"))
 | 
			
		||||
   "")
 | 
			
		||||
  (config
 | 
			
		||||
   maybe-file-like
 | 
			
		||||
   "")
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
(define %home-mako-xdg-config
 | 
			
		||||
  (match-record-lambda <home-mako-configuration>
 | 
			
		||||
      (config)
 | 
			
		||||
    `(("mako/config" ,config))))
 | 
			
		||||
    (if (maybe-value-set? config)
 | 
			
		||||
        `(("mako/config" ,config))
 | 
			
		||||
        '())))
 | 
			
		||||
 | 
			
		||||
(define %home-mako-shepherd
 | 
			
		||||
  (match-record-lambda <home-mako-configuration>
 | 
			
		||||
@ -242,9 +223,9 @@
 | 
			
		||||
    (name 'mako)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-xdg-configuration-files-service-type
 | 
			
		||||
                              home-mako-configuration-xdg-config)
 | 
			
		||||
                              %home-mako-xdg-config)
 | 
			
		||||
           (service-extension home-shepherd-service-type
 | 
			
		||||
                              home-mako-configuration-shepherd)))
 | 
			
		||||
                              %home-mako-shepherd)))
 | 
			
		||||
    (default-value (home-mako-configuration))
 | 
			
		||||
    (description "Run mako, a notification daemon.")))
 | 
			
		||||
 | 
			
		||||
@ -253,15 +234,12 @@
 | 
			
		||||
;;; network-manager-applet
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-network-manager-applet-configuration>
 | 
			
		||||
  home-network-manager-applet-configuration
 | 
			
		||||
  make-home-network-manager-applet-configuration
 | 
			
		||||
  home-network-manager-applet-configuration?
 | 
			
		||||
  this-home-network-manager-applet-configuration
 | 
			
		||||
  (network-manager-applet home-network-manager-applet-configuration-network-manager-applet
 | 
			
		||||
                          (default (spec->pkg "network-manager-applet"))))
 | 
			
		||||
(define-configuration/no-serialization home-network-manager-applet-configuration
 | 
			
		||||
  (network-manager-applet
 | 
			
		||||
   (file-like (spec->pkg "network-manager-applet"))
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define home-network-manager-applet-shepherd-service
 | 
			
		||||
(define %home-network-manager-applet-shepherd
 | 
			
		||||
  (match-record-lambda <home-network-manager-applet-configuration>
 | 
			
		||||
      (network-manager-applet)
 | 
			
		||||
    (list (shepherd-service
 | 
			
		||||
@ -279,7 +257,7 @@
 | 
			
		||||
     (list (service-extension home-profile-service-type
 | 
			
		||||
                              (compose list home-network-manager-applet-configuration-network-manager-applet))
 | 
			
		||||
           (service-extension home-shepherd-service-type
 | 
			
		||||
                              home-network-manager-applet-shepherd-service)))
 | 
			
		||||
                              %home-network-manager-applet-shepherd)))
 | 
			
		||||
    (default-value (home-network-manager-applet-configuration))
 | 
			
		||||
    (description "Run nm-applet, a tray applet for managing networks.")))
 | 
			
		||||
 | 
			
		||||
@ -288,40 +266,24 @@
 | 
			
		||||
;;; niri
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define %rosenthal-example-niri-config
 | 
			
		||||
  (computed-substitution-with-inputs "niri.kdl"
 | 
			
		||||
    (local-file "../examples/niri.kdl")
 | 
			
		||||
    (cons xwayland-satellite
 | 
			
		||||
          (specs->pkgs "alacritty"
 | 
			
		||||
                       "guix-backgrounds"
 | 
			
		||||
                       "light"
 | 
			
		||||
                       "rofi-wayland"
 | 
			
		||||
                       "wireplumber"))))
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-niri-configuration>
 | 
			
		||||
  home-niri-configuration
 | 
			
		||||
  make-home-niri-configuration
 | 
			
		||||
  home-niri-configuration?
 | 
			
		||||
  this-home-niri-configuration
 | 
			
		||||
  (config     home-niri-configuration-config
 | 
			
		||||
              (default %rosenthal-example-niri-config))
 | 
			
		||||
  ;; Extension.
 | 
			
		||||
  (xdg-config home-niri-configuration-xdg-config
 | 
			
		||||
              (default (%home-niri-xdg-config
 | 
			
		||||
                        this-home-niri-configuration))
 | 
			
		||||
              (thunked)))
 | 
			
		||||
(define-configuration/no-serialization home-niri-configuration
 | 
			
		||||
  (config
 | 
			
		||||
   maybe-file-like
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define %home-niri-xdg-config
 | 
			
		||||
  (match-record-lambda <home-niri-configuration>
 | 
			
		||||
      (config)
 | 
			
		||||
    `(("niri/config.kdl" ,config))))
 | 
			
		||||
    (if (maybe-value-set? config)
 | 
			
		||||
        `(("niri/config.kdl" ,config))
 | 
			
		||||
        '())))
 | 
			
		||||
 | 
			
		||||
(define home-niri-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
    (name 'niri)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-xdg-configuration-files-service-type
 | 
			
		||||
                              home-niri-configuration-xdg-config)))
 | 
			
		||||
                              %home-niri-xdg-config)))
 | 
			
		||||
    (default-value (home-niri-configuration))
 | 
			
		||||
    (description
 | 
			
		||||
     "Set up configuration file for niri, a scrollable-tiling Wayland
 | 
			
		||||
@ -332,38 +294,24 @@ compositor.")))
 | 
			
		||||
;;; rofi
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define %rosenthal-example-rofi-config
 | 
			
		||||
  (mixed-text-file "rofi.rasi" "\
 | 
			
		||||
configuration {
 | 
			
		||||
    icon-theme: \"Qogir\";
 | 
			
		||||
}
 | 
			
		||||
@theme \"" (spec->pkg "rofi-wayland") "/share/rofi/themes/fullscreen-preview.rasi\"\n"))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-rofi-configuration>
 | 
			
		||||
  home-rofi-configuration
 | 
			
		||||
  make-home-rofi-configuration
 | 
			
		||||
  home-rofi-configuration?
 | 
			
		||||
  this-home-rofi-configuration
 | 
			
		||||
  (config     home-rofi-configuration-config
 | 
			
		||||
              (default %rosenthal-example-rofi-config))
 | 
			
		||||
  ;; Extension.
 | 
			
		||||
  (xdg-config home-rofi-configuration-xdg-config
 | 
			
		||||
              (default (%home-rofi-xdg-config
 | 
			
		||||
                        this-home-rofi-configuration))
 | 
			
		||||
              (thunked)))
 | 
			
		||||
(define-configuration/no-serialization home-rofi-configuration
 | 
			
		||||
  (config
 | 
			
		||||
   maybe-file-like
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define %home-rofi-xdg-config
 | 
			
		||||
  (match-record-lambda <home-rofi-configuration>
 | 
			
		||||
      (config)
 | 
			
		||||
    `(("rofi/config.rasi" ,config))))
 | 
			
		||||
    (if (maybe-value-set? config)
 | 
			
		||||
        `(("rofi/config.rasi" ,config))
 | 
			
		||||
        '())))
 | 
			
		||||
 | 
			
		||||
(define home-rofi-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
    (name 'rofi)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-xdg-configuration-files-service-type
 | 
			
		||||
                              home-rofi-configuration-xdg-config)))
 | 
			
		||||
                              %home-rofi-xdg-config)))
 | 
			
		||||
    (default-value (home-rofi-configuration))
 | 
			
		||||
    (description
 | 
			
		||||
     "Set up configuration file for rofi, an application launcher.")))
 | 
			
		||||
@ -373,20 +321,13 @@ configuration {
 | 
			
		||||
;;; swaybg
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-swaybg-configuration>
 | 
			
		||||
  home-swaybg-configuration
 | 
			
		||||
  make-home-swaybg-configuration
 | 
			
		||||
  home-swaybg-configuration?
 | 
			
		||||
  this-home-swaybg-configuration
 | 
			
		||||
  (swaybg     home-swaybg-configuration-swaybg
 | 
			
		||||
              (default (spec->pkg "swaybg")))
 | 
			
		||||
  (background home-swaybg-configuration-background
 | 
			
		||||
              (default (local-file "../examples/wallpaper.jpg")))
 | 
			
		||||
  ;; Extensions.
 | 
			
		||||
  (shepherd   home-swaybg-configuration-shepherd
 | 
			
		||||
              (default (%home-swaybg-shepherd
 | 
			
		||||
                        this-home-swaybg-configuration))
 | 
			
		||||
              (thunked)))
 | 
			
		||||
(define-configuration/no-serialization home-swaybg-configuration
 | 
			
		||||
  (swaybg
 | 
			
		||||
   (file-like (spec->pkg "swaybg"))
 | 
			
		||||
   "")
 | 
			
		||||
  (background
 | 
			
		||||
   (file-like (local-file "../examples/wallpaper.jpg"))
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define %home-swaybg-shepherd
 | 
			
		||||
  (match-record-lambda <home-swaybg-configuration>
 | 
			
		||||
@ -405,7 +346,7 @@ configuration {
 | 
			
		||||
    (name 'swaybg)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-shepherd-service-type
 | 
			
		||||
                              home-swaybg-configuration-shepherd)))
 | 
			
		||||
                              %home-swaybg-shepherd)))
 | 
			
		||||
    (default-value (home-swaybg-configuration))
 | 
			
		||||
    (description
 | 
			
		||||
     "Run swaybg, a screen wallpaper utility for Wayland compositors.")))
 | 
			
		||||
@ -415,38 +356,22 @@ configuration {
 | 
			
		||||
;;; theme
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-theme-configuration>
 | 
			
		||||
  home-theme-configuration
 | 
			
		||||
  make-home-theme-configuration
 | 
			
		||||
  home-theme-configuration?
 | 
			
		||||
  this-home-theme-configuration
 | 
			
		||||
  (packages     home-theme-configuration-packages
 | 
			
		||||
                (default '()))
 | 
			
		||||
  (icon-theme   home-theme-configuration-icon-theme
 | 
			
		||||
                (default "Adwaita"))
 | 
			
		||||
  (cursor-theme home-theme-configuration-cursor-theme
 | 
			
		||||
                (default "Adwaita"))
 | 
			
		||||
  (cursor-size  home-theme-configuration-cursor-size
 | 
			
		||||
                (default 24))
 | 
			
		||||
  (key-theme    home-theme-configuration-key-theme
 | 
			
		||||
                (default "Default"))
 | 
			
		||||
  ;; Extensions.
 | 
			
		||||
  (environment-variables home-theme-configuration-environment-variables
 | 
			
		||||
                         (default (%home-theme-environment-variables
 | 
			
		||||
                                   this-home-theme-configuration))
 | 
			
		||||
                         (thunked))
 | 
			
		||||
  (profile               home-theme-configuration-profile
 | 
			
		||||
                         (default (%home-theme-profile
 | 
			
		||||
                                   this-home-theme-configuration))
 | 
			
		||||
                         (thunked))
 | 
			
		||||
  (files                 home-theme-configuration-files
 | 
			
		||||
                         (default (%home-theme-files
 | 
			
		||||
                                   this-home-theme-configuration))
 | 
			
		||||
                         (thunked))
 | 
			
		||||
  (xdg-config            home-theme-configuration-xdg-config
 | 
			
		||||
                         (default (%home-theme-xdg-config
 | 
			
		||||
                                   this-home-theme-configuration))
 | 
			
		||||
                         (thunked)))
 | 
			
		||||
(define-configuration/no-serialization home-theme-configuration
 | 
			
		||||
  (packages
 | 
			
		||||
   (list-of-file-likes '())
 | 
			
		||||
   "")
 | 
			
		||||
  (icon-theme
 | 
			
		||||
   (string "Adwaita")
 | 
			
		||||
   "")
 | 
			
		||||
  (cursor-theme
 | 
			
		||||
   (string "Adwaita")
 | 
			
		||||
   "")
 | 
			
		||||
  (cursor-size
 | 
			
		||||
   (number 24)
 | 
			
		||||
   "")
 | 
			
		||||
  (key-theme
 | 
			
		||||
   (string "Default")
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define (%home-theme-environment-variables _)
 | 
			
		||||
  '(("QT_QPA_PLATFORMTHEME" . "gtk3")
 | 
			
		||||
@ -465,7 +390,7 @@ configuration {
 | 
			
		||||
      (icon-theme)
 | 
			
		||||
    `((".icons/default/index.theme"
 | 
			
		||||
       ,(plain-file "index.theme"
 | 
			
		||||
          (format #f "~
 | 
			
		||||
          (format #f "\
 | 
			
		||||
[icon theme]
 | 
			
		||||
Inherits = ~a~%"
 | 
			
		||||
                  icon-theme))))))
 | 
			
		||||
@ -475,7 +400,7 @@ Inherits = ~a~%"
 | 
			
		||||
      (icon-theme cursor-theme cursor-size key-theme)
 | 
			
		||||
    `(("gtk-3.0/settings.ini"
 | 
			
		||||
       ,(plain-file "settings.ini"
 | 
			
		||||
          (format #f "~
 | 
			
		||||
          (format #f "\
 | 
			
		||||
[Settings]
 | 
			
		||||
gtk-theme-name = Adwaita
 | 
			
		||||
gtk-icon-theme-name = ~a
 | 
			
		||||
@ -490,13 +415,13 @@ gtk-key-theme-name = ~a~%"
 | 
			
		||||
    (name 'theme)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-environment-variables-service-type
 | 
			
		||||
                              home-theme-configuration-environment-variables)
 | 
			
		||||
                              %home-theme-environment-variables)
 | 
			
		||||
           (service-extension home-profile-service-type
 | 
			
		||||
                              home-theme-configuration-profile)
 | 
			
		||||
                              %home-theme-profile)
 | 
			
		||||
           (service-extension home-files-service-type
 | 
			
		||||
                              home-theme-configuration-files)
 | 
			
		||||
                              %home-theme-files)
 | 
			
		||||
           (service-extension home-xdg-configuration-files-service-type
 | 
			
		||||
                              home-theme-configuration-xdg-config)))
 | 
			
		||||
                              %home-theme-xdg-config)))
 | 
			
		||||
    (default-value (home-theme-configuration))
 | 
			
		||||
    (description "Set up desktop themes.")))
 | 
			
		||||
 | 
			
		||||
@ -505,40 +430,26 @@ gtk-key-theme-name = ~a~%"
 | 
			
		||||
;;; waybar
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define %rosenthal-example-waybar-config
 | 
			
		||||
  (computed-substitution-with-inputs "config.jsonc"
 | 
			
		||||
    (local-file "../examples/waybar/config.jsonc")
 | 
			
		||||
    (specs->pkgs "light" "pavucontrol" "wireplumber")))
 | 
			
		||||
 | 
			
		||||
(define %rosenthal-example-waybar-style
 | 
			
		||||
  (local-file "../examples/waybar/style.css"))
 | 
			
		||||
 | 
			
		||||
(define-record-type* <home-waybar-configuration>
 | 
			
		||||
  home-waybar-configuration
 | 
			
		||||
  make-home-waybar-configuration
 | 
			
		||||
  home-waybar-configuration?
 | 
			
		||||
  this-home-waybar-configuration
 | 
			
		||||
  (waybar     home-waybar-configuration-waybar
 | 
			
		||||
              (default (spec->pkg "waybar")))
 | 
			
		||||
  (config     home-waybar-configuration-config
 | 
			
		||||
              (default %rosenthal-example-waybar-config))
 | 
			
		||||
  (style      home-waybar-configuration-style
 | 
			
		||||
              (default %rosenthal-example-waybar-style))
 | 
			
		||||
  ;; Extensions.
 | 
			
		||||
  (xdg-config home-waybar-configuration-xdg-config
 | 
			
		||||
              (default (%home-waybar-xdg-config
 | 
			
		||||
                        this-home-waybar-configuration))
 | 
			
		||||
              (thunked))
 | 
			
		||||
  (shepherd   home-waybar-configuration-shepherd
 | 
			
		||||
              (default (%home-waybar-shepherd
 | 
			
		||||
                        this-home-waybar-configuration))
 | 
			
		||||
              (thunked)))
 | 
			
		||||
(define-configuration/no-serialization home-waybar-configuration
 | 
			
		||||
  (waybar
 | 
			
		||||
   (file-like (spec->pkg "waybar"))
 | 
			
		||||
   "")
 | 
			
		||||
  (config
 | 
			
		||||
   maybe-file-like
 | 
			
		||||
   "")
 | 
			
		||||
  (style
 | 
			
		||||
   maybe-file-like
 | 
			
		||||
   ""))
 | 
			
		||||
 | 
			
		||||
(define %home-waybar-xdg-config
 | 
			
		||||
  (match-record-lambda <home-waybar-configuration>
 | 
			
		||||
      (config style)
 | 
			
		||||
    `(("waybar/config.jsonc" ,config)
 | 
			
		||||
      ("waybar/style.css" ,style))))
 | 
			
		||||
    `(,@(if (maybe-value-set? config)
 | 
			
		||||
            `(("waybar/config.jsonc" ,config))
 | 
			
		||||
            '())
 | 
			
		||||
      ,@(if (maybe-value-set? style)
 | 
			
		||||
            `(("waybar/style.css" ,style))
 | 
			
		||||
            '()))))
 | 
			
		||||
 | 
			
		||||
(define %home-waybar-shepherd
 | 
			
		||||
  (match-record-lambda <home-waybar-configuration>
 | 
			
		||||
@ -556,9 +467,9 @@ gtk-key-theme-name = ~a~%"
 | 
			
		||||
    (name 'waybar)
 | 
			
		||||
    (extensions
 | 
			
		||||
     (list (service-extension home-xdg-configuration-files-service-type
 | 
			
		||||
                              home-waybar-configuration-xdg-config)
 | 
			
		||||
                              %home-waybar-xdg-config)
 | 
			
		||||
           (service-extension home-shepherd-service-type
 | 
			
		||||
                              home-waybar-configuration-shepherd)))
 | 
			
		||||
                              %home-waybar-shepherd)))
 | 
			
		||||
    (default-value (home-waybar-configuration))
 | 
			
		||||
    (description "Run waybar, a status bar for Wayland compositors.")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user