How to Learn Nix

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

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • 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.

    InfluxDB logo
  • 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

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • 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

  • Nix: An idea whose time has come

    17 projects | news.ycombinator.com | 18 Feb 2022
  • 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
  • Posao kao inzinjer informatike, ali bez programiranja

    2 projects | /r/CroIT | 18 Apr 2023