← Writings

why i use nixos

reproducible packaging

write one config / package an app once, and it runs on any machine that has nix. no “works on my machine” — the same definition builds the same thing everywhere.

how is this different from docker? docker is a container platform, mostly used to bundle and isolate a single app. nix(os) is broader: it’s tooling that can encompass a whole range of other tooling — including docker itself.

development & deployment environments

write a flake.nix with every tool you need pinned to an exact version, plus your environment variables and hooks (pre/post commands). then run:

nix develop

now you’re in an isolated shell with all your tooling and variables ready to go — and nothing installed globally. two projects that need different versions of the same tool, or different variables, never collide.

the same flake works for deployment too, so the environment you develop in is the environment you ship.

and that’s just the start

the sky’s the limit here — there’s so much more you can do.