← Back to blog

WSL was my development environment for a long time. It gave me Linux tools without leaving Windows, and for web development that was enough. The problem was not one dramatic failure. It was drift: packages installed over months, config changes I could not fully reconstruct, and a setup that worked because I remembered its history.

NixOS appealed to me because it changed the question. Instead of asking what I had installed, I could describe what the machine should be. The system configuration became a file I could read, version, and rebuild.

NixOS moved my development machine from accumulated state to declared state.

The old setup worked until I needed to reproduce it

WSL handled Node, Python, databases, and command-line tools well. The pain appeared when I wanted the same environment on another machine. I had notes, shell history, dotfiles, and memory, but not a complete system definition. That made every rebuild a small archaeology project.

With NixOS, the machine is described through configuration. Packages, services, shells, fonts, systemd units, container tools, and environment settings can all live in the same version-controlled setup. A rebuild applies that state. A rollback returns to the previous generation.

configuration.nix
environment.systemPackages = with pkgs; [
  bun
  nodejs_22
  python312
  uv
  postgresql_16
  redis
  podman
  neovim
  ripgrep
];

The learning curve is real

Nix has its own language and its own way of thinking. Simple package installation is easy. Understanding overlays, derivations, modules, and evaluation takes time. The early phase is slower than using Ubuntu or Fedora because every unusual setup sends you into documentation and examples.

The payoff is confidence. I can experiment with system changes and roll back. I can move a setup to another machine. I can inspect a commit and understand why a tool exists on the system. That has made my development environment calmer, not just more customizable.

Why I stayed

I stayed because the system fits how I already work. I like code review, versioned changes, reproducible builds, and explicit dependencies. NixOS applies that mindset to the machine itself. It is not the easiest Linux distribution to recommend broadly, but for my workflow it solved a real problem.

Next post →
© 2026 mont3llAvailable for work
loading portfolio000%