--- title: Nix as an operating system date: 2024-11-27 permalink: daily/2024/11/27/nix-as-an-operating-system tags: - software-development - linux - nix - nixos cta: ~ snippet: | If you like the declarative approach to installing and configuring packages with Nix, you do the same with your entire operating system with NixOS. --- Yesterday, [I showed some of the Nix programming language][0] and how to use it to perform tasks such as installing and configuring packages. I like this declarative approach as you know everything installed on your system and its configuration. [There are no random or leftover packages or configuration files][1]. The Nix package manager can be installed on Linux or macOS, but you can also use Nix to configure your whole operating system in a declarative way thanks to NixOS. As well as installing and configuring packages, you can define your firmware version, boot loader, disk partitioning, user accounts and more. I used to do this type of automation with Ansible but switched to NixOS soon after trying Nix on another Linux distribution. If I need to work on a different laptop, like when mine recently died, I can apply the same configuration and get all the same programs and configurations as before. If you want to see my current NixOS setup, you can [see it on my GitHub][2]. [0]: {{site.url}}/daily/2024/11/26/the-nix-language [1]: {{site.url}}/daily/2024/11/23/no-more-random-packages [2]: https://github.com/opdavies/dotfiles