Nix O'matic: on-demand heterogeneous environments

Hello!

I wanted to share a project I’ve been working on lately that allows users to have heterogeneous environments with the version of the packages they need. You can provide a list of packages, in which you can specify for each package, either no version (defaulting to nixpkgs-unstable), a specific nixpgks revision, or a version of that specific program (resolved using the amazing nxv service). It’s possible to mix and match them.

$ nix \
    --extra-experimental-features nix-command \
    --extra-experimental-features flakes \
    develop 'https://nixomatic.com/?packages=cowsay,bat' \
      --command -- sh -c "cowsay 'Hello, world!' | bat"

You can check the different ways in which you can request different packages in Docs - Nix O'matic . Although not documented yet, it’s possible to also overrideAttrs on them as well as override.

I have created a GitHub action, so that it’s even easier to use, reducing the adoption friction as much as possible. You can read more about it here.

Next, I plan to anonymously let users create profiles so that they can configure common properties that can be shared across their environments automatically, but this is still in the works and will be released soon.

It’s in the early phase right now, so I’d love to know if you are interested in this project! I’m super open to prioritize different features depending on the interest, or let me know if you find anything that can be improved or that is not working as you expect.

Thank you!

1 Like

is this open-source by any chance?

1 Like

Not right now, but I plan to open source if not all of it, at least an important part.

1 Like