More specifically, issues for one distro (or maybe family of distros if applicable) and not other distros.
I’ll start: NixOS. I love how I can have my whole operating system configuration defined deterministically with configuration files, but what I believe is a serious flaw, is when you choose the “unstable” channel, the channel for receiving the latest packages rather than ones up to 6 months old: stable. Unstable package often build dependencies on device, and I’ve often faced build failures, why are new package versions given if they fail to build?!
Why can’t Nixpkgs backend ensure that new package versions build successfully before shipping them to end users?! It would take a lot of work to do so, but I can’t think of any other distros that have this problem: where installing a new package version that came out a few days or even a week ago, has a chance of failing after its made available in the distro’s official package manager.
There are a handful of workarounds for your NixOS configuration in this case, but it happens too often for me and I shouldn’t have to edit my config for to work around it.


At least you were intellectually honest about NixOS rather than blaming them.
I swear by it but had a year or two where I was struggling. Particularly with languages like Python, it can be tough to train yourself in the Nix way (or to wrap compilation and dependency management into the nix paradigm in this case). With languages like Haskell though, the Nix way goes hand-in-hand with it.
I’ve found Zig to work well with Nix. And there are ways to use Nix REALLY elegantly with Python
Here’s an example of how you’d provision a super simple nix flake dev environment in x86_64 Linux for undetected web scraping with Python
# save this as flake.nix then run nix develop in the root of the repo { description = "Web Scraper"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=nixpkgs-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils }: utils.lib.eachSystem ["x86_64-linux"] (system: let pkgs = import nixpkgs { system = system; }; in rec { packages = { pythonEnv = pkgs.python3.withPackages (ps: with ps; [ webdriver-manager openpyxl pandas requests beautifulsoup4 websocket-client selenium keyboard ]); }; devShell = pkgs.mkShell { buildInputs = [ pkgs.chromium pkgs.undetected-chromedriver packages.pythonEnv ]; shellHook = '' export PATH=${pkgs.chromium}/bin:${pkgs.undetected-chromedriver}/bin:$PATH ''; }; }); }