📕 Node [[20200629132641 so_tell_me_about_nix]]
📄 20200629132641-so_tell_me_about_nix.md by @ryan

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 programming]] language, basically describes system configuration like state = nextState(currentState)

Resources (from article)

Loading pushes...

Rendering context...