I rarely comment on videos but i really had to say this. I've been following your NixOS tutorials and i've gotta say they are so on point. There is something about your voice that makes your videos very relaxing to watch. Keep it up.
I have watched many other people's youtube videos regarding NixOS tutorials, the things they provided do work, but only stops at "working". Your videos are the exact ones I needed for me to truly UNDERSTAND everything in it. Everything is explained in detail just like the tutorials we have on other more popular distros. You are my Nix hero bro.
Thanks! And yeah, I definitely want to explore neovim soon, since I've never actually set up a proper neovim config (I've been sucked into the black hole that is emacs configuration).
This is great stuff. I've tried to watch quite a few vids on Nix that show how to configure and maintain a NixOS system the Nix way and they were always kinda vague or extremely long. Your video series on Nix is really well structured and to the point. This helped a lot, thank you.
thanks much; the key for me was to stay in ~/.dotfiles while setting up and not wander around in the system changing the current directory and messing up your good instructions.
I looked everywhere for these types of videos and they are fantastic. I did flakes and home-manager and going to go through the rest tomorrow - thank you!!!
After playing with the idea of NixOS in the back of my mind for months, I finally decided to dive in tonight on a spare laptop. These tutorials have been incredibly useful at getting started fairly quickly and confidently. Already loving the rollback feature as I bumble my way through figuring certain things out myself. And looking forward to actually learning the Nix language and migrating my entire dotfiles tomorrow!
Really good content! Just the right balance of detail, without e.g. the tedium of going through installs over and over. Also very well paced. Again, you’ve hit the Goldilocks between tedium and wtf just happened. Keep up the good work!
Awesome Video! Love the way you explain things. Very easy to follow. I would like to see a video of setting up Hyprland with home-manager. Coming from you will be great to follow. Thank You in advance!
A followup I'd like to see, is how this bootstrapping affects portability. I like the idea of not needing root to update home-manager, but then if I need to quickly get up and running on a new machine, then it seems like I can't just copy my dotfiles and rebuild. I have to insert this bootstrapping step too.
Yes! You can add home-manager into your pkgs list in configuration.nix and avoid the bootstrapping step. I am using impermanence so I'm trying to find a way to persist changes between boot without persisting the whole system. I've gotten pretty far, it started with adding home-manager to my configuration.nix pkgs, but it presents additional issues. Im still working through towards a solution to all the use cases (including support for non-root users editing home.nix, which it seems most Nix configurations I've seen do not support).
I have been a Linux Sysadmin for a while and the concept of Nix blew my mind, I'd like to see a tutorial on nixvim and the diferences explained with for example NVChad or Kickstart.
@librepheonix Not sure if you'll see this but IMHO it might help to bring more attention to the fact that you have an entire written version of these vids on your blog, those are immensely helpful as someone who learns differently but I didn't find them until I nearly finished taking notes on the video lol. Hope you have a great day! :)
Fantastic guide... I think the blog post contains a few screenshots of the flake that are in accurate and not incuding the home-manager definition in the outputs = { self, nixpkgs, ... }: statement... Like : outputs = { self, nixpkgs, home-manager... }: Unless I'm smoking something really bad :)
jfc youtube should've just sent me here directly, I've gone through so many videos of people explaining this in the most pretentious and tedious way possible lol I was actually able to understand this.
Awesome content :) Recently got into NixOS and it's absolutly amazing. Looking to achieve a modular flake and hm setup where I can define X user on X machine running X desktop/compositor/or-none on X architecture. Then I could manage wifes laptop, various rpi's, my laptop and so on-really looking forward to the next step of the series!
Thanks! :) I'm in the same situation as you, and Nix has been really helpful with it's ability to be modular! I'm hoping to get the NixOS modular setup video out by next weekend
Thanks for these amazingly helpful tutorials. My mind is blown...it's like Terraform for your desktop! Declarative everything! Use git to see every change you ever made to your system and be able to roll it back to any state at any time! 🤯🤯🤯 Only thing is, it seems to break a bit of the beauty and purity of that now that I have a whole dir full of config files instead of just two and like 3 different commands I have to run to sync everything with my system. Oh well.
Nixpkgs unstable is about the same level of bleeding edge as arch. Maybe not quite as many packages as in AUR, but I think they're much higher quality and less likely to break than the AUR
Great video, really well paced and thought out - thanks for taking the time to explain things clearly. One question regarding variable substitution in the let binding - how to you structure multiple substitutions? 🤔
Thanks! I'm pretty sure that whenever you're doing a variable substition with ${myVariable}, you can actually just write any Nix expression inside of the brackets. For example, if you wanted to concatenate two variables in a substitution, you could write ${myVariable1 + myVariable2}. You could reference any available Nix function too. Another common one is referencing the direct path to a binary of a package in the Nix store, i.e. ${pkgs.hello}/bin/hello
I'm just learning here, but I'm pretty sure your flake.lock was owned by root because in the previous tutorial you ran sudo nixos-rebuild switch --flake . and created the lock file with sudo. In that video you mentioned updating the lockfile with nix flake update (no sudo) but you didn't actually run the command. I'm betting that would've given you the same permissions error. Unless I'm missing something, this seems like an issue with this method for home manager.
I really like your content as I am so intrigued by what Nix brings to the table. I just have one issue: after following your guides getting home manager to run I am not able to install unfree software
Great tutorial - makes home-manager on NixOS make since however I would like to understand any differences in the set up to allow me to take my home-manager configuration to another OS and use it with just NIX package manager so I can take my environment with me when not using NixOS
@9:17 "how to incorporate into the .dotfiles directory that we started last time" -> You could add one of those badges with a link to your previous video at this point. Would be helpful for the viewer and also the channel.
Is there a more ergonomic way of updating? What I get from this is, if you want to update your packages you have to: 1. Update the flake.lock 2. Rebuild the system 3. Switch to a new home-manager generation That's three fairly long commands just to update...
I'm not interested in portability of my Nix configuration because it will always be rebuilt on NixOS so does that mean installing Home Manager as a NixOS Module inside /etc/nixos is the preferred method? I haven't seen anyone give a compelling argument for Home Manager other than for portability. Certainly no one talks about the security differences between a non-Home Manager modular NixOS configuration and a Home Manager modular NixOS configuration. What do you think? Great videos, thank you.
I am using this to set up fish but the symlinks created from home.files are owned by root for some reason. I can't seem to fix this and fish won't work :( my setup is basically the same as this video and im running all the same commands, the only difference is adding fish and its configs
RIGHT!!! 😂 INDEED!!! YOU SAID IT, DUDE. Definitely a daunting task to migrate all the umpteen pickiune options that are specified in decades of dotfiles. I'll be working on this for the next month. 😂😂😂
If i move my configuration.nix to .dotfiles is /etc one still used? It doesn't seem like setting the hostname in .dotfiles/config works. Also, when we move home.nix to .dotfiles, is home-manager/home.nix unused?
Damn your channel finally made me understand what flakes are. Btw i have a question. Am I the only one that have problem with having system config files in random folder in user directory? That looks strange to me.
Good question! I simply do it that way since that it's easier to work with git, and it also keeps the entire configuration in one place. In the name of security, it's still of course possible (and recommended) to make system-level files like that owned by the root user and root group
"Thank you for the easy-to-understand video. I would like to learn about the configuration and use of Hyprland desktop and its related tools. For example, tools related to network connections, screen brightness control, and so on. I'm new to using a tiling desktop, and all of this customization has been quite challenging for me."
Hello! Nice video, but I have a question. if in configuration.nix we tell that we use zsh, and home.nix have settings for zsh, so home-manager will apply that settings for selected zsh shell, that was selected in configuration.nix ? Otherwise, if we select bash in configuration.nix, but home-manager(home.nix) have no settings for it, default settings are applyed to selected bash shell, am i correct ?
Loooooove your helpful tutorials. I would love to see you do a video on setting up servers. Like 2 VMs both with Nix, when they boot each get their own functions. Not sure this makes sense... Thanks for your hard work on these.
Thanks! I'm glad you're finding them useful. I think I get what you mean. It is really cool all the stuff you can setup with Nix on a server (kind of like docker-compose, but using the power of nix), and it would definitely be fun to explore that at some point
Getting error flake 'path:/home/.../.dotfiles' does not provide attribute.. And then goes on to list legacy pkgs the system config and others... very helpfully otherwise.
Hi, do you remember how you fixed the issue? very new here and encountering the same error EDIT if useful for anyone: I had copied the "nixosConfigurations" block and didn't change it to "homeConfigurations".
if I already have the home-manager installed as a nixos module, is there any actual advantage worth the hassle of figuring out how to move to standalone (I'm a nixos noob trying to figure my way around)?
It's actually just zsh :) All I did is set the PROMPT and RPROMPT environment variables. Here's what mine are: PROMPT=" ◉ %U%F{magenta}%n%f%u@%U%F{blue}%m%f%u:%F{yellow}%~%f%F{green}→%f " RPROMPT="%F{red}▂%f%F{yellow}▄%f%F{green}▆%f%F{cyan}█%f%F{blue}▆%f%F{magenta}▄%f%F{white}▂%f" Also, here's how I configure that (and the rest of my shell) in my Nix config if you're curious: gitlab.com/librephoenix/nixos-config/-/blob/main/user/shell/sh.nix?ref_type=heads or github.com/librephoenix/nixos-config/blob/main/user/shell/sh.nix I don't think those environment variables work for anything other than zsh though
Thanks! My recording/editing setup is OBS + Kdenlive, and my rice is mainly Hyprland + Stylix. The fonts are Intel One Mono. I'll definietly get around to making videos on my recording setup and my whole config someday though :) Here are links to my config if you're curious: gitlab.com/librephoenix/nixos-config or github.com/librephoenix/nixos-config
I would love to see the correct way to implement something like neovim using a vim plugin manager like lazy.nvim as previously that was always a sticking point with me trying to use nixos. I couldn't figure out the correct way to get the neovim plugin manager and its file creation to play well with nixos for some reason. This caused weird behavior like the plugin manager trying to reinstall my plugins and config every time I would open neovim. I am sure it had something to do with my setup and lack of NixOS comfort. I also never could get the configuration options that the nix neovim pkgs offered to be fine tuned enough like my regular neovim dotfiles. Thank you for taking the time to produce the amazing content. Outside of the aforementioned editor config video suggestion, setting up coding environments via nix-shell could be good videos (eg. a nix-shell file to setup postgres db with some programming language etc)
I am new to nixos I have got the config set up but I am unable to share my screen on google meet I am using hyprland can you or anyone help out? really helpful video
Hmm... I would say first, make sure you have the xdg-desktop-portal-hyprland package. Then, you need to make sure your browser is running as a wayland app (not an xwayland app). You can check this by opening your web browser and running the command: hyprctl clients Check the settings for the browser and if it says "xwayland: 1" then you need to fix that. I remember in order to get Brave working I needed to change the settings to enable the ozone platform and change the ozone platform to wayland or auto. You should be able to test on the terminal with {browserName} --enable-features=UseOzonePlatform -ozone-platform=wayland. I think there are also dedicated wayland versions of firefox-based browsers that you could try if your using something like firefox or librewolf. Hope this helps!
I managed to setup some of my .config files with the home.file stuff, but I'm wondering how would I for example install something like nvchad via home-manager? Copy all the files it creates on install to my nix folder and then use the home.file.*.source function? I don't feel like thats a good solution? Couldn't I idk like run a command to install something or idk clone a git repo or something from within home-manager? I feel like I'm missing something
Sounds like something that could be set up with a flake. You can include any git repo as a flake input, and it can be passed into extraSpecialArgs (for home-manager). You can then set the source cloned repo as the actual dotfiles using home.file...(if that makes any sense). I do that for some emacs packages which aren't already in Nix, such as org-side-tree for example. Here are the relevant parts of my config with org-side-tree as an example if you'd like to try adapting for nvchad: github.com/librephoenix/nixos-config/blob/main/flake.nix#L176, github.com/librephoenix/nixos-config/blob/main/flake.nix#L104, github.com/librephoenix/nixos-config/blob/main/user/app/doom-emacs/doom.nix#L2, and github.com/librephoenix/nixos-config/blob/main/user/app/doom-emacs/doom.nix#L82. Hope this helps! Maybe I'll make a video about this topic soon.. :)
@@librephoenixthanks a lot, with the selected parts of your config I might actually be able to replicate this without having to watch a video and follow step by step :) Often times things in nix seam very complicated and hard to understand until someone explains them well and then they all make sense.
I was trying to replicate what you did. as far as i understand you made an unnecessary change of the owner of the flake. that's because that flake should be used in system updates. flake flag in home manager is for when you install home-manager configuration as a flake (separately). this installation works with default .config/home-manager directory. when you combine home.nix and your system flake, you can do this instead: update home configs by doing home-manager switch -f home.nix while in .dotfiles and do sudo nixos-rebuild --flake . to rebuild the entire system
Are flakes just for putting our configuration.nix to it for version control? I have seen people installing stuff too but only few packages are put into flakes rest of it are in the normal configuration file. I don't understand that part.
Yeah, from what I know, the main purpose of the flake is to explicitly pin the inputs and versions of every package to a file (which can be version controlled much easier than nix channels)
Thanks! I'm definitely planning on doing a video on Nix + Doom Emacs at some point. I use a project called nix-doom-emacs: github.com/nix-community/nix-doom-emacs to install Doom, as opposed to the usual "git clone, doom install" method
Sure! home.file.".config/somedirectory".source = ./somedirectory; ./somedirectory would be relative to the nix config file it is written in You might also consider adding home.file.".config/somedirectory".recursive = true; which will symlink config files individually rather than on a directory basis (this matters if you need files to be added to the directory in question)
Definitely! I don't use fish myself, but I would check out the home-manager options for fish to see what you could use: mynixos.com/search?q=fish+home-manager
Thx for the very interesting and helpful video! One question: what are the advantages of specifying the dotconfigs of programs such as bash with programs.bash.shellAliases (for example) vs using the home.file."~/.bashrc" method?
Very good question! I think there are two benefits: 1. Every configuration uses the same syntax: Nix (it's not yaml here, json there..) 2. You can use all sorts of if statements to conditionally set portions of any configuration file, so as a random example, you could have it automatically change portions of any of your config files (bashrc, .emacs, .vimrc) dependent on whether or not you're using an x11 or wayland session. I'll definitely bring up Nix if-else statements in a later video :)
Thank you for making this video. I'm curious what you're using in emacs to show the tree for the Nix files at ua-cam.com/video/IiyBeR-Guqw/v-deo.htmlsi=IB7a7j_NriCgkOLa&t=724 ?
Yep! I'm pretty sure you just need the Nix package manager installed which works on any Linux distro and even MacOS. You can follow the Nix package manager installation here: nixos.org/download
I rarely comment on videos but i really had to say this. I've been following your NixOS tutorials and i've gotta say they are so on point. There is something about your voice that makes your videos very relaxing to watch. Keep it up.
I have watched many other people's youtube videos regarding NixOS tutorials, the things they provided do work, but only stops at "working". Your videos are the exact ones I needed for me to truly UNDERSTAND everything in it. Everything is explained in detail just like the tutorials we have on other more popular distros. You are my Nix hero bro.
I have to say Emmet, these tutorials are extremely appreciated. You are pitching it for those of us without a strong IT background. Brilliant
Thanks! I'm glad you find the tutorials helpful! :)
Is there a way to have home manager just out a file somewhere. Like an override for a zsh theme or something?
Nix is truly the end game of Linux system management
+1 for a tutorial on managing a neovim config! You are so gifted at teaching~ I hope to see more!!
Thanks! And yeah, I definitely want to explore neovim soon, since I've never actually set up a proper neovim config (I've been sucked into the black hole that is emacs configuration).
This is great stuff. I've tried to watch quite a few vids on Nix that show how to configure and maintain a NixOS system the Nix way and they were always kinda vague or extremely long. Your video series on Nix is really well structured and to the point. This helped a lot, thank you.
Glad it was helpful!
Please make a video covering stylix and how to correctly theme neovim and other common applications with it.
I second this :p
Definitely! I'm probably going to make a stylix tutorial after the next Nix video I have planned (which is about modular configuration setup)
thanks much; the key for me was to stay in ~/.dotfiles while setting up and not wander around in the system changing the current directory and messing up your good instructions.
I much prefer your walkthrough style of tutorial to other channels and your videos are making starting with nixOS so much easier
I looked everywhere for these types of videos and they are fantastic. I did flakes and home-manager and going to go through the rest tomorrow - thank you!!!
This is an A class tutorial on all levels. Thanks man.
nice video. I’m new to nixos and didn’t really understand the value of Home Manager. This video helped me a lot, thanks!.
Great content! Getting finally a grasp on NixOS
After playing with the idea of NixOS in the back of my mind for months, I finally decided to dive in tonight on a spare laptop. These tutorials have been incredibly useful at getting started fairly quickly and confidently. Already loving the rollback feature as I bumble my way through figuring certain things out myself. And looking forward to actually learning the Nix language and migrating my entire dotfiles tomorrow!
I have been trying to follow many guides. Yours is by far the easiest and best explained. By a long shot too.
Thank you for concise bare-bones videos! So appreciated!
Very good video. I actually have set up home manager as a submodule and i am missing the home-manager command so i consider redoing it this way.
Really good content!
Just the right balance of detail, without e.g. the tedium of going through installs over and over.
Also very well paced. Again, you’ve hit the Goldilocks between tedium and wtf just happened.
Keep up the good work!
Awesome Video! Love the way you explain things. Very easy to follow. I would like to see a video of setting up Hyprland with home-manager. Coming from you will be great to follow. Thank You in advance!
5:20 - start
17:37 - nix flake update
30:15 - home-manager generations
Really good video 🎉Right pace, good amount of details. Lot of good tips.
bro thank you for these videos. ive been struggling a bit getting these concepts down and now i got everything working. 😁🤙
A followup I'd like to see, is how this bootstrapping affects portability. I like the idea of not needing root to update home-manager, but then if I need to quickly get up and running on a new machine, then it seems like I can't just copy my dotfiles and rebuild. I have to insert this bootstrapping step too.
Yes! You can add home-manager into your pkgs list in configuration.nix and avoid the bootstrapping step.
I am using impermanence so I'm trying to find a way to persist changes between boot without persisting the whole system. I've gotten pretty far, it started with adding home-manager to my configuration.nix pkgs, but it presents additional issues.
Im still working through towards a solution to all the use cases (including support for non-root users editing home.nix, which it seems most Nix configurations I've seen do not support).
You make an amazing teacher for a complex topic!
I have been a Linux Sysadmin for a while and the concept of Nix blew my mind, I'd like to see a tutorial on nixvim and the diferences explained with for example NVChad or Kickstart.
I love your videos.. Very clear, detailed presented in a nice way.. Also think your written documentation is top notch!!! Very nice.. !!!!!
Thank you so much! This helped my understanding
Please keep it up.
Awesome tutorial! I followed it all the way through. Excited for the next part on modular systems. 😃
Awesome! Glad you found it useful! :)
After this one I would like to see an equal nice explanation how to modularise the configuration. In any way, thanks!
Your videos are awesome, really well structured and explained. thanks a ton!
@librepheonix Not sure if you'll see this but IMHO it might help to bring more attention to the fact that you have an entire written version of these vids on your blog, those are immensely helpful as someone who learns differently but I didn't find them until I nearly finished taking notes on the video lol.
Hope you have a great day! :)
Another excellent tutorial. Impatiently waiting for the Neovim config tutorial. Thanks
5:16 did you make nixos module homemanager video?
Fantastic guide... I think the blog post contains a few screenshots of the flake that are in accurate and not incuding the home-manager definition in the outputs = { self, nixpkgs, ... }: statement... Like : outputs = { self, nixpkgs, home-manager... }:
Unless I'm smoking something really bad :)
you are amazing dude, I finally begin to understand more about nix
jfc youtube should've just sent me here directly, I've gone through so many videos of people explaining this in the most pretentious and tedious way possible lol I was actually able to understand this.
finally something understandable and pretty much exactly what i was looking for. thanks!
I would really appreciate a tutorial for the NixOS module installation of home manager. :)
Awesome content :)
Recently got into NixOS and it's absolutly amazing. Looking to achieve a modular flake and hm setup where I can define X user on X machine running X desktop/compositor/or-none on X architecture. Then I could manage wifes laptop, various rpi's, my laptop and so on-really looking forward to the next step of the series!
Thanks! :) I'm in the same situation as you, and Nix has been really helpful with it's ability to be modular! I'm hoping to get the NixOS modular setup video out by next weekend
Yes, please do module setup. Also how to setup up hyprland and wayland with kde plasma 6
Thanks for your videos, they are very helpful!
I'd be interested in configuration of neovim and awesomewm using home manager.
Big thankyou Phoenix. I found this very helpful :D
You earned this subscription.
Thanks for these amazingly helpful tutorials. My mind is blown...it's like Terraform for your desktop! Declarative everything! Use git to see every change you ever made to your system and be able to roll it back to any state at any time! 🤯🤯🤯 Only thing is, it seems to break a bit of the beauty and purity of that now that I have a whole dir full of config files instead of just two and like 3 different commands I have to run to sync everything with my system. Oh well.
Thank you sooo much for the efforts you have put in..
looking forward to the video explaining home manager as a module
I've been eyeing nixos for a while now but I really like the bleeding edge packages in Arch. Seeing stuff like this makes it hard to resist, though!
Nixpkgs unstable is about the same level of bleeding edge as arch. Maybe not quite as many packages as in AUR, but I think they're much higher quality and less likely to break than the AUR
Great video, really well paced and thought out - thanks for taking the time to explain things clearly.
One question regarding variable substitution in the let binding - how to you structure multiple substitutions? 🤔
Thanks! I'm pretty sure that whenever you're doing a variable substition with ${myVariable}, you can actually just write any Nix expression inside of the brackets. For example, if you wanted to concatenate two variables in a substitution, you could write ${myVariable1 + myVariable2}. You could reference any available Nix function too. Another common one is referencing the direct path to a binary of a package in the Nix store, i.e. ${pkgs.hello}/bin/hello
I'm just learning here, but I'm pretty sure your flake.lock was owned by root because in the previous tutorial you ran sudo nixos-rebuild switch --flake . and created the lock file with sudo. In that video you mentioned updating the lockfile with nix flake update (no sudo) but you didn't actually run the command. I'm betting that would've given you the same permissions error. Unless I'm missing something, this seems like an issue with this method for home manager.
Amazing! Maybe a video on setting up a homelab/ NAS with multimedia applications such as Jellyfin, Radarr, Sonarr, Prowlarr, Bittorrent etc?
can you make a short video on bashrc and zshrc file in combination with home-manager
Which terminal do you use and which plugins/mods? Looking pretty cool
I really like your content as I am so intrigued by what Nix brings to the table. I just have one issue: after following your guides getting home manager to run I am not able to install unfree software
Great video! Very helpful. I think I’ll switch from home-manager module to standalone from this.
nix seems to be perfect for cloud based servers to deploy services on standardized OS configured systems as a replacement for something like Ansible
Great tutorial - makes home-manager on NixOS make since however I would like to understand any differences in the set up to allow me to take my home-manager configuration to another OS and use it with just NIX package manager so I can take my environment with me when not using NixOS
Thanks! That's definitely a great idea for a follow-up video! Added to my video todo board :)
Really appreciated rhis video coupled with the flake one. A must view videos for nixos users
@9:17 "how to incorporate into the .dotfiles directory that we started last time" -> You could add one of those badges with a link to your previous video at this point. Would be helpful for the viewer and also the channel.
Thanks for the suggestion! Just added a video card to the previous video at that point :)
Thank you for very clear explanations ! I was looking for introduce flake on my nixos system with home manager
Glad you found it helpful!
What a great video! You have such a great way of explaining things. Would love to see how you setup Neovim!
Nix + Neovim is a great idea for a video, though I've never properly set up Neovim before XD Definitely something I want to do at some point though
Is there a more ergonomic way of updating?
What I get from this is, if you want to update your packages you have to:
1. Update the flake.lock
2. Rebuild the system
3. Switch to a new home-manager generation
That's three fairly long commands just to update...
I'm not interested in portability of my Nix configuration because it will always be rebuilt on NixOS so does that mean installing Home Manager as a NixOS Module inside /etc/nixos is the preferred method? I haven't seen anyone give a compelling argument for Home Manager other than for portability. Certainly no one talks about the security differences between a non-Home Manager modular NixOS configuration and a Home Manager modular NixOS configuration. What do you think? Great videos, thank you.
I am using this to set up fish but the symlinks created from home.files are owned by root for some reason. I can't seem to fix this and fish won't work :(
my setup is basically the same as this video and im running all the same commands, the only difference is adding fish and its configs
Hyprland desktop managed by NixOS config would be great
Definitely! Already on my video todo board :)
RIGHT!!!
😂
INDEED!!!
YOU SAID IT, DUDE. Definitely a daunting task to migrate all the umpteen pickiune options that are specified in decades of dotfiles. I'll be working on this for the next month.
😂😂😂
I am new to all this but really interested, can someone tell me what is the difference between this and stow?
If i move my configuration.nix to .dotfiles is /etc one still used? It doesn't seem like setting the hostname in .dotfiles/config works. Also, when we move home.nix to .dotfiles, is home-manager/home.nix unused?
Damn your channel finally made me understand what flakes are. Btw i have a question. Am I the only one that have problem with having system config files in random folder in user directory? That looks strange to me.
Good question! I simply do it that way since that it's easier to work with git, and it also keeps the entire configuration in one place. In the name of security, it's still of course possible (and recommended) to make system-level files like that owned by the root user and root group
"Thank you for the easy-to-understand video. I would like to learn about the configuration and use of Hyprland desktop and its related tools. For example, tools related to network connections, screen brightness control, and so on. I'm new to using a tiling desktop, and all of this customization has been quite challenging for me."
Thanks! I'll definitely be making a dedicated Hyprland video as well as a dedicated "Hyprland on NixOS" video at some point soon!
Hello! Nice video, but I have a question. if in configuration.nix we tell that we use zsh, and home.nix have settings for zsh, so home-manager will apply that settings for selected zsh shell, that was selected in configuration.nix ? Otherwise, if we select bash in configuration.nix, but home-manager(home.nix) have no settings for it, default settings are applyed to selected bash shell, am i correct ?
That's really great! How many episodes will there be in this series?
Thanks! I think I got a total of 12 planned right now, but as more topics and ideas come up there may be more! :)
Loooooove your helpful tutorials. I would love to see you do a video on setting up servers. Like 2 VMs both with Nix, when they boot each get their own functions. Not sure this makes sense... Thanks for your hard work on these.
Thanks! I'm glad you're finding them useful. I think I get what you mean. It is really cool all the stuff you can setup with Nix on a server (kind of like docker-compose, but using the power of nix), and it would definitely be fun to explore that at some point
Getting error flake 'path:/home/.../.dotfiles' does not provide attribute.. And then goes on to list legacy pkgs the system config and others... very helpfully otherwise.
Hi, do you remember how you fixed the issue? very new here and encountering the same error
EDIT if useful for anyone: I had copied the "nixosConfigurations" block and didn't change it to "homeConfigurations".
if I already have the home-manager installed as a nixos module, is there any actual advantage worth the hassle of figuring out how to move to standalone (I'm a nixos noob trying to figure my way around)?
Great video! Btw can you share your prompt config? Looks great, if that's starship
It's actually just zsh :) All I did is set the PROMPT and RPROMPT environment variables. Here's what mine are:
PROMPT=" ◉ %U%F{magenta}%n%f%u@%U%F{blue}%m%f%u:%F{yellow}%~%f%F{green}→%f "
RPROMPT="%F{red}▂%f%F{yellow}▄%f%F{green}▆%f%F{cyan}█%f%F{blue}▆%f%F{magenta}▄%f%F{white}▂%f"
Also, here's how I configure that (and the rest of my shell) in my Nix config if you're curious: gitlab.com/librephoenix/nixos-config/-/blob/main/user/shell/sh.nix?ref_type=heads or github.com/librephoenix/nixos-config/blob/main/user/shell/sh.nix
I don't think those environment variables work for anything other than zsh though
showing how to customize developer apps like Android Studio or IntelliJ Ultimate IDEA in home manager would be great
Superb production quality. Which editor u use? How have u set it up? Which mono fonts are u using?
Maybe a video about it?
Thanks! My recording/editing setup is OBS + Kdenlive, and my rice is mainly Hyprland + Stylix. The fonts are Intel One Mono. I'll definietly get around to making videos on my recording setup and my whole config someday though :) Here are links to my config if you're curious: gitlab.com/librephoenix/nixos-config or github.com/librephoenix/nixos-config
@@librephoenix Thank you.
I would love to see the correct way to implement something like neovim using a vim plugin manager like lazy.nvim as previously that was always a sticking point with me trying to use nixos. I couldn't figure out the correct way to get the neovim plugin manager and its file creation to play well with nixos for some reason. This caused weird behavior like the plugin manager trying to reinstall my plugins and config every time I would open neovim.
I am sure it had something to do with my setup and lack of NixOS comfort. I also never could get the configuration options that the nix neovim pkgs offered to be fine tuned enough like my regular neovim dotfiles.
Thank you for taking the time to produce the amazing content. Outside of the aforementioned editor config video suggestion, setting up coding environments via nix-shell could be good videos (eg. a nix-shell file to setup postgres db with some programming language etc)
what is the font used? i cant find it in your configurations
I am new to nixos I have got the config set up but I am unable to share my screen on google meet I am using hyprland can you or anyone help out? really helpful video
Hmm...
I would say first, make sure you have the xdg-desktop-portal-hyprland package.
Then, you need to make sure your browser is running as a wayland app (not an xwayland app). You can check this by opening your web browser and running the command: hyprctl clients Check the settings for the browser and if it says "xwayland: 1" then you need to fix that.
I remember in order to get Brave working I needed to change the settings to enable the ozone platform and change the ozone platform to wayland or auto. You should be able to test on the terminal with {browserName} --enable-features=UseOzonePlatform -ozone-platform=wayland. I think there are also dedicated wayland versions of firefox-based browsers that you could try if your using something like firefox or librewolf.
Hope this helps!
hi! great and easy to follow video! can you do a hyprland and an emacs nixos config videos please? :)
Thanks! Emacs and Hyprland via Nix are definitely on my video todo list :)
I love that background. I tried searching but I couldn't find it. What's the name of that wallpaper?
"Digital art moon wallpaper" www.freepik.com/free-ai-image/digital-art-moon-wallpaper_77361154.htm :)
I managed to setup some of my .config files with the home.file stuff, but I'm wondering how would I for example install something like nvchad via home-manager? Copy all the files it creates on install to my nix folder and then use the home.file.*.source function? I don't feel like thats a good solution? Couldn't I idk like run a command to install something or idk clone a git repo or something from within home-manager? I feel like I'm missing something
Sounds like something that could be set up with a flake. You can include any git repo as a flake input, and it can be passed into extraSpecialArgs (for home-manager). You can then set the source cloned repo as the actual dotfiles using home.file...(if that makes any sense). I do that for some emacs packages which aren't already in Nix, such as org-side-tree for example. Here are the relevant parts of my config with org-side-tree as an example if you'd like to try adapting for nvchad: github.com/librephoenix/nixos-config/blob/main/flake.nix#L176, github.com/librephoenix/nixos-config/blob/main/flake.nix#L104, github.com/librephoenix/nixos-config/blob/main/user/app/doom-emacs/doom.nix#L2, and github.com/librephoenix/nixos-config/blob/main/user/app/doom-emacs/doom.nix#L82. Hope this helps! Maybe I'll make a video about this topic soon.. :)
@@librephoenixthanks a lot, with the selected parts of your config I might actually be able to replicate this without having to watch a video and follow step by step :) Often times things in nix seam very complicated and hard to understand until someone explains them well and then they all make sense.
Great video!
Can you explain how to have multiple WMs? I want to install hyprland, alongside KDE before completely switching.
Definitely! That will come up in my next video on modular NixOS config, which I'll hopefully be done with soon :)
I was trying to replicate what you did. as far as i understand you made an unnecessary change of the owner of the flake. that's because that flake should be used in system updates. flake flag in home manager is for when you install home-manager configuration as a flake (separately). this installation works with default .config/home-manager directory. when you combine home.nix and your system flake, you can do this instead: update home configs by doing home-manager switch -f home.nix while in .dotfiles and do sudo nixos-rebuild --flake . to rebuild the entire system
Are flakes just for putting our configuration.nix to it for version control? I have seen people installing stuff too but only few packages are put into flakes rest of it are in the normal configuration file. I don't understand that part.
Yeah, from what I know, the main purpose of the flake is to explicitly pin the inputs and versions of every package to a file (which can be version controlled much easier than nix channels)
@@librephoenix oh,thanks. Also if I'm the only user on the system do I need home manager. And will it hard to install applications through flakes.
Really nice video, keep it up!
Can you please make a video with you doom emacs overlay?
Thanks so much!
Thanks! I'm definitely planning on doing a video on Nix + Doom Emacs at some point. I use a project called nix-doom-emacs: github.com/nix-community/nix-doom-emacs to install Doom, as opposed to the usual "git clone, doom install" method
Thanks librocode
Is it possible to import plain text multi directory configs to ease transition? My neovim config is rather modular :D
Sure! home.file.".config/somedirectory".source = ./somedirectory;
./somedirectory would be relative to the nix config file it is written in
You might also consider adding home.file.".config/somedirectory".recursive = true; which will symlink config files individually rather than on a directory basis (this matters if you need files to be added to the directory in question)
Hi, can this keep track of my fish shell universal (set -Ux command) environment variables? I use fish as my default shell.
Definitely! I don't use fish myself, but I would check out the home-manager options for fish to see what you could use: mynixos.com/search?q=fish+home-manager
Thx for the very interesting and helpful video!
One question: what are the advantages of specifying the dotconfigs of programs such as bash with programs.bash.shellAliases (for example) vs using the home.file."~/.bashrc" method?
Very good question! I think there are two benefits: 1. Every configuration uses the same syntax: Nix (it's not yaml here, json there..) 2. You can use all sorts of if statements to conditionally set portions of any configuration file, so as a random example, you could have it automatically change portions of any of your config files (bashrc, .emacs, .vimrc) dependent on whether or not you're using an x11 or wayland session. I'll definitely bring up Nix if-else statements in a later video :)
This is a good place where you can create a shellAliases variable and then inherit shellAliases in the shell declarations. Right?
Definitely!
Thank you for making this video. I'm curious what you're using in emacs to show the tree for the Nix files at ua-cam.com/video/IiyBeR-Guqw/v-deo.htmlsi=IB7a7j_NriCgkOLa&t=724 ?
why is it not shellAliases = ${myAliases} with a $ sign?
Maybe a video on how to migrate from configuration.nix to flakes? I think it would also demonstrate how similar they are.
I made one a while ago, here it is: ua-cam.com/video/ACybVzRvDhs/v-deo.html
@@librephoenix I mean migrating configuration.nix and hardware.nix to flakes, without using them as modules.
That's already available in the channel.
awesome
It feels weird to run commands to install home-manager.
Edit: Yea, i should probably watch the video to the end before posting any comments :D
Can this be made in other OS that are not nixOS?
Yep! I'm pretty sure you just need the Nix package manager installed which works on any Linux distro and even MacOS. You can follow the Nix package manager installation here: nixos.org/download
Everyone who is 27:19 deep into a video like this is a nerd obviously
You get my subscription simply for (correctly) referring to directories as such.