Nix

Links to this page
  • numtide/devshell

    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.

  • Ultimately impure

    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).

  • The Nix Language

    Nix uses a language of the same name for its package definitions.

  • Private Void Systems Configuration

    The Private Void infrastructure is built on NixOS. Software deployed on it is built with Nix.

  • NixPak

    NixPak provides sandboxing for Nix packages. The sandbox configuration uses The NixOS Module System.

  • NixOS

    NixOS is a Linux distribution built on top of Nix. It uses a modular configuration system The NixOS Module System.

  • Nix Super

    Nix Super is my personal fork of Nix. It has a bunch of extra features that I find useful tacked on.

  • Managing Jupyter with Nix

    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.

  • List of interesting Nix projects

    A collection of interesting projects related to Nix.

  • Home Manager

    Home directory management for Nix. Handles package installation and dotfile management. Works on any Linux distro as well as macOS.

  • Hercules CI

    CI/CD system and company for Nix made and operated by Robert Hensing.

  • Global Development Dependencies

    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.

  • Building a monorepo with Nix

    Nix makes for a great monorepo package manager.

  • (DRAFT) Nothing comes close

    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.