Nix is a purely functional package manager. It introduces the concept of Deployment as Memory Management.
Links:
Nix is a purely functional package manager. It introduces the concept of Deployment as Memory Management.
Links:
A fancy developer shell for Nix. Uses a plain derivation to minimize env var spam. Modular configuration with The NixOS Module System, although its API is awkward due to TOML fanaticism.
Nix implements reproducible and hermetic software builds using the metaphor of pure functions. Builds have a well-defined set of inputs, and for the same inputs, they produce the same output. Unfortunately, operating systems in general are not deterministic, partially as a result of their hardware not being deterministic (especially with SMP, branch predictors and OoOE).
Nix uses a language of the same name for its package definitions.
The Private Void infrastructure is built on NixOS. Software deployed on it is built with Nix.
NixPak provides sandboxing for Nix packages. The sandbox configuration uses The NixOS Module System.
NixOS is a Linux distribution built on top of Nix. It uses a modular configuration system The NixOS Module System.
Nix Super is my personal fork of Nix. It has a bunch of extra features that I find useful tacked on.
Data science should be reproducible. Nix is pretty good at reproducibility. How do we combine the two? jupyterWith is a convenient Nix library for this purpose. It can create Jupyter Lab environments and declaratively configure Jupyter kernels, including all the language libraries used.
A collection of interesting projects related to Nix.
Home directory management for Nix. Handles package installation and dotfile management. Works on any Linux distro as well as macOS.
CI/CD system and company for Nix made and operated by Robert Hensing.
Here’s where the problem starts: If you don’t have Nix, you basically can’t provide such libraries to your project. But wait, you have a system package manager. And there’s a repo for it that has the C libraries you want. What if you just…
Most modern languages have the concept of a “language package manager”, which can also provide dev dependencies, think Cabal, Cargo or NPM. What these language package managers cannot do, however, is give you access to “external” dependencies, libraries that aren’t written in the language you’re using, but e.g. C. Nix solves that.
Nix has this pretty cool concept of “devShells”. A devShell is effectively a mechanism to provide various dependencies to a software development project. In particular, it’s good at providing you with compilers, C libraries, that kind of stuff.
Nix makes for a great monorepo package manager.
Apparently, Nix is unique in its ability to be a better software deployment tool than anything else in its space. Every time a new “solution” to the same set of problems shows up, it always falls short of the proper solution in one or more of the same ways. Every time. Without fail. I don’t mind at all that people are making alternatives to Nix. I absolutely support having competition in this space. Anything that draws more eyes to this problem is absolutely a good thing. But man, when everyone else always gets the same things wrong, I think i’m very justified in my hatred.