bug#52808: Guix home should not assume that all targets are dot files

2022-04-10 Thread Ludovic Courtès
Andrew Tropin  skribis:

> From 629466d23308e135c4a46951e5ea568677c5ec00 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Tue, 29 Mar 2022 11:15:56 +0300
> Subject: [PATCH 1/2] home: shells: Rename zsh related functions.
>
> * gnu/home/services/shells.scm (home-zsh-service-type): Make zsh related
> private functions more consistently named.

[...]

> From a71346b059691a982a7dc0c7f4fd708b49566500 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Tue, 29 Mar 2022 11:56:48 +0300
> Subject: [PATCH 2/2] home: symlink-manager: Handle non-existing directory
>  during cleanup.
>
> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Handle
> non-existing directory during cleanup.

Applied as well.

I hope I didn’t miss anything else.  Otherwise let’s open a new issue!

Thanks,
Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-04-09 Thread Andrew Tropin
On 2022-04-08 20:18, Ludovic Courtès wrote:

> Hi Andrew,
>
> Andrew Tropin  skribis:
>
>> Those patches introduce a breaking change, but the surface and number of
>> people affected should be small if everyone migrated to
>> xdg-configuration-files.  It removes the special handling of dot files
>> in symlink-manager and doesn't add a leading dot automatically.
>>
>> Please, merge them on April 8.
>>
>> From 1b556cda9716eba31a8a6dd9d3c263988de26ccf Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Tue, 29 Mar 2022 11:28:30 +0300
>> Subject: [PATCH 1/2] home: symlink-manager: Remove appending of leading dot.
>>
>> * gnu/home/services.scm (xdg-configuration-files-directory): Add leading dot.
>> * gnu/home/services.scm (xdg-configuration-files-service-type): Change name.
>> * gnu/home/services/shells.scm (add-shell-profile-file,
>> zsh-get-configuration-files, add-zsh-dot-configuration,
>> add-zsh-xdg-configuration, add-bash-configuration): Add leading dots.
>> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Remove
>> leading dot.
>
> [...]
>
>> From 5e1f45fa9ea1aca16843dc85d7d21fd46f3cfcb8 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Tue, 29 Mar 2022 12:47:39 +0300
>> Subject: [PATCH 2/2] home: Add home-xdg-data-files-service-type.
>>
>> * gnu/home/services.scm (home-xdg-data-files-service-type): New variable.
>> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Add a 
>> proper
>> handling for XDG_DATA_HOME value.
>> * gnu/home/services/xdg.scm (home-xdg-mime-applications-service-type): Use
>> home-xdg-data-files service.
>
> Pushed as 20645d8467852990413c1ea9cf81cec82d23defd.
>
> Thanks!
>
> Ludo’.

Hi Ludo,

Thank you very much!

Can you merge other patches from this thread too, please?

-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-04-08 Thread Ludovic Courtès
Hi Andrew,

Andrew Tropin  skribis:

> Those patches introduce a breaking change, but the surface and number of
> people affected should be small if everyone migrated to
> xdg-configuration-files.  It removes the special handling of dot files
> in symlink-manager and doesn't add a leading dot automatically.
>
> Please, merge them on April 8.
>
> From 1b556cda9716eba31a8a6dd9d3c263988de26ccf Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Tue, 29 Mar 2022 11:28:30 +0300
> Subject: [PATCH 1/2] home: symlink-manager: Remove appending of leading dot.
>
> * gnu/home/services.scm (xdg-configuration-files-directory): Add leading dot.
> * gnu/home/services.scm (xdg-configuration-files-service-type): Change name.
> * gnu/home/services/shells.scm (add-shell-profile-file,
> zsh-get-configuration-files, add-zsh-dot-configuration,
> add-zsh-xdg-configuration, add-bash-configuration): Add leading dots.
> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Remove
> leading dot.

[...]

> From 5e1f45fa9ea1aca16843dc85d7d21fd46f3cfcb8 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Tue, 29 Mar 2022 12:47:39 +0300
> Subject: [PATCH 2/2] home: Add home-xdg-data-files-service-type.
>
> * gnu/home/services.scm (home-xdg-data-files-service-type): New variable.
> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Add a proper
> handling for XDG_DATA_HOME value.
> * gnu/home/services/xdg.scm (home-xdg-mime-applications-service-type): Use
> home-xdg-data-files service.

Pushed as 20645d8467852990413c1ea9cf81cec82d23defd.

Thanks!

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-03-30 Thread Ludovic Courtès
Hi Andrew,

Andrew Tropin  skribis:

> Those patches introduce a breaking change, but the surface and number of
> people affected should be small if everyone migrated to
> xdg-configuration-files.  It removes the special handling of dot files
> in symlink-manager and doesn't add a leading dot automatically.

Wonderful.  At first sight the patches LGTM.

> Please, merge them on April 8.

Will do, thank you!

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-03-29 Thread Andrew Tropin
On 2022-03-20 22:00, Ludovic Courtès wrote:

> I wrote:
>
>> I finally got around to committing it as
>> 6da2a5a5655668f42ec5b26f875ddbc498e132b6.  Thank you!
>
> I hit “close” too quickly: we still need the patch that changes
> ‘home-files-service-type’ and/or symlink-manager.scm to not prepend a
> dot, so reopening!  :-)
>
> Ludo’.

Those patches introduce a breaking change, but the surface and number of
people affected should be small if everyone migrated to
xdg-configuration-files.  It removes the special handling of dot files
in symlink-manager and doesn't add a leading dot automatically.

Please, merge them on April 8.

From 1b556cda9716eba31a8a6dd9d3c263988de26ccf Mon Sep 17 00:00:00 2001
From: Andrew Tropin 
Date: Tue, 29 Mar 2022 11:28:30 +0300
Subject: [PATCH 1/2] home: symlink-manager: Remove appending of leading dot.

