ERRATA - @Vimjoyer's video is here: th-cam.com/video/a67Sv4Mbxmc/w-d-xo.html - 0:18 Misspelled "LINUX" in the title, classic me! - Asahi USED to be arch-based, now fedora-based. Same problem, different flavour! - The TOML examples shouldn't have semicolons at the end
@@SumriseHD yeah, it happens, though Arch has it's upsides: at least you get to know your system! I used it before NixOS, learned tons of stuff from it (e.g. drivers, package management, bleeding edge etc.)
@@Schmogel92I'm guessing the learning curve is so high that nobody ever got to the good part. NixOS didn't even have a GUI installer until last year. I've been using it for 3/4 years and I have no intention of leaving. It's the best distro for software development by far.
On the flip side, NixOS is so hard to learn that, by the time you are able to use it, you can contribute to it. It's easy, it's all text files in a git repo. As a result, NixOS has a higher percentage of contributors compared to other distros.
NixOS was a bit too limited for packages back when I first saw it in mid 2010s, but I think that graph and the annoyance of updating/keeping up with news for Arch might've just convinced me to switch
Hahaha. I just got the config table 12:26 This is so much better. So much brain space was wasted on which config where and what to edit. Thanks for the videos! Love the channel
i probably wouldn’t recommend NixOS to most linux users, especially because of the learning curve, but i would certainly recommend that every single arch user tries it out
Some nitpicks - nixos-unstable has automated tests. In fact these tests cause nixos-unstable to lag behind master by up to one week if there are critical test failures, like rendering the system in an unbootable state, or similar problems. NixOS-stable works by freezing versions of critical system components, only selectively porting back versions where neccessary. - Addendum: even the package definitions are tracked by git. There is also the nixos master branch. You dont want to use that branch ever directly. This one is the branch with 0 tests applied (except: is it valid nix code?) - you can also configure your system using json.
Interesting! Thanks for those details, I don't think you're contradicting anything I've said, just providing more information? And yes, I know about configuring nix in json. That is not an improvement from my point of view lol
@@NoBoilerplate could you sell me on how toml would be a better alternate config format than json? If you're going to pick a non-recommended format anway
I've been using NixOS for about 6 months now, and I love it. My favorite"feature" is impermanence, so my system rebuilds itself from fresh on every boot.
@@NoBoilerplate yea it's useful, like for backups because all my files not managed by my config (my system state) are in one place (under /persist), so I just need to back up that
Mounting root on a tmpfs for a daily driver feels like it should be insanity, and yet NixOS lets you get away with so much that it's somehow become completely normalized. It's kind of amazing.
As someone who’s basically only ever written a single RPM… writing pkgs in Nix and Guix is so unbelievably efficient in comparison. Linux would have to be ludicrous not to gravitate towards these solutions.
Video suggestion: rapid prototyping in Rust. I love rust and colleagues comment all the time the amount of effort it requires to build even a proof of concept. Granted, rust forces you to do you due diligence before you can even try to run it. However, I would very much like to learn tips and techniques to easily do rapid development, cut some corners to get it going. Some ideas: disallow optimized builds when corners are still cut, use todo!(), initially build everything with just traits and automocks and gradually implement them (feels like tdd without the tests, but still designed to be loosely coupled).
I think you forgot to mention another important part. Nix can be installed as just a package manager on any other distro and gets you much of the benefits of nixos on user packages. For average home users who don't configure systemd or manage user groups, the package manager might be all they need. It's also why people use home-manager, it installs and configures home packages and works on both nixos and nix package manager.
there's also another project called system-manager which allows nixos modules on non-nixos distros. i've never tried it and have no idea how well it works, but it exists!
I've been running Debian as my main OS since 1997, and despite upgrading, replacing, and diversifying the hardware a bunch of times, I still have basically the same original install 27 years later. It is a little weird though, seeing the 1990s in a "ls -alt ~". :D
nvd - Nix/NixOS package version diff tool This tool helps to see what actually changes within an update. After updating flake.lock or any other tempering with my config I run: ‘nixos-rebuild build --flake 'flake-path#' && nvd diff /run/current-system result’. It shows it all. Version changes, package and dependency changes.
I have written a script to build two different commits of the same repo, and then diff them using nvd. This allows me to diff some configuration that is not local (i.e. deployed to a remote server using deploy-rs). It is really useful.
12:53 "I'm sharing this just between you, and me, and 200,000 of my closest friends." 😂 That was gold. And I've never thought of using TOML, YAML, or any other ML to generate config. That's an interesting approach to get around learning the syntax at first.
FYI, arch based distros using btrfs for the root FS allow rollback to a previous state. This has saved my bacon on a few (important) occasions. Garuda is worthwhile checking out.
Also possible, but takes some setting up, on Debian using snapper, some subvolumes and hooks. It covers the rollback function, but not so much the background building with atomic live switching.
This was a really good overview! I'm nix-curious and am often confused on what exactly nix is... now I understand it's more than just 1 tool. The super-updated package repo has me sold. I used to think nix-folks just loved having everything locked down to a known good version and letting it stay that way. Now I understand that nix is a toolkit to help you never leave your packages, config, and dependencies stale.
Great to see yet more vids on NixOS. For those wanting to try, I strongly suggest installing Nix on your current distro and/or NixOS in a VM. It will be way less frustrating. You can take advantage of many features of Nix without running NixOS itself. Ideally set up a system configured as you like with all you need in a VM, and use the configs to build your configured system right away when you do the real install. You won't have to redo anything, so no wasted time but a "safe" learning environment.
@@ryancarlson9680 even after running it for 6 months on a server I didn't feel comfortable flipping the switch until everything I needed was working, so I was sure my "real work" wasn't impacted. 🍀
0:35 Linx OS is a Linux distro that purrs when you pet the start button and roars mightly when you install a package 😂. We have fun here at no boilerplate.
What makes the NixOS way of working interesting is that it seems to be a perfect fit for a corporate deployment. While I haven't still tested using NixOS it seems like that with it you could easily create static configurations and then deploy them number of machines and easily update them using a single base configuration file. The base configuration in turn could be layered to multiple custom variants featuring legacy tweaks for the corner case installations without interfering the updates.
EXACTLY, but also that's cool for home use, I was able to put my desktop's config file on my laptop, run a rebuild, and 15 minutes later had a copy of my deskop. it was a MOMENT, for me!
As a matter of fact, you *can* manage NixOS configurations from remotely. With flakes it's even more powerful as you can have multiple archetype configurations for an entire fleet of servers and desktops and have them rebuild all from a single "command center" machine. I almost want to become a sysadmin just to be able to feel that powerful.
i haven't been genuinely excited by linux content like this before. i wrote off nix without really looking into it, but this is unironically exactly what i've been looking for--after a journey spanning mint to arch bahaha, thank you for this lovely introduction :)
I’ve daily’d NixOS for over 2 years now, and the rollback menu is so, incredibly, amazingly powerful. I use a non-Qwerty layout, and broke my operating system multiple times getting native drivers to work. On any other distro, it would not have worked. Now, with a functional version, have the setup in its own Nixfile, permanently hosted on GitHub. Write once, fix never. It’s the Rust of operating systems.
One of the best things about NixOS is that when something requires a tutorial on Ubuntu on Arch, on nixos it just requires adding some lines to your config. In the tutorial case it can be really easy to lose track of what you did, whereas on nixos the changes sit right alongside everything else on your system. The downside is that since it's a little niche there isn't always any good explanation for how to get something working on nixos in the first place. But at least when you DO figure it out, it's extremely easy to share it with others.
Huh, wondering when/if you'd touch on Nix. Half a year ago I decided to learn NixOS (ie. use it as my main partition and just suffer until i figured it out) and simply being able to go back to an older generation when I inevitably screwed something up was extremely pleasant. It's also made cooking up a development environment just that much easier. Keep up the good videos!
Very nice! Love the NixOS approach to things. Gave it a try recently but probably gave up too quickly. You’ve inspired me (and undoubtedly many others) to give it another go!
You won me at 3:40 I always wanted to have all my package definitions in a single file, and always wondered why no distro does that. I use arch btw and I still have no idea which packages I installed to use only once and then forget about it. Time to distrohop I guess.
I started to use NixOS some months ago. And it's really nice that most of the state of my system can be easily read from a file, for example, I was not able to know what packages come with the distro and which I intalled when I was using Manjaro. Also the reproducibility rocks. I could easily setup another computer just by running the rebuild. Also it's really good that I can choose what packages is bleeding edge, which proprietary softwares I accept in my system and have to explicitly allow what insecure/end of life packages I want to install. I wish there were a simple way to disallow some packages to be installed, like not allowing Electron or somethung like that.
9:05 the thing I recommend to do to also have a rollback of your configurations, is putting the files in your /etc using environment.etc."config/configuration.nix".source = ./config.nix; etc. this means the files are copied to the nix store on build time, and then in /etc/config, you always have the currently-booted config, even if you didn't commit it
1:26 the inflection point was earlier: old NixOS releases receive basically no support, so old packages go "stale" (no longer the latest version, simply due to time passing since the last commit to those releases)
Thanks for making this video! I learned about Nix about 2 years ago when searching for an heavily customizeable bleeding edge OS that doesn't have as annoying quirks as Arch or Gentoo, and I'm still mad I only then learned it exists. It's by far the best thing to happen to Linux distros since the invention of package managers.
It's been a joy to watch your videos as a content creator and as a software engineer. You're given me some good ideas for building my tutorials without having to sift through an hour long live code session. If I use markdown like you do, I can do most of what I want and then add animations and audio in editing.
I've been putting off converting my desktop computer from Windows 10 to Linux for the last several months. Watching this (and finally canceling my Adobe subscription) was the push I needed to finally convert.
I've been using NixOS for 3 or so years at this point, and it's really hard to imagine using anything else at this point. There have been multiple instances of having to replicate my system (either in a different machine, or on the same one after hardware failure) that took me literal minutes, instead of the multiple-hour endeavour that it would be in any other operating system. I always felt like operating systems were extremely brittle and prone to breakage, but it wasn't until I committed to NixOS that I realized the extent of it.
Btw, here's a tip: if you'd like, you can specify in your config file that you'd like your current configuration to be copied to a directory in `/etc`, essentially giving you a way to inspect the configuration that built the currently active derivation at any time. Look into `environment.etc`, and the `.mode` option to make it copy instead of symlink.
Oh also! If you'd like to be even more declarative, I recommend looking into Flakes. That way you don't have to mess with channels, and even they will be declaratively set in a file (as well as any other dependencies your system might have).
NixOS is such a neat concept for an operating system, I like the idea of it for servers especially. This is appealing to me because I have in the past made post-install scripts for Arch just to have that type of automation. Might have to give this OS another shot
honestly would check it out if i felt like nuking my system. maybe at a later date when i have less things going on. seems very cool and just what im into
Yeah, it's a great little weekend project. If you have an old spare laptop lying around, do what I did: test out all your apps on there, make sure it seems like it'll do what you want, then just take that configuration file, and put it on your main machine. One rebuild later and you're at the same state as you were on the laptop - WILD!
This video makes me want to understand linux more deeply. My daily driver is debian, but from time to time I "go out to explore" and install another distro, and I learn a lot. I learned about partitions and folder when I was installing arch linux, I learned how great debian was from trying to install it on a netbook, back when I was dayling ubuntu. I guess that with this trip I'll finally learn what a config file is...
I'm always surprised about how likeminded we are in terms of systems in life. You've gotten me on polyphasic, obsidian (switched to vim + github repo but fundamentally same), and also make videos on stuff I'm already using like Linux, Rust, and now surprisingly NixOS which I've been using as my main distro for 5 months now! Nice to have someone where I know every video will be based on the same fundamental ideals I have. (looking at your videos I see you also, like me, have adhd and autism so there's that lol)
This channel did have a video on ADHD, and I think Rust and NixOS both appeal to me in similar ways that are partly a result of my AutDHD. My autism liked it when things are consistent and predictable anyways, but my ADHD can result in both a desire to move fast and break things, and a poor memory making it hard to remember what I've already done. Neither Nix nor Rust fully allows for moving fast and breaking things, but they do allow me to try ridiculous things when I get the urge to, and will proof read my work to make sure it won't break things too badly, and NixOS in particular let's me just pretend that what I did to break the system never actually happened. And then regarding the memory aspect, both Rust and NixOS are great for collaborating with other people, but that also makes them great for collaborating with yourself across time if you've forgotten enough in the meantime to effectively count as a different person when coming back to a project. (And the OS is certainly a project you won't completely forget about and will keep coming back to.)
@@angeldude101 > (And the OS is certainly a project you won't completely forget about and will keep coming back to.) This is one of the exact reasons I got into nixos and actually commited. Where every change I make will be persisted through my life moving forward, the knowledge that, over time, if I use it as my main distro, I'll become as innately familiar with it and know every in-and-out. I can say though I'm not even close to knowing everything about nixos though haha! Just recently discovered the wonder of nix-shell 4 months in so I could remove all my project based dependencies from my main config, and share the reproducable dev environment with my 0 co-workers who also use nixos lol.
I love the idea of NixOS and I'll probably get into it, but from my gentle QEMU attempts, I had a very hard time even getting the correct desktop to run. Sometimes I'd get to the greeter, but after logging in the screen would just flash and throw me back to the greeter. Sometimes I didn't even get to the greeter. Using it in the terminal was terrific.
Interesting. I recently returned to Debian from Ubuntu as a full time Linux user since 1998 (almost always without a dual boot). What I missed in your video and then from the NixOs website is anything about the philosophy, whether there is a social contract, how it relates to commercialization. You mention the USB drive option and it would be great to see more detail on how to use a USB build as a way of easing migration rather than a full nuclear option of OS replacement.
NixOS strikes what I think is a great middle ground between libre and practicality, unlike gnu guix, which is libre only. In the nixos installer, you are presented with a checkbox labelled "Allow unfree software?" it's disabled by default. I want to play games, run music software, and use proprietary drivers, so I checked it. If I were installing on a server, I'd not have to. Purity must always be balanced with practicality, guix has 9k fresh packages, and I simply can't run my life in it. I can with NixOS!
@@NoBoilerplate I'm not an extremist FSF person, I think Debian has a sane middle ground. Ubuntu is heading in a concerning direction, for me, for example with snap and the snapstore. It looks like NixOs might be a good place for me to help with consistency over a couple of desktops, a couple of laptops and some Raspberry Pi projects. Although I don't want the same packages on all systems (eg Raspberry Pi are either dedicated to boat navigation and instruments or media systems, my wife desktop to office stuff and kdenlive, my 2 systems very multi-purpose including development). I'd already been attracted to nixshell as an alternative to Docker for rust development projects with databases etc (looks like nix develop might be even better). It does look like there is a steep learning curve to getting on top of the current "best practice" eg flakes.
The absolutely best introduction I’ve yet to see regarding nixos. I have been slowly exploring it as my servers operating systems replacement / and this video just sold me. Replacing my arch desktop? Not sure yet. But I may just fall in love again :) thank you for this video
This video kicked of my NixOS journey and i am loving it, great video Triss, as always and thank you! With flakes you can even dual yield stable and unstable at the same time.
Thanks a lot for your inspiring ideas here. And yes, in January I switched all my machines (except for one development workstation on Arch Linux) to NixOS -- using Flakes, using Home Manager. And then this language 🥰 , e.g. # Make use of recursive attribute set rec { # Fibonacci seqence, naive recursive: fib = n: if n < 2 then n else fib (n - 1) + fib (n - 2) ; # powers, recursive with nested functions for currying: pow = b: e: if e == 0 then 1 else pow b (e - 1) * b; }
While I got into Emacs I never got into WMs. NixOS seems like another one of those things you can spend a lifetime configuring. So for now I'm just trying other immutable distros. Not having packages share any dependencies seems like overkill. You can just keep using a single container for everything until you hit a conflict and add new containers accordingly.
Just to mention a thing about NixOS having way more packages than aur. Does it "really" have more packages? I am currently using NixOS and what I see is packages for separate fonts, libraries, many packages are poorly structured and don't have lts versions of the same software, so sometimes you can't just declare an older version and more modern version of the same software to be pulled without writing some workarounds. If you have to declaratively point to each separate element from fonts to drivers, libraries, software, then, yes you will end up having more repositories than anything else. I can't say that these packages are very well maintained, sometimes packages have broken links and you have to figure out what to do about it and it's not pleasant.
I like your presentation style. Quite effective, too. LOL I've seen about 5 videos about NixOS in the last 6 months or so. Your video got me downloading NixOS now.. ;-) Thanks mate! EDIT: Nix language is very cool! I had no idea it existed, until i saw this video.
I bought a secondhand laptop mostly to test this out as it looked fun. No regrets, this distro is great! Thanks for the recommendation, I'm sure you brought a lot of newbies to NixOS with this. I expect this style of package manager will become more popular because it makes so much sense.
I love you making a nixos video. I've been using it since half a year but cant get over the steep beginner learning curve, which is alright for using only on my laptop for simpler things like notes and browsing but I'd love to get away from windows in the future.
Your Linux proverbs always resonate with me - from a general user standpoint, the true power of a Linux distro is the package manager! Everything else is personal.
I used NixOS, had to stop due to FHS issues, so I use EndeavourOS with a program I made with Rust called Rebos that does repeatability with a config file.
RIGHT! It's quite simple when explained simply. I don't really know or care about all the complexities, I just edit my config, run the reload, and keep on trucking :-D
Man seriously thank you for this video. I've been playing with NixOS but hesitant on really how good of a paradigm it is or if it's just more Linux "self-flagellation". However hearing your familiarity with Rust and your experience is just confirming that I need to commit to it.
Ubuntu is linux like Harleys are motorcycles : theyre not. Ubuntu collects telemetry data and is corpo run. nixOS looks interesting from a security and attack vector stand-point
Excellent video, very concise. As a baby Linux user (only used Debian based distros so far but will try Arch soon), the thing stopping me from trying NixOS right now is the documentation. It’s not quite there yet. While I believe you that learning the Nix language is a time investment worth making, it’s a really rough experience until you get familiar with it. The documentation treats you like you already know the language, so it’s not friendly for people new to Nix or especially Linux in general. It’s not even as if I’m a fresh install, I’ve been using Linux for several years and started daily driving it this year.
So glad NixOS is getting attention it deserves. I played with in in a VM , read a lot about it and I loved it. I'm using kubuntu with nix home-manager (flake) and I really want to just install NixOS. The only problem I see (apart from being lazy to move my work related stuff to a new system) is that if your team doesn't use Nix - you are screwed. You will need to set up a dev-container or a full VM to develop projects that were set up and configured on and for an FHS system.
I found the python developer! (joking! this problem happens with many languages) The real solution to your problems is to encourage your team to move to container-based development, that way it'll work across linux/osx/windows AND your nixos machine. "install a bunch of these random dependencies" is not how we should develop software :-D
Wow, you nailed it, I am a python dev 😄 Containers are awesome in 2 ways: - You can be very precise about your app's environment. It works on my machine - it will work on any machine - You don't pollute your system/home with some packages, npm/python global installs, python venvs, configs, caches, etc. I don't understand why I *NEVER* heard anyone having concerns about this. The first time was when I learned this: "Nix exposes to your userspace only the packages you explicitly installed". Nix doesn't save you from all trash files though... Containers do
@borisoid I think you'll want to check out nix-shell for your dev environments. Wasn't covered in this video, but it's an excellent alternative to docker containers, fully integrated with your OS. There's also direnv, which can automatically switch to these nix shell environments based on directories. They are relatively small files, any other nixos devs on the team will see you as a Chad, and maybe you'll convert other curious devs.
@@NoBoilerplate I'm curious. When you recommend container-based development, are you imagining web development or other systems where you almost entirely interact with your application through the network or through another program like a web server or similar? I'm an embedded developer and I also do a lot of system programming. When I'm not developing something which uses hardware, I'm probably writing something that I intend to call from the command line, so having binaries which only work inside one special container (or which I have to build multiple times) just never seems to make sense to me. That being said, having containers for CI or so you *can* debug build problems separate from your idiosyncratic system and so on? That's great. I just want portability so that things work inside and out so you can be flexible and use the tools most suited to your situation. So, my curiosity: I'm curious how what I've described jibes with your recommendation to move towards container-based development. Are you trying to get more benefits than I've outlined? Or solving different problems? Or do you basically agree (or disagree) with my position?
You sound like if Tom Scott took a lighter coffee today and decided to talk about Linux distros instead of weird places around the globe; and I love it ❄ I wonder how long it may take for NixOS to overtake Arch, with such a large difference in safety and simplicity? Great video, overall!
It's not _completely_ impossible to break. It just requires filesystem corruption to achieve, and even then it can still often be salvaged, like a phoenix rising from the ashes.
I know basically nothing about coding and I didn’t understand a word of this video, but I still watched the whole 15min of this shabang of an engaging saga that it was. It’s been a while since I’ve felt so dumb. Thank you for the reality check.
For anyone wondering, the reason a lot of binaries might not work is because of dynamic libraries. Nix doesn't put anything where programs expect them, and doing things like dynamic libraries working out of the box will usually break reproducability, which is one of the main goals of nix.
the main reason I did this was to effortlessly get all my apps that background-download arbitrary binaries to just work. Solved a thousand tiny problems in one go, and it's still reproducible enough for me, because the apps THEMSELVES (vscode, nvim) have a config I control, I just don't care what THEY are doing behind the scenes to make themselves work. It's a concession to practicality, and one that most people will want.
@NoBoilerplate yeah! I think it's not enabled by default because it breaks one of the design goals of nix in the first place. If you want have a hole in reproducability, that's a conscious decision you have to make first.
I love this video, and was about to convert my old laptop from Ubuntu (was windows 8.1 but too slow, linux revived it) to NixOs but I got lost from around half part of the video. Guess I need to find some free day to sit down and research first
Never thought I’d see one of my favourite channels shout out another one of my favourites! So cool to see the recognition Nix and NixOS has been getting as of late thanks to people like Vimjoyer! Love from India ❤
For someone who likes reusability, NixOS has been the most pleasant Linux experience. You never have to repeat a single line of configuration if you don't want to. Your entire system can be made up of reusable code snippets, even down to the very IDE that you use to create it. This is my most favorite distro so far. It's stable, bleeding edge, declarative, and whatever you want it to be.
I daily drive nixos for over a month and it is awesome! Before i was saving my configurations and packages with Ansible, but i always felt like it's not the way Ansible wants to be used.. With NixOS i can configure everything in a single space, without having to worry, i am missing something, when i setup a new machine!
Gracias por hacernos llegar este nuevo tipo de sistema operativo, dado mi escaso tiempo libre diario, no me habría sido posible conocer este contenido sin tu ayuda. Gracias
@@NoBoilerplate ... maybe? I had bad experiences with Linux Dual Boot and Windows years ago, so I never did it again. Not really in need of Dual Booting into Linux... If anything needs Linux, I try it on a PartedMagic USB stick and that is working out for me. I'm trying to think for what reason I could justify Dual Boot, but I can't find one currently. (I'm also planning to finally reinstall Windows and do Win 10 LTSC instead of normal Win 10. I wonder when I'll get to that...)
@@pandavovaIf you're a Rust dev like many people who watch this channel: compile times. ITS SO MUCH FASTER! like, i was surprised switching from windows to linux for compiling rust projects would be that much faster.
oh yess, the perfect channel to cover nix/nixos. I've been getting into them recently as well and they feel like such powerful tools to have as a software developer (or anyone who does anything with programming)
@@Anonymous4045Nix Shell, you can setup a development environment easily without affecting the rest of your system. You specify what packages or environment variables you want and Nix creates a new shell with those available to you, when you're done you exit the shell and those packages are gone.
This video got me to use Nixos, and boy have I been enjoying it. Things occasionally get stuck but mostly just work! It's great, and so much better to work with than my previous experience with Linux and definitely better than with windows.
You made me want to try daily driving Linux again, after years of working in MacOS and pushing Linux everywhere I can only in my job or home IoT stuff. Thanks 🏄🌊
This video is so straight-to-the-point and well made that it may have just convinced me to reinstall my OS. insanely good video for what seems like a perfect OS
What I see this being really good for, is usage in enterprise environments. Like digital signage or POS. Maybe in employee workstation if any company is daring enough to not use Windows.
6 years into NixOS: nix is still a weird language. But my router and my servers got all NixOS. Also that reproducable builds stuff can be used on different OSs. Also, you can split your NixOS configuration in several files. I backup my NixOS configuration daily to "S3" buckets.
Been dual booting nixos for a few months now and my config have evolved quite a bit. I try nixos because of this video, and the experience has been... mixed. On the one hand, i can fearlessly change my DE and don't have to worry about not being able to revert back to my previous DE if i found the current one isn't to my liking. I'm in the middle of trying hyprland. It's still a mess so i still use KDE, and i don't have to worry about cleanup if i am bored of hyprland or if i have decided to fully switch to it and remove kde. I'm also enjoying the "OS as code" approach. It feels like I'm programming my own OS and adding new features every commit. It's probably the best aspect of it. On the other hand, the lack of documentation and good error message (I'm sorry I'm too spoiled by rust) really makes me feel like a masochist. Only a masochist subjects themselves to look at the source code just to install software or to tweak config. With the recent shake up in the nix community. I can't help but see the bleak future nix has. There's a rumor going on that they want to remove flake, an experimental-in-names-only feature that everyone uses, and because of their "experimental" nature, will not be officially documented. So, Nixos. It is a good distro, with the most abyssal, dogpoop documentation. Thank god vimjoyer exists. Be warn. Weigh in the pros and cons of NixOS before committing. Mint is fine.
Since Ubuntu 6.06 Dapper Drake I've had this autistic habit of installing Linux once a year and messing with it until it broke. NixOS has literally solved Linux for me. With this, I can actually permanently switch. Amazing. Thanks for this video.
ERRATA
- @Vimjoyer's video is here: th-cam.com/video/a67Sv4Mbxmc/w-d-xo.html
- 0:18 Misspelled "LINUX" in the title, classic me!
- Asahi USED to be arch-based, now fedora-based. Same problem, different flavour!
- The TOML examples shouldn't have semicolons at the end
Lynx or Linux? 0:38 😅
I am literally installing Arch Linux, btw, after using Fedora for a while and now you upload this. 😂
@@SumriseHD yeah, it happens, though Arch has it's upsides: at least you get to know your system!
I used it before NixOS, learned tons of stuff from it (e.g. drivers, package management, bleeding edge etc.)
Missing ] at 4:46 on line 1?
In the descriptions there are "alternate video titles" but are referring to rust pure functions
Taking the Cloud world's "configuration as code" philosophy and applying it to an OS in this particular way is honestly brilliant.
What's wild is that Nix came FIRST! It's 20 years old!
@@NoBoilerplate what is the reason for it becoming popular only recently?
@@Schmogel92I'm guessing the learning curve is so high that nobody ever got to the good part. NixOS didn't even have a GUI installer until last year. I've been using it for 3/4 years and I have no intention of leaving. It's the best distro for software development by far.
On the flip side, NixOS is so hard to learn that, by the time you are able to use it, you can contribute to it. It's easy, it's all text files in a git repo. As a result, NixOS has a higher percentage of contributors compared to other distros.
If anything, the cloud world took that from Nix, given that Nix was created in 2003
Thanks for the shoutout! I've been watching your channel for a long time, and I never thought I'd hear you recommend my video. Feels very surreal.
well deserved. your videos carry every nix newbie.
Moments like this make the internet great. Thank you both for helping the community like you do, I hope you feel the impact you make
My dude! Thank you for your nice words, and your incredible videos! You've got a great style, email me, let's chat 😀
@vimjoyer If it wasn’t for you I would’ve never dared. You make it approachable.
@@luisliz ikr.. he is only the reason i got started and still loving it..
NixOS was a bit too limited for packages back when I first saw it in mid 2010s, but I think that graph and the annoyance of updating/keeping up with news for Arch might've just convinced me to switch
Right! I had the same impression, it's WILD, everything is here, including all my weird music plugins and streaming stuff!
Hahaha. I just got the config table 12:26
This is so much better. So much brain space was wasted on which config where and what to edit.
Thanks for the videos! Love the channel
i probably wouldn’t recommend NixOS to most linux users, especially because of the learning curve, but i would certainly recommend that every single arch user tries it out
Some nitpicks
- nixos-unstable has automated tests. In fact these tests cause nixos-unstable to lag behind master by up to one week if there are critical test failures, like rendering the system in an unbootable state, or similar problems. NixOS-stable works by freezing versions of critical system components, only selectively porting back versions where neccessary.
- Addendum: even the package definitions are tracked by git. There is also the nixos master branch. You dont want to use that branch ever directly. This one is the branch with 0 tests applied (except: is it valid nix code?)
- you can also configure your system using json.
Interesting! Thanks for those details, I don't think you're contradicting anything I've said, just providing more information?
And yes, I know about configuring nix in json. That is not an improvement from my point of view lol
@@NoBoilerplate could you sell me on how toml would be a better alternate config format than json? If you're going to pick a non-recommended format anway
YAML and Toml are easier to read and write than JSON for humans as you don't have to be concerned about escaping quotes in the middle of a string
Small correction - Asahi USED to be arch-based, nowadays the official, blessed asahi distro is fedora-based
🤮
Bruh
Don't be a hater @@psi4j
@@psi4jWhat’s wrong with fedrora (except DNF, DNF is slooooow).
@@xanderplayz3446 i've always found apt is slower. I think pacman might just be really fast
I've been using NixOS for about 6 months now, and I love it. My favorite"feature" is impermanence, so my system rebuilds itself from fresh on every boot.
Ooh, that's cool, Vimjoyer talks about that feature.
@@NoBoilerplate yea it's useful, like for backups because all my files not managed by my config (my system state) are in one place (under /persist), so I just need to back up that
Mounting root on a tmpfs for a daily driver feels like it should be insanity, and yet NixOS lets you get away with so much that it's somehow become completely normalized. It's kind of amazing.
What are your boot times like?
@@Schmogel92 pretty quick, I also have disk encryption, but I think it’s around 20 - 30 secs
As someone who’s basically only ever written a single RPM… writing pkgs in Nix and Guix is so unbelievably efficient in comparison. Linux would have to be ludicrous not to gravitate towards these solutions.
Video suggestion: rapid prototyping in Rust. I love rust and colleagues comment all the time the amount of effort it requires to build even a proof of concept. Granted, rust forces you to do you due diligence before you can even try to run it. However, I would very much like to learn tips and techniques to easily do rapid development, cut some corners to get it going.
Some ideas: disallow optimized builds when corners are still cut, use todo!(), initially build everything with just traits and automocks and gradually implement them (feels like tdd without the tests, but still designed to be loosely coupled).
Another tip is to avoid the borrow-checker by simply `clone`ing everything. `rustc` can sometimes optimize `clone`s into borrows
Try using Copy traits everywhere. It might go against the Rust philosophy but if you want fast prototyping it's definitely make it faster.
I think you forgot to mention another important part. Nix can be installed as just a package manager on any other distro and gets you much of the benefits of nixos on user packages. For average home users who don't configure systemd or manage user groups, the package manager might be all they need.
It's also why people use home-manager, it installs and configures home packages and works on both nixos and nix package manager.
That's a useful part, but having all your software, kernel to userspace configured in one system is the life-changing part I'm excited about.
there's also another project called system-manager which allows nixos modules on non-nixos distros. i've never tried it and have no idea how well it works, but it exists!
yeah well, i tried using nix and home-manager on my Pop_OS!, however it completely broke my system beyond repair and I had to reinstall...
I've been running nixos as my main os since 2017, and I still have this original install 1000+ generations later.
I've been running Debian as my main OS since 1997, and despite upgrading, replacing, and diversifying the hardware a bunch of times, I still have basically the same original install 27 years later. It is a little weird though, seeing the 1990s in a "ls -alt ~". :D
@@ToyKeeper bro what ? are u sure wtf bro.. i mean amazing bro...
@@sachinchaudhary1310 Not a bro.
@@ToyKeeper really women's are amazing
@@ToyKeeper never thought i’d see the same toykeeper that made the firmware my flashlight runs in a youtube comment section!
nvd - Nix/NixOS package version diff tool
This tool helps to see what actually changes within an update. After updating flake.lock or any other tempering with my config I run: ‘nixos-rebuild build --flake 'flake-path#' && nvd diff /run/current-system result’. It shows it all. Version changes, package and dependency changes.
cool! thank you
I have written a script to build two different commits of the same repo, and then diff them using nvd. This allows me to diff some configuration that is not local (i.e. deployed to a remote server using deploy-rs). It is really useful.
12:53 "I'm sharing this just between you, and me, and 200,000 of my closest friends." 😂 That was gold. And I've never thought of using TOML, YAML, or any other ML to generate config. That's an interesting approach to get around learning the syntax at first.
FYI, arch based distros using btrfs for the root FS allow rollback to a previous state. This has saved my bacon on a few (important) occasions. Garuda is worthwhile checking out.
Also possible, but takes some setting up, on Debian using snapper, some subvolumes and hooks. It covers the rollback function, but not so much the background building with atomic live switching.
Before I switched to NixOS, I used OpenSUSE specifically for this. Snapper is great and I still use it on my user files
snapper my beloved
Same with openSUSE (another rolling distro)
This was a really good overview! I'm nix-curious and am often confused on what exactly nix is... now I understand it's more than just 1 tool. The super-updated package repo has me sold. I used to think nix-folks just loved having everything locked down to a known good version and letting it stay that way. Now I understand that nix is a toolkit to help you never leave your packages, config, and dependencies stale.
Great to see yet more vids on NixOS. For those wanting to try, I strongly suggest installing Nix on your current distro and/or NixOS in a VM. It will be way less frustrating. You can take advantage of many features of Nix without running NixOS itself. Ideally set up a system configured as you like with all you need in a VM, and use the configs to build your configured system right away when you do the real install. You won't have to redo anything, so no wasted time but a "safe" learning environment.
That’s a super helpful idea, thank you
@@ryancarlson9680 even after running it for 6 months on a server I didn't feel comfortable flipping the switch until everything I needed was working, so I was sure my "real work" wasn't impacted. 🍀
NO WAY. I could have never expected this. I've taken a lot of interest in nix recently. Can't believe you covered it
0:35 Linx OS is a Linux distro that purrs when you pet the start button and roars mightly when you install a package 😂.
We have fun here at no boilerplate.
woops! added to the errata :-D
What makes the NixOS way of working interesting is that it seems to be a perfect fit for a corporate deployment.
While I haven't still tested using NixOS it seems like that with it you could easily create static configurations and then deploy them number of machines and easily update them using a single base configuration file. The base configuration in turn could be layered to multiple custom variants featuring legacy tweaks for the corner case installations without interfering the updates.
EXACTLY, but also that's cool for home use, I was able to put my desktop's config file on my laptop, run a rebuild, and 15 minutes later had a copy of my deskop. it was a MOMENT, for me!
As a matter of fact, you *can* manage NixOS configurations from remotely. With flakes it's even more powerful as you can have multiple archetype configurations for an entire fleet of servers and desktops and have them rebuild all from a single "command center" machine. I almost want to become a sysadmin just to be able to feel that powerful.
I run a few servers in my home for various tasks. Running a deployment and all servers update is magical.
i haven't been genuinely excited by linux content like this before. i wrote off nix without really looking into it, but this is unironically exactly what i've been looking for--after a journey spanning mint to arch bahaha, thank you for this lovely introduction :)
I’ve daily’d NixOS for over 2 years now, and the rollback menu is so, incredibly, amazingly powerful.
I use a non-Qwerty layout, and broke my operating system multiple times getting native drivers to work. On any other distro, it would not have worked. Now, with a functional version, have the setup in its own Nixfile, permanently hosted on GitHub.
Write once, fix never. It’s the Rust of operating systems.
IT'S THE RUST OF OPERATING SYSTEMS!
More like the haskell but sure
I was just watching some past videos and wishing that you would make something covering Nix. Thanks man, your videos help me a lot.
Thank you :-)
I was just looking into this yesterday, and decided I would wait until someone else made a video on it. I am very happy to see this. You read my mind!
Nixos killed my distro hopping syndrome. Its the logical conclusion of linux imo
Awesome to see you cover NixOS! 🎉
I couldn't not, I AM FINALLY POWERFUL ENOUGH!
@@NoBoilerplate it's too powerful.. especially when you love functional... :D
That does it, I started learning and using rust last year because of you. I was thinking of trying nix and now I think the stars have alligned
Sorry/notsorry! :-D
One of the best things about NixOS is that when something requires a tutorial on Ubuntu on Arch, on nixos it just requires adding some lines to your config. In the tutorial case it can be really easy to lose track of what you did, whereas on nixos the changes sit right alongside everything else on your system. The downside is that since it's a little niche there isn't always any good explanation for how to get something working on nixos in the first place. But at least when you DO figure it out, it's extremely easy to share it with others.
JIMMY CARR USES NIX?!
Thank you, I similarly tried NixOS a while back and the whole nix-env scared me off. This is exactly what I wanted out of nix!
Huh, wondering when/if you'd touch on Nix.
Half a year ago I decided to learn NixOS (ie. use it as my main partition and just suffer until i figured it out) and simply being able to go back to an older generation when I inevitably screwed something up was extremely pleasant. It's also made cooking up a development environment just that much easier.
Keep up the good videos!
Thank you!
Do you still use it?
That I do. @@_Lumiere_
Very nice! Love the NixOS approach to things. Gave it a try recently but probably gave up too quickly. You’ve inspired me (and undoubtedly many others) to give it another go!
You won me at 3:40
I always wanted to have all my package definitions in a single file, and always wondered why no distro does that. I use arch btw and I still have no idea which packages I installed to use only once and then forget about it. Time to distrohop I guess.
I started to use NixOS some months ago. And it's really nice that most of the state of my system can be easily read from a file, for example, I was not able to know what packages come with the distro and which I intalled when I was using Manjaro.
Also the reproducibility rocks. I could easily setup another computer just by running the rebuild.
Also it's really good that I can choose what packages is bleeding edge, which proprietary softwares I accept in my system and have to explicitly allow what insecure/end of life packages I want to install. I wish there were a simple way to disallow some packages to be installed, like not allowing Electron or somethung like that.
I knew you had to eventually drop a nix video
I've been fighting it for so long lol
"or whatever it is python is using by the time you are watching this" 😅
pip poetry conda pyproject.toml...., i think he is right 😂😂😂
pip, poetry, anaconda, pipenv, pdm, apt, virtualenv, take your pick 😂
he said also npm, and its not for python 😅
Rye
hatch
I’ve been working on nix this week and you bring out this video. Love it
9:05 the thing I recommend to do to also have a rollback of your configurations, is putting the files in your /etc using environment.etc."config/configuration.nix".source = ./config.nix;
etc.
this means the files are copied to the nix store on build time, and then in /etc/config, you always have the currently-booted config, even if you didn't commit it
1:26 the inflection point was earlier: old NixOS releases receive basically no support, so old packages go "stale" (no longer the latest version, simply due to time passing since the last commit to those releases)
Thanks for making this video! I learned about Nix about 2 years ago when searching for an heavily customizeable bleeding edge OS that doesn't have as annoying quirks as Arch or Gentoo, and I'm still mad I only then learned it exists. It's by far the best thing to happen to Linux distros since the invention of package managers.
It really was a matter of time til you made this video 😸
Nice to see it; jumped on the NixOS train myself about two months ago ❄
It's been a joy to watch your videos as a content creator and as a software engineer. You're given me some good ideas for building my tutorials without having to sift through an hour long live code session. If I use markdown like you do, I can do most of what I want and then add animations and audio in editing.
Havent watched the full video yet but as a NixOS user im so happy you made this video, always love seeing nix get more exposure
I've been putting off converting my desktop computer from Windows 10 to Linux for the last several months. Watching this (and finally canceling my Adobe subscription) was the push I needed to finally convert.
I've been using NixOS for 3 or so years at this point, and it's really hard to imagine using anything else at this point. There have been multiple instances of having to replicate my system (either in a different machine, or on the same one after hardware failure) that took me literal minutes, instead of the multiple-hour endeavour that it would be in any other operating system. I always felt like operating systems were extremely brittle and prone to breakage, but it wasn't until I committed to NixOS that I realized the extent of it.
Btw, here's a tip: if you'd like, you can specify in your config file that you'd like your current configuration to be copied to a directory in `/etc`, essentially giving you a way to inspect the configuration that built the currently active derivation at any time. Look into `environment.etc`, and the `.mode` option to make it copy instead of symlink.
Oh also! If you'd like to be even more declarative, I recommend looking into Flakes. That way you don't have to mess with channels, and even they will be declaratively set in a file (as well as any other dependencies your system might have).
Thank you! Yes flakes and home manager are in my future :D
NixOS is such a neat concept for an operating system, I like the idea of it for servers especially. This is appealing to me because I have in the past made post-install scripts for Arch just to have that type of automation. Might have to give this OS another shot
honestly would check it out if i felt like nuking my system. maybe at a later date when i have less things going on. seems very cool and just what im into
Yeah, it's a great little weekend project. If you have an old spare laptop lying around, do what I did: test out all your apps on there, make sure it seems like it'll do what you want, then just take that configuration file, and put it on your main machine. One rebuild later and you're at the same state as you were on the laptop - WILD!
This video makes me want to understand linux more deeply. My daily driver is debian, but from time to time I "go out to explore" and install another distro, and I learn a lot. I learned about partitions and folder when I was installing arch linux, I learned how great debian was from trying to install it on a netbook, back when I was dayling ubuntu. I guess that with this trip I'll finally learn what a config file is...
I'm always surprised about how likeminded we are in terms of systems in life. You've gotten me on polyphasic, obsidian (switched to vim + github repo but fundamentally same), and also make videos on stuff I'm already using like Linux, Rust, and now surprisingly NixOS which I've been using as my main distro for 5 months now! Nice to have someone where I know every video will be based on the same fundamental ideals I have. (looking at your videos I see you also, like me, have adhd and autism so there's that lol)
This channel did have a video on ADHD, and I think Rust and NixOS both appeal to me in similar ways that are partly a result of my AutDHD. My autism liked it when things are consistent and predictable anyways, but my ADHD can result in both a desire to move fast and break things, and a poor memory making it hard to remember what I've already done.
Neither Nix nor Rust fully allows for moving fast and breaking things, but they do allow me to try ridiculous things when I get the urge to, and will proof read my work to make sure it won't break things too badly, and NixOS in particular let's me just pretend that what I did to break the system never actually happened. And then regarding the memory aspect, both Rust and NixOS are great for collaborating with other people, but that also makes them great for collaborating with yourself across time if you've forgotten enough in the meantime to effectively count as a different person when coming back to a project. (And the OS is certainly a project you won't completely forget about and will keep coming back to.)
@@angeldude101
> (And the OS is certainly a project you won't completely forget about and will keep coming back to.)
This is one of the exact reasons I got into nixos and actually commited. Where every change I make will be persisted through my life moving forward, the knowledge that, over time, if I use it as my main distro, I'll become as innately familiar with it and know every in-and-out. I can say though I'm not even close to knowing everything about nixos though haha! Just recently discovered the wonder of nix-shell 4 months in so I could remove all my project based dependencies from my main config, and share the reproducable dev environment with my 0 co-workers who also use nixos lol.
My autism video is coming next month! :-D
My autism video is coming next month! :-D
I just started learning Nix and I'm pretty excited to get up and running
The more package than the AUR point is really debatable since the two distribution count packages differently
I love the idea of NixOS and I'll probably get into it, but from my gentle QEMU attempts, I had a very hard time even getting the correct desktop to run. Sometimes I'd get to the greeter, but after logging in the screen would just flash and throw me back to the greeter. Sometimes I didn't even get to the greeter. Using it in the terminal was terrific.
Interesting. I recently returned to Debian from Ubuntu as a full time Linux user since 1998 (almost always without a dual boot).
What I missed in your video and then from the NixOs website is anything about the philosophy, whether there is a social contract, how it relates to commercialization.
You mention the USB drive option and it would be great to see more detail on how to use a USB build as a way of easing migration rather than a full nuclear option of OS replacement.
NixOS strikes what I think is a great middle ground between libre and practicality, unlike gnu guix, which is libre only.
In the nixos installer, you are presented with a checkbox labelled "Allow unfree software?" it's disabled by default.
I want to play games, run music software, and use proprietary drivers, so I checked it.
If I were installing on a server, I'd not have to.
Purity must always be balanced with practicality, guix has 9k fresh packages, and I simply can't run my life in it. I can with NixOS!
@@NoBoilerplate I'm not an extremist FSF person, I think Debian has a sane middle ground. Ubuntu is heading in a concerning direction, for me, for example with snap and the snapstore.
It looks like NixOs might be a good place for me to help with consistency over a couple of desktops, a couple of laptops and some Raspberry Pi projects. Although I don't want the same packages on all systems (eg Raspberry Pi are either dedicated to boat navigation and instruments or media systems, my wife desktop to office stuff and kdenlive, my 2 systems very multi-purpose including development).
I'd already been attracted to nixshell as an alternative to Docker for rust development projects with databases etc (looks like nix develop might be even better).
It does look like there is a steep learning curve to getting on top of the current "best practice" eg flakes.
The absolutely best introduction I’ve yet to see regarding nixos. I have been slowly exploring it as my servers operating systems replacement / and this video just sold me. Replacing my arch desktop? Not sure yet. But I may just fall in love again :) thank you for this video
Here, algorithm, have a comment.
This video kicked of my NixOS journey and i am loving it, great video Triss, as always and thank you!
With flakes you can even dual yield stable and unstable at the same time.
i use arch btw
I use nix btw
I use guix btw
Mee to btw
I don't use gentoo :(
I use linux from scratch btw (i don't)
Thanks a lot for your inspiring ideas here. And yes, in January I switched all my machines (except for one development workstation on Arch Linux) to NixOS -- using Flakes, using Home Manager.
And then this language 🥰 , e.g.
# Make use of recursive attribute set
rec {
# Fibonacci seqence, naive recursive:
fib = n:
if n < 2 then
n
else fib (n - 1) + fib (n - 2)
;
# powers, recursive with nested functions for currying:
pow = b: e: if e == 0 then 1 else pow b (e - 1) * b;
}
cool!
BoilerOS when?
While I got into Emacs I never got into WMs. NixOS seems like another one of those things you can spend a lifetime configuring. So for now I'm just trying other immutable distros.
Not having packages share any dependencies seems like overkill. You can just keep using a single container for everything until you hit a conflict and add new containers accordingly.
Just to mention a thing about NixOS having way more packages than aur. Does it "really" have more packages? I am currently using NixOS and what I see is packages for separate fonts, libraries, many packages are poorly structured and don't have lts versions of the same software, so sometimes you can't just declare an older version and more modern version of the same software to be pulled without writing some workarounds. If you have to declaratively point to each separate element from fonts to drivers, libraries, software, then, yes you will end up having more repositories than anything else. I can't say that these packages are very well maintained, sometimes packages have broken links and you have to figure out what to do about it and it's not pleasant.
I like your presentation style. Quite effective, too. LOL I've seen about 5 videos about NixOS in the last 6 months or so. Your video got me downloading NixOS now.. ;-) Thanks mate!
EDIT: Nix language is very cool! I had no idea it existed, until i saw this video.
Your content, no matter the topic, is a breeze! I'm glad I found your channel, it literally has revolutionized my way of thinking...and acting!
I bought a secondhand laptop mostly to test this out as it looked fun. No regrets, this distro is great! Thanks for the recommendation, I'm sure you brought a lot of newbies to NixOS with this. I expect this style of package manager will become more popular because it makes so much sense.
I love you making a nixos video. I've been using it since half a year but cant get over the steep beginner learning curve, which is alright for using only on my laptop for simpler things like notes and browsing but I'd love to get away from windows in the future.
Your Linux proverbs always resonate with me - from a general user standpoint, the true power of a Linux distro is the package manager! Everything else is personal.
I used NixOS, had to stop due to FHS issues, so I use EndeavourOS with a program I made with Rust called Rebos that does repeatability with a config file.
I had heard about nix a while ago but felt like it was kind of needlessly different.
You've changed my mind
RIGHT! It's quite simple when explained simply. I don't really know or care about all the complexities, I just edit my config, run the reload, and keep on trucking :-D
FIIIINE. I will give it another try. Thankfully I was smart enough to save my nix config file from back then. I now feel very smart indeed.
Man seriously thank you for this video. I've been playing with NixOS but hesitant on really how good of a paradigm it is or if it's just more Linux "self-flagellation". However hearing your familiarity with Rust and your experience is just confirming that I need to commit to it.
Ubuntu is linux like Harleys are motorcycles : theyre not. Ubuntu collects telemetry data and is corpo run. nixOS looks interesting from a security and attack vector stand-point
Excellent video, very concise. As a baby Linux user (only used Debian based distros so far but will try Arch soon), the thing stopping me from trying NixOS right now is the documentation. It’s not quite there yet. While I believe you that learning the Nix language is a time investment worth making, it’s a really rough experience until you get familiar with it. The documentation treats you like you already know the language, so it’s not friendly for people new to Nix or especially Linux in general. It’s not even as if I’m a fresh install, I’ve been using Linux for several years and started daily driving it this year.
So glad NixOS is getting attention it deserves.
I played with in in a VM , read a lot about it and I loved it. I'm using kubuntu with nix home-manager (flake) and I really want to just install NixOS.
The only problem I see (apart from being lazy to move my work related stuff to a new system) is that if your team doesn't use Nix - you are screwed. You will need to set up a dev-container or a full VM to develop projects that were set up and configured on and for an FHS system.
I found the python developer! (joking! this problem happens with many languages)
The real solution to your problems is to encourage your team to move to container-based development, that way it'll work across linux/osx/windows AND your nixos machine. "install a bunch of these random dependencies" is not how we should develop software :-D
Wow, you nailed it, I am a python dev 😄
Containers are awesome in 2 ways:
- You can be very precise about your app's environment. It works on my machine - it will work on any machine
- You don't pollute your system/home with some packages, npm/python global installs, python venvs, configs, caches, etc. I don't understand why I *NEVER* heard anyone having concerns about this. The first time was when I learned this: "Nix exposes to your userspace only the packages you explicitly installed". Nix doesn't save you from all trash files though... Containers do
@borisoid I think you'll want to check out nix-shell for your dev environments. Wasn't covered in this video, but it's an excellent alternative to docker containers, fully integrated with your OS. There's also direnv, which can automatically switch to these nix shell environments based on directories. They are relatively small files, any other nixos devs on the team will see you as a Chad, and maybe you'll convert other curious devs.
@@NoBoilerplate I'm curious. When you recommend container-based development, are you imagining web development or other systems where you almost entirely interact with your application through the network or through another program like a web server or similar? I'm an embedded developer and I also do a lot of system programming. When I'm not developing something which uses hardware, I'm probably writing something that I intend to call from the command line, so having binaries which only work inside one special container (or which I have to build multiple times) just never seems to make sense to me.
That being said, having containers for CI or so you *can* debug build problems separate from your idiosyncratic system and so on? That's great. I just want portability so that things work inside and out so you can be flexible and use the tools most suited to your situation.
So, my curiosity: I'm curious how what I've described jibes with your recommendation to move towards container-based development. Are you trying to get more benefits than I've outlined? Or solving different problems? Or do you basically agree (or disagree) with my position?
This is the most beautiful thing I have ever seen. Been struggling for weeks with this EXACT problem for a project.
You sound like if Tom Scott took a lighter coffee today and decided to talk about Linux distros instead of weird places around the globe; and I love it ❄
I wonder how long it may take for NixOS to overtake Arch, with such a large difference in safety and simplicity? Great video, overall!
@5:50 I felt butterflies in my stomach. I just wish there was an easy way to revert back to Arch when I still find a way to mess it up :)
It's impossible to break - isn't that a relief!
It's not _completely_ impossible to break. It just requires filesystem corruption to achieve, and even then it can still often be salvaged, like a phoenix rising from the ashes.
I know basically nothing about coding and I didn’t understand a word of this video, but I still watched the whole 15min of this shabang of an engaging saga that it was. It’s been a while since I’ve felt so dumb. Thank you for the reality check.
For anyone wondering, the reason a lot of binaries might not work is because of dynamic libraries.
Nix doesn't put anything where programs expect them, and doing things like dynamic libraries working out of the box will usually break reproducability, which is one of the main goals of nix.
the main reason I did this was to effortlessly get all my apps that background-download arbitrary binaries to just work.
Solved a thousand tiny problems in one go, and it's still reproducible enough for me, because the apps THEMSELVES (vscode, nvim) have a config I control, I just don't care what THEY are doing behind the scenes to make themselves work.
It's a concession to practicality, and one that most people will want.
@NoBoilerplate yeah! I think it's not enabled by default because it breaks one of the design goals of nix in the first place. If you want have a hole in reproducability, that's a conscious decision you have to make first.
Reproducibility is imperfect anyway, even in nixos, I prefer to make some small concessions in reproducibility to gain enormous practicality! :-)
I love this video, and was about to convert my old laptop from Ubuntu (was windows 8.1 but too slow, linux revived it) to NixOs but I got lost from around half part of the video.
Guess I need to find some free day to sit down and research first
vimjoyer's video I linked is SO good
Never thought I’d see one of my favourite channels shout out another one of my favourites! So cool to see the recognition Nix and NixOS has been getting as of late thanks to people like Vimjoyer! Love from India ❤
Welcome!
I love how much attention Nix and NixOS have been getting recently. Thanks for putting out the good word!
Always!
Wow! Excellent content, amazing voice. It's almost intimidating exciting how many new users NixOS is getting lately!
Just wanted to say thank you for your contributions to nixpkgs! I recognized your name from PRs lol
For someone who likes reusability, NixOS has been the most pleasant Linux experience. You never have to repeat a single line of configuration if you don't want to. Your entire system can be made up of reusable code snippets, even down to the very IDE that you use to create it. This is my most favorite distro so far. It's stable, bleeding edge, declarative, and whatever you want it to be.
I daily drive nixos for over a month and it is awesome!
Before i was saving my configurations and packages with Ansible, but i always felt like it's not the way Ansible wants to be used..
With NixOS i can configure everything in a single space, without having to worry, i am missing something, when i setup a new machine!
I switched to NixOS after watching this and vimjoyer's ultimate guide and I couldn't be happier. Thank you for this.
Gracias por hacernos llegar este nuevo tipo de sistema operativo, dado mi escaso tiempo libre diario, no me habría sido posible conocer este contenido sin tu ayuda.
Gracias
Never knew about this, man this is pretty cool! Won't switch to Linux as a primary OS, but I'll keep NixOS in mind.
Dual boot! The nixos installer sets it all up for you :D
@@NoBoilerplate ... maybe? I had bad experiences with Linux Dual Boot and Windows years ago, so I never did it again.
Not really in need of Dual Booting into Linux... If anything needs Linux, I try it on a PartedMagic USB stick and that is working out for me.
I'm trying to think for what reason I could justify Dual Boot, but I can't find one currently.
(I'm also planning to finally reinstall Windows and do Win 10 LTSC instead of normal Win 10. I wonder when I'll get to that...)
@@pandavovaIf you're a Rust dev like many people who watch this channel: compile times. ITS SO MUCH FASTER! like, i was surprised switching from windows to linux for compiling rust projects would be that much faster.
@@laundmo I'm not dev at all so... Yeah...
oh yess, the perfect channel to cover nix/nixos. I've been getting into them recently as well and they feel like such powerful tools to have as a software developer (or anyone who does anything with programming)
Which aspects specifically do you find the most helpful in software development?
@@Anonymous4045Nix Shell, you can setup a development environment easily without affecting the rest of your system. You specify what packages or environment variables you want and Nix creates a new shell with those available to you, when you're done you exit the shell and those packages are gone.
I take full credit for the quote at 7:38!
NOT NOW SON
@@NoBoilerplate>:3
I discovered Nix half a year ago when I needed to reinstall Linux on my work laptop and I'm hooked.
You really deserve this like and subscribe! Great video, I had no idea Linux could be this enjoyable from a dev's perspective!
This video got me to use Nixos, and boy have I been enjoying it. Things occasionally get stuck but mostly just work! It's great, and so much better to work with than my previous experience with Linux and definitely better than with windows.
You made me want to try daily driving Linux again, after years of working in MacOS and pushing Linux everywhere I can only in my job or home IoT stuff. Thanks 🏄🌊
"What Sisyphus sees when turning on his computer"
Ah yes, one must imagine an Arch user happy.
This video is so straight-to-the-point and well made that it may have just convinced me to reinstall my OS. insanely good video for what seems like a perfect OS
What I see this being really good for, is usage in enterprise environments. Like digital signage or POS. Maybe in employee workstation if any company is daring enough to not use Windows.
6 years into NixOS: nix is still a weird language. But my router and my servers got all NixOS. Also that reproducable builds stuff can be used on different OSs. Also, you can split your NixOS configuration in several files. I backup my NixOS configuration daily to "S3" buckets.
Also, there's no cron. There's only systemd. Systemd works awesome with NixOS.
Good to have you aboard. Really excited about what 2024 might bring to the NixOS community :D
"It's looks a bit better than the Arch one to me actually"
Hearing the words Arch and installer in the same sentence is kinda cursed, ngl.
That's the joke, there's no installer for arch 😅 (though endeavourOSis nice)
Been dual booting nixos for a few months now and my config have evolved quite a bit. I try nixos because of this video, and the experience has been... mixed.
On the one hand, i can fearlessly change my DE and don't have to worry about not being able to revert back to my previous DE if i found the current one isn't to my liking. I'm in the middle of trying hyprland. It's still a mess so i still use KDE, and i don't have to worry about cleanup if i am bored of hyprland or if i have decided to fully switch to it and remove kde. I'm also enjoying the "OS as code" approach. It feels like I'm programming my own OS and adding new features every commit. It's probably the best aspect of it.
On the other hand, the lack of documentation and good error message (I'm sorry I'm too spoiled by rust) really makes me feel like a masochist. Only a masochist subjects themselves to look at the source code just to install software or to tweak config. With the recent shake up in the nix community. I can't help but see the bleak future nix has. There's a rumor going on that they want to remove flake, an experimental-in-names-only feature that everyone uses, and because of their "experimental" nature, will not be officially documented.
So, Nixos. It is a good distro, with the most abyssal, dogpoop documentation. Thank god vimjoyer exists.
Be warn. Weigh in the pros and cons of NixOS before committing. Mint is fine.
Since Ubuntu 6.06 Dapper Drake I've had this autistic habit of installing Linux once a year and messing with it until it broke. NixOS has literally solved Linux for me. With this, I can actually permanently switch. Amazing. Thanks for this video.