utils: Add json-file.

* modules/rosenthal/utils/file.scm (json-file): New procedure.
* modules/rosenthal/services/desktop.scm (%rosenthal-skeletons-installer)
[.cache/noctalia/shell-state.json]: Use it.
This commit is contained in:
Hilton Chain 2026-02-25 16:13:42 +08:00
parent c2630512c6
commit f8fb2556c3
No known key found for this signature in database
GPG Key ID: ACC66D09CA528292
2 changed files with 19 additions and 14 deletions

View File

@ -597,20 +597,12 @@ gtk-key-theme-name = ~a~%"
,(local-file "../examples/dot-config/wezterm/wezterm.lua"))
;; Prevent Noctalia shell initial screen.
(".cache/noctalia/shell-state.json"
,(computed-file "noctalia-shell-state.json"
(with-extensions (list guile-json-4)
#~(begin
(use-modules (json))
(call-with-output-file #$output
(lambda (port)
(scm->json
`(("changelogState"
,(json-file "noctalia-shell-state.json"
#~'(("changelogState"
("lastSeenVersion"
. ,(string-append "v" #$(package-version noctalia-shell))))
. #$(string-append "v" (package-version noctalia-shell))))
("telemetry"
("instanceId" . "")))
port
#:pretty #t)))))))
("instanceId" . "")))))
,@%rosenthal-skeletons))

View File

@ -7,12 +7,14 @@
;; Utilities
#:use-module (guix gexp)
;; Guix packages
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:export (computed-substitution-with-inputs
file-content
hidden-desktop-entry
ini-file
json-file
yaml-file))
;; XXX: substitute* doesn't fully support Unicode:
@ -67,6 +69,17 @@ format."
(call-with-output-file #$output
(cut scm->ini #$exp #:port <>))))))
;; https://github.com/aconchillo/guile-json
(define (json-file name exp)
"Return file-like object NAME, serialized from G-expression EXP in JSON
format."
(computed-file name
(with-extensions (list guile-json-4)
#~(begin
(use-modules (srfi srfi-26) (json))
(call-with-output-file #$output
(cut scm->json #$exp <> #:pretty #t))))))
;; https://gitlab.com/yorgath/guile-yamlpp
(define (yaml-file name exp)
"Return file-like object NAME, serialized from G-expression EXP in YAML