From 8713e5c421a4ea039f88ea7b123482cf0561f3b7 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sat, 2 Apr 2022 00:29:25 -0700 Subject: [PATCH] Add Xmodmap config --- oni/home/data/config.scm | 12 ++++++++-- oni/home/services/xmodmap.scm | 45 +++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 oni/home/services/xmodmap.scm diff --git a/oni/home/data/config.scm b/oni/home/data/config.scm index 9757760..bb43d7b 100644 --- a/oni/home/data/config.scm +++ b/oni/home/data/config.scm @@ -7,7 +7,8 @@ #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (guix gexp) - #:use-module (oni home services xdisorg)) + #:use-module (oni home services xdisorg) + #:use-module (oni home services xmodmap)) (home-environment (packages (list (specification->package+output "glibc-locales"))) @@ -44,4 +45,11 @@ ((text-color . "#bfbfbf"))) (element-text ((background-color . "#222424") - (text-color . "#bfbfbf")))))))))) + (text-color . "#bfbfbf"))))))) + + (service home-xmodmap-service-type + (home-xmodmap-configuration + (pointer '(3 2 1)) + (extra '("remove Mod5 = ISO_Level3_Shift" + "keycode 108 = Alt_L" + "add Mod1 = Alt_L"))))))) diff --git a/oni/home/services/xmodmap.scm b/oni/home/services/xmodmap.scm new file mode 100644 index 0000000..53df3e5 --- /dev/null +++ b/oni/home/services/xmodmap.scm @@ -0,0 +1,45 @@ +(define-module (oni home services xmodmap) + #:use-module (gnu services configuration) + #:use-module (gnu packages xorg) + #:use-module (gnu home services) + #:use-module (gnu home services utils) + #:use-module (guix packages) + #:use-module (guix gexp) + + #:export (home-xmodmap-service-type + home-xmodmap-configuration)) + +(define-configuration/no-serialization home-xmodmap-configuration + (package + (package xmodmap) + "Package to use for setting Xmodmap") + (pointer + (list '()) + "List of numbers indicating the order of numbers") + (extra + (text-config '()) + "Any other configuration settings.")) + +(define (serialize-xmodmap-config config) + (let ((pointer (home-xmodmap-configuration-pointer config))) + (string-append + (if pointer + (string-append "pointer = " (string-join (map number->string pointer) " ") "\n\n") + "") + (string-join (home-xmodmap-configuration-extra config) "\n" 'suffix)))) + +(define (xmodmap-home-files config) + `(("Xmodmap" ,(mixed-text-file + "Xmodmap" + (serialize-xmodmap-config config))))) + +(define home-xmodmap-service-type + (service-type + (name 'home-xmodmap) + (extensions + (list (service-extension + home-files-service-type + xmodmap-home-files))) + (compose identity) + (default-value (home-xmodmap-configuration)) + (description "Install and configure Xmodmap.")))