I only have it on my old work laptop to play with (using Mac for work because it's mandatory at the new job) so I haven't played around more than maybe 40 hours in total), but it already feels like it's a great fit for developers like me: I have very particular preferences about how my system works, and I enjoy a little tinkering; but once I have a setup I like I would like it to stay working and be easily replicated on a new machine and I absolutely hate when system updates break my tinkering which will never be a permanent problem with NixOS. On my main machine I've now tweaked MacOS as much as possible to approximate Qtile (slow as heck and very limited but it almost works) but I know it probably will break again on the next Mac update...
I use it as a daily driver and the reproducibility aspect of it is not entirely true as each machine definitely has different hardware configurations. U can dissect the configuration and that possibly become reproducible but other then that no... I have it set up on 4 different laptops and what works on one fails on the other. 2 work well under x11 and the other 2 fail to become responsive after a rebuild unless I switch to wayland even though the configs are identical. Perhaps different chipsets work better under x11 opposed to wayland.
I like it as my desktop OS, but yeah, servers are one of the places where it really shines. For example, on my jellyfin server, I have a plugin that requires a patched webui. On other distros, you need to jankily replace the webui files, but on nixos, you can just change the jellyfin-web package to apply the patch to the source code. And it just handles building the package automatically, no need to do anything manually
As a NixOS user, I agree on the documentation. I've found videos people have made on TH-cam about NixOS more useful than the official documentation. Also, I've run into good stuff on Reddit that has helped. I think most, if not all, NixOS users will agree the documentation needs a lot of improvement.
I ended up finding a repository full of people's configuration.nix files. Then I read through a few of those until I found out how to set it up properly. Not sure if that'll help anyone, but it worked for a couple of my issues.
They are also actively working on it. They have created an official documentation team, but it will take a few years to get the documentation in a good state unfortunately.
@@CrazyMineCuber The problem with this is the past as things change. We have many changing parts. nix doesn't encourage clean interfaces, so today you have do bla.hyperland = enabled and tomorrow it's going to be foo.des.hyperland.ui = enable or something alike. deprecation notices are good though, so we know we should update nix based on those notices. nixos is also weird, in the sense that it doesn't use flakes by default. Means if you have discovered nix through nix develop for some projects you will find nixos very weird. TLDR: we have a lot to work on in regards to UX,
I love when the documentation is: "For more options, look at the nix file" and then you need a PhD in functional programming languages to understand the nix file. Don't get me wrong, I love using NixOS, and I'm at a level where I can write basic nix files, flakes etc., but man do you get a lot of boilerplate in some of these files that make it a mess to understand.
We need a good wrapper API for nix config, you could call it Panix lol Then just have a basic config file to get Panix installed and then that reads an easy to make Json file to install everything else.
I think once you get the idea of sets, everything else works pretty great. At a base level it is very similar to JSON syntax with some bonuses from what I’ve understood. Love using NixOS as my daily driver. Imo, if the Nix syntax is really difficult even after some time, it’s probably not for you
@sharkuel Yeh, the official documentation feels a bit rough, since there are different ways to do things depending on if you are using home manager and/or flakes. I'm just learning now and enjoying it quite a lot, but I do wish there was a more standard file system hierarchy/structure to follow that cleared everything up. I get that it's meant to be super customisable, and that's great, but an officially condoned starting point for a desktop user with home manager and flakes would be great, along with examples of how to add stuff etc. That said, there are youtube videos and dotfiles you can look at that do that.
The paths are different because everything you install is isolated. Oh, if you do any bash scripting, make sure you use the shebang #!/usr/bin/env bash because bash doesn't exist at /bin/bash Anyway, kudos to you for looking at this. Yes, the process will take a while. I'm still learning NixOS myself.
Ok, I posted a link to a tutorial but it was flagged as spam. It was about using nix-shell in the shebang rather than bash, and then declaring the dependencies. You're script can then download the dependencies in an isolated environment for your script. And it doesn't just work with bash scripting but other languages, too.
@@ibm450I'm really interested in Nix and keen on learning it, but god I wish there was somewhere to find these sorta tricks other than random 2nd layer youtube comments
I totally get the "NixOS does everything different" criticism. It drastically increases the learning curve and the spotty documentation really doesn't help. But the approach of allowing for declarative reproducibility kinda requires this. It's a really unique distribution with unique takes and solutions for unique problems. For me, this was a game changer, even though I still have some work ahead to fully reap the benefits. It's also the first distro where I'll gladly just auto-update.
This is true, but what it really means is there needs to be a distribution of nixos with sane defaults. Doing all of this by hand is fun for kids, but unreasonable for nearly everyone else due to time constraints alone.
@@orbatos I'm unsure about that. NixOS already comes with pretty sane defaults for almost everything. You can get pretty far with the automatically generated hardware-config, enabling some services and isntalling some packages. Git is also already great way to share NixOS-configs. More defaults aren't addressing the actual issue. I'd argue, that starting with a large pre-configured configuration-file makes it harder to learn, because you have to consume more information at once. But that's also fine. Nix doesn't have to be useful for everyone.
@@orbatosthere is Snowflake OS. The sane default is having GNOME desktop and GUI for configuration management and package management. But it's not ready and developed by one guy. You can achieve the same on NixOS. NixOS is not a distro for you if you don't have the time to learn how to use it. I guess get a Mac then. Every other distro is even more complicated because you have to edit random configuration files in many different formats.
@@davidak_de No, most supported distros haver been easy to use for a very long time, what in some ways easier than Windows. OSX isn't developed for business use, and in enterprise environments it's horrible to manage.
7:25 yeah, in general, if you want to install anything that would typically require configuration it’s worth searching the config options docs for the thing and see if there’s an option for it. it’s often easier than the traditional way to do it, since it’s usually just a single line `whatever.thing.enable = true;` and that will both install and set all the necessary config for you. but yes, it can be annoying to not be able to do things in the way you’re used to
I agree the biggest problem with nixos is the lack of documentation, it took me ages to figure out how to make a custom xsession for lxqt that didn't install openbox, it took a bunch of googling and experimentation, but on the plus side is if you screw up then you can just reboot into the previous working system, just keep a back up of your working config file, you can even save config files for certain setups, like a config file for lxqt, or kde, or a specific window manager, I also installed it on my mothers laptop because I know I can upgrade it without fear of a breakage resulting in trouble shooting or a reinstall, plus you don't need to use btrfs to have that feature.
I really appreciate that you spend time to actually fully investigate something and let it take as long as it's going to take, instead of taking a fixed amount of time and calling it done, with the expectation that others are only going to spend that long.
The unstable branch of NixOS is a rolling release like Arch Linux and receives packages first and has a greater potential to break. The stable release has releases with security updates every 6 months, kinda like the interim releases of Ubuntu. If you want, you can set up your system to pull specific packages from unstable. I personally have my system pull most packages from stable while having a few select packages, like Hyprland, from unstable.
One of the things I plan to do is build my system from the stable channel, but pull some packages like vscode, node, Flutter, etc, from the unstable branch. No idea if that will work
@@escapetherace1943 You just do it I think you can try to have add an overlay though then choose specific packages. Don't ask much about how I do it it because I also on journey learning Nix for 2 month 😂
nix-shell is just a temp environment that has acess to the rest of your system. Programmers use it to create an environment where they can have all of their goodies set up that the system itself is not aware of. This means you can have all of your dependencies and PATHs set up in a specific way for that specific directory you are working in. It's a dream for re-creating programming environments on multiple machines or to share between friends/colleagues. You can also install programs inside of it for testing. Once the shell is closed the program disapears like it was never installed in the first place.
Thats the thing about nixos which gets me turned on everytime. Unfortunately i just don't have the time right now to dive into nixos. Maybe sometime in future.
One of the things I would love to do is using the Nix config file from my main machine, to create a Virtual Machine and experiment stuff with it. This could be cool for developers. Also the ability to have different config files with different desktop environments is very nice too. I'm intrigued by the Nix concept and will dive into it in the future.
I have only recently installed NixOS, currently haven’t put aside time to learn it yet. However there is a tool or utility, sorry can’t remember what exactly, where it will instantly create a VM based on your configuration and it simply mounts the nix store on your machine. Meaning it creates a vm in seconds that is exactly what your actual machine is.
I knew you could build docker images from your own NixOS derivation/package, or build an iso with your configuration, but I never know you could build a ready to use VM. I shouldn't be surprised though
I'm a new user of NixOS, and I agree with you on a lot of things. Documentation is terrible, but I had friends and other YT videos teach me the basics. I'm also a noob with Linux in general, and don't understand most config files, which is what I think made NixOS much better for me, since I only needed to learn one config language, but it also forced me to understand how some things work for me to set it up the way I want to. And I kind of learned to use the search website to find the config I want. For the fonts, I don't know what to tell you, they seem to work for me (Fira code with nerd fonts, if I'm not mistaken). I can take a look at my config if you want to. I'm looking forward for your review (even though this is the first video I saw from you), and I hope I get to learn something
I like nix but it seem like I have in love-hate relationship with it. The barrier seem to appear to me more when I want to do more than just doing daily driver like package my own packages, try to understand how to write module or a lot of things. I really want to give up a lot but seriously somehow I manage to daily driver it. I really hate NixOS but somehow like the idea of it. You know nixos community is friendly but it is just they don't always will help you everytime and people will just care about whatever caught their attention. And most of my questions are always ignore and I tend to solve it alone by myself.
I completely agree on the documentation point. If the distro wants to be taken seriously it can't rely on people hunting down TH-cam videos for documentation.
Arch+Hyprland (mostly) user for the last 5 months or so, but I've been considering diving into NixOS. Life has been a bit too busy and I knew going in that I would need to allocate a LOT of time to figure it all out, though and this just kind of confirmed that for me. Be interesting to watch your journey. Thank you for sharing!
Exactly same situation and I think I'll switch tomorrow. Seems like One Configuration File to rule them all would be perfect for base installation. Then just virtualize other needed OS like windows10 with GPU passthrough so one can use Touchdesigner and Traktor dj software.
@@dj_e8 I did give it a go but it didn't work out for me. There were too many applications that I use daily that I couldn't find in the nixos os software "store" and couldn't figure out how to go outside of that to find what I needed. Bottom line is I missed the AUR - I'm sure there was a way to find what I needed but that led to the other issue which was trying to find answers to specific things like that. Just couldn't do it. Spend about two days messing with it before for frustrated and bailed back to Arch. May try it again at some point but for now at least I scratcythat itch and am good. Good luck to you!
this was interesting to see, thank you very much! ) agree that you have to re-learn a lot of habits when switching to NixOS, but I think we often forget that people coming from windows to even a beginner linux distro will probably have a way harder learning curve. We are quick to say that the transition to linux is easy while we ourselves find us somewhat struggeling when switching to exotic distros like NixOS.
As someone who switched from windows to arch without any linux experience, I do feel like people overexaggerate the learning curve of it. The documentation of arch is really well written, so as long as you're willing to troubleshoot some stuff it's not a big learning curve, just a shift in thinking.
@@RichardFeynman2282 news flash but the average person does not want to spend their time reading the manual and playing tech support for their computer
Its true! This system is so different but does wonders in another way. I have found the documentation is only difficult for the people here because they don’t normally work with a product like this. It seems bad because you aren’t the intended audience imo.
I thought they just moved them since they were using codepoints that weren't in the Private User Areas, so they ended up conflicting with official codepoints when they got officially allocated by Unicode.
I've started linux with arch and switched after 2-3 weeks to nixos. I love its and my OCD is loving it :D Im a Noob but ive learning so much with nixos and if u just play till u get a nice flake config, in my opinion u cant say noob to your self anymore xDD
While I like declarative approach NixOS has applied, its challenging to understand what options do I even have, I've been stuck in this modify configuration, rebuild, reboot loop for a week already and I plan to switch to it completely (I use arch btw)
Nix doesn't follow FHS like all other distros, if you would like to have conversation and discuss how to do things, I'll be happy to discuss it with you. I've been using NixOS as my daily driver for quite few years now.
Your hypothesis about `$PATH` is correct! Most of the binaries are strange directories off of (slash) run Skip flakes. They're on the edge of what's documented and most of the examples are from people who have very mature flakes, and thus are very opaque and nearly inscrutable. Home manager is also mostly optional. It does really cool things and allows you to install software without being root. It also will create and/or symlink your dotfiles for you, but it does so in a different way, and if you're not prepared, it really throws you off.
@@nguyennguyenkhang5800 I'd ask the nixos subreddit. The documentation for that I know of for part of nixos makes some generous assumptions about what knowledge you already have regarding the nix language.
I tried Nix and found myself not liking it at all. It feels like a Linux distro put together by someone who has never used Linux, but knows programming, then they don't share the documentation that is absolutely mandatory because it's just so unusual. I gave up within a few hours, so good on you for sticking with it for a week. I've literally installed every CLI distro out there, and they are all similar except Nix. I just couldn't justify the departure from normal. If I wanted to learn a new programming language to use a Linux distro, I'd focus on C and stay on Arch....
For me, all the other distros being similar is what makes them feel redundant. So many distros just feel like the same distro with different coats of paint and different people deciding what gets to be included. NixOS being the only one that actually feels different makes it the only one that feels worth my attention.
I belive it's fonts.fonts = with pkgs; [ nerdfonts ]; The 'pkgs' is your source namespace so you dont need to repeat it when define 'with pkgs;' as entry argument. Or if you wanna define source for each package independently it would be like this: fonts.fonts = [ pkgs.nerdfonts ]; Note: as of Nixos unstable > 23.05 it changed to 'fonts.packages = ...'
For some reason I've watched your videos before. I think they were about LMDE 6 or Debian 12 and they were interesting enough for me to watch the whole thing. I've been hearing and watched vids about NixOS and you'rs popped up in the sidebar, so I watched the whole thing because I found it interesting so I liked your video. I don't have a lot of time to learn NixOS, but I'm wanting to. I see it's good to have probly more than 100GB for the "/" root partition, so I'll probly want to purchase another NVME M.2 drive for my desktop so I can play with NixOS. Thanks for the video. Great Job. You answered some of my prevalent questions. I'll be looking for your NixOS 6 month review, and I'll probly toss you a few bones of Patreon. Thanks
For what it's worth, I'm running NixOS on a TB nvme desktop, sure. But also off a 64 gb sd card for portable personal stuff and disk recovery tools for work. And _ALSO_ on an old Acer Chromebook with 2 gigs of RAM and a 16gb emmc. With Firefox, Thunderbird, lxqt, and some small editors like vim and Kate to still get things done. Works fine for TH-cam, too. So you don't _need_ a lot of space to play around with it. It actually uses less disk space than the arch it replaced. (But that was a few years old and got a little funky when I removed too many "orphans".
I really fw ur style. I'm so glad I found ur channel. Been brainstorming NixOS for a couple of weeks now toying around with flakes n multiple systems. Getting that same kinda "kid like" joy/happiness out of it as I did with Arch when I first started using it ages ago. Not sure if I'll stay with Nix. I haven't distro hopped since 2014-2015ish. Arch just has everything. NixOS on the other hand, has some things while has a lot of drawbacks being NixOS. I just fw the impermanency stuff n the idea of local pkg store / linking.
You do more configuration than most people I think... and so I believe you already have come to as much stuff than I did in 2 or 3 years of sparingly using NixOS.
It's important to understand what nixos is trying to achieve, then it makes a lot more sense why they do things different. The reason they don't usually the standard paths (aka FHS) is that nix packages should not interfere with each other and use only the dependencies they require. If they did use the standard location, some package could come along and install a different version of a library there and then boom, we've broken something else. NixOs just never breaks due to the way it does dependencies. I used Arch Linux for years and got used to the fact that once in a while, you might have to spend a few hours figuring out why your system broke. Even if NixOS did break, I could simply reboot to the previous generation and have a perfectly working system again. As a dev, the nicest feature for me, is the ability to have all the dependencies for my project specified in the project. If I need a certain python version and packages for one project, I can have that. A different project can specify a totally different version and they don't interfere with each other. Nix certainly has a step learning curve, but in most cases it's worth it.
I never expected to say “Matt” and “Wayland” in the same sentence! But Matt talking about how good is Wayland in NixOS was totally unexpected! In another order of ideas, you’re totally on point with all that you said regarding NixOS: it’s not for new Linux users. And even when the distro is advertised as “immutable”, it’s very easy to make a mess with configs… And the documentation will NOT help you at all… Main configs, flakes… 😵💫 Even up to today, Idk what flakes are for. And I moved to a Void Linux long term review anyway.
It is easy to make a mess of the configs. But at least it normally won't break the system. A messed up config will normally mean the new system won't build. Granted, there are ways to break the system, though it's not that easy to do. But rollback is very easy if you do somehow break it.
@@MichaelWilliams-lr4mb my concept of NixOS is more like “semi-immutable” distro. Nevertheless, you’re correct. It is incredibly complicated to break your system, but not impossible. And those blessed rollbacks are lifesavers.
As a dev I went into nixos after reading a bunch of docs beforehand so I knew what to expect and I was still surprised. I think that to really stick to nix you gotta actually understand what your use case is instead of just test-driving it. My use case was that I wanted a reproducible system for my laptop and servers. Now instead of reading tutorials online or keeping track of some links of forums written 15 years ago on how to configure a mailserver I got a single config file that I keep in git and it just works. I guess that if you want to just run some linux you're better off on arch or debian.
I totally agree with you. I loved using Nixos but atm I'm still using an arch distro, because the documentation of Nixos doesn't get me where I need in any decently "quick" and comprehensive way. There are more cases where I can't find any way to do some things. But i see in the last year the distro went up a lot in popularity and now there are far more video tutorials and documentations about some in depth things, flakes and so on. Probably in a couple of years this distro will become one of the mainstream distros for some applications. To me for example I see I would use it more on a laptop use case, than a desktop, even to reproduce the setup in newer laptops over the years.
I wish the NixOS docs had a few quickstart config layouts ready for those wanting to mess with a functioning system and go from there, like a config file that replicates the current Ubuntu GNOME or Fedora KDE Plasma releases and then a couple of "try these steps to install Steam" / "try these steps to remove Steam" / "rebuild nixos and reboot your system, you will see this and that" manuals.
Ah, one last comment. Don't mean to spam you. Copying the configuration.nix is one great example of the reproducability. But it's not just about the reproducability of the system itself. In development, we often times have this problem where someone has a problem with software and we look at it and say "it works fine on my machine". Well, when using the Nix package manager, you have the same exact versions of dependencies with a package. Multiple versions can exist harmoniously. And when you run whatever you're developing, it either just works or just doesn't among ALL computers that have the package installed. So reproducability of errors/bugs is a big thing too. But that's more of the developer side as well as people reporting bugs.
Excellent video. Thank you. Im an arch linux user. I like the concept of a configuration file for packages and settings. However, I am not thrilled about the isolation of packages & dependancies. Nix does not use the Heiarchy Filesystem Standard. That blows my mind. Would the application i created be able to install via a normal makefile? I will have to try it in a vm. I expect it being different will yield to fustration.
One negative thing I stumbled upon were old projects/repos that used nix files to build their projects, the majority of them just gave me a bunch of errors and I had to spend a while just fixing them in order to try them out. Not to mention that some errors that gets thrown are very hard to decipher for a noob.
I started with home-manager because I wanted to sync my config files between two machines. Im just dealing with a few minor issues before I use NixOS for work too
Nerd fonts recently changed where their unicode code points are located since some of them where not free for use or whatever, you just need to update them. It's nothing to do with NixOS, it's nerd fonts themselves
"It's not that it's necessarily difficult, it's just that it's different" - You hit the nail on the head, I think that's probably the best summary of NIXOS.
I just switched to NixOS a few weeks ago when I received my new work laptop and I must say: in most of your points I couldn't agree more! Currently, the whole "learn NixOS" path is just a mess. Not just that stable and unstable are sometimes different, also it's very different if you use flakes (what lots of people recommend these days) or you don't. I wanted to use plasma-manager which can manage KDE plasma settings in a declarative way. Guess what, the docs just say "we expect that you are using flakes for managing your system". Kind of sad that you're unable to use some features unless you make use of some EXPERIMENTAL feature. I wonder if this will get better after a while or if a special trained AI will be able to answer nix related questions soon.
For me, I nerdy 'I want to use Linux but Windows has been easy for years'-guy NixOS is great for generating system that's stable and pre-configured for my needs every time I want Linux on another system. I don't have to perform any special magic for new setups, just once for the config and that's it :D
I agree with all of your points. The result can be beautiful, but the learning curve is a bit rough, and the docs are messy. Still, I'm loving the pain so far. The stability and reusability of Nix configuration makes me feel like I'm building something worthwhile.
For the fonts, the main reason i have come across this is, useing older or not updated charactors . There was a change made to the code for them that breaks them, compare them on the nerd font cheatsheet/list and replace the olde Material icons with the new ones.
i came across this font issue even on debian when using the waybar, it uses both font awsome and nerd fonts, if you have both installed it will work just fine
IMO, among all the Linux distros that have "OS" at the end of it, NixOS is the only one that truly deserves to be called it's own OS. Yes it still uses the Linux kernel and many of the fundamentals, conventions, etc. but it isn't just a different package management philosophy/implementation. To me, it's about as different from traditional Linux distros as is BSD. Not quite, but what Matt says here is true; that so many things are done completely differently... it really is like learning a whole new operating system because everything you have learned about or come to know/expect with Linux is tossed out the proverbial window with NixOS - well, after basic kernel/systemd stuff is done at least. I like learning new things and enjoyed messing around with Nix for a bit but it's unlikely to ever be my daily driver.
I wanted to start with NixOS, which I know is a bad idea, but I loved how the package manager worked, got stuck trying to understand the default.nix file and couldn't find documentation that put it easily, only finding it after I switch to a new distro. All that stopping me from switching to it is the documentation.
NixOS is awesome if you're a software engineer, there are many teams that use the Nix package manager for configuring development environments, and sometimes also production environments; though I agree their documentation is garbage.
One thing I like about Nix OS is most of it not everything you would ever want to change or configure can be done in configuration.nix. Yea there is still the “how?” but at least down the road if I want to change how something is done I don’t need to remember where in the system that is. I know for a fact it is going to be in that file. 👍
fonts.fonts = with pkgs; []; is the old way to add fonts, they updated the name of the option to fonts.packages on unstable, that's why it's fonts.packages on unstable and fonts.fonts on older releases, it's just matter of changing the name of the options.
6:10 Yeah this is pretty true and it matters not only for the learning curve that the user needs to face, but also in terms of software support. Case in point: You cannot (easily) use conda environments for python because conda expects certain directories to be present that are present in pretty much every other Linux distro but are not present in NixOS. The recommended thing to do seems to be to use nix environments instead. I think NixOS is great for tinkering and trying out new features because you can do it with the config file and don't need to worry about screwing up your system. It's cool and neat, but not really game changing.
Thanks, brother, I have not visited your channel for a while, but you seem spot-on for this one. I bought into the hype, and though not a pro, I am comfortable in the Linux space. That said, after installing NixOS I have been completely lost and just don't have the time to figure it out. I may reconsider later, but for now, I will move on to something else. Thanks again and God bless,
The documentation is what makes all the difference. Arch got to where it is now by its great documentation. And because it is easy to understand. NixOs has neither now, but that can change i think. NixOs should really think about simplifying many things.
Never thought I'd see the day where matt uses wayland!!! Jokes aside, even though you just started using it, it has been very interesting and informative to see your experience with nixos. Thank you for the great content :)
I will never get over a system that has to be a config first way of management via txt files...and learning almost a programming language to manage....my brain just can't get over it
Great review! i've never used nixos and I don't know if i really want to considering everyone's testimonies about the documentation or the lack thereof.
I’m not a NixOS user, but to me it seems that most of your concerns are related to their philosophy. Since Nix wants to put everything in one config file it follows that you shouldn’t use the ordinary config files but keep to the one given. I can see the usefulness of NixOS if you manage a fleet of 1000s of Linux desktops. You can test on a small set and then push the config to the rest. However, that’s what Ansible and such tools do as well. And you also need a mechanism to actually push the update. Ansible/Chef/Puppet/Git to the rescue.
"Everything in one config file" isn't really a Nix philosophy. I genuenly have no idea where that even came from. Nix is about declarative, deterministic and replicable builds. It was never supposed to be configured with a single file as it's makes modularity much harder. If anything, as flakes become more and more prevalent, it becomes "everything is a project in a git repository" philosophy. Where Nix is responsible for determinism and replicability and git is responsible for sharing and version control. For example, I have one repository for my Nix configurations which has different outputs. One for my NixOS PC, one for my laptop where I use NixOS in WSL and one with home manager configuration I can use on any Linux or MacOS system. All configurations are just a set of modules that can be shared or used independently. For example, I have a module that defines dev environments which is used by all outputs, so if I, for example add some new library or change my Neovim configuration on my NixOS PC, I would have the exact same change available on any other system as long as I do git pull and run rebuild.
@@_TeaMasterGood info! Like I said, I don’t (yet, at least) use NixOS so my info mainly comes from YT channels like this. Still its declarative nature sounds interesting to an old Haskell programmer like me. 😊 I’ll have to take a look at it when I have some time over. Just seems the guy hasn’t really understood that Nix is different and not just a work-over of Ubuntu or Fedora like many other distributions. That’s why NixOS sounds interesting to me.
NixOS has its own mechanism to push the update, though most users I think just use Git. The Nix-native solution is NixOps, though only have 2 machines (only one of which uses NixOS, I'm not too familiar with how it works or how it differs from the other options.
@@mbee32k I sometimes like to describe the Nix language as "the bastard child of Haskell and JSON." If you can forgive the lack of static-typing or operator overloading, you'd probably feel right at home as a Haskell programmer, with only a few small syntactic differences. On the other hand, the lack of static-typing makes it surprisingly fun to write untyped Lambda Calculus with. num = rec { zero = succ: zero: zero; succ = n: succ: zero: succ (n succ zero); add = m: n: n succ m; };
@@birdstrikes Well I do see the use-case! I own several Linux workstations, and I try to keep them sort of similar. Where I work we DO have thousands of Linux workstations. But I gather you are a NixOS user, so if fleet management isn’t a possible use case, then please enlighten us of little knowledge; what IS the NixOS use-case?
Gonna be honest, the documentation is super detailed and fantastic from my experience in the programming world. The documentation isn’t bad, the OS just probably isn’t meant for you imo.
I have tried NixOS and I had the same experience. The documentation is bad, it contains commands in examples which don't work, like 'nix search wget'. It's hard to set up NixOS for hardware, you can't pass configuration file to /etc, I need someone who already written service for it. nix-env can't manage packages installed with configuration.nix, but both of them stored in the same directory, it's confusing. So I decided to stay on Fedora + Ansible, and on Debian stable + Ansible + nix as package manager, which is not perfect too.
Nice informative video thanks! One comment about the difficulty, though... leaving out the really Linux savvy people that will be able to make everything run, I think the opinion is biased from being a Linux noob, as you modestly define yourself... for a complete noob there will be no difference in reference to what they already know of Linux since they know supposedly nothing about Linux... hence my take is NixOs is not good for Linux fairly introduced people, but it could be good for complete noobs that start from scratch and learn from the ground up. Completely agree on the documentation, though, but if they improve that... starting from zero with NixOs would be same as starting from zero with any more traditional Linux systems (if the concept of traditional Linux even exists 😂)
I think the concept of NixOS is awesome, I looked into using it and I just didn't think it was worth my time unless I wanted a career maintaining a businesses Nix installs. I develop apps for Linux/Windows but not Linux the OS itself. Maybe someday I will put in the time but for now it's back to LMDE.
The documentation isn't *garbage* per se, just sparse for the most part. Sparse both in content and mainly location. It's like having your the pages of a manual torn out and scattered through your house lol. The community is pretty good at helping each other though
I couldn't even get NixOS to the "boot from installer media" stage. I followed all of their instructions to flash a USB drive so I could install it on my really extremely standard PC and the live disk won't get past boot stage 1. I really wish I could try it.
I think your font issue might be related to nerd-fonts and not nixos. it seems that some icon fonts were removed in newer versions. had the same issue not too long ago, reverted to an older version and everything is fine, but I'm not on nixos ...
I have nixos on my laptop as a secondary os that I use when not doing school or work stuff only leisure. I find my self using the secondary os very rarely so I value when upgrading the system every once in a while it not breaking. Been using nixos on that laptop for 2,5Months now and it has been rock solid even when running unstable. I very much agree that the documentation is quite horrible and there is no explanation how to use some things. Some stuff I've gotten to work by watching some TH-cam videos and some with the help is chatgpt (even though it's not perfect it sometimes gets me where I wanted to go).
The Nerdfonts issue may be that the nixos package is newer than your config, and uses the new fixed glyphs? They had to deprecate a lot of material design glyphs so you need a tool like nerdfix to update them to the new ones…
I agree with you everything I mentioned is true I am still not until now I did not understand the way to make Nix OS, not even with the intention of its files, so that I do not consider it as a Linux system
You don't need to prepend `pkgs` for all your packages. You have an example there for `wget` and that's why you have `with pkgs; [` there at the beginning of the packages statement, my dude.
Man i really hate that you need to understand what does with pkgs; means to actually understand what's going on, i read a long handbook about nix to understand the basics and the json like syntax
I have only used nixos a bit. Isn't most of it just the wiki? In which case, yeah, it's gonna be spotty as hell. Which isn't ideal. Unless they have some team actually going through with a strategy to solve it. I basically resolved to look at the packages themselves and which parameters they exposed in cases when the wiki wasn't covering it. I, too, have not looked at flakes at all. It does seem Nix OS is a convergence of a few different projects and approaches. And that is a bit confusing for someone who isn't immersed in it.
NixOS doesn't even get points for putting the name at the top of the exam, IMHO. NixOS is the only distro (and community) I have encountered where the mere concept of official documentation is looked upon with disapproval. I really want to like NixOS, but right now I simply can't.
Well with NixOS you only have to really accomplish it once and then guard that setup/config file then you're done. Plus it has a KDE iso so that would just come with Wayland.
I'm a die-hard NixOS fanboy.... but yeah, holy shit the documentation is awful lmao, you need to ask questions on discord/forums/matrix to even have a chance with it
I don't personally have an issue with NixOS docs. There is definitely a steep learning curve, but it's very possible to learn things in isolation so you don't get overwhelmed. You don't need to have a perfect config out of the gates. You don't need to understand flakes out of the gates. You don't need to use home manager out of the gates, etc. Just tackle whatever is interesting in the moment and build your knowledge incrementally. Because it's a declarative distro, your learning process will self document itself.
There is (yeah i didnt believe it either but it exists) a page in the nixos wiki that explains how to install nvidia drivers, and it was a fast 5 min copy pasting that worked right away after rebooting
Nix seems to benefit IT professionals, who have to deal with many separate computers. Sounds to me the benefits are much less for a regular desktop home users. And since it does things so differently, the things you learn won't transfer over to other Linux distros as much, and only good if you decide to remain in Nix OS. Sounds more complicated than Arch, so maybe the new meme should be "I use NixOS btw". (Linux from scratch people: still not impressed)
@@user-fk2xg8nq6r the problem is the learning though, and what you learn from Nix OS is not transferable to the other distros, since they do things in their own unique way. All I know is Chris Titus Tech, Jake@Linux, and Matt (TheLinuxCast) all tried it and moved on. They may need to make the configuration file simpler to use..like maybe make a GUI option for it.
Everyone complaining about documentation because instead of contributing to the docs to make it better, people either make videos or write blogs so they can generate revenue, or they simply lack the expertise and interest to make it better.
I know nothing about Linux. I'm something worse than a noob because I suck as a Binbows user too but I finally convinced myself to start learning and I chose Spiral Linux, because is Debian made usable for noobs by an anonymous someone, who's made the OpenSUSE more noob friendly prior to this. Anyway. So I have it running on a thin client. It was super easy to install and works great but I'm not gonna use it as a daily, so as a Linux nerd wannabe I've remembered when Chris Titus was talking about Nix. He said: - You should use Nix. It will be fun. I promise. After getting Nix installed in the Spiral Linux, I wanted to try what it can do, so I started reading the documentation and OMFG! It looks like a retarded brother of ChatGPT was trying to write a poem about computers and shit and when he showed that to mommy, she said - "Well done! I'm proud of you!". And I never new how and why did I get from Nix to the NixOS documentation all of a sudden. And I think they do it on purpose to keep the noobs away from it.
Check out The Linux Cast Merch! shop.thelinuxcast.org
Nix config might be a "eh it is okay" for regular desktop usage but for IT managing desktops or any dev work with multiple servers is just magic.
Yeah, everything I see about NixOS says it's a weird choice as a daily driver for personal desktops. It seems like a great enterprise OS
@@danieldover3745 Agreed
I only have it on my old work laptop to play with (using Mac for work because it's mandatory at the new job) so I haven't played around more than maybe 40 hours in total), but it already feels like it's a great fit for developers like me: I have very particular preferences about how my system works, and I enjoy a little tinkering; but once I have a setup I like I would like it to stay working and be easily replicated on a new machine and I absolutely hate when system updates break my tinkering which will never be a permanent problem with NixOS.
On my main machine I've now tweaked MacOS as much as possible to approximate Qtile (slow as heck and very limited but it almost works) but I know it probably will break again on the next Mac update...
I use it as a daily driver and the reproducibility aspect of it is not entirely true as each machine definitely has different hardware configurations. U can dissect the configuration and that possibly become reproducible but other then that no... I have it set up on 4 different laptops and what works on one fails on the other. 2 work well under x11 and the other 2 fail to become responsive after a rebuild unless I switch to wayland even though the configs are identical. Perhaps different chipsets work better under x11 opposed to wayland.
I like it as my desktop OS, but yeah, servers are one of the places where it really shines. For example, on my jellyfin server, I have a plugin that requires a patched webui. On other distros, you need to jankily replace the webui files, but on nixos, you can just change the jellyfin-web package to apply the patch to the source code. And it just handles building the package automatically, no need to do anything manually
As a NixOS user, I agree on the documentation.
I've found videos people have made on TH-cam about NixOS more useful than the official documentation. Also, I've run into good stuff on Reddit that has helped. I think most, if not all, NixOS users will agree the documentation needs a lot of improvement.
I ended up finding a repository full of people's configuration.nix files. Then I read through a few of those until I found out how to set it up properly. Not sure if that'll help anyone, but it worked for a couple of my issues.
They are also actively working on it. They have created an official documentation team, but it will take a few years to get the documentation in a good state unfortunately.
How can we help them with the documentation?
@@CrazyMineCuber The problem with this is the past as things change.
We have many changing parts.
nix doesn't encourage clean interfaces, so today you have do bla.hyperland = enabled and tomorrow it's going to be foo.des.hyperland.ui = enable or something alike.
deprecation notices are good though, so we know we should update nix based on those notices.
nixos is also weird, in the sense that it doesn't use flakes by default. Means if you have discovered nix through nix develop for some projects you will find nixos very weird.
TLDR: we have a lot to work on in regards to UX,
yes@@alfinyusrinnaja7094
I love when the documentation is: "For more options, look at the nix file" and then you need a PhD in functional programming languages to understand the nix file. Don't get me wrong, I love using NixOS, and I'm at a level where I can write basic nix files, flakes etc., but man do you get a lot of boilerplate in some of these files that make it a mess to understand.
We need a good wrapper API for nix config, you could call it Panix lol
Then just have a basic config file to get Panix installed and then that reads an easy to make Json file to install everything else.
As a NixOS user you are pretty much expceted to have a basic understanding of programming. They will even say it in the official Element chat.
@@DaKingof that shouldn't excuse the lacklustre documentation. I am with Matt and Gaivs on this one.
I think once you get the idea of sets, everything else works pretty great. At a base level it is very similar to JSON syntax with some bonuses from what I’ve understood. Love using NixOS as my daily driver. Imo, if the Nix syntax is really difficult even after some time, it’s probably not for you
@sharkuel Yeh, the official documentation feels a bit rough, since there are different ways to do things depending on if you are using home manager and/or flakes. I'm just learning now and enjoying it quite a lot, but I do wish there was a more standard file system hierarchy/structure to follow that cleared everything up. I get that it's meant to be super customisable, and that's great, but an officially condoned starting point for a desktop user with home manager and flakes would be great, along with examples of how to add stuff etc. That said, there are youtube videos and dotfiles you can look at that do that.
The paths are different because everything you install is isolated.
Oh, if you do any bash scripting, make sure you use the shebang
#!/usr/bin/env bash
because bash doesn't exist at /bin/bash
Anyway, kudos to you for looking at this. Yes, the process will take a while. I'm still learning NixOS myself.
Yeah, found that out.
You forgot to add services = {
envfs = {
enable = true;
};
};
Then your bash environment or normal shebang will work there after
Ok, I posted a link to a tutorial but it was flagged as spam. It was about using nix-shell in the shebang rather than bash, and then declaring the dependencies.
You're script can then download the dependencies in an isolated environment for your script.
And it doesn't just work with bash scripting but other languages, too.
@@ibm450I'm really interested in Nix and keen on learning it, but god I wish there was somewhere to find these sorta tricks other than random 2nd layer youtube comments
I totally get the "NixOS does everything different" criticism. It drastically increases the learning curve and the spotty documentation really doesn't help. But the approach of allowing for declarative reproducibility kinda requires this. It's a really unique distribution with unique takes and solutions for unique problems. For me, this was a game changer, even though I still have some work ahead to fully reap the benefits. It's also the first distro where I'll gladly just auto-update.
This is true, but what it really means is there needs to be a distribution of nixos with sane defaults. Doing all of this by hand is fun for kids, but unreasonable for nearly everyone else due to time constraints alone.
@@orbatos I'm unsure about that. NixOS already comes with pretty sane defaults for almost everything. You can get pretty far with the automatically generated hardware-config, enabling some services and isntalling some packages.
Git is also already great way to share NixOS-configs. More defaults aren't addressing the actual issue.
I'd argue, that starting with a large pre-configured configuration-file makes it harder to learn, because you have to consume more information at once.
But that's also fine. Nix doesn't have to be useful for everyone.
@@orbatosthere is Snowflake OS. The sane default is having GNOME desktop and GUI for configuration management and package management. But it's not ready and developed by one guy. You can achieve the same on NixOS. NixOS is not a distro for you if you don't have the time to learn how to use it. I guess get a Mac then. Every other distro is even more complicated because you have to edit random configuration files in many different formats.
@@davidak_de No, most supported distros haver been easy to use for a very long time, what in some ways easier than Windows. OSX isn't developed for business use, and in enterprise environments it's horrible to manage.
7:25 yeah, in general, if you want to install anything that would typically require configuration it’s worth searching the config options docs for the thing and see if there’s an option for it. it’s often easier than the traditional way to do it, since it’s usually just a single line
`whatever.thing.enable = true;`
and that will both install and set all the necessary config for you. but yes, it can be annoying to not be able to do things in the way you’re used to
I agree the biggest problem with nixos is the lack of documentation, it took me ages to figure out how to make a custom xsession for lxqt that didn't install openbox, it took a bunch of googling and experimentation, but on the plus side is if you screw up then you can just reboot into the previous working system, just keep a back up of your working config file, you can even save config files for certain setups, like a config file for lxqt, or kde, or a specific window manager, I also installed it on my mothers laptop because I know I can upgrade it without fear of a breakage resulting in trouble shooting or a reinstall, plus you don't need to use btrfs to have that feature.
I really appreciate that you spend time to actually fully investigate something and let it take as long as it's going to take, instead of taking a fixed amount of time and calling it done, with the expectation that others are only going to spend that long.
The unstable branch of NixOS is a rolling release like Arch Linux and receives packages first and has a greater potential to break. The stable release has releases with security updates every 6 months, kinda like the interim releases of Ubuntu. If you want, you can set up your system to pull specific packages from unstable. I personally have my system pull most packages from stable while having a few select packages, like Hyprland, from unstable.
One of the things I plan to do is build my system from the stable channel, but pull some packages like vscode, node, Flutter, etc, from the unstable branch. No idea if that will work
how do you do that?
@@escapetherace1943 You just do it I think you can try to have add an overlay though then choose specific packages. Don't ask much about how I do it it because I also on journey learning Nix for 2 month 😂
@@escapetherace1943flake inputs
nix-shell is just a temp environment that has acess to the rest of your system. Programmers use it to create an environment where they can have all of their goodies set up that the system itself is not aware of. This means you can have all of your dependencies and PATHs set up in a specific way for that specific directory you are working in. It's a dream for re-creating programming environments on multiple machines or to share between friends/colleagues. You can also install programs inside of it for testing. Once the shell is closed the program disapears like it was never installed in the first place.
Thats the thing about nixos which gets me turned on everytime. Unfortunately i just don't have the time right now to dive into nixos. Maybe sometime in future.
One of the things I would love to do is using the Nix config file from my main machine, to create a Virtual Machine and experiment stuff with it. This could be cool for developers. Also the ability to have different config files with different desktop environments is very nice too. I'm intrigued by the Nix concept and will dive into it in the future.
I have only recently installed NixOS, currently haven’t put aside time to learn it yet.
However there is a tool or utility, sorry can’t remember what exactly, where it will instantly create a VM based on your configuration and it simply mounts the nix store on your machine. Meaning it creates a vm in seconds that is exactly what your actual machine is.
`nixos-rebuild build-vm` and `nixos-rebuild build-vm-with-bootloader`
Uses QEMU and even provides an executable script to instantly start the VM.
I knew you could build docker images from your own NixOS derivation/package, or build an iso with your configuration, but I never know you could build a ready to use VM. I shouldn't be surprised though
@@angeldude101 Thank you, this is what I was referring to.
I'm a new user of NixOS, and I agree with you on a lot of things.
Documentation is terrible, but I had friends and other YT videos teach me the basics. I'm also a noob with Linux in general, and don't understand most config files, which is what I think made NixOS much better for me, since I only needed to learn one config language, but it also forced me to understand how some things work for me to set it up the way I want to. And I kind of learned to use the search website to find the config I want.
For the fonts, I don't know what to tell you, they seem to work for me (Fira code with nerd fonts, if I'm not mistaken). I can take a look at my config if you want to.
I'm looking forward for your review (even though this is the first video I saw from you), and I hope I get to learn something
I like nix but it seem like I have in love-hate relationship with it. The barrier seem to appear to me more when I want to do more than just doing daily driver like package my own packages, try to understand how to write module or a lot of things. I really want to give up a lot but seriously somehow I manage to daily driver it. I really hate NixOS but somehow like the idea of it.
You know nixos community is friendly but it is just they don't always will help you everytime and people will just care about whatever caught their attention. And most of my questions are always ignore and I tend to solve it alone by myself.
I completely agree on the documentation point. If the distro wants to be taken seriously it can't rely on people hunting down TH-cam videos for documentation.
Arch+Hyprland (mostly) user for the last 5 months or so, but I've been considering diving into NixOS. Life has been a bit too busy and I knew going in that I would need to allocate a LOT of time to figure it all out, though and this just kind of confirmed that for me. Be interesting to watch your journey. Thank you for sharing!
Exactly same situation and I think I'll switch tomorrow. Seems like One Configuration File to rule them all would be perfect for base installation. Then just virtualize other needed OS like windows10 with GPU passthrough so one can use Touchdesigner and Traktor dj software.
@@dj_e8 I did give it a go but it didn't work out for me. There were too many applications that I use daily that I couldn't find in the nixos os software "store" and couldn't figure out how to go outside of that to find what I needed. Bottom line is I missed the AUR - I'm sure there was a way to find what I needed but that led to the other issue which was trying to find answers to specific things like that. Just couldn't do it. Spend about two days messing with it before for frustrated and bailed back to Arch. May try it again at some point but for now at least I scratcythat itch and am good. Good luck to you!
Are you still on arch or nixos
this was interesting to see, thank you very much! ) agree that you have to re-learn a lot of habits when switching to NixOS, but I think we often forget that people coming from windows to even a beginner linux distro will probably have a way harder learning curve. We are quick to say that the transition to linux is easy while we ourselves find us somewhat struggeling when switching to exotic distros like NixOS.
As someone who switched from windows to arch without any linux experience, I do feel like people overexaggerate the learning curve of it. The documentation of arch is really well written, so as long as you're willing to troubleshoot some stuff it's not a big learning curve, just a shift in thinking.
@@RichardFeynman2282 news flash but the average person does not want to spend their time reading the manual and playing tech support for their computer
Its true! This system is so different but does wonders in another way. I have found the documentation is only difficult for the people here because they don’t normally work with a product like this. It seems bad because you aren’t the intended audience imo.
Check in the font cheat sheet if the icon you're trying to use is still there, because nerd font remove a lot of icons
I thought they just moved them since they were using codepoints that weren't in the Private User Areas, so they ended up conflicting with official codepoints when they got officially allocated by Unicode.
I've started linux with arch and switched after 2-3 weeks to nixos. I love its and my OCD is loving it :D
Im a Noob but ive learning so much with nixos and if u just play till u get a nice flake config, in my opinion u cant say noob to your self anymore xDD
While I like declarative approach NixOS has applied, its challenging to understand what options do I even have, I've been stuck in this modify configuration, rebuild, reboot loop for a week already and I plan to switch to it completely (I use arch btw)
Nix doesn't follow FHS like all other distros, if you would like to have conversation and discuss how to do things, I'll be happy to discuss it with you. I've been using NixOS as my daily driver for quite few years now.
Your hypothesis about `$PATH` is correct! Most of the binaries are strange directories off of (slash) run
Skip flakes. They're on the edge of what's documented and most of the examples are from people who have very mature flakes, and thus are very opaque and nearly inscrutable.
Home manager is also mostly optional. It does really cool things and allows you to install software without being root. It also will create and/or symlink your dotfiles for you, but it does so in a different way, and if you're not prepared, it really throws you off.
Where can I find documentation learb more about packaging?
@@nguyennguyenkhang5800 I'd ask the nixos subreddit. The documentation for that I know of for part of nixos makes some generous assumptions about what knowledge you already have regarding the nix language.
I tried Nix and found myself not liking it at all. It feels like a Linux distro put together by someone who has never used Linux, but knows programming, then they don't share the documentation that is absolutely mandatory because it's just so unusual. I gave up within a few hours, so good on you for sticking with it for a week. I've literally installed every CLI distro out there, and they are all similar except Nix. I just couldn't justify the departure from normal. If I wanted to learn a new programming language to use a Linux distro, I'd focus on C and stay on Arch....
For me, all the other distros being similar is what makes them feel redundant. So many distros just feel like the same distro with different coats of paint and different people deciding what gets to be included. NixOS being the only one that actually feels different makes it the only one that feels worth my attention.
the mother of all skill issues
I belive it's
fonts.fonts = with pkgs; [
nerdfonts
];
The 'pkgs' is your source namespace so you dont need to repeat it when define 'with pkgs;' as entry argument.
Or if you wanna define source for each package independently it would be like this:
fonts.fonts = [
pkgs.nerdfonts
];
Note: as of Nixos unstable > 23.05 it changed to 'fonts.packages = ...'
The same goes for his system apps configuration. All of those ```pkgs.``` don't need to be there.
For some reason I've watched your videos before. I think they were about LMDE 6 or Debian 12 and they were interesting enough for me to watch the whole thing. I've been hearing and watched vids about NixOS and you'rs popped up in the sidebar, so I watched the whole thing because I found it interesting so I liked your video. I don't have a lot of time to learn NixOS, but I'm wanting to. I see it's good to have probly more than 100GB for the "/" root partition, so I'll probly want to purchase another NVME M.2 drive for my desktop so I can play with NixOS. Thanks for the video. Great Job. You answered some of my prevalent questions. I'll be looking for your NixOS 6 month review, and I'll probly toss you a few bones of Patreon. Thanks
For what it's worth, I'm running NixOS on a TB nvme desktop, sure. But also off a 64 gb sd card for portable personal stuff and disk recovery tools for work. And _ALSO_ on an old Acer Chromebook with 2 gigs of RAM and a 16gb emmc. With Firefox, Thunderbird, lxqt, and some small editors like vim and Kate to still get things done. Works fine for TH-cam, too. So you don't _need_ a lot of space to play around with it. It actually uses less disk space than the arch it replaced. (But that was a few years old and got a little funky when I removed too many "orphans".
I really fw ur style. I'm so glad I found ur channel. Been brainstorming NixOS for a couple of weeks now toying around with flakes n multiple systems. Getting that same kinda "kid like" joy/happiness out of it as I did with Arch when I first started using it ages ago.
Not sure if I'll stay with Nix. I haven't distro hopped since 2014-2015ish. Arch just has everything. NixOS on the other hand, has some things while has a lot of drawbacks being NixOS. I just fw the impermanency stuff n the idea of local pkg store / linking.
You do more configuration than most people I think... and so I believe you already have come to as much stuff than I did in 2 or 3 years of sparingly using NixOS.
It's important to understand what nixos is trying to achieve, then it makes a lot more sense why they do things different.
The reason they don't usually the standard paths (aka FHS) is that nix packages should not interfere with each other and use only the dependencies they require. If they did use the standard location, some package could come along and install a different version of a library there and then boom, we've broken something else.
NixOs just never breaks due to the way it does dependencies. I used Arch Linux for years and got used to the fact that once in a while, you might have to spend a few hours figuring out why your system broke.
Even if NixOS did break, I could simply reboot to the previous generation and have a perfectly working system again.
As a dev, the nicest feature for me, is the ability to have all the dependencies for my project specified in the project. If I need a certain python version and packages for one project, I can have that. A different project can specify a totally different version and they don't interfere with each other.
Nix certainly has a step learning curve, but in most cases it's worth it.
What is the difference with timeshift or snaps?
On Tumbleweed is its break just pick a working snapshot.....
I never expected to say “Matt” and “Wayland” in the same sentence! But Matt talking about how good is Wayland in NixOS was totally unexpected!
In another order of ideas, you’re totally on point with all that you said regarding NixOS: it’s not for new Linux users. And even when the distro is advertised as “immutable”, it’s very easy to make a mess with configs… And the documentation will NOT help you at all… Main configs, flakes… 😵💫
Even up to today, Idk what flakes are for. And I moved to a Void Linux long term review anyway.
It is easy to make a mess of the configs. But at least it normally won't break the system. A messed up config will normally mean the new system won't build.
Granted, there are ways to break the system, though it's not that easy to do. But rollback is very easy if you do somehow break it.
@@MichaelWilliams-lr4mb my concept of NixOS is more like “semi-immutable” distro. Nevertheless, you’re correct. It is incredibly complicated to break your system, but not impossible.
And those blessed rollbacks are lifesavers.
@@MrAndrewKeyboards Yes. Semi-immutable seems to be a pretty accurate way to describe it.
As a dev I went into nixos after reading a bunch of docs beforehand so I knew what to expect and I was still surprised. I think that to really stick to nix you gotta actually understand what your use case is instead of just test-driving it. My use case was that I wanted a reproducible system for my laptop and servers. Now instead of reading tutorials online or keeping track of some links of forums written 15 years ago on how to configure a mailserver I got a single config file that I keep in git and it just works. I guess that if you want to just run some linux you're better off on arch or debian.
I totally agree with you. I loved using Nixos but atm I'm still using an arch distro, because the documentation of Nixos doesn't get me where I need in any decently "quick" and comprehensive way. There are more cases where I can't find any way to do some things. But i see in the last year the distro went up a lot in popularity and now there are far more video tutorials and documentations about some in depth things, flakes and so on. Probably in a couple of years this distro will become one of the mainstream distros for some applications. To me for example I see I would use it more on a laptop use case, than a desktop, even to reproduce the setup in newer laptops over the years.
It was said that, with Linux, "everything is a file," except that on NixOS, "everything is a line in the config file."
I wish the NixOS docs had a few quickstart config layouts ready for those wanting to mess with a functioning system and go from there, like a config file that replicates the current Ubuntu GNOME or Fedora KDE Plasma releases and then a couple of "try these steps to install Steam" / "try these steps to remove Steam" / "rebuild nixos and reboot your system, you will see this and that" manuals.
Ah, one last comment. Don't mean to spam you.
Copying the configuration.nix is one great example of the reproducability. But it's not just about the reproducability of the system itself.
In development, we often times have this problem where someone has a problem with software and we look at it and say "it works fine on my machine". Well, when using the Nix package manager, you have the same exact versions of dependencies with a package. Multiple versions can exist harmoniously. And when you run whatever you're developing, it either just works or just doesn't among ALL computers that have the package installed. So reproducability of errors/bugs is a big thing too. But that's more of the developer side as well as people reporting bugs.
Excellent video. Thank you. Im an arch linux user. I like the concept of a configuration file for packages and settings. However, I am not thrilled about the isolation of packages & dependancies. Nix does not use the Heiarchy Filesystem Standard. That blows my mind. Would the application i created be able to install via a normal makefile? I will have to try it in a vm. I expect it being different will yield to fustration.
Where can I find that wallpaper? I like it!
We need a link to that wallpaper.
One negative thing I stumbled upon were old projects/repos that used nix files to build their projects, the majority of them just gave me a bunch of errors and I had to spend a while just fixing them in order to try them out. Not to mention that some errors that gets thrown are very hard to decipher for a noob.
I think using the nix build tool to manage dependencies for a project is a much better way to introduce yourself to Nix then starting with Nixos
I started with home-manager because I wanted to sync my config files between two machines.
Im just dealing with a few minor issues before I use NixOS for work too
Hope you enjoy your stay on NixOS
Nerd fonts recently changed where their unicode code points are located since some of them where not free for use or whatever, you just need to update them. It's nothing to do with NixOS, it's nerd fonts themselves
"It's not that it's necessarily difficult, it's just that it's different" - You hit the nail on the head, I think that's probably the best summary of NIXOS.
I just switched to NixOS a few weeks ago when I received my new work laptop and I must say: in most of your points I couldn't agree more!
Currently, the whole "learn NixOS" path is just a mess. Not just that stable and unstable are sometimes different, also it's very different if you use flakes (what lots of people recommend these days) or you don't. I wanted to use plasma-manager which can manage KDE plasma settings in a declarative way. Guess what, the docs just say "we expect that you are using flakes for managing your system". Kind of sad that you're unable to use some features unless you make use of some EXPERIMENTAL feature.
I wonder if this will get better after a while or if a special trained AI will be able to answer nix related questions soon.
Thanks for getting into the nuts and bolts of this distro and telling us about it.
Missing /usr files. The files are kept in the store, write-protected. Only the absolute minimum of files are kept in the traditional places.
For me, I nerdy 'I want to use Linux but Windows has been easy for years'-guy NixOS is great for generating system that's stable and pre-configured for my needs every time I want Linux on another system. I don't have to perform any special magic for new setups, just once for the config and that's it :D
I agree with all of your points. The result can be beautiful, but the learning curve is a bit rough, and the docs are messy. Still, I'm loving the pain so far. The stability and reusability of Nix configuration makes me feel like I'm building something worthwhile.
For the fonts, the main reason i have come across this is, useing older or not updated charactors . There was a change made to the code for them that breaks them, compare them on the nerd font cheatsheet/list and replace the olde Material icons with the new ones.
That was my issue too. I just went through all my icons and replaced em
i came across this font issue even on debian when using the waybar, it uses both font awsome and nerd fonts, if you have both installed it will work just fine
DEMONYONG KALBONG BUGOK ANG PAYO
I like a challenge, it's what Linux used to be like; battling to get my soundblaster emu10k01 driver insmodded in the red hat cartman days.
IMO, among all the Linux distros that have "OS" at the end of it, NixOS is the only one that truly deserves to be called it's own OS. Yes it still uses the Linux kernel and many of the fundamentals, conventions, etc. but it isn't just a different package management philosophy/implementation. To me, it's about as different from traditional Linux distros as is BSD. Not quite, but what Matt says here is true; that so many things are done completely differently... it really is like learning a whole new operating system because everything you have learned about or come to know/expect with Linux is tossed out the proverbial window with NixOS - well, after basic kernel/systemd stuff is done at least. I like learning new things and enjoyed messing around with Nix for a bit but it's unlikely to ever be my daily driver.
I wanted to start with NixOS, which I know is a bad idea, but I loved how the package manager worked, got stuck trying to understand the default.nix file and couldn't find documentation that put it easily, only finding it after I switch to a new distro. All that stopping me from switching to it is the documentation.
Really like your vidoes man thanks for sharing. Just installed NixOS myself last night.
Thanks for sharing your knowledge. You're a hero. Merry Christmas
NixOS is awesome if you're a software engineer, there are many teams that use the Nix package manager for configuring development environments, and sometimes also production environments; though I agree their documentation is garbage.
One thing I like about Nix OS is most of it not everything you would ever want to change or configure can be done in configuration.nix. Yea there is still the “how?” but at least down the road if I want to change how something is done I don’t need to remember where in the system that is. I know for a fact it is going to be in that file. 👍
fonts.fonts = with pkgs; []; is the old way to add fonts, they updated the name of the option to fonts.packages on unstable, that's why it's fonts.packages on unstable and fonts.fonts on older releases, it's just matter of changing the name of the options.
Nice video. Thanks for sharing. Please give updates from your experience ,just like this, before the long term review! Cheers
6:10 Yeah this is pretty true and it matters not only for the learning curve that the user needs to face, but also in terms of software support. Case in point: You cannot (easily) use conda environments for python because conda expects certain directories to be present that are present in pretty much every other Linux distro but are not present in NixOS. The recommended thing to do seems to be to use nix environments instead.
I think NixOS is great for tinkering and trying out new features because you can do it with the config file and don't need to worry about screwing up your system. It's cool and neat, but not really game changing.
Thanks, brother, I have not visited your channel for a while, but you seem spot-on for this one. I bought into the hype, and though not a pro, I am comfortable in the Linux space. That said, after installing NixOS I have been completely lost and just don't have the time to figure it out. I may reconsider later, but for now, I will move on to something else. Thanks again and God bless,
All the themes (icons, gtk, qt, kvantum, fonts) in NixOS go configure by home-manager - this is a part of the system you have to learn...
What wallpaper do you use in this video?
The documentation is what makes all the difference.
Arch got to where it is now by its great documentation. And because it is easy to understand.
NixOs has neither now, but that can change i think.
NixOs should really think about simplifying many things.
Never thought I'd see the day where matt uses wayland!!!
Jokes aside, even though you just started using it, it has been very interesting and informative to see your experience with nixos. Thank you for the great content :)
I will never get over a system that has to be a config first way of management via txt files...and learning almost a programming language to manage....my brain just can't get over it
Great review! i've never used nixos and I don't know if i really want to considering everyone's testimonies about the documentation or the lack thereof.
I'm using nix on mac i find it really helpful
This was me a while ago. You probably saw my gripes on Mastodon.
I’m not a NixOS user, but to me it seems that most of your concerns are related to their philosophy. Since Nix wants to put everything in one config file it follows that you shouldn’t use the ordinary config files but keep to the one given. I can see the usefulness of NixOS if you manage a fleet of 1000s of Linux desktops. You can test on a small set and then push the config to the rest. However, that’s what Ansible and such tools do as well. And you also need a mechanism to actually push the update. Ansible/Chef/Puppet/Git to the rescue.
"Everything in one config file" isn't really a Nix philosophy. I genuenly have no idea where that even came from. Nix is about declarative, deterministic and replicable builds. It was never supposed to be configured with a single file as it's makes modularity much harder. If anything, as flakes become more and more prevalent, it becomes "everything is a project in a git repository" philosophy. Where Nix is responsible for determinism and replicability and git is responsible for sharing and version control. For example, I have one repository for my Nix configurations which has different outputs. One for my NixOS PC, one for my laptop where I use NixOS in WSL and one with home manager configuration I can use on any Linux or MacOS system. All configurations are just a set of modules that can be shared or used independently. For example, I have a module that defines dev environments which is used by all outputs, so if I, for example add some new library or change my Neovim configuration on my NixOS PC, I would have the exact same change available on any other system as long as I do git pull and run rebuild.
@@_TeaMasterGood info! Like I said, I don’t (yet, at least) use NixOS so my info mainly comes from YT channels like this. Still its declarative nature sounds interesting to an old Haskell programmer like me. 😊 I’ll have to take a look at it when I have some time over. Just seems the guy hasn’t really understood that Nix is different and not just a work-over of Ubuntu or Fedora like many other distributions. That’s why NixOS sounds interesting to me.
NixOS has its own mechanism to push the update, though most users I think just use Git. The Nix-native solution is NixOps, though only have 2 machines (only one of which uses NixOS, I'm not too familiar with how it works or how it differs from the other options.
@@mbee32k I sometimes like to describe the Nix language as "the bastard child of Haskell and JSON." If you can forgive the lack of static-typing or operator overloading, you'd probably feel right at home as a Haskell programmer, with only a few small syntactic differences. On the other hand, the lack of static-typing makes it surprisingly fun to write untyped Lambda Calculus with.
num = rec {
zero = succ: zero: zero;
succ = n: succ: zero: succ (n succ zero);
add = m: n: n succ m;
};
@@birdstrikes Well I do see the use-case! I own several Linux workstations, and I try to keep them sort of similar. Where I work we DO have thousands of Linux workstations. But I gather you are a NixOS user, so if fleet management isn’t a possible use case, then please enlighten us of little knowledge; what IS the NixOS use-case?
Gonna be honest, the documentation is super detailed and fantastic from my experience in the programming world. The documentation isn’t bad, the OS just probably isn’t meant for you imo.
I have tried NixOS and I had the same experience.
The documentation is bad, it contains commands in examples which don't work, like 'nix search wget'. It's hard to set up NixOS for hardware, you can't pass configuration file to /etc, I need someone who already written service for it. nix-env can't manage packages installed with configuration.nix, but both of them stored in the same directory, it's confusing.
So I decided to stay on Fedora + Ansible, and on Debian stable + Ansible + nix as package manager, which is not perfect too.
Nice informative video thanks!
One comment about the difficulty, though... leaving out the really Linux savvy people that will be able to make everything run, I think the opinion is biased from being a Linux noob, as you modestly define yourself... for a complete noob there will be no difference in reference to what they already know of Linux since they know supposedly nothing about Linux... hence my take is NixOs is not good for Linux fairly introduced people, but it could be good for complete noobs that start from scratch and learn from the ground up.
Completely agree on the documentation, though, but if they improve that... starting from zero with NixOs would be same as starting from zero with any more traditional Linux systems (if the concept of traditional Linux even exists 😂)
I think the concept of NixOS is awesome, I looked into using it and I just didn't think it was worth my time unless I wanted a career maintaining a businesses Nix installs. I develop apps for Linux/Windows but not Linux the OS itself. Maybe someday I will put in the time but for now it's back to LMDE.
Hey, Matt... have you tried GNU Guix yet? Would be interested in your take on that.
What is your configuration. Is that polybar or something?
The documentation isn't *garbage* per se, just sparse for the most part. Sparse both in content and mainly location. It's like having your the pages of a manual torn out and scattered through your house lol. The community is pretty good at helping each other though
Hyprland! Let's gooooooo!
Yes
I couldn't even get NixOS to the "boot from installer media" stage. I followed all of their instructions to flash a USB drive so I could install it on my really extremely standard PC and the live disk won't get past boot stage 1. I really wish I could try it.
@@apexcodes did you disabled secure boot?
Before seeing the video, documentation and recently updates in the unstable version that are not reflected in the documentation
I think your font issue might be related to nerd-fonts and not nixos. it seems that some icon fonts were removed in newer versions. had the same issue not too long ago, reverted to an older version and everything is fine, but I'm not on nixos ...
Yep. I had the same issue with Nerd Fonts.
3:18 You can DRY the pkgs repetition with the "with" keyword in nix lang
I have nixos on my laptop as a secondary os that I use when not doing school or work stuff only leisure. I find my self using the secondary os very rarely so I value when upgrading the system every once in a while it not breaking. Been using nixos on that laptop for 2,5Months now and it has been rock solid even when running unstable. I very much agree that the documentation is quite horrible and there is no explanation how to use some things. Some stuff I've gotten to work by watching some TH-cam videos and some with the help is chatgpt (even though it's not perfect it sometimes gets me where I wanted to go).
The Nerdfonts issue may be that the nixos package is newer than your config, and uses the new fixed glyphs? They had to deprecate a lot of material design glyphs so you need a tool like nerdfix to update them to the new ones…
I agree with you everything I mentioned is true
I am still not until now I did not understand the way to make Nix OS, not even with the intention of its files, so that I do not consider it as a Linux system
You don't need to prepend `pkgs` for all your packages. You have an example there for `wget` and that's why you have `with pkgs; [` there at the beginning of the packages statement, my dude.
I eventually got there.
@@TheLinuxCast glad you figured it out. Happy endeavors!
Man i really hate that you need to understand what does with pkgs; means to actually understand what's going on, i read a long handbook about nix to understand the basics and the json like syntax
I have only used nixos a bit. Isn't most of it just the wiki? In which case, yeah, it's gonna be spotty as hell. Which isn't ideal. Unless they have some team actually going through with a strategy to solve it.
I basically resolved to look at the packages themselves and which parameters they exposed in cases when the wiki wasn't covering it.
I, too, have not looked at flakes at all. It does seem Nix OS is a convergence of a few different projects and approaches. And that is a bit confusing for someone who isn't immersed in it.
nix shells only temporory simlink a package into your bin folder. this way if your just testing a program its only temporarily installed
NixOS doesn't even get points for putting the name at the top of the exam, IMHO. NixOS is the only distro (and community) I have encountered where the mere concept of official documentation is looked upon with disapproval. I really want to like NixOS, but right now I simply can't.
Nix is a different paradigm. It is declarative like Terraform for infra. This is for operating systems and applications
I almost overdosed on the Nix Pills, it really took forever to really get derivations
are you ising opneSuse Leap or Tumbleweed or immutable one? thanks
Tumbleweed
@@TheLinuxCast i think that it's a good choice. openSUSE in undervaluated 😁
So is Hyprland much easier to set up on NixOS compared to Arch or have you not tried setting it up on Arch for a long time/ever?
Well with NixOS you only have to really accomplish it once and then guard that setup/config file then you're done. Plus it has a KDE iso so that would just come with Wayland.
Sorry I meant Hyprland. Arch and NixOS were the only distros with official Hyprland support last I checked. @@hopelessdecoy
SAT is scored on a scale of 400-1600. Presumably one gets 400 if they manage to get everything wrong.
Maybe look up intermittent fasting and keto.
the sat scoring system that you're talking about is the new one. I'm not sure exactly when it changed but it was around 2016ish iirc
Yes, the problem of Nixos are the multiple syntax errors. I vote for OpenSuse. No matter if it is Micro or Leap.
OpenSUSE is solid. NixOS is my primary system but Tumbleweed is my secondary system.
I'm a die-hard NixOS fanboy.... but yeah, holy shit the documentation is awful lmao, you need to ask questions on discord/forums/matrix to even have a chance with it
I don't personally have an issue with NixOS docs. There is definitely a steep learning curve, but it's very possible to learn things in isolation so you don't get overwhelmed. You don't need to have a perfect config out of the gates. You don't need to understand flakes out of the gates. You don't need to use home manager out of the gates, etc. Just tackle whatever is interesting in the moment and build your knowledge incrementally. Because it's a declarative distro, your learning process will self document itself.
I tried nix yet again and could not get my dev environment to work. So I went to arch because I needed the latest nvidia driver for cs2 to run XD.
There is (yeah i didnt believe it either but it exists) a page in the nixos wiki that explains how to install nvidia drivers, and it was a fast 5 min copy pasting that worked right away after rebooting
Nix seems to benefit IT professionals, who have to deal with many separate computers.
Sounds to me the benefits are much less for a regular desktop home users. And since it does things so differently, the things you learn won't transfer over to other Linux distros as much, and only good if you decide to remain in Nix OS. Sounds more complicated than Arch, so maybe the new meme should be "I use NixOS btw". (Linux from scratch people: still not impressed)
@@user-fk2xg8nq6r the problem is the learning though, and what you learn from Nix OS is not transferable to the other distros, since they do things in their own unique way. All I know is Chris Titus Tech, Jake@Linux, and Matt (TheLinuxCast) all tried it and moved on. They may need to make the configuration file simpler to use..like maybe make a GUI option for it.
pkgs = {
thing
thing2
. ..
};
this will make things nicer
I love your reviews, dude. Keep it up!
Not really a problem tho. I'm loving it so far.
Everyone complaining about documentation because instead of contributing to the docs to make it better, people either make videos or write blogs so they can generate revenue, or they simply lack the expertise and interest to make it better.
I know nothing about Linux. I'm something worse than a noob because I suck as a Binbows user too but I finally convinced myself to start learning and I chose Spiral Linux, because is Debian made usable for noobs by an anonymous someone, who's made the OpenSUSE more noob friendly prior to this.
Anyway. So I have it running on a thin client. It was super easy to install and works great but I'm not gonna use it as a daily, so as a Linux nerd wannabe I've remembered when Chris Titus was talking about Nix. He said:
- You should use Nix. It will be fun. I promise.
After getting Nix installed in the Spiral Linux, I wanted to try what it can do, so I started reading the documentation and OMFG! It looks like a retarded brother of ChatGPT was trying to write a poem about computers and shit and when he showed that to mommy, she said - "Well done! I'm proud of you!".
And I never new how and why did I get from Nix to the NixOS documentation all of a sudden. And I think they do it on purpose to keep the noobs away from it.