Rethinking package management

#nixos

Rok Garbas, @garbas

pycon ireland 2016

Me:

- live in berlin

- work at mozilla (releng)

- I don't drink beer

- I don't use a phone

- I don't like current state of package management

Agenda

- (Nix) terminology in a slide

- What problems Nix solve

- Bonus: Nix + Python

- Why is PM still a problem?

- Bonus: Nix + Docker

- Bonus: What is NixOS?

Problems with PM

Upgrade problem (dependency hell)

Reproducibility

Too many tools

NixOS

Nix Expression language

nixpkgs

nixops

Nix

Hydra

Reproducibility

Deterministic

Referentially transparent

Pure

Stateless


def add(a, b):
    return a + b

add(1, 2)

def add(a, b):
    if is_monday():
        return None
    else:
        return a + b


assert add(1, 2) == 3
# above fails on mondays

Atomic

Works on my machine

Rollbacks

Multiple envs

Source / Binary

Installing Nix

curl https://nixos.org/nix/install | sh

Uninstalling Nix

rm -rf /nix

Demo time

NixOS Community

~500 services

~900 contributors

~11k packages

~13k pull requests / ~4k issues

Caveats of Nix/NixOS

quick "hacks" are hard/impossible

documentation is good but not beginner friendly

steeper learning curve

disk space

no management of application state

Thank you

Questions?

@garbas

NixOS Meetup in Dublin

http://www.meetup.com/NixOS-Dublin

Rethinking package management

By Rok Garbas

Rethinking package management

  • 1,880