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
  • CodiumAI - TestGPT | Generating meaningful tests for busy devs
  • ONLYOFFICE ONLYOFFICE Docs — document collaboration in your environment
  • InfluxDB - Access the most powerful time series database as a service
  • SonarLint - Clean code begins in your IDE with SonarLint
  • 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

  • CodiumAI

    TestGPT | Generating meaningful tests for busy devs. Get non-trivial tests (and trivial, too!) suggested right inside your IDE, so you can code smart, create more value, and stay confident when you push.

  • nixos-config

    Flake-based Nix / NixOS configuration for MacOS, x86, and VMs ✨ (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. [[email protected],@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

  • ONLYOFFICE

    ONLYOFFICE Docs — document collaboration in your environment. Powerful document editing and collaboration in your app or environment. Ultimate security, API and 30+ ready connectors, SaaS or on-premises

  • nixpkgs

    Nix Packages collection

    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

    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