[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#52807: Guix home executables are not executable
From: |
Aleksandr Vityazev |
Subject: |
bug#52807: Guix home executables are not executable |
Date: |
Sun, 26 Dec 2021 21:44:16 +0000 |
Hi,
On 2021-12-26, 12:03 -0500, "Nick Zalutskiy" <nick@const.fun> wrote:
> I'd like to use `guix home` to symlink an executable into my home
> directory.
>
> Following simple configuration stored at
> `~/.dotfiles/home-configuration.scm`
>
> (use-modules
> (gnu home)
> (gnu packages)
> (gnu home services)
> (gnu services)
> (guix gexp)
> (gnu home services shells))
>
> (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")))))))
>
> `~/.dotfiles/run` is an executable file, after home reconfigure a
> `~/.run` symlink is created,
> however the file it is pointing to does _not_ have the execute bit set.
>
> As a result, when I try to execute `~/.run` file I get a "Permission
> denied" error.
>
> Thank you,
>
> -Nick
>
In the Guix manual you can find the following information about
local-file:
--8<---------------cut here---------------start------------->8---
-- Scheme Procedure: local-file FILE [NAME] [#:recursive? #f]
[#:select? (const #t)]
When RECURSIVE? is true, the contents of FILE are added
recursively; if FILE designates a flat file and RECURSIVE? is true,
its contents are added, and its permission bits are kept.
--8<---------------cut here---------------end--------------->8---
So you can just do this:
#+begin_src scheme
(simple-service 'my-files
home-files-service-type
`(("run" ,(local-file "run" #:recursive? #t))))
#+end_src
--
Best regards,
Aleksandr Vityazev