it takes a bit to “get it” but once you do…man you’ll never use another distro again. The thing with NixOS is that it “makes the hard things easy, and the easy things hard”. System configuration, kernel configs, hardware configs, etc are an absolute breeze on NixOS but something more simple can be a bit of a struggle.
You can configure your system however you want. just want to use the one configuration.nix file? go for it. want to cut up your system into individual easy to manage modules that are turned off and on via a nix flake? have at it. there’s really no wrong or right way to configure your NixOS build so you can really get your entire system to be specific to you personally.
Add to the fact you can git repo your entire configuration. So say you want to take your current build and slap it on another machine then it’s a cakewalk. in 15min or so you can replicate, entirely, your system configuration from one computer to another. that includes terminal, window manager, whatever configs. just git clone your nixos configuration, rebuild on the new machine, and you’re off to the races.
If you do any kind of development work then NixOS makes that a breeze also. you can flake your project directories so packages, libraries, etc are specific to that project. Therefore the whole “well it works on my machine” never applies ever again because your project will now work on ALL machines that have Nix. you can also use things without needing to install them via nix-shells. So say you do web development and want to test something on various browsers without having to install said browsers. that’s easy. nix-shell -p firefox will download a firefox build to your system and open it. you can then use it just like you would if it was actually installed. Once you exit the terminal it goes away and off your system. So you can try out programs, packages, whatever without having to commit to them. to make it easier I use a tool called “comma” where all I have to do in the terminal is something like " , fastfetch" and it will launch fastfetch. it’s not actually installed on my system though. I do the same for btop or anything I might use every once in awhile but not often.
another thing I love about NixOS is because it’s declarative you know EXACTLY what is on your system because YOU put it there. so it’s not like other distros where you can install a bunch of stuff and then lose track of it thus cluttering up your system. you don’t get that in NixOS because you see everything that’s installed within your nix config.
Finally Nix Generations are a life saver. Everytime you rebuild it saves a previous version of your build. So say you configure something or install a package or whatever and it breaks your system it’s no big deal at all. just go back to a previous generation and you’re back to a working system where you can just remove whatever it is that broke it. You can also pin applications to whatever version you want. So say you have something that worked but an update broke it it’s not a big deal, you can just pin that app to a working version. For example I use QBZ which is a gui player for Quboz. recently the maintainer decided to stop updating it. no big deal I’ve pinned it to the last working version so I can still use it and it will persist after updates.
It REALLY is a great distro. takes a bit to wrap your head around it but once you do you honestly won’t use anything else again.
it takes a bit to “get it” but once you do…man you’ll never use another distro again. The thing with NixOS is that it “makes the hard things easy, and the easy things hard”. System configuration, kernel configs, hardware configs, etc are an absolute breeze on NixOS but something more simple can be a bit of a struggle.
You can configure your system however you want. just want to use the one configuration.nix file? go for it. want to cut up your system into individual easy to manage modules that are turned off and on via a nix flake? have at it. there’s really no wrong or right way to configure your NixOS build so you can really get your entire system to be specific to you personally.
Add to the fact you can git repo your entire configuration. So say you want to take your current build and slap it on another machine then it’s a cakewalk. in 15min or so you can replicate, entirely, your system configuration from one computer to another. that includes terminal, window manager, whatever configs. just git clone your nixos configuration, rebuild on the new machine, and you’re off to the races.
If you do any kind of development work then NixOS makes that a breeze also. you can flake your project directories so packages, libraries, etc are specific to that project. Therefore the whole “well it works on my machine” never applies ever again because your project will now work on ALL machines that have Nix. you can also use things without needing to install them via nix-shells. So say you do web development and want to test something on various browsers without having to install said browsers. that’s easy.
nix-shell -p firefoxwill download a firefox build to your system and open it. you can then use it just like you would if it was actually installed. Once you exit the terminal it goes away and off your system. So you can try out programs, packages, whatever without having to commit to them. to make it easier I use a tool called “comma” where all I have to do in the terminal is something like " , fastfetch" and it will launch fastfetch. it’s not actually installed on my system though. I do the same for btop or anything I might use every once in awhile but not often.another thing I love about NixOS is because it’s declarative you know EXACTLY what is on your system because YOU put it there. so it’s not like other distros where you can install a bunch of stuff and then lose track of it thus cluttering up your system. you don’t get that in NixOS because you see everything that’s installed within your nix config.
Finally Nix Generations are a life saver. Everytime you rebuild it saves a previous version of your build. So say you configure something or install a package or whatever and it breaks your system it’s no big deal at all. just go back to a previous generation and you’re back to a working system where you can just remove whatever it is that broke it. You can also pin applications to whatever version you want. So say you have something that worked but an update broke it it’s not a big deal, you can just pin that app to a working version. For example I use QBZ which is a gui player for Quboz. recently the maintainer decided to stop updating it. no big deal I’ve pinned it to the last working version so I can still use it and it will persist after updates.
It REALLY is a great distro. takes a bit to wrap your head around it but once you do you honestly won’t use anything else again.