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!