Subject: Re: bug#60521: [PATCH] home: Add home-stow-migration-service.

From: paul <[email-masked]>
Date: Sat, 24 Jun 2023 17:47:52 +0200

Dear Ludo,

I apologize for the long delay. I did not receive a notification of your 
post somehow, I may need to change email provider.

 > Maybe a node other than “Top” would be advisable? I can’t see where 
that formal spec might be at 
https://www.gnu.org/software/stow/manual/html_node/.

There may have been a misunderstanding here, I didn't want to imply that 
there was a formal specification. I just assumed that being a GNU 
project it would have been documented. Anyway I tried to get to the 
bottom of this and the only mention/apparent endorsement from the Stow 
manual to this layout is in the Introduction [0], which references [1] 
as the original source.

[1] explains pretty clearly the layout in a natural language informal 
fashion, but searching for "stow" and "dotfiles" on the internet it 
appears to be an established de-facto standard. I changed the manual to 
"which must follow the layout suggested by". What do you think?

 > Am I right that this is the same as:

 > [ ... ]

 > (In that case, we wouldn’t even need ‘dotfiles-for-app’.)

It's not the same I believe. The whole (string-append "home-dotfiles" 
... is there because at guix/nix/libstore/store-api.cc line 64 and 71 
for . and / respectively an exception is thrown if those characters are 
in first position or inside the store name. (append-map ... 
(dir-contents ... is needed due to the Stow layout: suppose you have a 
directory like this one

.dotfiles/
├── git
│     └── .gitconfig
├── gpg
│     └── .gnupg
│     ├── gpg-agent.conf
│     └── gpg.conf
├── guile
│     └── .guile
├── guix
│     └── .config
│     └── guix
│     └── channels.scm
├── nix
│     ├── .config
│     │     └── nixpkgs
│     │     └── config.nix
│     └── .nix-channels
├── tmux
│     └── .tmux.conf
└── vim
        └── .vimrc

The most common Stow workflow would be to have this directory at 
~/.dotfiles and then

$ cd ~/.dotfiles

$ stow git

$ stow nix

This additional git,nix,gpg,guile etc... layer is not covered by your 
code, but I tried my best to simplify import-dotfiles. Please let me 
know what are your feeling about the current state of the service.

 > Also, should we pass ‘find-files’ a predicate to exclude editor 
backup files, VCS files, etc.?

Yes, that's an awesome idea. I implemented a simple filter (currently 
'("\\.gitignore" ".*\\.swp" ".*~") ) since I wasn't sure how much we can 
assume about this use case.

I should have addressed all of your suggestions, thank you for your time 
and help Ludo’ ! I'm sending an update patch.

giacomo

[0]: 
https://www.gnu.org/software/stow/manual/html_node/Introduction.html#Introduction

[1]: 
https://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html

[2]: https://duckduckgo.com/?q=stowdotfiles