* gnu/home/services.scm (xdg-configuration-files-directory): Add leading dot.
* gnu/home/services.scm (xdg-configuration-files-service-type): Change name.
* gnu/home/services/shells.scm (add-shell-profile-file,
zsh-get-configuration-files, add-zsh-dot-configuration,
add-zsh-xdg-configuration, add-bash-configuration): Add leading dots.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Remove
leading dot.
---
 gnu/home/services.scm |  8 
 gnu/home/services/shells.scm  | 20 ++--
 gnu/home/services/symlink-manager.scm |  2 +-
 gnu/home/services/xdg.scm |  2 +-
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index 2f441eb968..17acfcdb09 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -285,10 +285,10 @@ (define home-files-service-type
 (description "Files that will be put in
 @file{~~/.guix-home/files}, and further processed during activation.")))
 
-(define xdg-configuration-files-directory "config")
+(define xdg-configuration-files-directory ".config")
 
 (define (xdg-configuration-files files)
-  "Add config/ prefix to each file-path in FILES."
+  "Add .config/ prefix to each file-path in FILES."
   (map (match-lambda
  ((file-path . rest)
   (cons (string-append xdg-configuration-files-directory "/" file-path)
@@ -296,7 +296,7 @@ (define (xdg-configuration-files files)
  files))
 
 (define home-xdg-configuration-files-service-type
-  (service-type (name 'home-files)
+  (service-type (name 'home-xdg-configuration)
 (extensions
  (list (service-extension home-files-service-type
   xdg-configuration-files)))
@@ -304,7 +304,7 @@ (define home-xdg-configuration-files-service-type
 (extend append)
 (default-value '())
 (description "Files that will be put in
-@file{~~/.guix-home/files/config}, and further processed during activation.")))
+@file{~~/.guix-home/files/.config}, and further processed during activation.")))
 
 (define %initialize-gettext
   #~(begin
diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm
index 086fe7d8c4..8389968c96 100644
--- a/gnu/home/services/shells.scm
+++ b/gnu/home/services/shells.scm
@@ -77,7 +77,7 @@ (define-configuration home-shell-profile-configuration
 really know what you do."))
 
 (define (add-shell-profile-file config)
-  `(("profile"
+  `((".profile"
  ,(mixed-text-file
"shell-profile"
"\
@@ -211,16 +211,16 @@ (define (zsh-file-by-field config field)
 (zsh-serialize-field config field)
 
 (define (zsh-get-configuration-files config)
-  `(("zprofile" ,(zsh-file-by-field config 'zprofile)) ;; Always non-empty
+  `((".zprofile" ,(zsh-file-by-field config 'zprofile)) ;; Always non-empty
 ,@(if (and (zsh-field-not-empty? config 'zshenv)
(zsh-field-not-empty? config 'environment-variables))
-  `(("zshenv" ,(zsh-file-by-field config 'zshenv))) '())
+  `((".zshenv" ,(zsh-file-by-field config 'zshenv))) '())
 ,@(if (zsh-field-not-empty? config 'zshrc)
-  `(("zshrc" ,(zsh-file-by-field config 'zshrc))) '())
+  `((".zshrc" ,(zsh-file-by-field config 'zshrc))) '())
 ,@(if (zsh-field-not-empty? config 'zlogin)
-  `(("zlogin" ,(zsh-file-by-field config 'zlogin))) '())
+  `((".zlogin" ,(zsh-file-by-field config 'zlogin))) '())
 ,@(if (zsh-field-not-empty? config 'zlogout)
-  `(("zlogout" ,(zsh-file-by-field config 'zlogout))) '(
+  `((".zlogout" ,(zsh-file-by-field config 'zlogout))) '(
 
 (define (add-zsh-dot-configuration config)
   (define zshenv-auxiliary-file
@@ -230,14 +230,14 @@ (define zshenv-auxiliary-file
  "[[ -f $ZDOTDIR/.zshenv ]] && source $ZDOTDIR/.zshenv\n"))
 
   (if (home-zsh-configuration-xdg-flavor? config)
-  `(("zshenv" ,zshenv-auxiliary-file))
+  `((".zshenv" ,zshenv-auxiliary-file))
   (zsh-get-configuration-files config)))
 
 (define 

bug#52808: Guix home should not assume that all targets are dot files

2022-03-29 Thread Andrew Tropin
On 2022-03-20 22:00, Ludovic Courtès wrote:

> I wrote:
>
>> I finally got around to committing it as
>> 6da2a5a5655668f42ec5b26f875ddbc498e132b6.  Thank you!
>
> I hit “close” too quickly: we still need the patch that changes
> ‘home-files-service-type’ and/or symlink-manager.scm to not prepend a
> dot, so reopening!  :-)
>
> Ludo’.

A few more minor fixes:

From 629466d23308e135c4a46951e5ea568677c5ec00 Mon Sep 17 00:00:00 2001
From: Andrew Tropin 
Date: Tue, 29 Mar 2022 11:15:56 +0300
Subject: [PATCH 1/2] home: shells: Rename zsh related functions.

* gnu/home/services/shells.scm (home-zsh-service-type): Make zsh related
private functions more consistently named.
---
 gnu/home/services/shells.scm | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm
index fb728893e3..086fe7d8c4 100644
--- a/gnu/home/services/shells.scm
+++ b/gnu/home/services/shells.scm
@@ -222,7 +222,7 @@ (define (zsh-get-configuration-files config)
 ,@(if (zsh-field-not-empty? config 'zlogout)
   `(("zlogout" ,(zsh-file-by-field config 'zlogout))) '(
 
-(define (zsh-home-files config)
+(define (add-zsh-dot-configuration config)
   (define zshenv-auxiliary-file
 (mixed-text-file
  "zshenv-auxiliary"
@@ -233,7 +233,7 @@ (define zshenv-auxiliary-file
   `(("zshenv" ,zshenv-auxiliary-file))
   (zsh-get-configuration-files config)))
 
-(define (zsh-xdg-configuration-files config)
+(define (add-zsh-xdg-configuration config)
   (if (home-zsh-configuration-xdg-flavor? config)
   (map
(lambda (lst)
@@ -298,10 +298,10 @@ (define home-zsh-service-type
 (extensions
  (list (service-extension
 home-files-service-type
-zsh-home-files)
+add-zsh-dot-configuration)
(service-extension
 home-xdg-configuration-files-service-type
-zsh-xdg-configuration-files)
+add-zsh-xdg-configuration)
(service-extension
 home-profile-service-type
 add-zsh-packages)))
-- 
2.34.0

From a71346b059691a982a7dc0c7f4fd708b49566500 Mon Sep 17 00:00:00 2001
From: Andrew Tropin 
Date: Tue, 29 Mar 2022 11:56:48 +0300
Subject: [PATCH 2/2] home: symlink-manager: Handle non-existing directory
 during cleanup.

* gnu/home/services/symlink-manager.scm (update-symlinks-script): Handle
non-existing directory during cleanup.
---
 gnu/home/services/symlink-manager.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm
index 3b851229f3..80ca73fed8 100644
--- a/gnu/home/services/symlink-manager.scm
+++ b/gnu/home/services/symlink-manager.scm
@@ -142,6 +142,7 @@ (define (strip file)
#t
(G_ "Skipping ~a (not an empty directory)... done\n")
directory))
+ ((= ENOENT errno) #t)
  ((= ENOTDIR errno) #t)
  (else
   (apply throw args)
-- 
2.34.0



-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-03-28 Thread Andrew Tropin
On 2022-03-20 22:00, Ludovic Courtès wrote:

> I wrote:
>
>> I finally got around to committing it as
>> 6da2a5a5655668f42ec5b26f875ddbc498e132b6.  Thank you!
>
> I hit “close” too quickly: we still need the patch that changes
> ‘home-files-service-type’ and/or symlink-manager.scm to not prepend a
> dot, so reopening!  :-)
>
> Ludo’.

Forgot to update fish home service in previous patch series, please
apply this patch as well:

From 7d9cf53ab574c8ab468bfdae2798de65af6c00b5 Mon Sep 17 00:00:00 2001
From: Andrew Tropin 
Date: Mon, 28 Mar 2022 12:14:10 +0300
Subject: [PATCH] home: shells: Migrate fish to xdg-configuration-files.

* gnu/home/services.scm (home-fish-service-type): Migrate to
home-xdg-configuration-files-service-type.
---
 gnu/home/services/shells.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm
index 7b9769bcf3..fb728893e3 100644
--- a/gnu/home/services/shells.scm
+++ b/gnu/home/services/shells.scm
@@ -586,7 +586,7 @@ (define-configuration home-fish-configuration
serialize-fish-abbreviations))
 
 (define (fish-files-service config)
-  `(("config/fish/config.fish"
+  `(("fish/config.fish"
  ,(mixed-text-file
"fish-config.fish"
#~(string-append "\
@@ -650,7 +650,7 @@ (define home-fish-service-type
   (service-type (name 'home-fish)
 (extensions
  (list (service-extension
-home-files-service-type
+home-xdg-configuration-files-service-type
 fish-files-service)
(service-extension
 home-profile-service-type
-- 
2.34.0


-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-03-20 Thread Ludovic Courtès
I wrote:

> I finally got around to committing it as
> 6da2a5a5655668f42ec5b26f875ddbc498e132b6.  Thank you!

I hit “close” too quickly: we still need the patch that changes
‘home-files-service-type’ and/or symlink-manager.scm to not prepend a
dot, so reopening!  :-)

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-03-20 Thread Ludovic Courtès
Hi Andrew,

I finally got around to committing it as
6da2a5a5655668f42ec5b26f875ddbc498e132b6.  Thank you!

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-03-10 Thread Andrew Tropin
On 2022-03-05 23:44, Ludovic Courtès wrote:

> Hi Andrew,
>
> The patches reached my mailbox around the time I went on vacation and
> then fell through the cracks.  Sorry about that!
>
> Andrew Tropin  skribis:
>
>> After that patch series is merged we can give a time for users to
>> migrate their self-made home services to xdg-configuration-files and
>> after for example 2 weeks, remove special handling of dots for
>> home-files.
>
> Sounds like a plan!
>
>> From 0cd37bbc724f9c793898c2655bdd1c335045c5f0 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 10:55:01 +0300
>> Subject: [PATCH 1/5] home: Explicitly connect home-file and symlink-manager
>>  services.
>>
>> * gnu/home/services.scm (home-files-directory): New variable.
>> * gnu/home/symlink-manager.scm (update-symlinks-script): Use
>> home-files-directory variable from (gnu home services).
>
> [...]
>
>> -(description "Configuration files for programs that
>> -will be put in @file{~/.guix-home/files}.")))
>> +(description (format #f "Files that will be put in
>> +@file{~~/.guix-home/~a}, and further processed during activation."
>> + home-files-directory
>
> This hunk would prevent i18n so I suggest dropping it (you can mention
> ‘home-files-directory’ in a margin comment for good measure).
>
> Otherwise LGTM.
>

Done.

>
>> From 23f7095d60b18b52de0d1aa314c4012cdf55a046 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 11:03:02 +0300
>> Subject: [PATCH 2/5] home: Add home-xdg-configuration-files service.
>>
>> * gnu/home/services.scm (home-xdg-configuration-files): New variable.
>
> [...]
>
>> +(define xdg-configuration-files-subdir "config")
>>
>> +(define (xdg-configuration-files files)
>> +  (map (lambda (lst)
>> + (cons (string-append xdg-configuration-files-subdir
>> +  "/" (car lst)) (cdr lst)))
>> + files))
>
> I’d just call it “.config” (instead of “config”).  That way, there
> wouldn’t be any special treatment.  WDYT?

Will be done in next patch series.

>
> Also: s/subdir/directory/, and please use ‘match’ instead of car/cdr
> (info "(guix) Coding Style").

Done, done.

>
>
>> +(description (format #f "Files that will be put in
>> +@file{~~/.guix-home/~a/~a}, and further processed during activation."
>> + home-files-directory
>> + xdg-configuration-files
>
> Same as above: drop ‘format’ and write ~/.guix-home/files/.config.
>

Done.

>
>> From 11f23a48d480a91d6bfba0ff55c1a9831585a4ee Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 15:03:44 +0300
>> Subject: [PATCH 3/5] home: shells: Migrate zsh to xdg-configuration-files.
>>
>> * gnu/home/services.scm (home-zsh-service-type): Additionally extend
>> home-xdg-configuration-files-service-type.
>
> [...]
>
>> From ef4c3bbcc0c8c1a251f4ad6c494f8ed30adf45f2 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 15:34:46 +0300
>> Subject: [PATCH 4/5] home: Migrate fountutils and xdg modules to
>>  xdg-configuration-files.
>>
>> * gnu/home/services/fontutils.scm (home-fontconfig-service-type): Migrate to
>> xdg-configuration-files.
>> * gnu/home/services/xdg.scm (home-xdg-user-directories-service-type,
>> home-xdg-mime-applications-service-type): Migrate to xdg-configuration-files.
>
> Neat!
>
>> From 089683bbd301f6e085f00fbd53713f335abac40e Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 16:14:23 +0300
>> Subject: [PATCH 5/5] home: symlink-manager: Respect XDG_CONFIG_HOME during
>>  activation.
>>
>> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Respect
>> XDG_CONFIG_HOME during activation.
>
> I propose to postpone this one after
> , and I even offer to rebase it
> myself if you want.  :-)
>
> Could you send updated patches?
>
> Thanks in advance, and apologies again for the delay!
>
> Ludo’.

Added two minor patches for symlink-manager.

From 3a6dc64d3366aa37507c83c598cbddb0f0815b6d Mon Sep 17 00:00:00 2001
From: Andrew Tropin 
Date: Fri, 11 Mar 2022 08:43:04 +0300
Subject: [PATCH 1/2] home: symlink-manager: Use existing home-directory
 symbol.

* gnu/home/services/symlink-manager.scm (update-symlinks-script): Use
existing home-directory symbol instead of additional getenv call.
---
 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 767b1bdc01..bce5c85b56 100644
--- a/gnu/home/services/symlink-manager.scm
+++ b/gnu/home/services/symlink-manager.scm
@@ -185,7 +185,7 @@ (define (source-file file)
 
  #$%initialize-gettext
 
- (let* ((home (string-append (getenv "HOME") "/.guix-home"))
+ (let* ((home (string-append home-directory "/.guix-home"))

bug#52808: Guix home should not assume that all targets are dot files

2022-03-10 Thread Ludovic Courtès
Hi Andrew,

Andrew Tropin  skribis:

> On 2022-03-05 23:44, Ludovic Courtès wrote:

[...]

>> I propose to postpone this one after
>> , and I even offer to rebase it
>> myself if you want.  :-)
>>
>> Could you send updated patches?
>
> Sure, I even replied to bug#54180 ticket :)  Waiting for the merge, after
> that will update patches to address your comments and will rebase them
> on top of bug#54180.  Also, I need to update the manual as well.

Oh sorry, I had misunderstood your comment in
.

I’ve now pushed it so you can happily rebase.  :-)

Thanks,
Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-03-08 Thread Andrew Tropin
On 2022-03-05 23:44, Ludovic Courtès wrote:

> Hi Andrew,
>
> The patches reached my mailbox around the time I went on vacation and
> then fell through the cracks.  Sorry about that!

No problem, I hope you had a good rest and got some fun!

>
> Andrew Tropin  skribis:
>
>> After that patch series is merged we can give a time for users to
>> migrate their self-made home services to xdg-configuration-files and
>> after for example 2 weeks, remove special handling of dots for
>> home-files.
>
> Sounds like a plan!
>
>> From 0cd37bbc724f9c793898c2655bdd1c335045c5f0 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 10:55:01 +0300
>> Subject: [PATCH 1/5] home: Explicitly connect home-file and symlink-manager
>>  services.
>>
>> * gnu/home/services.scm (home-files-directory): New variable.
>> * gnu/home/symlink-manager.scm (update-symlinks-script): Use
>> home-files-directory variable from (gnu home services).
>
> [...]
>
>> -(description "Configuration files for programs that
>> -will be put in @file{~/.guix-home/files}.")))
>> +(description (format #f "Files that will be put in
>> +@file{~~/.guix-home/~a}, and further processed during activation."
>> + home-files-directory
>
> This hunk would prevent i18n so I suggest dropping it (you can mention
> ‘home-files-directory’ in a margin comment for good measure).
>
> Otherwise LGTM.
>

Will fix it.

>> From 23f7095d60b18b52de0d1aa314c4012cdf55a046 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 11:03:02 +0300
>> Subject: [PATCH 2/5] home: Add home-xdg-configuration-files service.
>>
>> * gnu/home/services.scm (home-xdg-configuration-files): New variable.
>
> [...]
>
>> +(define xdg-configuration-files-subdir "config")
>>
>> +(define (xdg-configuration-files files)
>> +  (map (lambda (lst)
>> + (cons (string-append xdg-configuration-files-subdir
>> +  "/" (car lst)) (cdr lst)))
>> + files))
>
> I’d just call it “.config” (instead of “config”).  That way, there
> wouldn’t be any special treatment.  WDYT?

This is a patch series, which introduces preliminary changes and keeps
backward compatibility, so people, who have their personal home services
will be able to gradually migrate them to home-xdg-configuration-files.
In the next patch series special treatment of the dots will be removed
and this directory will become ".config".

>
> Also: s/subdir/directory/, and please use ‘match’ instead of car/cdr
> (info "(guix) Coding Style").
>

Sure.

>> +(description (format #f "Files that will be put in
>> +@file{~~/.guix-home/~a/~a}, and further processed during activation."
>> + home-files-directory
>> + xdg-configuration-files
>
> Same as above: drop ‘format’ and write ~/.guix-home/files/.config.
>
>> From 11f23a48d480a91d6bfba0ff55c1a9831585a4ee Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 15:03:44 +0300
>> Subject: [PATCH 3/5] home: shells: Migrate zsh to xdg-configuration-files.
>>
>> * gnu/home/services.scm (home-zsh-service-type): Additionally extend
>> home-xdg-configuration-files-service-type.
>
> [...]
>
>> From ef4c3bbcc0c8c1a251f4ad6c494f8ed30adf45f2 Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 15:34:46 +0300
>> Subject: [PATCH 4/5] home: Migrate fountutils and xdg modules to
>>  xdg-configuration-files.
>>
>> * gnu/home/services/fontutils.scm (home-fontconfig-service-type): Migrate to
>> xdg-configuration-files.
>> * gnu/home/services/xdg.scm (home-xdg-user-directories-service-type,
>> home-xdg-mime-applications-service-type): Migrate to xdg-configuration-files.
>
> Neat!
>
>> From 089683bbd301f6e085f00fbd53713f335abac40e Mon Sep 17 00:00:00 2001
>> From: Andrew Tropin 
>> Date: Fri, 11 Feb 2022 16:14:23 +0300
>> Subject: [PATCH 5/5] home: symlink-manager: Respect XDG_CONFIG_HOME during
>>  activation.
>>
>> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Respect
>> XDG_CONFIG_HOME during activation.
>
> I propose to postpone this one after
> , and I even offer to rebase it
> myself if you want.  :-)
>
> Could you send updated patches?

Sure, I even replied to bug#54180 ticket :)  Waiting for the merge, after
that will update patches to address your comments and will rebase them
on top of bug#54180.  Also, I need to update the manual as well.

>
> Thanks in advance, and apologies again for the delay!
>
> Ludo’.

-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-03-05 Thread Ludovic Courtès
Hi Andrew,

The patches reached my mailbox around the time I went on vacation and
then fell through the cracks.  Sorry about that!

Andrew Tropin  skribis:

> After that patch series is merged we can give a time for users to
> migrate their self-made home services to xdg-configuration-files and
> after for example 2 weeks, remove special handling of dots for
> home-files.

Sounds like a plan!

> From 0cd37bbc724f9c793898c2655bdd1c335045c5f0 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Fri, 11 Feb 2022 10:55:01 +0300
> Subject: [PATCH 1/5] home: Explicitly connect home-file and symlink-manager
>  services.
>
> * gnu/home/services.scm (home-files-directory): New variable.
> * gnu/home/symlink-manager.scm (update-symlinks-script): Use
> home-files-directory variable from (gnu home services).

[...]

> -(description "Configuration files for programs that
> -will be put in @file{~/.guix-home/files}.")))
> +(description (format #f "Files that will be put in
> +@file{~~/.guix-home/~a}, and further processed during activation."
> + home-files-directory

This hunk would prevent i18n so I suggest dropping it (you can mention
‘home-files-directory’ in a margin comment for good measure).

Otherwise LGTM.

> From 23f7095d60b18b52de0d1aa314c4012cdf55a046 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Fri, 11 Feb 2022 11:03:02 +0300
> Subject: [PATCH 2/5] home: Add home-xdg-configuration-files service.
>
> * gnu/home/services.scm (home-xdg-configuration-files): New variable.

[...]

> +(define xdg-configuration-files-subdir "config")
>
> +(define (xdg-configuration-files files)
> +  (map (lambda (lst)
> + (cons (string-append xdg-configuration-files-subdir
> +  "/" (car lst)) (cdr lst)))
> + files))

I’d just call it “.config” (instead of “config”).  That way, there
wouldn’t be any special treatment.  WDYT?

Also: s/subdir/directory/, and please use ‘match’ instead of car/cdr
(info "(guix) Coding Style").

> +(description (format #f "Files that will be put in
> +@file{~~/.guix-home/~a/~a}, and further processed during activation."
> + home-files-directory
> + xdg-configuration-files

Same as above: drop ‘format’ and write ~/.guix-home/files/.config.

> From 11f23a48d480a91d6bfba0ff55c1a9831585a4ee Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Fri, 11 Feb 2022 15:03:44 +0300
> Subject: [PATCH 3/5] home: shells: Migrate zsh to xdg-configuration-files.
>
> * gnu/home/services.scm (home-zsh-service-type): Additionally extend
> home-xdg-configuration-files-service-type.

[...]

> From ef4c3bbcc0c8c1a251f4ad6c494f8ed30adf45f2 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Fri, 11 Feb 2022 15:34:46 +0300
> Subject: [PATCH 4/5] home: Migrate fountutils and xdg modules to
>  xdg-configuration-files.
>
> * gnu/home/services/fontutils.scm (home-fontconfig-service-type): Migrate to
> xdg-configuration-files.
> * gnu/home/services/xdg.scm (home-xdg-user-directories-service-type,
> home-xdg-mime-applications-service-type): Migrate to xdg-configuration-files.

Neat!

> From 089683bbd301f6e085f00fbd53713f335abac40e Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Fri, 11 Feb 2022 16:14:23 +0300
> Subject: [PATCH 5/5] home: symlink-manager: Respect XDG_CONFIG_HOME during
>  activation.
>
> * gnu/home/services/symlink-manager.scm (update-symlinks-script): Respect
> XDG_CONFIG_HOME during activation.

I propose to postpone this one after
, and I even offer to rebase it
myself if you want.  :-)

Could you send updated patches?

Thanks in advance, and apologies again for the delay!

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-02-25 Thread Andrew Tropin
On 2022-02-11 18:52, Andrew Tropin wrote:

> On 2022-02-08 10:46, Ludovic Courtès wrote:
>
>> Hi,
>>
>> Andrew Tropin  skribis:
>>
> You can elaborate more on what you try to achieve and I can try to give
> you a recommendation how to implement it.

 I’d expect ‘home-files-service-type’ to do just that: add files to the
 home directory, without trying to be smart.

 Would it make sense to distinguish between ‘home-files’ and (say)
 ‘home-xdg-configuration-files’?
>>>
>>> Yep, I can do that, actually, it will be even better for the purpose I
>>> originally had.  I'll make home-files to store files as it is and
>>> symlink manager not to add leading dots and a separate folder for
>>> xdg configs.
>>
>> Neat.
>>
>>> Ludo, Nick, what do you think about following names?
>>> ~/.guix-home/home-dir-files/
>>> ~/.guix-home/xdg-config-dir-files/
>>
>> I’d make it ‘…/home-files’ and ‘…/xdg-configuration-files’, but that’s a
>> detail.
>>
 I’d also suggest removing special handling of HOME/files in
 symlink-manager.scm.  Relations between the various components of Guix
 Home should preferably be made explicit via service extensions, and not
 implicit through conventions like this ‘files’ sub-directory.

 Thoughts?
>>>
>>> Unfortunatelly, I don't know how to implement polymorphic behavior the
>>> other way with current extension mechanism, so I would prefer to keep
>>> this relation implicit,
>>
>> I’m not sure I follow but maybe I should try by myself to get a better
>> understanding.
>>
>> Thanks for your feedback!
>>
>> Ludo’.
>
> I decided to go one step at a time, and prepared a patch series, which:
>
> 1. Adds an explicit connection between home-files-service-type and
> symlink-manager by introducing a global constant used by both services.
>
> 2. Adds a home-xdg-configuration-files-service-type, which accepts a
> list of files for XDG_CONFIG_DIR, `(("mpv/mpv.conf" ,file-like-here))
>
> 3. Migrates all (gnu home services) to xdg-configuration-files.
>
> 4. Make symlink-manager respect XDG_CONIFG_HOME and
> xdg-configuration-files-subdir.
>
> After that patch series is merged we can give a time for users to
> migrate their self-made home services to xdg-configuration-files and
> after for example 2 weeks, remove special handling of dots for
> home-files.
>
> From 0cd37bbc724f9c793898c2655bdd1c335045c5f0 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin 
> Date: Fri, 11 Feb 2022 10:55:01 +0300
> Subject: [PATCH 1/5] home: Explicitly connect home-file and symlink-manager
>  services.
>
> * gnu/home/services.scm (home-files-directory): New variable.
> * gnu/home/symlink-manager.scm (update-symlinks-script): Use
> home-files-directory variable from (gnu home services).
> ---
>  gnu/home/services.scm | 23 ++-
>  gnu/home/services/symlink-manager.scm | 17 +
>  2 files changed, 23 insertions(+), 17 deletions(-)
>
> diff --git a/gnu/home/services.scm b/gnu/home/services.scm
> index 1cd19ce7f9..e4e3717b80 100644
> --- a/gnu/home/services.scm
> +++ b/gnu/home/services.scm
> @@ -43,6 +43,8 @@ (define-module (gnu home services)
>  home-run-on-change-service-type
>  home-provenance-service-type
>  
> +home-files-directory
> +
>  fold-home-service-types
>  home-provenance
>  
> @@ -74,12 +76,11 @@ (define-module (gnu home services)
>  ;;; file (details described in the manual).
>  ;;;
>  ;;; home-files-service-type is similar to etc-service-type, but doesn't 
> extend
> -;;; home-activation, because deploy mechanism for config files is pluggable 
> and
> -;;; can be different for different home environments: The default one is 
> called
> -;;; symlink-manager (will be introudced in a separate patch series), which 
> creates
> -;;; links for various dotfiles (like $XDG_CONFIG_HOME/$APP/...) to store, 
> but is
> -;;; possible to implement alternative approaches like read-only home from 
> Julien's
> -;;; guix-home-manager.
> +;;; home-activation, because deploy mechanism for config files is pluggable
> +;;; and can be different for different home environments: The default one is
> +;;; called symlink-manager, which creates links for various dotfiles and xdg
> +;;; configuration files to store, but is possible to implement alternative
> +;;; approaches like read-only home from Julien's guix-home-manager.
>  ;;;
>  ;;; home-run-on-first-login-service-type provides an @file{on-first-login} 
> guile
>  ;;; script, which runs provided gexps once, when user makes first login.  It 
> can
> @@ -262,11 +263,14 @@ (define (assert-no-duplicates files)
>  
>(file-union "files" files))
>  
> +;; Used by symlink-manager
> +(define home-files-directory "files")
> +
>  (define (files-entry files)
>"Return an entry for the @file{~/.guix-home/files}
>  directory containing FILES."
>(with-monad %store-monad
> -(return `(("files" ,(files->files-directory files))
> + 

bug#52808: Guix home should not assume that all targets are dot files

2022-02-11 Thread Andrew Tropin
On 2022-02-08 10:46, Ludovic Courtès wrote:

> Hi,
>
> Andrew Tropin  skribis:
>
 You can elaborate more on what you try to achieve and I can try to give
 you a recommendation how to implement it.
>>>
>>> I’d expect ‘home-files-service-type’ to do just that: add files to the
>>> home directory, without trying to be smart.
>>>
>>> Would it make sense to distinguish between ‘home-files’ and (say)
>>> ‘home-xdg-configuration-files’?
>>
>> Yep, I can do that, actually, it will be even better for the purpose I
>> originally had.  I'll make home-files to store files as it is and
>> symlink manager not to add leading dots and a separate folder for
>> xdg configs.
>
> Neat.
>
>> Ludo, Nick, what do you think about following names?
>> ~/.guix-home/home-dir-files/
>> ~/.guix-home/xdg-config-dir-files/
>
> I’d make it ‘…/home-files’ and ‘…/xdg-configuration-files’, but that’s a
> detail.
>
>>> I’d also suggest removing special handling of HOME/files in
>>> symlink-manager.scm.  Relations between the various components of Guix
>>> Home should preferably be made explicit via service extensions, and not
>>> implicit through conventions like this ‘files’ sub-directory.
>>>
>>> Thoughts?
>>
>> Unfortunatelly, I don't know how to implement polymorphic behavior the
>> other way with current extension mechanism, so I would prefer to keep
>> this relation implicit,
>
> I’m not sure I follow but maybe I should try by myself to get a better
> understanding.
>
> Thanks for your feedback!
>
> Ludo’.

I decided to go one step at a time, and prepared a patch series, which:

1. Adds an explicit connection between home-files-service-type and
symlink-manager by introducing a global constant used by both services.

2. Adds a home-xdg-configuration-files-service-type, which accepts a
list of files for XDG_CONFIG_DIR, `(("mpv/mpv.conf" ,file-like-here))

3. Migrates all (gnu home services) to xdg-configuration-files.

4. Make symlink-manager respect XDG_CONIFG_HOME and
xdg-configuration-files-subdir.

After that patch series is merged we can give a time for users to
migrate their self-made home services to xdg-configuration-files and
after for example 2 weeks, remove special handling of dots for
home-files.

From 0cd37bbc724f9c793898c2655bdd1c335045c5f0 Mon Sep 17 00:00:00 2001
From: Andrew Tropin 
Date: Fri, 11 Feb 2022 10:55:01 +0300
Subject: [PATCH 1/5] home: Explicitly connect home-file and symlink-manager
 services.

* gnu/home/services.scm (home-files-directory): New variable.
* gnu/home/symlink-manager.scm (update-symlinks-script): Use
home-files-directory variable from (gnu home services).
---
 gnu/home/services.scm | 23 ++-
 gnu/home/services/symlink-manager.scm | 17 +
 2 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/gnu/home/services.scm b/gnu/home/services.scm
index 1cd19ce7f9..e4e3717b80 100644
--- a/gnu/home/services.scm
+++ b/gnu/home/services.scm
@@ -43,6 +43,8 @@ (define-module (gnu home services)
 home-run-on-change-service-type
 home-provenance-service-type
 
+home-files-directory
+
 fold-home-service-types
 home-provenance
 
@@ -74,12 +76,11 @@ (define-module (gnu home services)
 ;;; file (details described in the manual).
 ;;;
 ;;; home-files-service-type is similar to etc-service-type, but doesn't extend
-;;; home-activation, because deploy mechanism for config files is pluggable and
-;;; can be different for different home environments: The default one is called
-;;; symlink-manager (will be introudced in a separate patch series), which creates
-;;; links for various dotfiles (like $XDG_CONFIG_HOME/$APP/...) to store, but is
-;;; possible to implement alternative approaches like read-only home from Julien's
-;;; guix-home-manager.
+;;; home-activation, because deploy mechanism for config files is pluggable
+;;; and can be different for different home environments: The default one is
+;;; called symlink-manager, which creates links for various dotfiles and xdg
+;;; configuration files to store, but is possible to implement alternative
+;;; approaches like read-only home from Julien's guix-home-manager.
 ;;;
 ;;; home-run-on-first-login-service-type provides an @file{on-first-login} guile
 ;;; script, which runs provided gexps once, when user makes first login.  It can
@@ -262,11 +263,14 @@ (define (assert-no-duplicates files)
 
   (file-union "files" files))
 
+;; Used by symlink-manager
+(define home-files-directory "files")
+
 (define (files-entry files)
   "Return an entry for the @file{~/.guix-home/files}
 directory containing FILES."
   (with-monad %store-monad
-(return `(("files" ,(files->files-directory files))
+(return `((,home-files-directory ,(files->files-directory files))
 
 (define home-files-service-type
   (service-type (name 'home-files)
@@ -276,8 +280,9 @@ (define home-files-service-type
 (compose concatenate)
 

bug#52808: Guix home should not assume that all targets are dot files

2022-02-10 Thread Ludovic Courtès
Hi,

Xinglu Chen  skribis:

> Ludovic schrieb am Sonntag der 30. Januar 2022 um 18:13 +01:
>
>> I’d expect ‘home-files-service-type’ to do just that: add files to the
>> home directory, without trying to be smart.
>>
>> Would it make sense to distinguish between ‘home-files’ and (say)
>> ‘home-xdg-configuration-files’?
>
> What about $XDG_DATA_HOME, or any other standard $XDG_* variable?  :-)

Hmm I don’t know?  :-)

>> The latter would copy files to $XDG_CONFIG_DIR at activation time,
>> whereas the former would just copy them to $HOME.
>
> When you say “copy”, you mean symlinking, right? 

Right.

> It would also be nice to have a service which copies (cp) a file
> during activation and maybe sets up different permissions for the
> file, e.g., executable.

Yes.

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-02-08 Thread Xinglu Chen
Hi,

Ludovic schrieb am Sonntag der 30. Januar 2022 um 18:13 +01:

> I’d expect ‘home-files-service-type’ to do just that: add files to the
> home directory, without trying to be smart.
>
> Would it make sense to distinguish between ‘home-files’ and (say)
> ‘home-xdg-configuration-files’?

What about $XDG_DATA_HOME, or any other standard $XDG_* variable?  :-)

> The latter would copy files to $XDG_CONFIG_DIR at activation time,
> whereas the former would just copy them to $HOME.

When you say “copy”, you mean symlinking, right?  It would also be nice
to have a service which copies (cp) a file during activation and maybe
sets up different permissions for the file, e.g., executable.


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-02-08 Thread Ludovic Courtès
Hi,

Andrew Tropin  skribis:

>>> You can elaborate more on what you try to achieve and I can try to give
>>> you a recommendation how to implement it.
>>
>> I’d expect ‘home-files-service-type’ to do just that: add files to the
>> home directory, without trying to be smart.
>>
>> Would it make sense to distinguish between ‘home-files’ and (say)
>> ‘home-xdg-configuration-files’?
>
> Yep, I can do that, actually, it will be even better for the purpose I
> originally had.  I'll make home-files to store files as it is and
> symlink manager not to add leading dots and a separate folder for
> xdg configs.

Neat.

> Ludo, Nick, what do you think about following names?
> ~/.guix-home/home-dir-files/
> ~/.guix-home/xdg-config-dir-files/

I’d make it ‘…/home-files’ and ‘…/xdg-configuration-files’, but that’s a
detail.

>> I’d also suggest removing special handling of HOME/files in
>> symlink-manager.scm.  Relations between the various components of Guix
>> Home should preferably be made explicit via service extensions, and not
>> implicit through conventions like this ‘files’ sub-directory.
>>
>> Thoughts?
>
> Unfortunatelly, I don't know how to implement polymorphic behavior the
> other way with current extension mechanism, so I would prefer to keep
> this relation implicit,

I’m not sure I follow but maybe I should try by myself to get a better
understanding.

Thanks for your feedback!

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-02-02 Thread Andrew Tropin
On 2022-01-30 18:13, Ludovic Courtès wrote:

> Hi Andrew,
>
> Andrew Tropin  skribis:
>
>> On 2021-12-26 12:17, Nick Zalutskiy wrote:
>>
>>> The following configuration results in a `~/.run` symlink being
>>> created. My expectation is that a `~/run` symlink is created
>>> instead. (ie. not a dotfile)
>>
>> Some how I missed it and not documented home-files-service-type in the
>> manual, I'll add it soon.  Thank you for mentioning it.  It should break
>> this expectation :)
>>
 (home-environment
   (services
 (list (service
 home-bash-service-type
 (home-bash-configuration
   (guix-defaults? #t)))
   (simple-service 'my-files
   home-files-service-type
   `(("run" ,(local-file "run")))
>>>
>>> This applies to all other targets. My expectation is that the
>>> configuration should expect the exact target and not make an
>>> assumption that all targets are hidden files, since that allows for
>>> more utility:
>
> I share Nick’s surprise.  :-)
>
> [...]
>
>> It's intentional and is a part of a design decision:
>>
>> For example for ("config/guix/channels.scm" ,(local-file "./chans.scm"))
>> chans.scm goes not to ~/.config/guix/channels.scm, but to
>> $XDG_CONFIG_DIR/guix/channels.scm, which can be a different location
>> from ~/.config, absent dot should partially break this expectation.
>>
>> It's a bad practice to use something without "config/..."  prefix and
>> generally it should be avoided, it still possible to use something
>> different in rare use-cases, for example for zsh: ("zshenv"
>> ,zshenv-file-like-here), because it's hard to implement the lookup for
>> initial configuration file other way for shells.
>
> Oh, I see.
>
>> You can elaborate more on what you try to achieve and I can try to give
>> you a recommendation how to implement it.
>
> I’d expect ‘home-files-service-type’ to do just that: add files to the
> home directory, without trying to be smart.
>
> Would it make sense to distinguish between ‘home-files’ and (say)
> ‘home-xdg-configuration-files’?

Yep, I can do that, actually, it will be even better for the purpose I
originally had.  I'll make home-files to store files as it is and
symlink manager not to add leading dots and a separate folder for
xdg configs.

Ludo, Nick, what do you think about following names?
~/.guix-home/home-dir-files/
~/.guix-home/xdg-config-dir-files/

>
> The latter would copy files to $XDG_CONFIG_DIR at activation time,
> whereas the former would just copy them to $HOME.
>
>
> I’d also suggest removing special handling of HOME/files in
> symlink-manager.scm.  Relations between the various components of Guix
> Home should preferably be made explicit via service extensions, and not
> implicit through conventions like this ‘files’ sub-directory.
>
> Thoughts?

Unfortunatelly, I don't know how to implement polymorphic behavior the
other way with current extension mechanism, so I would prefer to keep
this relation implicit, to make it possible to use a different machinery
instead of symlink manager to implement advanced techniques similar to
read-only home from Julien's guix-home-manager.

It's almost impossible to turn off symlink manager unintentionally, so
it should be ok.

-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-01-30 Thread Ludovic Courtès
Hi Andrew,

Andrew Tropin  skribis:

> On 2021-12-26 12:17, Nick Zalutskiy wrote:
>
>> The following configuration results in a `~/.run` symlink being
>> created. My expectation is that a `~/run` symlink is created
>> instead. (ie. not a dotfile)
>
> Some how I missed it and not documented home-files-service-type in the
> manual, I'll add it soon.  Thank you for mentioning it.  It should break
> this expectation :)
>
>>> (home-environment
>>>   (services
>>> (list (service
>>> home-bash-service-type
>>> (home-bash-configuration
>>>   (guix-defaults? #t)))
>>>   (simple-service 'my-files
>>>   home-files-service-type
>>>   `(("run" ,(local-file "run")))
>>
>> This applies to all other targets. My expectation is that the
>> configuration should expect the exact target and not make an
>> assumption that all targets are hidden files, since that allows for
>> more utility:

I share Nick’s surprise.  :-)

[...]

> It's intentional and is a part of a design decision:
>
> For example for ("config/guix/channels.scm" ,(local-file "./chans.scm"))
> chans.scm goes not to ~/.config/guix/channels.scm, but to
> $XDG_CONFIG_DIR/guix/channels.scm, which can be a different location
> from ~/.config, absent dot should partially break this expectation.
>
> It's a bad practice to use something without "config/..."  prefix and
> generally it should be avoided, it still possible to use something
> different in rare use-cases, for example for zsh: ("zshenv"
> ,zshenv-file-like-here), because it's hard to implement the lookup for
> initial configuration file other way for shells.

Oh, I see.

> You can elaborate more on what you try to achieve and I can try to give
> you a recommendation how to implement it.

I’d expect ‘home-files-service-type’ to do just that: add files to the
home directory, without trying to be smart.

Would it make sense to distinguish between ‘home-files’ and (say)
‘home-xdg-configuration-files’?

The latter would copy files to $XDG_CONFIG_DIR at activation time,
whereas the former would just copy them to $HOME.


I’d also suggest removing special handling of HOME/files in
symlink-manager.scm.  Relations between the various components of Guix
Home should preferably be made explicit via service extensions, and not
implicit through conventions like this ‘files’ sub-directory.

Thoughts?

Ludo’.





bug#52808: Guix home should not assume that all targets are dot files

2022-01-28 Thread Andrew Tropin
On 2022-01-28 08:33, Nick Zalutskiy wrote:

> Hi Andrew,
>
> I have files that I consider my "home configuration" that do not go
> into .config or any other dot dir. For example, I place an executable
> shell script to automate some tasks in the home dir of every
> machine. The script is called `run` all I want to do is place it as
> ~/run Placing this file in PATH is not appropriate in my case.
>
> The current design makes this impossible to achieve it seems. I just
> live with `~/.run` now, but it is ergonomically cumbersome for reasons
> that are too obscure to go into.

You can extend activation home service with a script, which will symlink
a necessary executable to ~/run.

>
> Why not, just as an example:
>
> `("$XDG_CONFIG_DIR/guix/channels.scm" ,(local-file "./chans.scm"))`

The $XDG_CONFIG_DIR is not know at build-time, so it won't work.
Creating a literal files/$XDG_CONFIG_DIR directory is possible, but also
not ideal.  However the idea sounds not that bad.

>
> Which is explicit and sets the right expectation without any other
> context. The implicit heuristics around how the input is interpreted
> are an unfortunate design decision in my opinion, they make a simple
> tool more difficult to use.

It's partially intentional to force users to stick to XDG specification
for config files and minimize the usage of dotfiles in $HOME.  The
binaries are inteded to go to profile/bin or other directory on the
path. But it always possible to bypass this decision by directly
extending home-service-type or home-activation-service-type.

I see what you mean about implicit heuristics and mostly agree.

>
> Having said all that, the documentation helps a lot. Thank you for the
> patch!

Sure ;)

>
> Best,
>
> -Nick
>
> On Fri, Jan 28, 2022, at 5:51 AM, Andrew Tropin wrote:
>> On 2021-12-26 12:17, Nick Zalutskiy wrote:
>>
>>> The following configuration results in a `~/.run` symlink being
>>> created. My expectation is that a `~/run` symlink is created
>>> instead. (ie. not a dotfile)
>>
>> Some how I missed it and not documented home-files-service-type in the
>> manual, I'll add it soon.  Thank you for mentioning it.  It should break
>> this expectation :)
>>
 (home-environment
   (services
 (list (service
 home-bash-service-type
 (home-bash-configuration
   (guix-defaults? #t)))
   (simple-service 'my-files
   home-files-service-type
   `(("run" ,(local-file "run")))
>>>
>>> This applies to all other targets. My expectation is that the
>>> configuration should expect the exact target and not make an
>>> assumption that all targets are hidden files, since that allows for
>>> more utility:
>>>
 (home-environment
   (services
 (list (service
 home-bash-service-type
 (home-bash-configuration
   (guix-defaults? #t)))
   (simple-service 'config-files
   home-files-service-type
   `(("run" ,(local-file "run"))
 ("README.txt" ,(local-file "README.txt"))
 (".config/guix/channels.scm" ,(local-file "config/guix
 (".emacs.d/init.el" ,(local-file "emacs.d/init.el"))
 (".vimrc" ,(local-file "vimrc"))
 (".gitconfig" ,(local-file "gitconfig")))
>>>
>>> Thank you,
>>>
>>> -Nick
>>
>> It's intentional and is a part of a design decision:
>>
>> For example for ("config/guix/channels.scm" ,(local-file "./chans.scm"))
>> chans.scm goes not to ~/.config/guix/channels.scm, but to
>> $XDG_CONFIG_DIR/guix/channels.scm, which can be a different location
>> from ~/.config, absent dot should partially break this expectation.
>>
>> It's a bad practice to use something without "config/..."  prefix and
>> generally it should be avoided, it still possible to use something
>> different in rare use-cases, for example for zsh: ("zshenv"
>> ,zshenv-file-like-here), because it's hard to implement the lookup for
>> initial configuration file other way for shells.
>>
>> You can elaborate more on what you try to achieve and I can try to give
>> you a recommendation how to implement it.
>>
>> -- 
>> Best regards,
>> Andrew Tropin
>>
>> Attachments:
>> * signature.asc

-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2022-01-28 Thread Nick Zalutskiy
Hi Andrew,

I have files that I consider my "home configuration" that do not go into 
.config or any other dot dir. For example, I place an executable shell script 
to automate some tasks in the home dir of every machine. The script is called 
`run` all I want to do is place it as ~/run Placing this file in PATH is not 
appropriate in my case.

The current design makes this impossible to achieve it seems. I just live with 
`~/.run` now, but it is ergonomically cumbersome for reasons that are too 
obscure to go into.

Why not, just as an example: 

`("$XDG_CONFIG_DIR/guix/channels.scm" ,(local-file "./chans.scm"))`

Which is explicit and sets the right expectation without any other context. The 
implicit heuristics around how the input is interpreted are an unfortunate 
design decision in my opinion, they make a simple tool more difficult to use.

Having said all that, the documentation helps a lot. Thank you for the patch!

Best,

-Nick

On Fri, Jan 28, 2022, at 5:51 AM, Andrew Tropin wrote:
> On 2021-12-26 12:17, Nick Zalutskiy wrote:
>
>> The following configuration results in a `~/.run` symlink being
>> created. My expectation is that a `~/run` symlink is created
>> instead. (ie. not a dotfile)
>
> Some how I missed it and not documented home-files-service-type in the
> manual, I'll add it soon.  Thank you for mentioning it.  It should break
> this expectation :)
>
>>> (home-environment
>>>   (services
>>> (list (service
>>> home-bash-service-type
>>> (home-bash-configuration
>>>   (guix-defaults? #t)))
>>>   (simple-service 'my-files
>>>   home-files-service-type
>>>   `(("run" ,(local-file "run")))
>>
>> This applies to all other targets. My expectation is that the
>> configuration should expect the exact target and not make an
>> assumption that all targets are hidden files, since that allows for
>> more utility:
>>
>>> (home-environment
>>>   (services
>>> (list (service
>>> home-bash-service-type
>>> (home-bash-configuration
>>>   (guix-defaults? #t)))
>>>   (simple-service 'config-files
>>>   home-files-service-type
>>>   `(("run" ,(local-file "run"))
>>> ("README.txt" ,(local-file "README.txt"))
>>> (".config/guix/channels.scm" ,(local-file "config/guix
>>> (".emacs.d/init.el" ,(local-file "emacs.d/init.el"))
>>> (".vimrc" ,(local-file "vimrc"))
>>> (".gitconfig" ,(local-file "gitconfig")))
>>
>> Thank you,
>>
>> -Nick
>
> It's intentional and is a part of a design decision:
>
> For example for ("config/guix/channels.scm" ,(local-file "./chans.scm"))
> chans.scm goes not to ~/.config/guix/channels.scm, but to
> $XDG_CONFIG_DIR/guix/channels.scm, which can be a different location
> from ~/.config, absent dot should partially break this expectation.
>
> It's a bad practice to use something without "config/..."  prefix and
> generally it should be avoided, it still possible to use something
> different in rare use-cases, for example for zsh: ("zshenv"
> ,zshenv-file-like-here), because it's hard to implement the lookup for
> initial configuration file other way for shells.
>
> You can elaborate more on what you try to achieve and I can try to give
> you a recommendation how to implement it.
>
> -- 
> Best regards,
> Andrew Tropin
>
> Attachments:
> * signature.asc





bug#52808: Guix home should not assume that all targets are dot files

2022-01-28 Thread Andrew Tropin
On 2021-12-26 12:17, Nick Zalutskiy wrote:

> The following configuration results in a `~/.run` symlink being
> created. My expectation is that a `~/run` symlink is created
> instead. (ie. not a dotfile)

Some how I missed it and not documented home-files-service-type in the
manual, I'll add it soon.  Thank you for mentioning it.  It should break
this expectation :)

>> (home-environment
>>   (services
>> (list (service
>> home-bash-service-type
>> (home-bash-configuration
>>   (guix-defaults? #t)))
>>   (simple-service 'my-files
>>   home-files-service-type
>>   `(("run" ,(local-file "run")))
>
> This applies to all other targets. My expectation is that the
> configuration should expect the exact target and not make an
> assumption that all targets are hidden files, since that allows for
> more utility:
>
>> (home-environment
>>   (services
>> (list (service
>> home-bash-service-type
>> (home-bash-configuration
>>   (guix-defaults? #t)))
>>   (simple-service 'config-files
>>   home-files-service-type
>>   `(("run" ,(local-file "run"))
>> ("README.txt" ,(local-file "README.txt"))
>> (".config/guix/channels.scm" ,(local-file "config/guix
>> (".emacs.d/init.el" ,(local-file "emacs.d/init.el"))
>> (".vimrc" ,(local-file "vimrc"))
>> (".gitconfig" ,(local-file "gitconfig")))
>
> Thank you,
>
> -Nick

It's intentional and is a part of a design decision:

For example for ("config/guix/channels.scm" ,(local-file "./chans.scm"))
chans.scm goes not to ~/.config/guix/channels.scm, but to
$XDG_CONFIG_DIR/guix/channels.scm, which can be a different location
from ~/.config, absent dot should partially break this expectation.

It's a bad practice to use something without "config/..."  prefix and
generally it should be avoided, it still possible to use something
different in rare use-cases, for example for zsh: ("zshenv"
,zshenv-file-like-here), because it's hard to implement the lookup for
initial configuration file other way for shells.

You can elaborate more on what you try to achieve and I can try to give
you a recommendation how to implement it.

-- 
Best regards,
Andrew Tropin


signature.asc
Description: PGP signature


bug#52808: Guix home should not assume that all targets are dot files

2021-12-26 Thread Nick Zalutskiy
The following configuration results in a `~/.run` symlink being created. My 
expectation is that a `~/run` symlink is created instead. (ie. not a dotfile)

> (home-environment
>   (services
> (list (service
> home-bash-service-type
> (home-bash-configuration
>   (guix-defaults? #t)))
>   (simple-service 'my-files
>   home-files-service-type
>   `(("run" ,(local-file "run")))

This applies to all other targets. My expectation is that the configuration 
should expect the exact target and not make an assumption that all targets are 
hidden files, since that allows for more utility: 

> (home-environment
>   (services
> (list (service
> home-bash-service-type
> (home-bash-configuration
>   (guix-defaults? #t)))
>   (simple-service 'config-files
>   home-files-service-type
>   `(("run" ,(local-file "run"))
> ("README.txt" ,(local-file "README.txt"))
> (".config/guix/channels.scm" ,(local-file "config/guix
> (".emacs.d/init.el" ,(local-file "emacs.d/init.el"))
> (".vimrc" ,(local-file "vimrc"))
> (".gitconfig" ,(local-file "gitconfig")))

Thank you,

-Nick