aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2024-11-22 23:21:15 -0800
committerGravatar Tom Willemse2024-11-22 23:28:35 -0800
commit25d95f3cdd58b20ccdc4029a499dcb4b24472c86 (patch)
tree7a7bbcf30ef9ad43cd3b121e25d25de8828483dd
parent47737fd93cd6a0e39617cce05128217f23f65670 (diff)
downloadnew-dotfiles-25d95f3cdd58b20ccdc4029a499dcb4b24472c86.tar.gz
new-dotfiles-25d95f3cdd58b20ccdc4029a499dcb4b24472c86.zip
Add wakatime configuration
-rw-r--r--oni/home/config/rincewind.scm9
-rw-r--r--oni/home/services/emacs.scm85
2 files changed, 92 insertions, 2 deletions
diff --git a/oni/home/config/rincewind.scm b/oni/home/config/rincewind.scm
index 0d85dad..3af65ba 100644
--- a/oni/home/config/rincewind.scm
+++ b/oni/home/config/rincewind.scm
@@ -97,7 +97,9 @@
home-emacs-pinentry-service-type
home-emacs-vterm-service-type
home-emacs-vterm-configuration
- home-emacs-org-modern-service-type))
+ home-emacs-org-modern-service-type
+ home-wakatime-service-type
+ home-wakatime-configuration))
#:use-module ((oni home services environment)
#:select (home-environment-service))
#:use-module ((oni home services flameshot)
@@ -416,6 +418,11 @@
(home-emacs-vterm-configuration
(buffer-name-string "*vterm* %s")))
(service home-emacs-org-modern-service-type)
+ (service home-wakatime-service-type
+ (home-wakatime-configuration
+ (api-url "https://waka.ryuslash.org/api")
+ (exclude '("COMMIT_EDITMSG$"
+ "TAG_EDITMSG$"))))
(service home-flameshot-service-type)
diff --git a/oni/home/services/emacs.scm b/oni/home/services/emacs.scm
index 1752b40..5cf9a17 100644
--- a/oni/home/services/emacs.scm
+++ b/oni/home/services/emacs.scm
@@ -39,6 +39,12 @@
#:select (emacs-yasnippet-capf
emacs-golden-ratio
emacs-ace-link-notmuch))
+ #:use-module ((rosenthal packages binaries)
+ #:select (wakatime-cli-bin))
+ #:use-module ((rosenthal packages emacs-xyz)
+ #:select (emacs-wakatime-mode))
+ #:use-module ((srfi srfi-1)
+ #:select (every))
#:export (home-emacs-service-type
home-emacs-configuration
@@ -71,10 +77,20 @@
home-emacs-vterm-configuration
home-emacs-org-modern-service-type
- home-emacs-org-modern-configuration))
+ home-emacs-org-modern-configuration
+
+ home-wakatime-service-type
+ home-wakatime-configuration))
(define-maybe string)
+(define (list-of-strings? obj)
+ (and (list? obj)
+ (every string? obj)))
+
+(define (serialize-list-of-strings field value)
+ (string-append " " (string-join value "\n ")))
+
;;; Emacs
(define-configuration/no-serialization home-emacs-extension
@@ -581,3 +597,70 @@
(compose identity)
(default-value (home-emacs-org-modern-configuration))
(description "Install and configure emacs-org-modern.")))
+
+;;; Wakatime
+
+(define-configuration/no-serialization home-wakatime-configuration
+ (package
+ (package wakatime-cli-bin)
+ "Package to use for the wakatime-cli program")
+ (emacs-package
+ (package emacs-wakatime-mode)
+ "Package to use for setting emacs-wakatime-mode")
+ (api-url
+ maybe-string
+ "URL where the API lives")
+ ;; (api-key
+ ;; maybe-string
+ ;; "API key for connecting to wakatime")
+ (debug
+ (boolean #f)
+ "Run in debug mode?")
+ (exclude
+ (list-of-strings '())
+ "Filename patterns to exclude"))
+
+(define (add-wakatime-emacs-configuration config)
+ (home-emacs-extension
+ (configurations
+ (append
+ (list (mixed-text-file "wakatime-config"
+ ";;;;; wakatime-config starts here.\n"
+ ;; (if (maybe-value-set? (home-wakatime-configuration-api-key config))
+ ;; (format #f "(setq wakatime-api-key ~s)~%" (home-wakatime-configuration-api-key config))
+ ;; "")
+ "(setq wakatime-cli-path \"" (home-wakatime-configuration-package config) "/bin/wakatime-cli\")\n"
+ "(global-wakatime-mode)\n"
+ ";;;;; wakatime-config ends here.\n"))))))
+
+(define (add-wakatime-configuration-file config)
+ `((".wakatime.cfg"
+ ,(mixed-text-file
+ "wakatime.cfg"
+ "[settings]\n"
+ "api_url = " (home-wakatime-configuration-api-url config) "\n"
+ "api_key_vault_cmd = secret-tool lookup service wakatime host " (home-wakatime-configuration-api-url config) "\n"
+ "debug = " (if (home-wakatime-configuration-debug config) "true" "false") "\n"
+ "exclude =\n"
+ (serialize-list-of-strings 'exclude (home-wakatime-configuration-exclude config))))))
+
+(define (add-wakatime-packages config)
+ (list (home-wakatime-configuration-package config)
+ (home-wakatime-configuration-emacs-package config)))
+
+(define home-wakatime-service-type
+ (service-type
+ (name 'home-wakatime)
+ (extensions
+ (list (service-extension
+ home-emacs-service-type
+ add-wakatime-emacs-configuration)
+ (service-extension
+ home-profile-service-type
+ add-wakatime-packages)
+ (service-extension
+ home-files-service-type
+ add-wakatime-configuration-file)))
+ (compose identity)
+ (default-value (home-wakatime-configuration))
+ (description "Install and configure wakatime.")))