rel:: [[Operating Systems MOC|Operating Systems]]
# NixOS
**NixOS** is a [[Linux]] distribution built on top of the [[nix]] package manager. It uses declarative programming configuration and allows reliable system upgrades
## Reference
- [NixOS Manual](https://nixos.org/manual/nixos/stable/)
- [Nixpkgs Manual](https://nixos.org/manual/nixpkgs/stable/)
- [Nixpkgs Search](https://search.nixos.org/packages)
- [Community Wiki](https://nixos.wiki/)
- [Cheat Sheet and comparison to Ubuntu](x-devonthink-item://7BBEEA9A-B9C2-47FE-BC0F-720D5F465438)
- [dev env example from mitchellh](https://github.com/mitchellh/nixos-config)
- [Nix journey part 0](https://tinkering.xyz/nix-docs/)
- [zero-to-nix](https://zero-to-nix.com/start)
- [how to patch a package source](https://drakerossman.com/blog/how-to-patch-a-package-source-on-nixos)
### Flakes
> A flake is simply a source tree (such as a Git repository) containing a file named flake.nix that provides a standardized interface to Nix artifacts such as packages or NixOS modules. Flakes can have dependencies on other flakes, with a “lock file” pinning those dependencies to exact revisions to ensure reproducible evaluation.
[source](https://www.tweag.io/blog/2020-05-25-flakes/)
- [docs](https://nixos.wiki/wiki/Flakes)
- [practical nix flakes](https://serokell.io/blog/practical-nix-flakes)
- [Nix Based C++ Workflow From Scratch](x-devonthink-item://18CAE7A8-5617-47C2-BF13-A90B89E5238E)
- [Quick C++ Project Setup](https://blog.galowicz.de/2023/01/16/cpp-qt-qml-nix-setup/)
- [nix helpers](https://github.com/jlesquembre/clj-nix) for [[Clojure]] projects
### Debug Symbols
- [wiki/Debug_Symbols](https://nixos.wiki/wiki/Debug_Symbols)
- [issues/18530](https://github.com/NixOS/nixpkgs/issues/18530)
- [SO question](https://unix.stackexchange.com/questions/432284/nixos-how-do-i-install-debug-symbols-into-my-nix-profile-from-a-custom-package) + home manager instructions