How to Learn Nix

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

CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
InfluxDB high-performance time series database
Collect, organize, and act on massive volumes of high-resolution data to power real-time intelligent systems.
influxdata.com
featured
  1. 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

  2. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  3. 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.

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

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

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

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

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

  9. InfluxDB

    InfluxDB high-performance time series database. Collect, organize, and act on massive volumes of high-resolution data to power real-time intelligent systems.

    InfluxDB logo
  10. 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

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

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

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

  • Nix: An idea whose time has come

    17 projects | news.ycombinator.com | 18 Feb 2022
  • Adding algebraic data types to Nickel

    3 projects | news.ycombinator.com | 7 Sep 2024
  • What config format do you prefer?

    11 projects | /r/rust | 4 Jul 2023
  • LTO by default

    2 projects | /r/NixOS | 11 Jun 2023
  • Announcing Nickel 1.0, a configuration language written in (and usable from) Rust

    11 projects | /r/rust | 8 Jun 2023

Did you know that Rust is
the 5th most popular programming language
based on number of references?