📕 subnode [[@ryan/20200629132641 so_tell_me_about_nix]] in 📚 node [[20200629132641-so_tell_me_about_nix]]

Notes

  • Nix is:

    • A package manager

    • A programming language

    • An operating system (NixOS, a Linux distro)

  • Nix can be used like brew or apt

    # this will install curl
    nix-env -iA curl
    
  • Nix's selling point is that it's capable of reproducible builds

  • One thing that's unique about Nix (the package manager) is that you can create ad-hoc development environments

    # this spawns a new shell with curl installed
    # once this shell is exited, it will no longer be available
    nix-shell -p curl
    
  • nix-shell allows for the creation of isolated development environments

  • NixOS, unlike other Linux distros, allows a user to specify their configuration using the Nix package manager

    • For example, if I wanted to create a user whose default shell was zsh, I could do this via a configuration. The rest of my system's configuration would live here too

    • This also allows for rollbacks to any previous configuration

    • Nix, being a functional programminglanguage, basically describes system configuration like state nextState(currentState)=

Resources (from article)

📖 stoas
⥱ context