Hermes, a Nix-inspired package manager

https://acha.ninja/blog/introducing_hermes/

Haven’t tried this, and at first sight I can’t really say if the stated goals are convincing enough, but curious if others have given it a try.

3 Likes

Interesting project, thanks for posting! I’m happy to see more experimentation with the concepts of nix & guix. Some simplification is definitely a good idea. I haven’t tried it yet either, it would be great if there was a direct comparison of the tradeoffs it made compared to nix.

Two things strike me as odd:

  • The choice of implementation language. C for a new project. I wish they had chosen something memory safe.
  • The choice of expression language. Lispy parentheses everywhere seem to go against the goal of simplicity. nixes approach seems much simpler to me, especially since the meat of most derivations is actually written in plain bash.

Looks like there already is such a comparison:

Daemon-less design seems interesting if it comes without significant tradeoffs. As I said before, I disagree that the language is simpler. I like that the main nix packages repo is centralized. The other differences seem to have some overlap with nix flakes.

Still, while it may not be for me in its current state I love that people are playing with different ideas :slight_smile:

1 Like

This seems unfair. Nix totally allows you to axe the central infrastructure and run everything yourself. I don’t really see how this is a philosophical difference.

1 Like

This surprised me as well. I can understand that Nix is quite foreign for people who do not have experience with functional programming (which is a common criticism of Nix), but it is interesting that Guix and Hermes pick Scheme/Janet respectively. It’s not as if these languages are mainstream either (possibly even less mainstream than e.g. Haskell).

Other than that I fully agree that this is a space that is worth further exploration, and different implementations/approaches can learn from each other.

Hi author here,

The choice of implementation language. C for a new project. I wish they had chosen something memory safe.

Its actually mostly implemented in Janet, which is memory safe.

The choice of expression language. Lispy parentheses everywhere seem to go against the goal of simplicity.

Syntax and simplicity are two different things. Hermes is about 5k lines of code, Nix is 40k Loc.

4 Likes