I always feel that when I am not quite getting something in the nix ecosystem, I can watch a vimjoyer video about the topic and it is like a burst of enlightenment where now I can see everything I was missing before! Thanks so much for this amazing content!
This is the most thorough and clear explanation of what a flake is that I've found, including your past videos. Great job! I'm looking forward to your future video on devshells. I already use them, but I could be using them better I am sure of it!
4 หลายเดือนก่อน +8
I really appreciate your video style. The arrow moving around while you talk about the parts of the configuration is brilliant! It activates my visual-learning even better than just reading along. Much better for me than just listening to the description. I also appreciate how clean and clear all the textual information is. Your voice is clear enough and I can certainly follow what you say. But your accent, cadence, and where your voice goes up or down at parts of the sentence is not "natural" to my ear, being conditioned much more to a "midland" American English dialect. The implication is that it that when listening to a lot of dense information in a less-familiar accent, I find I have to go back and re-hear many times for the comprehension to sink in. The visual aid helps quite a lot. I really like it. Thank you, Vimjoyer! ( vim-joy-er? You love Vim? 😁) Please be encouraged to keep putting out great Nix content. You're definitely appreciated!
I’m tearing, I’ve been using flakes for some months now, have a full fledged multi-host config, but many areas were still obscure to me. Your videos are illuminating in many small big ways, I can’t thank you enough, keep it going!
Love your Nix videos. Keep up the great work. Great explanations and very easy to understand and follow. Your channel is what got me back to NixOS after not using it for over couple of years.
I've learned more about flakes and also the nix language itself by reproducing your examples and also experimenting with changing things little by little than I've ever managed from just trying to read some docs online. Hands down best explanation on flakes I've seen so far in the small amount of time I've been part of this community. Thank you so much for all the work and effort you put into this, you're contribution is invaluable to many of us
@@vimjoyer i'm glad, can't wait! but do take care of your voice I have been trying for a few days to make an overlay/override for libreoffice-qt6-fresh, because of some compile flags on my systems it fails at checkphase... but cant for the life of me... wrapped and unwrapped packages are particularly difficult
thrown into the nix deepend at work, these have been a godsend, thank you btw your animations are very smooth and impressive, great way to show your code changes as you demonstrate, that extra effort really shines through
This deff helped me understand a bit more and I really appreciate your videos on nix. I'm still super confused though, I had to stop using nix even tho it was only a side-project system because there were a few programs I couldn't figure out how to use on nix (ly greeter for example) I hope it was just a misunderstanding on my part. Someday I'll spend more time trying to better understand how to use NixOS but it's incredibly hard to wrap my head around it all.
Awesome Vid! Your vids have been getting into NixOS a fun experience. On a different note, I guarantee most can't hear this, but you have a kinda springy boingy ring sound when you speak in your mic in the background. I am using a good set of audiophile headphones and loud volume, so it's not noticeable to most. But I thought you should know. It may be due to mic shake or what ever you are recording on not being stable.
Video quality is amazing!! Thanks for these helpful videos!! Do you plan on making a guide to setup nvidia with Wayland along with video acceleration support?
The slower pace, detailed explanation/dissection of the flake makes this my favorite video of yours, I was often references your videos, but as a novice found them a little too fast paced and lacking some details especially if I ran into an error or my output was different than yours and had to scour forums and discord to figure it out. Your videos have always been top-notch, but this is the best nix/nixos/flake tutorial video I've seen, and it feels like your setting us up for success. But, as a beginner I always wished someone would literally just pull up a github repo with a flake.nix and show exactly how to use the provided flake.nix in that repo. Never seen anyone do that. While typing this I also realized you've never shown how to manage your nix config with git! P.S. would love to see a nixos self-hosted server setup video/series by you on editing remote nixos configs, containerization, nextcloud, vpns, etc.
Yeah, I got a lot of comments talking about fast pace before, so I am trying to keep it slower. I too didn't realize I've never made a nix git video, so I definitely will make one in near future. Thanks for kind words!
okay, i was looking for "setting up nixos for c++ development" (or python, or java, or whatever) this vid doesn't cover that but i learnt various other things nonetheless.
@@vimjoyer good point 😃 yeah, while commenting, i forgot that i came here from other video "nix dev envs" > _" The title says nothing about python, or java, or whatever "_
this comment is subjected to frequent edits (even in future), so any generous hearts given by creator are automatically removed after an edit :) 3:36 "nix flake show" to show the output attributes provided 11:14 "nix flake metadata" to show what the nixpkgs resolve to i.e. commit-hashes of inputs 7:25 url like syntax used in input, and various examples (gh, gl, srch, local, ...) 9:55 the at @ syntax for arguments in nix language 12:52 nixos configuration in flake via nixosSystem function 13:47 auto-picking of flake at default location 13:5814:25 using specialArgs attribute in flake.nix to supply as input param to configuration.nix (this is useful for nixos-hardware for example) update: no, this does NOT work for using nixos sl-a-sh nixos-hardware that has to be specified in flake.nix itself as guided in that repo's readme
Basically, the lock mechanism. If you manage separate projects with separate flakes, you won't potentially break them just by updating your system. Also systems/devshells/packages managed by flakes are easier to reproduce on other machines.
Amazing video! But I still have some questions... So after creating a flake for my system, can I delete comfiguration.nix and hardware-configuration.nix from /etc/nixos? And how exactly do I use the flake.nix file when installing a new system?
Yes, you can delete any unused configuration.nix and hardware-configuration.nix files, and if you ever want to get them back, nixos-generate-config command can do that. When installing a new system, use --flake flag with the nixos-install command.
Managing networks ip6 & ip4 as well as vlans would be interesting. Is it possible to rename the hardware Ethernet cards so the config gets more flexible by using aliases ?
Hi, doesnt the .follows at 12:20 kill the purpose of dependencies and their reproducibility? I mean that package has defined its dependency and you override it, making it potentially unstable and throwing away the reproducibility.
Exactly. You should only use it if the repo tells you that you need to, or if you want to seve space on machines where disk space matters more than 100% reproducibility.
From reading reddit, discourse and hacker news - apparently flakes is the worst feature to exist and should be removed. so... delete this video now /s but seriously nice video, explains flakes very well, nice job.
3:44 When would it not be x86_64? I’m running an aarch64 (ARM) system and it still gave me x86_64 and the flake wouldn’t run. I had to manually change it
Thank you so much! You're videos and the technology behind nix is the most exciting thing in the IT world in my opinion. However the recent banning of contributors not deemed woke enough had been a complete turn off for me. And I seriously doubt the project have a bright future because of this. I'm really curious to here you're thoughts on this?
I tried your old Flakes Guide, it didn't work so I switched to this more recent one since I couldn't use flakes and home-manager despite allowing experimental features in the config (even with the override), now I tried to undo everything and start from scratch but now I can't rebuild my system to allow for flakes because I already have Flakes installed, but the Flake installed does not allow for the rebuild command, and I cannot change it because I don't know what is wrong with the old flake and I cannot uninstall it because that would require a rebuild that I'm not allowed to do and for some reason my gen 1 nixos has the changes, so i have nothing to roll back to
The terminal you see in this video is not real, it's just editing. For a real setup, I recommend using a modern terminal emulator like Alacritty and pairing it with a powerful shell like Fish.
"The 'legacy' in 'legacyPackages' doesn't imply that the packages are 'legacy' packages." ... ok then why did you call it `legacyPackages` then? This is git-level shoddy naming.
trying to get into nix but honestly the documentation is trash and these examples always have seemingly magical variables that come from who knows where... no wonder docker won. where does the packages object inside the outputs function even come from, and is the outputs accepting self and nixpkgs parameters a nix language thing or part of the flakes api?
Great video, as always. However it feels incomplete: it should have mentioned some drawback of flakes so users could also know why they might not to use them just yet (until those issues get resolved). Also, the flake you wrote for the video wouldn’t work on MacOS (are any non x86 Linux system) which is also not mentioned. I hope you’ll release a follow up addressing these.
I said that the flake will look slightly different depending on your system architecture. It's just a matter of not changing Darwin to Linux when you initialize the flake.
Very archaic and unnecessarily convoluted system. All of this is made infinitely worse by the unbelievably useless errors the thing spews out sometimes. There are some GUI configurator projects going on. When some of those or some better wrapper language/format gets traction all of this nonsense can be forgotten.
It's only convoluted because the ecosystem is very old, and does a lot of things. I agree that the errors are absolutely useless most of the time, but still I feel like flakes are a step in a good direction.
what does this syntax mean " thing {} " as in " import nixpkgs { inherit system; }; " or " nixpkgs.lib.nixosSystem { modules = []; }; " ... at first i thought they were just weird set assignments without an equal operator but i guess not, are they functions being called with sets as arguments? but then, is nixpkgs a function that also returns a set? i've seen flakes with " import nixpkgs { inherit system; }; " inside the let ... in expression in the outputs function, but this video doesn't seem to be using that, it still uses things inside nixpkgs like " nixpkgs.lib.nixosSystem " so i guess they're not functions either
I killed my voice recording this
Take care bro.
Bro calm down then
If I could, I would send you some Lemon & Honey tea. GREAT for the voicebox!
rest up king
I always feel that when I am not quite getting something in the nix ecosystem, I can watch a vimjoyer video about the topic and it is like a burst of enlightenment where now I can see everything I was missing before! Thanks so much for this amazing content!
This might be one the best guides in the internet I've ever seen.
@@DooMWhite yes it’s very concise and well structured
Vimjoyer Nix videos = Masterpiece 🗣️
This is the most thorough and clear explanation of what a flake is that I've found, including your past videos. Great job!
I'm looking forward to your future video on devshells. I already use them, but I could be using them better I am sure of it!
I really appreciate your video style. The arrow moving around while you talk about the parts of the configuration is brilliant! It activates my visual-learning even better than just reading along. Much better for me than just listening to the description. I also appreciate how clean and clear all the textual information is. Your voice is clear enough and I can certainly follow what you say. But your accent, cadence, and where your voice goes up or down at parts of the sentence is not "natural" to my ear, being conditioned much more to a "midland" American English dialect. The implication is that it that when listening to a lot of dense information in a less-familiar accent, I find I have to go back and re-hear many times for the comprehension to sink in. The visual aid helps quite a lot. I really like it. Thank you, Vimjoyer! ( vim-joy-er? You love Vim? 😁) Please be encouraged to keep putting out great Nix content. You're definitely appreciated!
I just installed NixOS the other day and was wondering about flakes. Perfect timing!
I’m tearing, I’ve been using flakes for some months now, have a full fledged multi-host config, but many areas were still obscure to me. Your videos are illuminating in many small big ways, I can’t thank you enough, keep it going!
Love your Nix videos. Keep up the great work. Great explanations and very easy to understand and follow. Your channel is what got me back to NixOS after not using it for over couple of years.
the only problem i have ever had with nix is the accessibility of the documentation, thank you for completely destroying this issue
I've learned more about flakes and also the nix language itself by reproducing your examples and also experimenting with changing things little by little than I've ever managed from just trying to read some docs online.
Hands down best explanation on flakes I've seen so far in the small amount of time I've been part of this community. Thank you so much for all the work and effort you put into this, you're contribution is invaluable to many of us
Many thanks. Just what I needed, as I started reorganizing the configs of 3 hosts running NixOS inside a flake yesterday 🙏🤓
I would love to see a video about overrides and overlays...
That one's surely coming
@@vimjoyer i'm glad, can't wait! but do take care of your voice
I have been trying for a few days to make an overlay/override for libreoffice-qt6-fresh, because of some compile flags on my systems it fails at checkphase... but cant for the life of me... wrapped and unwrapped packages are particularly difficult
I followed along typing the code and I have to say this was great. Obviously had a bunch of typos, but that improves the learning. Thanks.
THANK YOU SO MUCH! I really struggled to understand what was going on in nix flakes, this video is hugely helpful to me.
thrown into the nix deepend at work, these have been a godsend, thank you
btw your animations are very smooth and impressive, great way to show your code changes as you demonstrate, that extra effort really shines through
Good, i am finally beginning to grasp nix and flakes - this is one of the few videos that explains them well.
After weeks of confusion this clarifies a lot. Thank you
Man I wish I had seen a video like this before jumping in and building my config. Demystifies a lot of knowledge gaps in using flakes.
Superb quality explanation of Flakes! Kudos!
This deff helped me understand a bit more and I really appreciate your videos on nix. I'm still super confused though, I had to stop using nix even tho it was only a side-project system because there were a few programs I couldn't figure out how to use on nix (ly greeter for example) I hope it was just a misunderstanding on my part. Someday I'll spend more time trying to better understand how to use NixOS but it's incredibly hard to wrap my head around it all.
Just take your time. The nix ecosystem is very huge, so many problems have several solutions, and it's not always clear which one's better or worse.
This channel keeps my sanity when learning and using NixOS. Bless the man
man this is so helpful! thanks for the great work! keep it up! looking for more content from you!
This really should be linked in the nix flakes documentation!
Absolute Cinema
The editing on this video is amazing 😍
And the next videos are going to be even better
This is the intro to flakes that I've been looking for, thank you!!!!
Классный у вас канал! Кратко, наглядно и полезно даёте материал. Однозначно лайк, подписка и коммент в поддержку.
So complicated.
Awesome Vid! Your vids have been getting into NixOS a fun experience. On a different note, I guarantee most can't hear this, but you have a kinda springy boingy ring sound when you speak in your mic in the background. I am using a good set of audiophile headphones and loud volume, so it's not noticeable to most. But I thought you should know. It may be due to mic shake or what ever you are recording on not being stable.
Audio is my enemy. I know what you're talking about, I'll try to fix it.
Ey! Awesome video man, love to see the slightly longer versions as I feel some of your older videos could go a bit more in depth. :)
ok this is the understandable video for flakes, i don't think a noob will but i can lol
Video quality is amazing!! Thanks for these helpful videos!! Do you plan on making a guide to setup nvidia with Wayland along with video acceleration support?
Maybe
Thank you so much for this video! Learned a lot. ❤
The slower pace, detailed explanation/dissection of the flake makes this my favorite video of yours, I was often references your videos, but as a novice found them a little too fast paced and lacking some details especially if I ran into an error or my output was different than yours and had to scour forums and discord to figure it out. Your videos have always been top-notch, but this is the best nix/nixos/flake tutorial video I've seen, and it feels like your setting us up for success. But, as a beginner I always wished someone would literally just pull up a github repo with a flake.nix and show exactly how to use the provided flake.nix in that repo. Never seen anyone do that.
While typing this I also realized you've never shown how to manage your nix config with git!
P.S. would love to see a nixos self-hosted server setup video/series by you on editing remote nixos configs, containerization, nextcloud, vpns, etc.
Yeah, I got a lot of comments talking about fast pace before, so I am trying to keep it slower. I too didn't realize I've never made a nix git video, so I definitely will make one in near future.
Thanks for kind words!
This is such a good video, thank you! ❤
Yeah, this is a masterpiece 🎉
Thanks.
FYI:
experimental-features = nix-command flakes
You're missing the 's' at the end at 1:38.
Fantastic series. You are a scholar god
I like you type of videos it simplify everything 🥰
What are you doing to make videos with that quality?
I'm using motion canvas
It all makes sense now
okay, i was looking for "setting up nixos for c++ development" (or python, or java, or whatever)
this vid doesn't cover that
but i learnt various other things nonetheless.
The title says nothing about python, or java, or whatever
@@vimjoyer good point 😃
yeah, while commenting, i forgot that i came here from other video "nix dev envs"
> _" The title says nothing about python, or java, or whatever "_
As always, very informative. Well done.
One question though, how do I know which functions/variables are available and the name of these?
In random flakes you can usually just check the outputs, but in bigger ones like nixpkgs you have to rely on documentation / analyze the nix code
I'd love to see a video explaining all the parameters a module receives and where they come from.
That has been a major point of confusion for me.
Noted
Just the video I was asking for.:w
this comment is subjected to frequent edits (even in future), so any generous hearts given by creator are automatically removed after an edit :)
3:36 "nix flake show" to show the output attributes provided
11:14 "nix flake metadata" to show what the nixpkgs resolve to i.e. commit-hashes of inputs
7:25 url like syntax used in input, and various examples (gh, gl, srch, local, ...)
9:55 the at @ syntax for arguments in nix language
12:52 nixos configuration in flake via nixosSystem function
13:47 auto-picking of flake at default location
13:58 14:25 using specialArgs attribute in flake.nix to supply as input param to configuration.nix
(this is useful for nixos-hardware for example)
update: no, this does NOT work for using nixos sl-a-sh nixos-hardware
that has to be specified in flake.nix itself as guided in that repo's readme
hearts are free, I can give them to you all day
@@vimjoyer oh lol. thanks a lot :)
> _" hearts are free, I can give them to you all day "_
What a video my friends
I'd love a guide about flake-parts
Yeah, it's on the list
I feel like one thing I’m always missing in these videos about Flakes is the answer to the question: Why should I even use Flakes?
Basically, the lock mechanism. If you manage separate projects with separate flakes, you won't potentially break them just by updating your system.
Also systems/devshells/packages managed by flakes are easier to reproduce on other machines.
Amazing video! But I still have some questions... So after creating a flake for my system, can I delete comfiguration.nix and hardware-configuration.nix from /etc/nixos? And how exactly do I use the flake.nix file when installing a new system?
Yes, you can delete any unused configuration.nix and hardware-configuration.nix files, and if you ever want to get them back, nixos-generate-config command can do that. When installing a new system, use --flake flag with the nixos-install command.
Managing networks ip6 & ip4 as well as vlans would be interesting. Is it possible to rename the hardware Ethernet cards so the config gets more flexible by using aliases ?
actually, good vid, but after time of using nixos flakes became much.. much bigger and complicated. :D
Hi, doesnt the .follows at 12:20 kill the purpose of dependencies and their reproducibility? I mean that package has defined its dependency and you override it, making it potentially unstable and throwing away the reproducibility.
Exactly. You should only use it if the repo tells you that you need to, or if you want to seve space on machines where disk space matters more than 100% reproducibility.
@@vimjoyer thanks
From reading reddit, discourse and hacker news - apparently flakes is the worst feature to exist and should be removed. so... delete this video now /s
but seriously nice video, explains flakes very well, nice job.
Awesome. Could you share your dotfiles? Thanks.
github.com/vimjoyer/nixconf
Lol just what I was looking for
3:44 When would it not be x86_64? I’m running an aarch64 (ARM) system and it still gave me x86_64 and the flake wouldn’t run. I had to manually change it
Yeah? I don't have an arm machine to check, so I just assumed it would generate it with the correct architecture.
individual packages versions depend on the nixpkgs version? ehh
Am i the only one not getting these abstractions sometimes?
F.e. how do you configure your shell inside nixosConfigurations?
Thank you so much! You're videos and the technology behind nix is the most exciting thing in the IT world in my opinion. However the recent banning of contributors not deemed woke enough had been a complete turn off for me. And I seriously doubt the project have a bright future because of this. I'm really curious to here you're thoughts on this?
There are countless companies and users relying on nix ecosystem, so I don't see it collapsing any time soon. I wouldn't worry about it too much
I tried your old Flakes Guide, it didn't work so I switched to this more recent one since I couldn't use flakes and home-manager despite allowing experimental features in the config (even with the override), now I tried to undo everything and start from scratch but now I can't rebuild my system to allow for flakes because I already have Flakes installed, but the Flake installed does not allow for the rebuild command, and I cannot change it because I don't know what is wrong with the old flake and I cannot uninstall it because that would require a rebuild that I'm not allowed to do
and for some reason my gen 1 nixos has the changes, so i have nothing to roll back to
gud videuo tnks.
Cinema
tr00nix
i want to make my terminal like you pro how i can do it (i am new to linux and i am using kde de)
The terminal you see in this video is not real, it's just editing. For a real setup, I recommend using a modern terminal emulator like Alacritty and pairing it with a powerful shell like Fish.
can you make something on nix ld?
Sure will
Hi
and this is why people use windows
This video is not for people that use windows 👍
I seem to be unable to use UEFI boot. 😢
I don't think this issue is related to flakes. Consider opening an issue on github.
@@vimjoyer Thanks for the reply! Yes it is probably not, maybe the way i installed it or something :) Thanks :)
"The 'legacy' in 'legacyPackages' doesn't imply that the packages are 'legacy' packages." ... ok then why did you call it `legacyPackages` then? This is git-level shoddy naming.
🤷♂️
trying to get into nix but honestly the documentation is trash and these examples always have seemingly magical variables that come from who knows where... no wonder docker won. where does the packages object inside the outputs function even come from, and is the outputs accepting self and nixpkgs parameters a nix language thing or part of the flakes api?
I fell off around 8:30 somewhere... sigh
все время удивляюсь рандомным ударениям на слова ) выделяй те же слова, что выделил бы на русском, пожалуйста)
Great video, as always. However it feels incomplete: it should have mentioned some drawback of flakes so users could also know why they might not to use them just yet (until those issues get resolved). Also, the flake you wrote for the video wouldn’t work on MacOS (are any non x86 Linux system) which is also not mentioned. I hope you’ll release a follow up addressing these.
Most of my colleagues at work use MacOS so I can’t share this video with them since the flake would simply fail to work on their system 😢
I said that the flake will look slightly different depending on your system architecture. It's just a matter of not changing Darwin to Linux when you initialize the flake.
firs- second...
Very archaic and unnecessarily convoluted system. All of this is made infinitely worse by the unbelievably useless errors the thing spews out sometimes. There are some GUI configurator projects going on. When some of those or some better wrapper language/format gets traction all of this nonsense can be forgotten.
It's only convoluted because the ecosystem is very old, and does a lot of things. I agree that the errors are absolutely useless most of the time, but still I feel like flakes are a step in a good direction.
what does this syntax mean " thing {} " as in " import nixpkgs { inherit system; }; " or " nixpkgs.lib.nixosSystem { modules = []; }; " ... at first i thought they were just weird set assignments without an equal operator but i guess not, are they functions being called with sets as arguments? but then, is nixpkgs a function that also returns a set? i've seen flakes with " import nixpkgs { inherit system; }; " inside the let ... in expression in the outputs function, but this video doesn't seem to be using that, it still uses things inside nixpkgs like " nixpkgs.lib.nixosSystem " so i guess they're not functions either
Your best video yet 🎉
Thanks! It took much more time to edit than usual
This is exactly what I needed man thank you this is perfect timing 🫶