Products · Product
Nix
Raised as a usability problem by 522 people on Hacker News over 14 years (2013–2026), in 291 threads.
- 1
- 2
- 3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23No resource makes it click for learnersUnreviewed
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29No resource makes it click for learnersUnreviewed
- 30
- 31
- 32
- 33
- 34
- 35
Every issue, all time, most people first
- Something wrong here?
Takes ages to learn Nix with too little documentationReviewed
20132026 Flake docs mixed with experimental status, so users must work out methodsUnreviewed
20132026- Enabling experimental flakes is confusing and errors are cryptic when flake is unstaged2025-12-02
- Flakes are disabled by default in the official installer, so users must discover and enable them2025-05-26
- Flakes still experimental, so documentation is mixed and users must work out how to do things in flakes2025-05-26
Builds are slow, so many small build steps are costlyUnreviewed
20132026- No standard way to containerize Nix builds; building becomes error prone and annoying2026-08-28
- Nix builds are slow, so many small build steps are costly2026-03-08
- Converting a system to the Nix way takes significant time and is easy to get stuck on2026-01-02
Pinning versions not in nixpkgs requires overlays and hacksUnreviewed
20132026- Pinning older software versions in Nix was harder than expected2026-10-20
- Packaging something missing or a different version can take 20 to 2000 lines of Nix2026-10-11
- Patching a nixpkgs package definition is hard and too slow2025-02-22
Sparse documentation forces reverse-engineering package definitionsUnreviewed
20132026- Hard to tell what code evaluates to; reading and understanding are far apart2025-07-18
- Lack of package docs forces reading source code to configure anything advanced2024-10-23
- Hard for newcomers to tell what code does due to idioms and semicolons2024-10-02
Getting a working shell.nix setup is much harder than DockerUnreviewed
20132026- Getting to a working shell.nix setup is much harder than with Docker2023-12-03
- Lacks good docs, so setting up dev environments is a struggle2022-11-08
- Installing Nix on OS X is a huge pain, harder than Docker2022-04-05
Packaging own software becomes endless rabbit hole with sparse docsUnreviewed
20132026- Packaging binary programs needs confusing monkey-patching; many things can't be found or configured easily2025-01-14
- When builds fail, packaging becomes gnarly, with little systematic documentation of compat problems2024-01-04
- Hard to use when a program you need isn't packaged; requires learning2022-10-13
Commands and flags are hard to memorize, requiring shell aliasesUnreviewed
20132026- Commands and flags are hard to memorize, requiring shell aliases2026-03-22
- Original CLI tools aimed at developers, hard for end-users to use2024-07-23
- Commands are harder to remember and more complex than Homebrew equivalents2023-11-03
Tutorials start with details, so learners miss the big pictureUnreviewed
20132026- Much more to learn and more places to get confused than simpler tools2025-08-27
- Getting-started page lacks basics; next-step links don't help and later tutorials are hard to find2022-12-25
- Introductory material is confusing and unhelpful for beginners, with no real guidance2022-12-25
Outdated build instructions hide dependency problems one after anotherUnreviewed
20132026- Outdated build instructions; each dependency problem uncovered another, forcing repeated giving up2025-04-10
- Took hours to get a package build working, then needed manual version pinning to avoid constant recompiles2024-01-09
- Outdated docs and confusing commands make adding and updating packages hard2023-06-10
Problems wrapper tools hide leave users stuck and forced to restartUnreviewed
20132026- Hard to tell whether Nix is still running; checking requires jumping through hoops2026-08-12
- Nix presents difficulties that wrapper tools hide, leaving users stuck and forced to restart2023-08-31
- Nix repeatedly blocks ordinary user activities, making it hard to use2023-08-11
Docs too hard for casual users to do small tasksUnreviewed
20132026- Docs are fragmented across sites, mix versions, and have many broken links2026-08-08
- Docs are terrible and outdated, sending users down wrong paths2022-07-20
- Docs aimed at full read-through, not useful for casual, occasional users2021-04-09
Package names hard to find, inconsistent, with versions mixed inUnreviewed
20132026- Hard to find package names; names inconsistent, versions mixed into names2024-01-09
- Hard to find which package name to install for a program2023-05-25
- Same name used for language, CLI and package manager, confusing newcomers2023-01-24
Simple tasks take immense time and custom packages are hardUnreviewed
20132026- Simple tasks take immense time, and writing custom packages is harder than fixing other systems2024-12-22
- Getting a developer environment running takes far longer than conventional setup, with native library pain2023-05-08
- Simple tasks take hours; configuring and defining packages is a grind2023-01-23
Debugging lazy language errors requires bisecting small changesUnreviewed
20132026- Errors surface in non-obvious places because the language is lazy2025-11-20
- Lazy interpreter produces very hard-to-read errors and much is undocumented2024-08-22
- Severely unintelligible errors from bad typing or syntax, with little documentation on expected types2022-02-19
Hard to read and learn even for experienced programmersUnreviewed
20132026- The language is impossible to learn, with few good guides available2024-05-23
- Language is badly designed and unintuitive, hard to remember and awkward to write2022-09-02
- Hard to read and learn, even for someone experienced with about 20 other languages2022-01-07
Changes to flake.nix don't apply until staged in gitUnreviewed
20132026- Changes to flake.nix don't apply until staged in git, a repeated trap2026-10-11
- Flakes ignore git-omitted files, forcing messy workarounds for user secrets2024-09-19
- Constantly having to rewrite flake configuration as the modern approach changes2024-02-09
Package search takes about half a second to runUnreviewed
20132026- Spends a lot of time just finding a package's name and attribute path2024-01-10
- Package search is slow, taking about half a second to run2022-02-19
- Installing packages is unbearably slow, leaving users waiting at the screen2022-02-19
Can't remove a package by the name used to install itUnreviewed
20132026- Removing packages by name fails because matching only checks the attribute path, not the package name2022-08-06
- Uninstall and upgrade require package names, which is confusing and error-prone2022-03-15
- Removing a package by the same name silently does nothing, with no error or confirmation2022-02-19
Must learn maintainer-chosen config options instead of standard configurationUnreviewed
20132026- Must learn maintainer-chosen abstracted config options instead of standard configuration2024-10-25
- Config options are inconsistently named and have spotty coverage, making it hard to use2022-05-30
- Configuration setting names are inconsistent and arbitrary, hard to learn2021-07-13
nix-env --upgrade doesn't do what users expectUnreviewed
20132026- Upgrading one program forces updating all of nixpkgs, risking breakage elsewhere2025-06-07
- Ctrl-C during update leaves Nix broken, with no uninstall and manual cleanup needed2023-03-06
- Nix-env -u is broken and doesn't do what users expect from upgrade2021-11-22
Too many ways to do the same thing with no clear choiceUnreviewed
20132026- Too many ways to do one thing, making configurations hard to decipher2026-10-11
- Too many ways to do the same thing, with no clear way to choose2025-04-10
- Confusing, awkward language with multiple ways to do the same task2024-10-25
Switching profiles silently removes Nix from PATH, undocumentedUnreviewed
20132026- Nix tooling fails to set RPATH automatically, leaving users with baffling missing-library errors2024-07-10
- Switching profiles silently removes Nix from PATH, and docs don't warn about it2023-08-13
- Nix profile update does nothing after adding a flake, and the user is confused2022-07-21
Overlapping concepts make it hard to find the right docsUnreviewed
20132026- Confusing overlapping concepts make it hard to find the right docs2024-10-27
- Too many overlapping ways to install packages, and documentation is scattered across sources2022-02-20
- Too many overlapping official ways to do things, confusing to learn2021-04-09
Docs skip real-world integration, so adding a package takes trial and errorUnreviewed
20132026- Experience varies wildly per package; costs time navigating the repository2025-04-11
- Hard to integrate with other package managers; constant fighting to get things working2021-09-20
- Docs skip most real-world package integration; adding a package takes a week of trial and error2019-11-27
All-or-nothing adoption disrupts existing developer workflowsUnreviewed
20132026- No settled recommended workflows, so newcomers struggle to know how to start2025-01-14
- Newcomer can't tell which of several Nix workflows is the officially expected one2024-03-16
- Hard to fit into existing developer workflows; all-or-nothing and too disruptive to adopt2023-10-13
No resource makes it click for learnersUnreviewed
20132026- Too many separate things to learn before it starts to click2025-04-10
- Too complicated to learn, no resource makes it click2024-12-08
- Nearly impossible to learn and convoluted to use2022-08-03
Helper functions have unclear arguments and poor documentationUnreviewed
20132026- Inconsistent idioms and obscure helper functions add mental overhead for learners2022-01-24
- Helper functions are confusing, with unclear arguments and poor documentation2021-06-12
- Helper function docs are buried in a long manual or missing2017-10-15
Beginners can't install packages with docs and CLI as they areUnreviewed
20132026- Tutorials break across CLI versions, and simple tasks like search and install are difficult2022-02-19
- CLI feels confusing from a UX standpoint, and it's unclear what to use to install packages well2021-10-10
- Steep learning curve; docs and CLI insufficient for beginners to install packages2020-11-23
Adding a Python library requires editing a separate repoUnreviewed
20132026- New module files are invisible to Nix until added to git, which is unintuitive2025-12-02
- Adding a package requires rebuilding at Nix level and restarting Emacs2022-11-29
- Adding a Python library requires editing a separate Nix repo instead of normal tooling2022-04-19
Lazy evaluation causes confusing infinite loops when debuggingUnreviewed
20132026- Module system errors are very hard to troubleshoot due to lazy evaluation2025-12-02
- Lazy evaluation causes confusing infinite loops and makes debugging harder than needed2022-03-15
- Can't print values for debugging because lazy evaluation triggers unpredictable store operations2022-01-24
Struggles to get simple self-contained flake examples workingUnreviewed
20132026- Figuring out the syntax to install font files from a flake was maddening2024-01-09
- Finds flake syntax confusing and struggles to get simple self-contained examples working2023-08-31
- Flake reference syntax like '.#cowsay' is non-trivial and hard for most people to understand2023-06-16
Basic fixes need tribal knowledge and hundreds of lines of codeUnreviewed
20132026- Common issues need tribal knowledge and lots of custom code to fix, with bad error messages2025-06-08
- Basic use problems need tribal knowledge and dozens to hundreds of lines of code to fix2025-06-08
- Hard to use and learn, like messy legacy codebases2022-09-02
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Configuring things the Nix way is annoying and requires looking things up2026-11-02
- Pinning older software versions in Nix was harder than expected2026-10-20
- Nix is painful, fragile and inscrutably complex for users to understand2026-10-15
- Takes time to build intuition; packages assume globals and friction arises with precompiled dependencies2026-10-13
- Too many ways to do one thing, making configurations hard to decipher2026-10-11
- Documentation was so poor the user kept getting stuck and gave up setting up NixOS2026-10-11
- Changes to flake.nix don't apply until staged in git, a repeated trap2026-10-11
- Nix errors are obtuse, leaving users confused and stuck2026-10-11
- Hard to figure out how to configure Nix for less popular software2026-10-11
- Packaging something missing or a different version can take 20 to 2000 lines of Nix2026-10-11
- Awkward and slow to use for fine-grained caching, needing one derivation per object file2026-09-26
- Awkward and slow to use for fine-grained caching2026-09-26
- No standard way to containerize Nix builds; building becomes error prone and annoying2026-08-28
- Hard to tell whether Nix is still running; checking requires jumping through hoops2026-08-12
- Hard to remember Nix commands; experimental features stay experimental, hard for ordinary users2026-08-08
- Docs are fragmented across sites, mix versions, and have many broken links2026-08-08
- Nix language is hard to learn because documentation is poor and confusing2026-08-03
- Official documentation is lacking; learners rely on outdated, unofficial resources2026-06-18
- Overall UX described as more hostile than git2026-06-11
- Hard to understand and partially adopt, poorly documented, so the author abandoned it2026-05-06
- Basic tasks are absurdly complicated, taking days of wrestling with libraries and docs2026-04-09
- Documentation is very hard to understand, making adoption harder2026-04-09
- Nix ergonomics are hard to get around, so new users struggle at first2026-03-23
- Official recommendations and docs push newcomers into a confusing path2026-03-23
- Configuration language is hard to debug and feels recursive and convoluted2026-03-22
- Easy to introduce footguns; Nix lends itself to poking around in the dark2026-03-22
- Writing your own Nix expressions is so bad it makes the author angry2026-03-22
- Commands and flags are hard to memorize, requiring shell aliases2026-03-22
- Basic commands fail on FreeBSD, so the package manager feels broken and unusable2026-03-22
- Plenty of recipe-style docs but no design documents explaining the system2026-03-19
- Nix builds are slow, so many small build steps are costly2026-03-08
- Nix documentation was hard enough to drive the commenter away2026-01-11
- Nix language and some tooling are hard to understand2026-01-11
- Developer experience is rough, with complexity forcing users to debug Nix itself2026-01-03
- Declarative Homebrew config often doesn't work as expected and breaks2026-01-02
- Adds complexity, so users must debug Nix instead of their tools2026-01-02
- Converting a system to the Nix way takes significant time and is easy to get stuck on2026-01-02
- Error messages don't show where the failure is, forcing toggling of packages to find the cause2025-12-23
- Setting up Nix to auto-install script dependencies has a steep learning curve2025-12-13
- Nix documentation is bad and the Nix language is hard to learn2025-12-06
- Module system errors are very hard to troubleshoot due to lazy evaluation2025-12-02
- Enabling experimental flakes is confusing and errors are cryptic when flake is unstaged2025-12-02
- New module files are invisible to Nix until added to git, which is unintuitive2025-12-02
- Forgetting parentheses around function calls in lists causes confusing errors elsewhere2025-11-30
- Hard to know which nixpkgs abstraction to use and its required structure2025-11-30
- Spent 7+ hours failing to get a simple configuration working; inconsistent examples and docs2025-11-30
- Felt awkward and fragile on macOS, and Nix syntax takes learning2025-11-30
- Errors surface in non-obvious places because the language is lazy2025-11-20
- Error messages are terrible, and the user cannot figure out why package combinations fail2025-11-20
- Steep learning curve and obscure config syntax overwhelm the user2025-11-14