bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Nick Zalutskiy
Subject: bug#52808: Guix home should not assume that all targets are dot files
Date: Fri, 28 Jan 2022 08:33:10 -0500
User-agent: Cyrus-JMAP/3.5.0-alpha0-4585-ga9d9773056-fm-20220113.001-ga9d97730

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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]