The main difference between NixOS and other Linux distributions is that NixOS does not follow the Linux Standard Base file system structure. On LSB-compliant systems (traditional linux systems) software is stored under /{,usr}/{bin,lib,share} and configuration is generally stored in /etc . In NixOS however /lib and /usr/lib do not exist. Instead all system libraries, binaries, kernels, firmware and configuration files are placed in the Nix store. The files and directories in /nix/store are named by hashes of the information describing the built data.  NixOS makes it easier to keep custom packages as part of your OS configuration. Rather than writing custom, imperative install scripts to run when setting up your machine, you can simply list your custom packages in your system’s package list, and they will be built automatically.  However there are essentially two fundamental design mistakes in NixOS that lead to the problems with it. Nix developers developed their own programming language to do configuration, which is not very good and is extremely difficult to learn. This is exacerbated by poor documentation — there are docs for learning Nix as a language, and docs for using NixOS, but the connection between those two things is essentially undocumented.
There are many other minor complaints about NixOS that stem from this — patching packages is theoretically easy, but annoying to figure out how to do in practice. The second flaw is that NixOS does not actually provide real isolation. This means that all software needs to be recompiled to work on NixOS, often with some terrifying hacks involved. It also means that it's impossible to statically know what other packages a given package might depend on. Currently, the way this is implemented is essentially grepping a package for /nix/store/ to try to figure out what the dependencies are, which is non optimal.
ข้อแตกต่างที่สำคัญระหว่าง NixOS และ Linux อื่นๆ คือ NixOS ไม่เป็นไปตามโครงสร้างระบบไฟล์ Linux Standard Base บนระบบที่สอดคล้องกับ LSB (ระบบ linux แบบดั้งเดิม) จะถูกจัดเก็บภายใต้ /{,usr}/{bin,lib,share} และโดยทั่วไปการกำหนดค่าจะถูกเก็บไว้ใน /etc อย่างไรก็ตามใน NixOS ไม่มี /lib และ /usr/lib ไลบรารีระบบ ไบนารี เคอร์เนล เฟิร์มแวร์ และไฟล์การกำหนดค่าทั้งหมดจะถูกวางไว้ในร้านค้า Nix แทน ไฟล์และไดเร็กทอรีใน /nix/store ได้รับการตั้งชื่อตามแฮชของข้อมูลที่อธิบายข้อมูลที่สร้างขึ้น NixOS ทำให้ง่ายต่อการเก็บแพ็คเกจแบบกำหนดเองไว้เป็นส่วนหนึ่งของการกำหนดค่าระบบปฏิบัติการของคุณ แทนที่จะเขียนสคริปต์การติดตั้งที่จำเป็นและกำหนดเองเพื่อให้รันเมื่อตั้งค่าเครื่องของคุณ คุณสามารถแสดงรายการแพ็คเกจแบบกำหนดเองของคุณในรายการแพ็คเกจของระบบ จากนั้นแพ็คเกจจะถูกสร้างขึ้นโดยอัตโนมัติ อย่างไรก็ตาม มีข้อผิดพลาดในการออกแบบพื้นฐานสองประการใน NixOS ที่นำไปสู่ปัญหาดังกล่าว นักพัฒนา Nix ได้พัฒนาภาษาการเขียนโปรแกรมของตนเองเพื่อทำการกำหนดค่า ซึ่งไม่ค่อยดีนักและเรียนรู้ได้ยากมาก สิ่งนี้ทวีความรุนแรงยิ่งขึ้นด้วยเอกสารที่ไม่ดี — มีเอกสารสำหรับการเรียนรู้ Nix เป็นภาษา และเอกสารสำหรับการใช้ NixOS แต่การเชื่อมโยงระหว่างสองสิ่งนี้นั้นไม่มีเอกสารเป็นหลัก มีข้อร้องเรียนเล็กๆ น้อยๆ อื่นๆ อีกมากมายเกี่ยวกับ NixOS ที่เกิดจากสิ่งนี้ ในทางทฤษฎีแล้ว แพตช์แพตช์นั้นง่ายในทางทฤษฎี แต่น่ารำคาญในการหาวิธีปฏิบัติในทางปฏิบัติ ข้อบกพร่องประการที่สองคือ NixOS ไม่ได้ให้การแยกตัวอย่างแท้จริง ซึ่งหมายความว่าซอฟต์แวร์ทั้งหมดจำเป็นต้องได้รับการคอมไพล์ใหม่จึงจะสามารถทำงานบน NixOS ได้ ซึ่งมักจะมีการแฮ็กที่น่ากลัวเข้ามาเกี่ยวข้องด้วย นอกจากนี้ยังหมายความว่าเป็นไปไม่ได้ที่จะรู้แบบคงที่ว่าแพ็คเกจอื่น ๆ ที่กำหนดนั้นอาจขึ้นอยู่กับแพ็คเกจใด ในปัจจุบัน วิธีการนำไปใช้คือการรวบรวมแพ็คเกจสำหรับ /nix/store/ เพื่อพยายามค้นหาว่าการขึ้นต่อกันคืออะไร ซึ่งไม่เหมาะสมที่สุด
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence