How to Learn Nix

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
  • lorri

    Your project’s nix-env [maintainer=@Profpatsch,@nyarly] (by nix-community)

    I extensively use nix-shell if that falls under ad-hoc package management. Together with lorri[0], I can place a `shell.nix` in my project repository and when cd'ing into the folder, I will be dropped in a shell with all project specific dependencies available to me.

    [0]: https://github.com/nix-community/lorri

  • dhall

    Maintainable configuration files

    If the problem is the syntax and people wants some other format that compiles to nix, there's dhall

    https://dhall-lang.org/

    https://github.com/dhall-lang/dhall-haskell/tree/master/dhal...

    https://www.haskellforall.com/2017/01/typed-nix-programming-...

    Dhall is a generic config language with some programming capabilities (but not turing complete) that can compile to json, yaml, and other formats, like in this instance nix.

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

  • dhall-lang

    Maintainable configuration files

    If the problem is the syntax and people wants some other format that compiles to nix, there's dhall

    https://dhall-lang.org/

    https://github.com/dhall-lang/dhall-haskell/tree/master/dhal...

    https://www.haskellforall.com/2017/01/typed-nix-programming-...

    Dhall is a generic config language with some programming capabilities (but not turing complete) that can compile to json, yaml, and other formats, like in this instance nix.

  • nix-gui

    Use NixOS Without Coding

    I think the point is that Nix makes it a lot easier (in some ways) to build a more reliable system GUI, rather than other package managers because of the immutability things.

    Users shouldn’t have to care what their GUI uses underneath, but it could be the difference between building your own pseudo-declarative layer (which you now have to maintain in perpetuity and handle all the small edge cases), or getting something that is already declarative as the backend and simply generating a config file from the GUI (https://github.com/nix-gui/nix-gui)

  • nixpkgs

    Nix Packages collection & NixOS

    No experience with ruby but nixpkgs has sections for many languages. See ruby: https://github.com/NixOS/nixpkgs/blob/master/doc/languages-f.... Also a quick search on the NixOS wiki gives this: https://nixos.wiki/wiki/Packaging/Ruby.

    This is less packaging related (more nix lang related) but here is my go to resource for functions: https://teu5us.github.io/nix-lib.html. teu5us extracted the builtin/lib function docs and put them on one place saving you from having it split up into multiple manuals.

    One issue with nix is the content has been written down it’s very inaccessible. It is split up between blog posts, discourse, nixpkgs code comments, the wiki, Reddit, etc. When working on something in nix I’ll frequently have 10+ sources of information. The google-fu needed is strong.

    My biggest recommendation is to dive into the nixpkgs repo and other public dotfiles as most likely what you are doing has been done.

  • nix-template

    Make creating nix expressions easy

    It sounds like https://github.com/jonringer/nix-template might be helpful to you. You can generate a nix expression to build an autotools package, and you can even pull the package info straight from a public repo. In the case of nix, most C-type things fall under stdenv, so that is the template you would want to use.

    I barely write any C, but I've gotten very good at building C/C++ applications over the past couple of weeks by fixing broken derivations ahead of a release.

  • bramble

    Purely functional build system and package manager (by maxmcd)

    I've been looking into Nix a lot lately (but have yet to take the leap - I'll probably start with devshell)

    But a couple of projects have come up lately that piqued my interest wrt syntax and alteratives (Since I am not sure about Scheme anymore than Nix (as a langauge) :-)

      * https://github.com/maxmcd/bramble

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

  • dotfiles

    A collection of my dotfiles (by siraben)

    I recently got into running my own NixOS server—setting up Nextcloud[0], a website[1], DNS server and most recently a mail server[2] were all incredibly easy, in fact, setting up DNS records is more involved than configuring a mail server on NixOS! This was all done on a server with less than 10 GB of disk space as well.

    With additional software such as NixOps, personal servers can also be easily spun up and provisioned.

    While inevitably there are rough edges if you look deeply enough, I think the default OOTB experience has been incredible for use on a server and as a day-to-day distro. Highly predictable and declarative configurations is the way to go.

    [0] https://github.com/siraben/dotfiles/blob/ffaaacf8888a5c4167b...

    [1] https://siraben.dev

    [2] https://gitlab.com/simple-nixos-mailserver/nixos-mailserver

  • I recently got into running my own NixOS server—setting up Nextcloud[0], a website[1], DNS server and most recently a mail server[2] were all incredibly easy, in fact, setting up DNS records is more involved than configuring a mail server on NixOS! This was all done on a server with less than 10 GB of disk space as well.

    With additional software such as NixOps, personal servers can also be easily spun up and provisioned.

    While inevitably there are rough edges if you look deeply enough, I think the default OOTB experience has been incredible for use on a server and as a day-to-day distro. Highly predictable and declarative configurations is the way to go.

    [0] https://github.com/siraben/dotfiles/blob/ffaaacf8888a5c4167b...

    [1] https://siraben.dev

    [2] https://gitlab.com/simple-nixos-mailserver/nixos-mailserver

  • envfs

    Fuse filesystem that returns symlinks to executables based on the PATH of the requesting process.

    Check out envfs, which automagically puts symlinks like that in place for you in a systematic way!

    https://github.com/Mic92/envfs

  • nonguix

    Nonguix mirror – pull requests ignored, please use upstream for that

    It's called "Guix System" :)

    If you have hardware that requires non-free firmware you can use the "linux" package from the nonguix channel: https://github.com/nonguix/nonguix/

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