Totally demystified some of the simple details that the documentation overlooked and left me scratching my head. Luckily I knew enough to value the power of this system and persevered until I found this video. Love your work Matthias
The epic 3hr time tag put me off the feature for too long. This is best configuration focused overview I have seen - time well spent. All of the action with none of the drama - perfectly pitched level of detail. 5 stars. Thank you Matthias!
I second what everyone is saying. Great video, I'm usually very wary of video guides. Really nice that you included a short list of useful resources outside of this video as well.
you have no idea how much i needed this, i don't know why i could barely find any useful video about nixos even though it's such an interesting distro, i was looking for a video to get me up to speed with things so i don't have to read every word of the manual. Thank you sir!
Thanks Matthias, this was really good. I think I have had NixOS running for about a year on a couple of machines. It is amazing how much I still learn from watching this start to end for what I think was a second time today. Many thanks!
Matthias: Kudos to you for a very well explained video. I was a little cautious to watch it when I saw how long it is, but it is definitely worth it! I am now in the process of configuring my Thinkpad with NixOS following the principles shown in this video. I have subscribed - I look forward to seeing what you produce in the future! Many thanks (donation on its way!).
I've been slowly chipping away at this video over the past few days because it certainly is a lot of information all at once, but I can say that this is going to give me a massive advantage once I sit down and start building my system. Thank you for the incredible resource!
This was awesome. I watched the whole thing. As an experienced Linux user dipping a toe into nixos this clearly answered almost every question I had about getting started and how to do the sort of things I normally do in other distros.
Absolutely incredible video! There have been a few changes since this video was uploaded but they are sufficiently documented so this video remains an invaluable resource to anyone starting with NixOS. Thank you so much for your diligent work!
That is an amazingly good video, thank you Matthias. I’ll be re-watching it in chunks whilst I modify my system but it is the clearest explanation of Home Manager and Flakes I’ve seen. A follow-up about nix-shell would be wonderful (I’m going to try to define shells for each development project I work on).
Thanks a lot for this wonderful video. It really helped to understand all the relations between nix, nixOS, flake and home-manager. I want to use it on an Ubuntu to mainly manage my dotfiles. Thanks for the video and all the useful tipps and hints.
Thanks for your amazing tutorial, it is a great intro for users new to the nix ecosystem. I just switched to NixOS, it is a great project with a powerful concept. I am going to use your tutorial to ditch systemd-boot for GRUB. I just need that configuration limit, otherwise my bootloader will soon look very atrocious 😅 And I will most definitely come back to your video for future configuration reference!
thank you for your contribution to the community. while flakes are completely mystified to me, i at least understand the majority of the premise NixOS. Cheers!
This was extremely helpful!!! I have been trying to configure nixox for a few days now and have constantly restarted because the error messages really don't help. The big help was with imports. I am trying to modularization my config and has several import issues. I am still trying to get it all working.
Great video!! When I build a base system especially a VM template I enable flakes in the configuration.nix :) Glad that flakes will finally no longer be experimental next release
I work with Debian a lot- and do lots of thigns with it- but never anything like NIX--- I'm keeping this and going to study it part time and practice til I CAN do nix. I like the immutable and containerized part--- and I think that's the way things are going to go.
This is so god damn great nix os introduction to its config, like best I have seen so far, at least from my point of view. Thank you. On side note, did you ever get 'Cycling flue'? Ever since covid, when I go cycling, i feel like I have mini flue for few days after - a lot tired, hot eyes.
Hi Matthias, many many thanks for this great tutorial, it really helped me getting started with NixOS (in a VM for now), I've just added an encrypted ZFS partition with reset of the root at each boot (the infamous 'Erase Your Darlings' by Graham Christensen). I still have a question though, when I upgrade my system (based on your approach, using flakes), do I have to use sudo, i.e., 'nix flake update' or 'sudo nix flake update'?
@@matthiasbenaets thanks I was a bit confused, I indeed ended up have a lock file owned by root as you did in the video. Thanks again for the help and support.
Excellent topic Steve, well covered. Little and often for me if possible. Too long a ride is torture for me, perhaps I need a different bike/ scooter... I'll just have a quick look at the classifieds 😂😂
This is a really detailed presentation Matthias. Of course some of the stuff is not really relevant any more. Do you envisage a flake-centric redux? but yes, far away one of the best introductions.
thank you for the concise and informative explanation! I have a question regarding the Nix package manager: If an application is installed using the Nix package manager, does it have any impact on its runtime performance after it initializes?
Nice video dude, when I started tinkering with nixos I struggle a lot to understand some of the concepts you teached, so this video really helps a lot of people to understand on how to configure the system. I have a question tho, normally I only have 1 user per computer, similar to you, however, what if I want to use more than one user?, how could would you organize the nixos-config folders?
Good question. So by default, the option 'users.users' gets generated in configuration.nix . Here you state your user, user-type and the groups. The users.users option allows you to create multiple users. An example: users.users = { user1 = { isNormalUser = true; extraGroups = [ ''wheel'' ]; }; user2 = { isNormalUser = true; extraGroups = [ ''wheel'' ]; }; }; For home-manager you can pretty much do the same with home-manager.nixosModules.home-manager.home-manager.users = { user1 = {...}; user2 = {...};}; For standalone it should just work as normal but for each login if I'm not mistaken. The latter I've never tried.
Was planning on toying with this in a VM several months late to the party but this still looks informative. Was I the only one at 2:17:01 shouting you forgot your end quote (on the sha)?
excellent thanks ! on home-manager standalone installation, i've get redo of the error:file 'home-manager' was not found in the Nix search path by launching nix-channel --update with elevated privilege anyway thank !
Still finding this useful in 2023. BTW I am not sure if this is new, but when I did the sha256 step when moving to a Flake, I did not have to enter 52 zeros. I just left it blank and nix assumed it was zeroed out.
Glad you enjoyed it! All org files can be found in my git repo. The sources are all in the description of the video but here's a direct link: github.com/MatthiasBenaets/nixos-config/blob/master/nixos.org
Hello, the step by step "guide" you have on the left looks awesome, what exactly are you using so it looks and works like that? I see it's .org file so I am guessing orgmode / orgdown..? And displaying it with an editor (emacs?)?
Thank you for this incredible guide, When I try to build the Home-Manager with "nix build .#hmConfig.... I get an error "Error: Undefined variable 'home-manager' 2:29:35 is the time when you do that. Thanks
Thx, Tough to say but I guess it's referring to home-manager.lib.homeManagerConfiguration. If it says it's not defined, it's most likely not in your flake inputs, not added to the output arguments (output = { home-manager} ), or just misspelled.
probably something like this: services.xserver.enable = true; services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; programs.dconf.enable = true; environment.systemPackages = with pkgs; [ libsForQt5.kwin]; In sddm you'll probably have to specify that you want to use wayland. Also I've never used kde so I'm not sure if libsForQt5.kwin will do the job, I see kwin-tiling and kwindowsystem also exist, so you'll have to do your homework here. I do know that installing libsForQt5.bismuth under systemPackages will just work when enabled in kde setting, if you want tiling.
Thanks a lot for this info! Just a minor quibble, it looks like you cat'ed an alacritty.yml file, but the contents appeared to be JSON. I don't think it's a "yaml file" unless it adheres to the schema. (about 1:52) This is not really relevant to the tool used to manage it however (Home Manager). Once again thanks!
I'll try to answer a couple of questions from your other comments as well. So the tree is done manually since I only do it for the initial routing (not for all modules). It's not really a big hassle. You can use an lsp like the package "nil". You can then just navigate through a flake using the imports. To my knowledge there is no language server that take into account the different options. "nil" for example will complete builtins, attrsets and some keywords. Maybe rnix-lsp does it, but I've never tried it. I can't find your initial comment anymore about package rebuild but you will indeed need to rebuild and switch to the new config when you edit the files. First declare it, then install the config. If you don't want to do this and want to just quickly use a package use a shell or use nix-env.
All of the basic information in this video for setting up NixOS was hugely instrumental in my switch to NixOS. Thanks! Also, what is that software you used for creating the Table of Contents and content guide for the video?
I have another issue. I have an ultrawide 34" philips monitor and the native resolution is 3440 x 1440 yet this option is not available. I have tried many things now and Still can't come right. I have connected the laptop to the screen via HDMI cable. The max resolution is limited to 2560 x 1080. I have no idea how it gets that.
This overlay thing is still really weird. Is Nix not a package manager but a build system? It sounds like overlays are just overwriting variables, but all you are doing to get new discord is setting a variable with a URL to the source code. Which implies that Nix inherently knows how to build from source like the AUR. So is Nix, like Gentoo, a source based distro? Am I building form source when I add a package? Or do they just add in building instructions for no reason other than overlays? Also, are we just assuming that the building instructions/requirements will be identical for different versions and patches?
IIRC, the `nix build` route produces a ./result folder, and you have to activate the profile manually. `home-manager switch` will build and activate without producing the ./result folder. But I'm not entirely sure.
You know it would be really nice if installing the system, including partitioning the drive, doing luks and pv setup etc was all just done by tweaking a flake that comes on the iso and then building it
Whada a trip... Choose video thinking... new ways to catch a NOS buzz & ended up installing Nix Linux. Many comments refer to this video filling gaps in documentation. Please remember that this is FOSS (Free Open Source Software), community developed. Community is you & I too. If there's gaps in the docs, Please - write-up what belongs there & submit it so those gaps in docs are correct for the next person who refers to them. Remember... Only you can prevent forest fires 🐻 and correct NixOS documentation.
Seven months later, this is still one of the best source of help and documentation on NixOS and the environment around it
Many thanks !
Nice to hear :)
16 months later and it's still great!
@@geekofthewild600 Agree!
2 years later and this is the best source of help I found.
Totally demystified some of the simple details that the documentation overlooked and left me scratching my head. Luckily I knew enough to value the power of this system and persevered until I found this video. Love your work Matthias
Exactly what I needed to kickstart my journey with NixOS. Thanks a lot, Matthias 🙌
The epic 3hr time tag put me off the feature for too long. This is best configuration focused overview I have seen - time well spent. All of the action with none of the drama - perfectly pitched level of detail. 5 stars. Thank you Matthias!
This is the best NixOS tutorial I have found, thank you for this this.
Thank your very much. I tried nixos a year ago. Flakes caused me a loooot of confusion and frustration. Your video is a fresh breeze!
Great content! Specially the flake and multiple hosts configurations was highly appreciated!
I second what everyone is saying. Great video, I'm usually very wary of video guides. Really nice that you included a short list of useful resources outside of this video as well.
you have no idea how much i needed this, i don't know why i could barely find any useful video about nixos even though it's such an interesting distro, i was looking for a video to get me up to speed with things so i don't have to read every word of the manual. Thank you sir!
It is a very interesting and complete guide for beginners. One of the most complete I could find on yt. Thank you, fellow compatriot.
Thanks Matthias, this was really good. I think I have had NixOS running for about a year on a couple of machines. It is amazing how much I still learn from watching this start to end for what I think was a second time today. Many thanks!
Glad you enjoyed it!
Matthias: Kudos to you for a very well explained video. I was a little cautious to watch it when I saw how long it is, but it is definitely worth it! I am now in the process of configuring my Thinkpad with NixOS following the principles shown in this video. I have subscribed - I look forward to seeing what you produce in the future! Many thanks (donation on its way!).
Great to hear you found it educational Paul. Have fun configuring your system. Thank you very much for your generosity!
I've been slowly chipping away at this video over the past few days because it certainly is a lot of information all at once, but I can say that this is going to give me a massive advantage once I sit down and start building my system. Thank you for the incredible resource!
i still come back to it every one and then, flakes get me confused.
This was awesome. I watched the whole thing. As an experienced Linux user dipping a toe into nixos this clearly answered almost every question I had about getting started and how to do the sort of things I normally do in other distros.
Likely the best OS guide ever
Absolutely incredible video! There have been a few changes since this video was uploaded but they are sufficiently documented so this video remains an invaluable resource to anyone starting with NixOS. Thank you so much for your diligent work!
Just curious I watched the whole video what had n changed? Are there things I have to look at?
Thanks, Matt!I can use nixos very well now.I can find no perfect tutorial like this on anywhere else that exits on this universe:
this is my go-to walkthrough guide to NixOS setup plus extra stuff...
That is an amazingly good video, thank you Matthias. I’ll be re-watching it in chunks whilst I modify my system but it is the clearest explanation of Home Manager and Flakes I’ve seen. A follow-up about nix-shell would be wonderful (I’m going to try to define shells for each development project I work on).
Thank you for this Tutorial and the link to your repo. It helps me a lot to move my homelab to nixos
I wish i could like this video multiple times. This video was immensely helpful for a confused new Nix user.
this is the best video on NixOS I've found, you've done such an amazing job. Thanks m8
Thanks a lot for this wonderful video. It really helped to understand all the relations between nix, nixOS, flake and home-manager. I want to use it on an Ubuntu to mainly manage my dotfiles. Thanks for the video and all the useful tipps and hints.
Thanks for your amazing tutorial, it is a great intro for users new to the nix ecosystem. I just switched to NixOS, it is a great project with a powerful concept.
I am going to use your tutorial to ditch systemd-boot for GRUB. I just need that configuration limit, otherwise my bootloader will soon look very atrocious 😅
And I will most definitely come back to your video for future configuration reference!
Excellent intro guide. I wish I had seen this 2 months ago when I started looking into NixOS.
wow this is amazing thank you
This video is an incredible gift. Thanks for sharing your time with us
Really fantastic video! This helped me get going on my NixOS journey. So far I really like it!
Best NixOS tutorial , well explained , thanks.
i would be so lost without this video
This is exactly what I needed to cozy up to NixOS, thanks!
Awesome video. This video definetly helped me with the decission to give nix a try for my workstation.
thank you for your contribution to the community. while flakes are completely mystified to me, i at least understand the majority of the premise NixOS. Cheers!
Your personal configuration is so nice!
this is exactly the type of video i needed to get started with nixos! thank you so much!
Great tutorial, thanks! I love this paradigm for package management.
This was a brilliant tutorial. Thank you!
one and only normaly explain on yt, what the fuck is nix and nixos :D thanks man!
52 zeros man! Great introduction into NixOS. Cheers!
Great tutorial! In vim, . repeats the last command - so you could type one '0' and then issue 51 . in normal mode instead of typing 52 zeros
Thanks. very neat indeed but I guess didn't lose too much time considering the length of the video 😅, but definitely one to remember
or just press 52a0
@@matthiasbenaets Vim grindset be like
thanks i just switched to nixos yesterday and this is the perfect tutorial
This was extremely helpful!!! I have been trying to configure nixox for a few days now and have constantly restarted because the error messages really don't help. The big help was with imports. I am trying to modularization my config and has several import issues. I am still trying to get it all working.
Thanks a lot! Great resource to start on NixOS :D
Great video!! When I build a base system especially a VM template I enable flakes in the configuration.nix :) Glad that flakes will finally no longer be experimental next release
I work with Debian a lot- and do lots of thigns with it- but never anything like NIX--- I'm keeping this and going to study it part time and practice til I CAN do nix. I like the immutable and containerized part--- and I think that's the way things are going to go.
Das video war richtig horizont erweiternt und ich werde mal versuchen meinen PC auf reines nixos + home-manager + flakes um zu bauen ^^
Great stuff, learned a lot. Thank you for this video!
Nice. Keep pushing more nix content please 🥺
Very helpful. Thank you for sharing.
This is so god damn great nix os introduction to its config, like best I have seen so far, at least from my point of view. Thank you.
On side note, did you ever get 'Cycling flue'? Ever since covid, when I go cycling, i feel like I have mini flue for few days after - a lot tired, hot eyes.
thanks, and nope.
This helped massively, thanks!
Hi Matthias, many many thanks for this great tutorial, it really helped me getting started with NixOS (in a VM for now), I've just added an encrypted ZFS partition with reset of the root at each boot (the infamous 'Erase Your Darlings' by Graham Christensen).
I still have a question though, when I upgrade my system (based on your approach, using flakes), do I have to use sudo, i.e., 'nix flake update' or 'sudo nix flake update'?
Thanks, you do not need root privileges to update the flake's lock file.
@@matthiasbenaets thanks I was a bit confused, I indeed ended up have a lock file owned by root as you did in the video. Thanks again for the help and support.
Excellent topic Steve, well covered. Little and often for me if possible. Too long a ride is torture for me, perhaps I need a different bike/ scooter... I'll just have a quick look at the classifieds 😂😂
Thank you so much for this video! Very well done!
1:13:30
There's more in the flakes section. Sorry I missed the timestamp. Hopefully we'll find it easily. Good luck, buddy!
Thank you so much for this!
thank you Matthias! very helpful
This is a really detailed presentation Matthias. Of course some of the stuff is not really relevant any more. Do you envisage a flake-centric redux? but yes, far away one of the best introductions.
thank you for the concise and informative explanation! I have a question regarding the Nix package manager: If an application is installed using the Nix package manager, does it have any impact on its runtime performance after it initializes?
Nice video dude, when I started tinkering with nixos I struggle a lot to understand some of the concepts you teached, so this video really helps a lot of people to understand on how to configure the system.
I have a question tho, normally I only have 1 user per computer, similar to you, however, what if I want to use more than one user?, how could would you organize the nixos-config folders?
Good question.
So by default, the option 'users.users' gets generated in configuration.nix .
Here you state your user, user-type and the groups. The users.users option allows you to create multiple users.
An example:
users.users = { user1 = { isNormalUser = true; extraGroups = [ ''wheel'' ]; }; user2 = { isNormalUser = true; extraGroups = [ ''wheel'' ]; }; };
For home-manager you can pretty much do the same with home-manager.nixosModules.home-manager.home-manager.users = { user1 = {...}; user2 = {...};}; For standalone it should just work as normal but for each login if I'm not mistaken. The latter I've never tried.
Great video. Danke schön!
Was planning on toying with this in a VM several months late to the party but this still looks informative. Was I the only one at 2:17:01 shouting you forgot your end quote (on the sha)?
Thank you a lot. I find you because of Proxmox :) But it seems, that second VM in Proxmox will be NixOS :-D Thank you again grat video
YES, i finally figured out how to make my bspwm work thanks to your video. I had to create a syslink like this 1:55:19
Really helpful! Thanks a lot 😁
Great video! 👌
excellent thanks ! on home-manager standalone installation, i've get redo of the error:file 'home-manager' was not found in the Nix search path by launching nix-channel --update with elevated privilege anyway thank !
Thank you for providing a useful guide!
Amazing thanks!!
Still finding this useful in 2023. BTW I am not sure if this is new, but when I did the sha256 step when moving to a Flake, I did not have to enter 52 zeros. I just left it blank and nix assumed it was zeroed out.
Thanks for this! This was extremely educational!
Thank you so much. I finally was able to install a package.
tyvm explaining nixos
Respect 👍
Top shelf stuff
this was extremely helpful, thank you
Thank you for this wonderful tutorial! Could you please upload the org file with the notes?
Glad you enjoyed it! All org files can be found in my git repo. The sources are all in the description of the video but here's a direct link: github.com/MatthiasBenaets/nixos-config/blob/master/nixos.org
@@matthiasbenaets many thanks!
Brilliant. Thanks
Hello, the step by step "guide" you have on the left looks awesome, what exactly are you using so it looks and works like that?
I see it's .org file so I am guessing orgmode / orgdown..? And displaying it with an editor (emacs?)?
Thank you for this incredible guide, When I try to build the Home-Manager with "nix build .#hmConfig.... I get an error "Error: Undefined variable 'home-manager'
2:29:35 is the time when you do that.
Thanks
Thx, Tough to say but I guess it's referring to home-manager.lib.homeManagerConfiguration. If it says it's not defined, it's most likely not in your flake inputs, not added to the output arguments (output = { home-manager} ), or just misspelled.
what markdown extension are you using in vim?
The best! thank you for made this! Really well explained and understandable :)
how would I setup kwin/kde wayland via the configuration.nix file?
probably something like this:
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
programs.dconf.enable = true;
environment.systemPackages = with pkgs; [ libsForQt5.kwin];
In sddm you'll probably have to specify that you want to use wayland. Also I've never used kde so I'm not sure if libsForQt5.kwin will do the job, I see kwin-tiling and kwindowsystem also exist, so you'll have to do your homework here. I do know that installing libsForQt5.bismuth under systemPackages will just work when enabled in kde setting, if you want tiling.
@@matthiasbenaets thank you for the reply!
gonna try this tomorrow
if I can get it to work I'll share my details tomorrow as another comment
thank you for this great tutorial!
a bit off topic, for inserting 50 “0”, we can do
esc 50 i 0 esc esc
Thanks for the comprehensive tutorial! Also, can you please share the color scheme used in you vim config at 2:41:02?
srcery-vim for the syntax. wombat256 for the lightline
Three Hours... My brain's already hurting. WoW
Please make a video about how to install dwm on nixOS
Thanks a lot for this info!
Just a minor quibble, it looks like you cat'ed an alacritty.yml file, but the contents appeared to be JSON. I don't think it's a "yaml file" unless it adheres to the schema. (about 1:52) This is not really relevant to the tool used to manage it however (Home Manager).
Once again thanks!
JSON is a valid subset of YAML, so any valid JSON file is also a valid YAML file.
2:56:55 - how are you making those tree structure things in ur files?
does nix have linter or formatter?
I'll try to answer a couple of questions from your other comments as well. So the tree is done manually since I only do it for the initial routing (not for all modules). It's not really a big hassle. You can use an lsp like the package "nil". You can then just navigate through a flake using the imports. To my knowledge there is no language server that take into account the different options. "nil" for example will complete builtins, attrsets and some keywords. Maybe rnix-lsp does it, but I've never tried it. I can't find your initial comment anymore about package rebuild but you will indeed need to rebuild and switch to the new config when you edit the files. First declare it, then install the config. If you don't want to do this and want to just quickly use a package use a shell or use nix-env.
thanks alot for this awesome video man
"Unbreakable" you say? Nods... challenge accepted!
Hello, this tutorial is.. just too good..
Also: can you please share the document that is at the left of your screen?
A really wonderful video! I just have one problem, why not using vim to its potential :(( inserting 52 0 would be as easy as typing `52i0`
Nice video, thanks a lot!
All of the basic information in this video for setting up NixOS was hugely instrumental in my switch to NixOS. Thanks!
Also, what is that software you used for creating the Table of Contents and content guide for the video?
This seems to be done in Emacs org-mode
I have another issue. I have an ultrawide 34" philips monitor and the native resolution is 3440 x 1440 yet this option is not available. I have tried many things now and Still can't come right. I have connected the laptop to the screen via HDMI cable. The max resolution is limited to 2560 x 1080. I have no idea how it gets that.
Might it be the HDMI? Some older cables can’t deliver 2/4K so that might be the problem
This overlay thing is still really weird. Is Nix not a package manager but a build system?
It sounds like overlays are just overwriting variables, but all you are doing to get new discord is setting a variable with a URL to the source code. Which implies that Nix inherently knows how to build from source like the AUR. So is Nix, like Gentoo, a source based distro? Am I building form source when I add a package? Or do they just add in building instructions for no reason other than overlays? Also, are we just assuming that the building instructions/requirements will be identical for different versions and patches?
What I understood is indeed the underlying r resources are built from sources.
Whats the difference between the nix build .#hmConfig line and home-manager switch --flake .#USER?
IIRC, the `nix build` route produces a ./result folder, and you have to activate the profile manually. `home-manager switch` will build and activate without producing the ./result folder. But I'm not entirely sure.
You know it would be really nice if installing the system, including partitioning the drive, doing luks and pv setup etc was all just done by tweaking a flake that comes on the iso and then building it
Whada a trip... Choose video thinking... new ways to catch a NOS buzz & ended up installing Nix Linux.
Many comments refer to this video filling gaps in documentation.
Please remember that this is FOSS (Free Open Source Software), community developed. Community is you & I too. If there's gaps in the docs, Please - write-up what belongs there & submit it so those gaps in docs are correct for the next person who refers to them.
Remember... Only you can prevent forest fires 🐻 and correct NixOS documentation.