summaryrefslogtreecommitdiff
path: root/sigils/services
diff options
context:
space:
mode:
Diffstat (limited to 'sigils/services')
-rw-r--r--sigils/services/wayland.scm193
1 files changed, 0 insertions, 193 deletions
diff --git a/sigils/services/wayland.scm b/sigils/services/wayland.scm
deleted file mode 100644
index 3f6609a..0000000
--- a/sigils/services/wayland.scm
+++ /dev/null
@@ -1,193 +0,0 @@
-;;; si sourcehut avait une ipv6 je pourrais leur envoyer des mails
-;;; mais je peux pas donc rde aura pas mes changements
-;;;
-;;; rde --- Reproducible development environment.
-;;;
-;;; Copyright © 2022 Andrew Tropin <andrew@trop.in>
-;;;
-;;; This file is part of rde.
-;;;
-;;; rde is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; rde is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with rde. If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (sigils services wayland)
- #:use-module (gnu home services)
- #:use-module (gnu home services shepherd)
- #:use-module (gnu packages wm)
- #:use-module (gnu services configuration)
- #:use-module (guix packages)
- #:use-module (guix gexp)
- #:use-module (guix diagnostics)
- #:use-module (guix ui)
-
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-43)
- #:use-module (ice-9 match)
-
- #:export (home-kanshi-service-type
- home-kanshi-configuration
- sway-config?))
-
-
-(define sway-config? list?)
-(define (serialize-sway-config val)
- (define (aligner nestness)
- (apply string-append
- (map (const " ") (iota nestness))))
-
- (define (serialize-sway-term term)
- ;; (format #t "finval. ~a\n" term)
- (match term
- (#t "yes")
- (#f "no")
- ((? symbol? e) (symbol->string e))
- ((? number? e) (number->string e))
- ;; TODO: Change it to ((? string? e) (format #f "~s" e))
- ((? string? e) e)
- ((lst ...)
- (raise (formatted-message
- (G_ "Sway term should be a non-list value (string, \
-boolean, number, symbol, or gexp). Provided term is:\n ~a") lst)))
- (e e)))
-
- (define* (serialize-sway-expression
- expr #:optional (nestness 0))
- ;; (format #t "expres. ~a\n" expr)
- (match expr
- ;; subconfig has the same structure as config,
- ;; the only difference: it's not a top-level form
- ;; can be found at the end of expression.
- ;; (term subconfig)
- ((term ((expressions ...) ...))
- ;; (format #t "subtop. ~a . ~a\n" term expressions)
- (append
- (list (serialize-sway-term term) " {\n")
- (serialize-sway-subconfig expressions (1+ nestness))
- `(,(aligner nestness)
- "}\n")))
-
- ;; subexpression:
- ;; (term . rest)
- ((term rest ..1)
- ;; (format #t "inside. ~a . ~a\n" term rest)
- (cons* (serialize-sway-term term) " "
- (serialize-sway-expression rest)))
-
- ;; last element of subexpression
- ((term)
- ;; (format #t "term. ~a\n" term)
- (list (serialize-sway-term term) "\n"))
-
- (e
- (raise (formatted-message
- (G_ "Sway expression should be a list of terms \
-optionally ending with subconfigs, but provided expression is:\n ~a")
- e)))))
-
- (define* (serialize-sway-subconfig
- subconfig #:optional (nestness 0))
- (match subconfig
- ;; config:
- ;; ((expr1) (expr2) (expr3))
- (((expressions ...) ...)
- (append-map
- (lambda (e)
- (append (list (aligner nestness))
- (serialize-sway-expression e nestness)))
- expressions))
- (e
- (raise (formatted-message
- (G_ "Sway (sub)config should be a list of expressions, \
-where each expression is also a list, but provided value is:\n ~a") e))) ))
-
- (serialize-sway-subconfig val))
-
-;;;
-;;; kanshi.
-;;;
-
-(define (serialize-string field-name value) value)
-
-(define-configuration home-kanshi-configuration
- (kanshi
- (file-like kanshi)
- "kanshi package to use.")
- (display
- (string "wayland-1")
- "Wayland display")
- (config
- (sway-config
- `())
- "This field has the same format as sway's config field, but in reality kanshi
-supports only a subset of sway config. To get the complete list of available
-options see @code{man 5 kanshi}.
-
-The example configuration:
-
-@lisp
-()
-@end lisp"))
-
-(define (add-kanshi-packages config)
- (list (home-kanshi-configuration-kanshi config)))
-
-(define (add-kanshi-configuration config)
- `(("kanshi/config"
- ,(apply
- mixed-text-file
- "kanshi-config"
- (serialize-sway-config (home-kanshi-configuration-config config))))))
-
-(define (home-kanshi-shepherd-service config)
- (let ((kanshi (home-kanshi-configuration-kanshi config))
- (display (home-kanshi-configuration-display config)))
- (list
- (shepherd-service
- (provision '(kanshi))
- (requirement '(dbus))
- (respawn-delay 1)
- (start #~(make-forkexec-constructor
- (list #$(file-append kanshi "/bin/kanshi"))
- #:log-file (string-append
- (getenv "XDG_STATE_HOME") "/log"
- "/kanshi.log")
- #:environment-variables
- (cons (string-append "WAYLAND_DISPLAY=" #$display)
- (default-environment-variables))))
- (stop #~(make-kill-destructor))
- (documentation "Run Kanshi")))))
-
-(define (home-kanshi-extensions cfg extensions)
- (home-kanshi-configuration
- (inherit cfg)
- (config
- (append (home-kanshi-configuration-config cfg)
- (append-map identity (reverse extensions))))))
-
-(define home-kanshi-service-type
- (service-type (name 'home-kanshi)
- (extensions
- (list (service-extension
- home-profile-service-type
- add-kanshi-packages)
- (service-extension
- home-shepherd-service-type
- home-kanshi-shepherd-service)
- (service-extension
- home-xdg-configuration-files-service-type
- add-kanshi-configuration)))
- (compose identity)
- (extend home-kanshi-extensions)
- (default-value (home-kanshi-configuration))
- (description "\
-Install and configure kanshi, output profile manager.")))