[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