Slide 1

Slide 1 text

NIX/NIXOS ILUGC Sibi Prabakaran Jan 8, 2022

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

AGENDA My experience with Nix/NixOS Introduction Why Nix

Slide 4

Slide 4 text

MY EXPERIENCE Tried NixOS around 5 years ago Initially used nixpkgs in Ubuntu For around ~1.5 years Using NixOS for ~ 1 year Maintainer of various packages

Slide 5

Slide 5 text

NIX/NIXPKGS/NIXOS Nix: Pure, lazy functional language. Not a general purpose language! Used for package description, composition Nixpkgs: Collection of packages. NixOS: Linux + nixpkgs System configuration also managed via Nix

Slide 6

Slide 6 text

WHY NIX/NIXOS Reproducibility bit identical Multiple versions of a software Atomic upgrades and rollbacks Declarative

Slide 7

Slide 7 text

BASIC WORKFLOW configuration.nix home manager writing script Usage is pretty similar to other distros.

Slide 8

Slide 8 text

NIX LANGUAGE Lazy, Functional and Pure Functions, Sets, Lists etc. Reference: https://nixos.wiki/wiki/Nix_Expression_Language

Slide 9

Slide 9 text

NIX EXPRESSION Code written in Nix language ❯ nix-instantiate --eval --expr "2 + 2" 4 ❯ cat example.nix 2 + 2 ❯ nix-instantiate --eval example.nix 4

Slide 10

Slide 10 text

REAL WORLD NIX CODE Package: systemd service: amber cnx

Slide 11

Slide 11 text

NIX DERIVATIONS Recipe to build the end product. Reproducible & Deterministic ❯ fd -e drv nix /nix/store | head -n 5 /nix/store/ix9j7fmxpfp7c0b2rn95wyy5y1803mya-nixos- manual.desktop.drv /nix/store/2a6ylyfsxb8knnana40fbnmk8ka7q1na-etc- nixos.conf.drv /nix/store/6r57mn57p9rgijr0lsfihkdkk2djkv86-nixos- manpages.drv /nix/store/ppsdnzviyi9q2xqak9qk0w16hpj30frj-nixos.conf.drv /nix/store/bp7flklzjxhm966b0d0pxi85dg4zbqpa-nix-prefetch- cvs.drv

Slide 12

Slide 12 text

DERVIATION.. ❯ nix show-derivation derivation

Slide 13

Slide 13 text

COMMUNITY 80,000 packages Easy to add package as compared to other distributions Images available for cloud providers nix-community organization

Slide 14

Slide 14 text

DISADVANTAGES No secure boot. Nix specific issues! Learning curve Debugging experience Size of user community Things are still changing: Flakes!

Slide 15

Slide 15 text

QUESTIONS