Package: guix-patches;
Reported by: Andrew Tropin <andrew <at> trop.in>
Date: Thu, 26 Aug 2021 07:00:02 UTC
Severity: normal
Tags: patch
Done: Oleg Pykhalov <go.wigust <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Andrew Tropin <andrew <at> trop.in> To: Oleg Pykhalov <go.wigust <at> gmail.com> Cc: 50208 <at> debbugs.gnu.org Subject: [bug#50208] [PATCH v2 0/5] Fixes and improvements for home-services Date: Mon, 30 Aug 2021 13:28:26 +0300
[Message part 1 (text/plain, inline)]
Changes since v1: Added missing import to xdg via a separate commit. Added trailing dots to commit messages. Andrew Tropin (5): home-services: Add utils module. home-services: symlink-manager: Properly handle 1st generation case. home-services: activation: Add support for multiline env vars. gnu: home: Add doc comment about the module. home-services: xdg: Add missing import. gnu/home-services.scm | 4 +- gnu/home-services/shells.scm | 1 + gnu/home-services/symlink-manager.scm | 2 +- gnu/home-services/utils.scm | 77 +++++++++++++++++++++++++++ gnu/home-services/xdg.scm | 1 + gnu/home.scm | 8 +++ 6 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 gnu/home-services/utils.scm -- 2.33.0
[v2-0001-home-services-Add-utils-module.patch (text/x-patch, inline)]
From 93ae498296b37e5b21b6a824d090b0898b870a39 Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew <at> trop.in> Date: Mon, 30 Aug 2021 12:17:11 +0300 Subject: [PATCH v2 1/5] home-services: Add utils module. * gnu/home-services/utils.scm (maybe-object->string object->snake-case-string) (object->snake-case-string): New variables. --- gnu/home-services/shells.scm | 1 + gnu/home-services/utils.scm | 77 ++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 gnu/home-services/utils.scm diff --git a/gnu/home-services/shells.scm b/gnu/home-services/shells.scm index b8065d28d2..ecb02098f7 100644 --- a/gnu/home-services/shells.scm +++ b/gnu/home-services/shells.scm @@ -20,6 +20,7 @@ (define-module (gnu home-services shells) #:use-module (gnu services configuration) #:use-module (gnu home-services configuration) + #:use-module (gnu home-services utils) #:use-module (gnu home-services) #:use-module (gnu packages shells) #:use-module (gnu packages bash) diff --git a/gnu/home-services/utils.scm b/gnu/home-services/utils.scm new file mode 100644 index 0000000000..3e490a0515 --- /dev/null +++ b/gnu/home-services/utils.scm @@ -0,0 +1,77 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Xinglu Chen <public <at> yoctocell.xyz> +;;; Copyright © 2021 Andrew Tropin <andrew <at> trop.in> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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. +;;; +;;; GNU Guix 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 GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu home-services utils) + #:use-module (ice-9 string-fun) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + + #:export (maybe-object->string + object->snake-case-string + object->camel-case-string)) + +(define (maybe-object->string object) + "Like @code{object->string} but don't do anyting if OBJECT already is +a string." + (if (string? object) + object + (object->string object))) + +;; Snake case: <https://en.wikipedia.org/wiki/Snake_case> +(define* (object->snake-case-string object #:optional (style 'lower)) + "Convert the object OBJECT to the equivalent string in ``snake +case''. STYLE can be three `@code{lower}', `@code{upper}', or +`@code{capitalize}', defaults to `@code{lower}'. + +@example +(object->snake-case-string 'variable-name 'upper) +@result{} \"VARIABLE_NAME\" @end example" + (if (not (member style '(lower upper capitalize))) + (error 'invalid-style (format #f "~a is not a valid style" style)) + (let ((stringified (maybe-object->string object))) + (string-replace-substring + (cond + ((equal? style 'lower) stringified) + ((equal? style 'upper) (string-upcase stringified)) + (else (string-capitalize stringified))) + "-" "_")))) + +(define* (object->camel-case-string object #:optional (style 'lower)) + "Convert the object OBJECT to the equivalent string in ``camel case''. +STYLE can be three `@code{lower}', `@code{upper}', defaults to +`@code{lower}'. + +@example +(object->camel-case-string 'variable-name 'upper) +@result{} \"VariableName\" +@end example" + (if (not (member style '(lower upper))) + (error 'invalid-style (format #f "~a is not a valid style" style)) + (let ((stringified (maybe-object->string object))) + (cond + ((eq? style 'upper) + (string-concatenate + (map string-capitalize + (string-split stringified (cut eqv? <> #\-))))) + ((eq? style 'lower) + (let ((splitted-string (string-split stringified (cut eqv? <> #\-)))) + (string-concatenate + (cons (first splitted-string) + (map string-capitalize + (cdr splitted-string)))))))))) -- 2.33.0
[v2-0002-home-services-symlink-manager-Properly-handle-1st.patch (text/x-patch, inline)]
From 710a4983790ecdae7aa53acb5361669b6061e551 Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew <at> trop.in> Date: Mon, 30 Aug 2021 12:23:48 +0300 Subject: [PATCH v2 2/5] home-services: symlink-manager: Properly handle 1st generation case. --- gnu/home-services/symlink-manager.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/home-services/symlink-manager.scm b/gnu/home-services/symlink-manager.scm index dc409d2ae2..11f5d503d4 100644 --- a/gnu/home-services/symlink-manager.scm +++ b/gnu/home-services/symlink-manager.scm @@ -102,7 +102,7 @@ appear only after all nested items already listed." (number->string (current-time)) "-guix-home-legacy-configs-backup")) - (old-tree (if (file-exists? old-home) + (old-tree (if old-home ((simplify-file-tree "") (file-system-tree (string-append old-home "/files/."))) -- 2.33.0
[v2-0003-home-services-activation-Add-support-for-multilin.patch (text/x-patch, inline)]
From 78b9527c368549af63d8fb987d7f9ce3e472d6ae Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew <at> trop.in> Date: Mon, 30 Aug 2021 12:26:19 +0300 Subject: [PATCH v2 3/5] home-services: activation: Add support for multiline env vars. --- gnu/home-services.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/home-services.scm b/gnu/home-services.scm index 16b9736d64..2a773496f0 100644 --- a/gnu/home-services.scm +++ b/gnu/home-services.scm @@ -324,7 +324,7 @@ extended with one gexp."))) #f)))) (if (file-exists? (he-init-file new-home)) (let* ((port ((@ (ice-9 popen) open-input-pipe) - (format #f "source ~a && env" + (format #f "source ~a && env -0" (he-init-file new-home)))) (result ((@ (ice-9 rdelim) read-delimited) "" port)) (vars (map (lambda (x) @@ -333,7 +333,7 @@ extended with one gexp."))) (string-drop x (1+ si))))) ((@ (srfi srfi-1) remove) string-null? - (string-split result #\newline))))) + (string-split result #\nul))))) (close-port port) (map (lambda (x) (setenv (car x) (cdr x))) vars) -- 2.33.0
[v2-0004-gnu-home-Add-doc-comment-about-the-module.patch (text/x-patch, inline)]
From e2257d5b134a52b67a2e4b3b1e95b73eef975401 Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew <at> trop.in> Date: Mon, 30 Aug 2021 12:07:48 +0300 Subject: [PATCH v2 4/5] gnu: home: Add doc comment about the module. --- gnu/home.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gnu/home.scm b/gnu/home.scm index a53d27163d..f4c9359e25 100644 --- a/gnu/home.scm +++ b/gnu/home.scm @@ -38,6 +38,14 @@ home-environment-with-provenance)) +;;; Comment: +;;; +;;; This module provides a <home-environment> record for managing +;;; per-user packages and configuration files in the similar way as +;;; <operating-system> do for system packages and configuration files. +;;; +;;; Code: + (define-record-type* <home-environment> home-environment make-home-environment home-environment? -- 2.33.0
[v2-0005-home-services-xdg-Add-missing-import.patch (text/x-patch, inline)]
From 2c7a295468aecd4f40e98ac0651800f561d89a71 Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew <at> trop.in> Date: Mon, 30 Aug 2021 13:22:16 +0300 Subject: [PATCH v2 5/5] home-services: xdg: Add missing import. --- gnu/home-services/xdg.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/home-services/xdg.scm b/gnu/home-services/xdg.scm index 6e4a2542a3..535c8667a1 100644 --- a/gnu/home-services/xdg.scm +++ b/gnu/home-services/xdg.scm @@ -26,6 +26,7 @@ #:use-module (guix gexp) #:use-module (guix records) #:use-module (guix i18n) + #:use-module (guix diagnostics) #:use-module (ice-9 match) #:use-module (srfi srfi-1) -- 2.33.0
[signature.asc (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.