Nix journey part 0: Learning and reference materials

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • nixbyexample

    Learn nix by example

  • We just adopted nix at work so it def. feels like that from my point of view. If anyone reads this, here’s why I’ve been avoiding (and building without it) even though I wish I could use it:

    - slow as hell on mac

    - doesn’t work well with a project that makes use of Rust. We have weird rules for building and being able to dev with the Rust side (basically the devshell will try not to create a derivation for the rust stuff). Also every update of cargo.lock or rust-toolchain will break the nix install.

    - doesn’t work well with my tools (vscode). There’s a nix env plugin but it doesn’t work with flakes. Direnv plugins exist as well but they didn’t seem to work for me

    - the shell doesn’t work without passing -i for me. Some env vars seem to break my nix

    - the defaults don’t take mac into account, which is insane imo, I wrote about it here: https://mimoo.github.io/nixbyexample/

  • nixos-docker-sd-image-builder

    Build custom SD images of NixOS for your Raspberry Pi (or any other supported AArch64 device) in 5-20 minutes.

  • Not for sure if you are working on SD card based things but this might get you half way there. We do this for loading RPIs https://github.com/Robertof/nixos-docker-sd-image-builder

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • nixos-config

    Nix configuration for macOS / NixOS with starter templates, step-by-step guides, and more ✨ (by dustinlyons)

  • My use case:

    I'm a consultant and jump around different stacks, or have to grok some new thing pretty quickly. Nix helps me with my personal dev environment. I also generally prefer functional style of doing things, declarative, immutable, etc.

    Nix is so easy to share across machines (including Mac) that it ends up being pretty cool when you pair it with something like syncthing. I can jump around, get up to speed with something new, and have it everywhere without much setup now that my machines share some Nix code and data.

    I also still use Emacs and the community emacs-overlay is pretty awesome. But after you're up and running, Nix makes all this stuff pretty seamless which is my point.

    Nixpkgs has like 80,000+ packages the last time I looked, and is growing.

    I haven't had a use case to stray outside of Docker + terraform for my work related stuff, but it's amazing for sharing dev environments on a team. Flox is a new thing to check out

    My repo if it helps anyone get started: https://github.com/dustinlyons/nixos-config

  • rfcs

    The Nix community RFCs (by NixOS)

  • https://github.com/NixOS/rfcs/pull/136 soon, you shouldn't have to care what language it uses!

  • nix-search-cli

    CLI for searching packages on search.nixos.org

  • The nix package search website is OK, but it doesn't let you filter by the names of installed binaries. A lot of the time, you have a question like "what nixpkgs attribute do i install in order to get the `python3` command". I recently wrote a command line tool that allows you to do this. It uses the same elasticsearch index as the search website, but allows more powerful filtering. If anyone is thinking of getting into nix, please consider trying it out!

    https://github.com/peterldowns/nix-search-cli

  • comma

    Comma runs software without installing it. [maintainers=@Artturin,@burke,@DavHau]

  • Relatedly, check out comma. It's basically a shortcut prefix command that will search packages for the binary you want to run (via nix-index), and gives you an interactive choice if there are multiple. Which package was drill in again? No matter, I'll just prefix a comma :)

    https://github.com/nix-community/comma

    You may want to submit this feedback as an issue to the nixos-search repository, where they have the indexing code and website interface. I have no idea who is in charge of Nix stuff and I find it all horrible to use, totally agreed with you that all basic package manager things you'd want to be able to do are basically impossible today with nix.

    https://github.com/NixOS/nixos-search

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • nixpkgs

    Nix Packages collection & NixOS

  • Are you using flakes? AFAIK `command-not-found` does not work with them. See https://github.com/NixOS/nixpkgs/issues/171054 and https://discourse.nixos.org/t/why-isnt-there-an-official-bui...

    I think `nix-index` works as a replacement: https://github.com/bennofs/nix-index

  • nix-index

    Quickly locate nix packages with specific files [maintainers=@bennofs @figsoda @raitobezarius]

  • Are you using flakes? AFAIK `command-not-found` does not work with them. See https://github.com/NixOS/nixpkgs/issues/171054 and https://discourse.nixos.org/t/why-isnt-there-an-official-bui...

    I think `nix-index` works as a replacement: https://github.com/bennofs/nix-index

  • cue

    The home of the CUE language! Validate and define text-based and dynamic configuration

  • > There is very poor ability to reason about the 'types'/shapes of arguments or the semantics

    A new configuration language designed to work with Nix, Nickel https://nickel-lang.org/ looks like a step in the right direction, but I think the language design of CUE https://cuelang.org/ is the largest local maxima in the expressiveness / complexity tradeoff that we've found. Nickel is inspired by CUE, but I'm concerned that they're stumbling over the design (#1121) due to missing one of the headlining features of CUE, the U: Unification.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts