Live data from Hacker News

Writing a basic service for GNU Guix

tannerhoelzel.com

11–20 of 30 posts

Re: Writing a basic service for GNU Guix

#12

Two notes from reading the first several paragraphs: 1. It seems one needs to know some Scheme in order to write these files: https://www.scheme.org/ I don't think it's possible to just "wing it" by copy-and-paste. 2. I did not understand the introductory paragraph about how services "extend" each other. Does every service have hooks for possible extensions? What if a new service doesn't fit existing extension hooks?…

> Does every service have hooks for possible extensions? What if a new service doesn't fit existing extension hooks?

No, only few services define service extensions.

It's more common for services to be configured solely via their configuration struct.

See the following for docs:

* https://guix.gnu.org/manual/en/html_node/Service-Composition...

* https://guix.gnu.org/manual/en/html_node/Service-Types-and-S...

This is less flexible-by-default than NixOS module, where any module can modify any other module. That is by design. The Guix developers see NixOS's approach as failing the principle-of-least-authority, where any arbitrary module (even those imported via flakes) can add a root SSH key.

I use NixOS, but it's an interesting tradeoff.

Re: Writing a basic service for GNU Guix

#13
For day to day use, what are the benefits for gnu guix? From it’s website, what I could understand is it provides installation of different version of the same package, similar to rbenv or conda. Apart from this, is there anything else that will be considered useful over something like aptitude?

Re: Writing a basic service for GNU Guix

#14

For day to day use, what are the benefits for gnu guix? From it’s website, what I could understand is it provides installation of different version of the same package, similar to rbenv or conda. Apart from this, is there anything else that will be considered useful over something like aptitude?

Reproducibility, just like Nix.

You can be certain that, if you've managed to get a piece of software running with Guix, you can also get it running identically on any other machine.

Re: Writing a basic service for GNU Guix

#15

For day to day use, what are the benefits for gnu guix? From it’s website, what I could understand is it provides installation of different version of the same package, similar to rbenv or conda. Apart from this, is there anything else that will be considered useful over something like aptitude?

Reproducibility, just like Nix. You can be certain that, if you've managed to get a piece of software running with Guix, you can also get it running identically on any other machine.

Except if nvidia cards and embedded systems are involved. Then whether you get it running is still a gamble.

Re: Writing a basic service for GNU Guix

#16
post #8
post #6

Earlier quoted context omitted.

Because it's an alternative which guarantees freedom?

just not freedom to use propriety software

Only Free Software guarantees that you have the final say in a matter of using arbitrary proprietary software.

Re: Writing a basic service for GNU Guix

#17
post #8

Earlier quoted context omitted.

just not freedom to use propriety software

It's easy to use proprietary software with Guix and nearly all users do this.

Cool, I didn't realize I could use it on my Windows or Mac machines. That's actually what's been holding me back.

Re: Writing a basic service for GNU Guix

#18
post #3

Does GNU Shepherd support some form of sanboxing? systemd has many options to reduce the privileges of a service: like running as a normal user with only certain POSIX capabilities, setting up a mount namespace with a limited view of the root filesystem, locking down which system calls can be invoked, etc.

GNU Shepherd itself doesn't implement sandboxing, but you can use the least-authority-wrapper to do namespaces. There are other tools to do more comphrensive sandboxing, which Shepherd can use, e.g. nsjail.

least-authority-wrapper: https://codeberg.org/guix/guix/src/commit/e3fbaeee1386fd447f...

Re: Writing a basic service for GNU Guix

#19
post #3

Does GNU Shepherd support some form of sanboxing? systemd has many options to reduce the privileges of a service: like running as a normal user with only certain POSIX capabilities, setting up a mount namespace with a limited view of the root filesystem, locking down which system calls can be invoked, etc.

Shepherd doesn't include this as it is quite lean and extensible (service start/stop hooks are functions that can do anything) but Guix includes a Linux container implementation and an abstraction built on top for use by services. The long term vision is to use an object capability security model so, rather than "locking down", a service can only interact with the resources to which it has been passed a reference. No…

I really like systemd but am also Guix-curious. This sandboxing topic has been a bit of a blocker for me to properly go deeper with Guix. Do you know of any good places to read more about this vision? Sounds powerful and unique.

Re: Writing a basic service for GNU Guix

#20
post #3

Does GNU Shepherd support some form of sanboxing? systemd has many options to reduce the privileges of a service: like running as a normal user with only certain POSIX capabilities, setting up a mount namespace with a limited view of the root filesystem, locking down which system calls can be invoked, etc.

GNU Shepherd itself doesn't implement sandboxing, but you can use the least-authority-wrapper to do namespaces. There are other tools to do more comphrensive sandboxing, which Shepherd can use, e.g. nsjail. least-authority-wrapper: https://codeberg.org/guix/guix/src/commit/e3fbaeee1386fd447f...

Uoh, nsjail ha? The namespace for project names seems exhausted. No germans on the dev team, ey?
Post reply on HN