Excellent presentation and probably the only person that I have stumbled on that is clearly knowledgable AND can communicate their ability of nix clearly and concisely.. I know it is a niche distro but would love to see a very long series of all of your excellent choices of demos for future videos on your channel. I am sure you are busy, but building a working config from start to finish, or even live streaming similar demo/ideas where you build/config/debug all at the same time... Keep up the video creation, I will watch whatever you create - subscribed!
It's not that bad. Depends on what kind of Nix code you're writing/using, as is true in all code. There are some really bad Nix libraries out there (Haskell.nix), but generally speaking the happy path encompasses more of the Nix ecosystem than the sad path does, at this time. Subject to change, of course.
This is definitely a very impressive talk, with lots of information presented. My problem is that it is a little too fast so I have a problem to follow along. The speed with which you switch between the parallel demos and context switch. It would be super to see the same kind of content but a bit more focused and slowed down.
I think the point of this talk is just to get exposed to the possibilities. Then you can go to other resources to learn how to use it in detail at a slower pace
Me too, but it's time consuming and I haven't been able to get paid for it, so I can only do what I can! I've thought about patreon, etc. Will see what I can do!
I would definitely tip you! Vimjoyer is making Patreon with username mention in the end of his video (looks like its working for him :D) But yeah I guess it's a ton of work tho
This is a GREAT presentation. My only issues is the constant context switching. I realize you are excited to show off all of what Nix/OS is capable of, but the constant switching between different demonstrations is a bit overwhelming. I was able to follow along because I'm a Nix user but I could see from a foreign perspective that it would be information overload. Perhaps try one demonstration at a time and while things are downloading, engage in more audience interactions. Just a suggestion, again overall the presentation was amazing!
I remember when giving a talk there was a preview of the next slide, it's soykafingly helpful, it helped greatly with overdesigned slides with blank animations and some cringe memes such as the ones you've that appeared without any context beforehand.
i ran the rufzxp nix package as a joke in wsl2 on Windows 11 and it actually starts. unusable as the audio doesnt work right but surprised it displays at all. cant wait to try out nixos
Hey Matthew, loved the talk! Can you tell me how you configured the conference network to distribute VMs through ssh. I would love to work on something like this as a demo project. Thanks.
Matthew thank you very much for this talk & interactive demo. A big thank you for repeating the questions from the audience! I have a couple of followup questions, would appreciate if you (or anyone else who knows the answer) can clarify these: What happens to a state (e.g data of a db) when you change a package? Does each version/derivation of a package has its own place to store state? Or does it depends on the package definition? The other question is about the software versions. Is there a way you can ask for hello v1 instead of what is latest in the nixpackages head? Or is the big idea is that you can get (and pin) the latest and if you need anything older than you need to find it in git and built it yourself? (or create a private derivation) Are there still any notoriously hard components to package out there left? Is there any popular software package that makes very broad assumptions that are just too hard to sandbox? A bit related to the previous one.. does something like systemd can work with nix? Appreciate your time!
Nix doesn't perform runtime sandboxing, you would need something like Nixpak for that. So if you run a program, its internal references may have been patched out by Nixpkgs recipes/derivations to refer to /nix/store/ paths, meaning the program will not look in common FHS paths like /lib /usr, etc. Nix doesn't have /lib, so if that occurs, then the program will crash, and we will have to fix it by patching it in Nix. I like to say to people that you don't really need runtime sandboxing with this property, but some people would disagree with me. I say to those people, why are you running software you don't trust? You can ask for any version of a piece of software you want, either by referring to an older version of Nixpkgs that happened to have an older version, or by overriding an existing nix recipe/derivation by using a Nix expression, which is a piece of Nix code. To get the Hello from nixos-22.11 nix shell github:nixos/nixpkgs/nixos-22.11#hello To override the Hello from nixos-22.11 with the 2.8 version of GNU hello nix shell --impure --expr '(import (builtins.getFlake "github:nixos/nixpkgs/nixos-22.11") {}).hello.overrideAttrs (_:{ src = builtins.fetchurl "ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"; })' Every program that is compiled has different inputs, or else it occupies the same /nix/store path. So the fact that the URL was different for hello in my example above is what makes its hash/shasum in the /nix/store unique and different. Program state has nothing to do with Nix. If the Hello wants to write to ~/.config/hello, then Nix will not interact with that or modify that in any way.
I played with nixos for a bit the other day in a VM. My problem with it is, it feels like I can't do something unless I've done it before. I can't be the only one who has to copy/paste from someone else's vim/nvim config because I don't know what every single option is. For instance, Matt shows you can just enable the nginx service and have a web server; but nginx is nowhere to be seen in the list of system packages. How would someone know beforehand that nixos can just retrieve a service's dependency?
I'm sure I can look this up but... I'm not seeing versions mentioned. If you install python3 with numpy... what versions do I get? The lack of explicit versioning for all the settings and such seems odd. services.nginx.enable = true... but what nginx am I getting?
It gets the version that's in the revision/version of nixpkgs you're using. It is very explicit, if you want to change the version then you can use override/overrideAttrs
For the next presentation, turn off whatever redshift thing you are using. It all looks extremely red on my end with additional redshift filter applied. 😉
I don't remember it looking that red for me in person, I'm wondering if their video capture pipeline screwed it up in some way, or maybe I just don't notice how red it gets!
Great demo, but I do think you went a little fast in some parts (or at least did a lot simultaneously which was harder to follow). It's a shame my workplace relies on Windows and Mac so heavily because Nix would be a godsend for our developers
Nix package manager is available on macOS. en.wikipedia.org/wiki/Nix_(package_manager) For the Windows machines, I suppose you could do a bunch of different things - nixpkgs in WSL, full NixOS in (Hyper-V | Virtualbox | VMware), install NixOS on bare metal and run Windows as a guest in a VM (I do that). (Your users will bless your name forever.)
The raspberry pi image is a NixOS image built and flashed to an SD card, which I then plugged into the Raspberry Pi and booted. The result on screen is from a HDMI capture card.
I took public speaking two semesters in a row in college, and the first thing we're taught is to not rock side to side when we're speaking in front of an audience. That's a minor detail considering the fact that I enjoyed Matt's talk more than any other that I've ever heard in my entire 23-year career as a Sysadmin / DevOps engineer. I have managed several microservice infrastructures, and what Matt is showing us resolves almost all of the tough pain points that we face today in this business. Repeatability is the number one goal in any environment from high performance clusters in microbiology, to heterogeneous infrastructures with applications running on legacy application servers.
@@matthewcroughan I meant side to side. Hey Matt I want to apologize for my comments, after watching your talk. I am very impressed with your skill sets and knowledge. I believe Nix and NixOS are the answer to a lot of problems that have been plaguing the IT world for a very long time. I believe your involvement with the project has probably been integral to its rapid development and proliferation. Thanks for the great talk Matt.
@@matthewcroughan that sounds interesting because the goal of qubesos is to guard software from illegal behavior, how does spectrum achieves that with nix?
I can watch this every minute of the day. Everything about nix is pure gold to me. Thanks Matthew!
This is such a great way to show off a project's breadth. Your style and passion is really well suited to this format. What a gem.
Beautiful video. Excellent presentation.
This guy's passion for Nix is contagious
Super cool presentation, super packed with infos. Thanks a lot 🙏
Thank you for inspiring me to use NixOS! I can't ever stop learning, packaging, tweaking. 😁
Thank you for your presentation, I'm on the second day of my NixOS journey and already loving it!
Excellent presentation and probably the only person that I have stumbled on that is clearly knowledgable AND can communicate their ability of nix clearly and concisely.. I know it is a niche distro but would love to see a very long series of all of your excellent choices of demos for future videos on your channel. I am sure you are busy, but building a working config from start to finish, or even live streaming similar demo/ideas where you build/config/debug all at the same time... Keep up the video creation, I will watch whatever you create - subscribed!
Dang, i use nixOS everyday and i in love it, heard this is gold to me
This looks like something that’s super awesome in the happy path and a nightmare to debug when things go wrong
It's not that bad. Depends on what kind of Nix code you're writing/using, as is true in all code. There are some really bad Nix libraries out there (Haskell.nix), but generally speaking the happy path encompasses more of the Nix ecosystem than the sad path does, at this time. Subject to change, of course.
Impressively long demo. Amazing stuff. I'm sold on Nix.
Nix pkg managment is so awesome and its really revolutionry idea . and AUR as always op supported so many packages !!
I'm speechless, thank you!
I'm hyped
This is art.
Loved the talk! I'm new to Nix and this showed how much Nix can do.
Great talk! Every time you say "right?" it reminds me of the "Duck Quack Sound Effect".
Lol, never noticed that before, uh oh
I read this comment right at the start. Omg
This is definitely a very impressive talk, with lots of information presented. My problem is that it is a little too fast so I have a problem to follow along. The speed with which you switch between the parallel demos and context switch. It would be super to see the same kind of content but a bit more focused and slowed down.
I think the point of this talk is just to get exposed to the possibilities. Then you can go to other resources to learn how to use it in detail at a slower pace
Fantastic presentation! Thank you!!
I wish you would do more Nix video, your knowledge about Nix is awesome !
Me too, but it's time consuming and I haven't been able to get paid for it, so I can only do what I can! I've thought about patreon, etc. Will see what I can do!
I would definitely tip you! Vimjoyer is making Patreon with username mention in the end of his video (looks like its working for him :D)
But yeah I guess it's a ton of work tho
Great content!
This is a GREAT presentation. My only issues is the constant context switching. I realize you are excited to show off all of what Nix/OS is capable of, but the constant switching between different demonstrations is a bit overwhelming. I was able to follow along because I'm a Nix user but I could see from a foreign perspective that it would be information overload. Perhaps try one demonstration at a time and while things are downloading, engage in more audience interactions. Just a suggestion, again overall the presentation was amazing!
I should play more with the repl...
Great talk showing of Nix!
You owe us a show-n-tell on nix on your phone m8!
Hi Matthew, can you set the language for this talk to English so that UA-cam captions it automagically?
I never knew that this was required to generate those captions! Done, thank you.
@@matthewcroughan thank you!
type systems are conquering the computer industry
TIL I should be using the Nix REPL more.
I remember when giving a talk there was a preview of the next slide, it's soykafingly helpful, it helped greatly with overdesigned slides with blank animations and some cringe memes such as the ones you've that appeared without any context beforehand.
Nix/NixOS does what Docker Don't!
I never hit the notification bell. I hit it this time!
i ran the rufzxp nix package as a joke in wsl2 on Windows 11 and it actually starts. unusable as the audio doesnt work right but surprised it displays at all. cant wait to try out nixos
NixOS is what Gentoo wants to be when it grows up. Sadly Portage is a virgin port manager and Nix is a Gigachad
This sh** is amazing looking.
Hey Matthew, loved the talk! Can you tell me how you configured the conference network to distribute VMs through ssh. I would love to work on something like this as a demo project. Thanks.
20 minutes left to go. I’m going to have to start this video over and watch it again as soon as I’m finished.
Amazing stuff!
Matthew thank you very much for this talk & interactive demo. A big thank you for repeating the questions from the audience!
I have a couple of followup questions, would appreciate if you (or anyone else who knows the answer) can clarify these:
What happens to a state (e.g data of a db) when you change a package? Does each version/derivation of a package has its own place to store state? Or does it depends on the package definition?
The other question is about the software versions. Is there a way you can ask for hello v1 instead of what is latest in the nixpackages head? Or is the big idea is that you can get (and pin) the latest and if you need anything older than you need to find it in git and built it yourself? (or create a private derivation)
Are there still any notoriously hard components to package out there left? Is there any popular software package that makes very broad assumptions that are just too hard to sandbox?
A bit related to the previous one.. does something like systemd can work with nix?
Appreciate your time!
Nix doesn't perform runtime sandboxing, you would need something like Nixpak for that. So if you run a program, its internal references may have been patched out by Nixpkgs recipes/derivations to refer to /nix/store/ paths, meaning the program will not look in common FHS paths like /lib /usr, etc. Nix doesn't have /lib, so if that occurs, then the program will crash, and we will have to fix it by patching it in Nix. I like to say to people that you don't really need runtime sandboxing with this property, but some people would disagree with me. I say to those people, why are you running software you don't trust?
You can ask for any version of a piece of software you want, either by referring to an older version of Nixpkgs that happened to have an older version, or by overriding an existing nix recipe/derivation by using a Nix expression, which is a piece of Nix code.
To get the Hello from nixos-22.11
nix shell github:nixos/nixpkgs/nixos-22.11#hello
To override the Hello from nixos-22.11 with the 2.8 version of GNU hello
nix shell --impure --expr '(import (builtins.getFlake "github:nixos/nixpkgs/nixos-22.11") {}).hello.overrideAttrs (_:{ src = builtins.fetchurl "ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"; })'
Every program that is compiled has different inputs, or else it occupies the same /nix/store path. So the fact that the URL was different for hello in my example above is what makes its hash/shasum in the /nix/store unique and different.
Program state has nothing to do with Nix. If the Hello wants to write to ~/.config/hello, then Nix will not interact with that or modify that in any way.
How does this compare to Spack? Is Nix suitable for HPC, which usually requires fine tuning of compilation flags?
Compilation flags discussed at 1:59:15
I played with nixos for a bit the other day in a VM. My problem with it is, it feels like I can't do something unless I've done it before. I can't be the only one who has to copy/paste from someone else's vim/nvim config because I don't know what every single option is. For instance, Matt shows you can just enable the nginx service and have a web server; but nginx is nowhere to be seen in the list of system packages. How would someone know beforehand that nixos can just retrieve a service's dependency?
search.nixos.org/options?channel=23.11&from=0&size=50&sort=relevance&type=packages&query=nginx
Hey, Matthew! Great talk! Do you hang out in London at all? Would be cool to have a Nix meetup. People just don't know about Nix.
www.eventbrite.co.uk/e/london-nix-user-group-tickets-620517152507
What's that nvim language server? I truly miss that currently in my (astro-nvim based) setup
I'm using github.com/oxalica/nil
@@matthewcroughan thanks
I'm sure I can look this up but... I'm not seeing versions mentioned. If you install python3 with numpy... what versions do I get? The lack of explicit versioning for all the settings and such seems odd. services.nginx.enable = true... but what nginx am I getting?
It gets the version that's in the revision/version of nixpkgs you're using. It is very explicit, if you want to change the version then you can use override/overrideAttrs
For the next presentation, turn off whatever redshift thing you are using. It all looks extremely red on my end with additional redshift filter applied. 😉
I don't remember it looking that red for me in person, I'm wondering if their video capture pipeline screwed it up in some way, or maybe I just don't notice how red it gets!
What terminal font are you using? It looks super cool!
Great demo, but I do think you went a little fast in some parts (or at least did a lot simultaneously which was harder to follow).
It's a shame my workplace relies on Windows and Mac so heavily because Nix would be a godsend for our developers
Nix package manager is available on macOS. en.wikipedia.org/wiki/Nix_(package_manager)
For the Windows machines, I suppose you could do a bunch of different things - nixpkgs in WSL, full NixOS in (Hyper-V | Virtualbox | VMware), install NixOS on bare metal and run Windows as a guest in a VM (I do that). (Your users will bless your name forever.)
such a good presentation! btw Matthew, which nix lsp are you using for neovim ?
I use nil github.com/oxalica/nil
What happens if no nixos package is available like the bcc tools example?
You have to make one.
Any links to slides pls? Thanks!
docs.google.com/presentation/d/1HEwiivu08gADnIpAtDpTPSXcXNI89HqzZsmNxLi_7tA/edit?usp=sharing
Thank you!
This is my first video on nix. I don't understand how he is running raspberry pi os on his machine is it a VM? Do nix builds run as VMs?
The raspberry pi image is a NixOS image built and flashed to an SD card, which I then plugged into the Raspberry Pi and booted. The result on screen is from a HDMI capture card.
dang the ssh server is down
:)
:D
@@matthewcroughan:O
Mines a Nix Purple Pill
I took public speaking two semesters in a row in college, and the first thing we're taught is to not rock side to side when we're speaking in front of an audience. That's a minor detail considering the fact that I enjoyed Matt's talk more than any other that I've ever heard in my entire 23-year career as a Sysadmin / DevOps engineer. I have managed several microservice infrastructures, and what Matt is showing us resolves almost all of the tough pain points that we face today in this business. Repeatability is the number one goal in any environment from high performance clusters in microbiology, to heterogeneous infrastructures with applications running on legacy application servers.
Physically rock back and forth on the toes, or do you mean rock back and forth between slides? I guess both are applicable!
@@matthewcroughan I meant side to side. Hey Matt I want to apologize for my comments, after watching your talk. I am very impressed with your skill sets and knowledge. I believe Nix and NixOS are the answer to a lot of problems that have been plaguing the IT world for a very long time. I believe your involvement with the project has probably been integral to its rapid development and proliferation. Thanks for the great talk Matt.
Yes, Matt rocks!
the next goal for nixos should be integrate qubesos
Or to use Nix to build an OS that is better than QubesOS spectrum-os.org/
@@matthewcroughan Very interesting.
Between Nix, this, and VanillaOS, there appear to be a lot of great Linux OS projects making advancements lately.
@@matthewcroughan that sounds interesting because the goal of qubesos is to guard software from illegal behavior, how does spectrum achieves that with nix?
tried nixos, had a really bad experience with getting vscode plugins to work, could not code so gave up.
Imagine using vscode
Is this talk reproducable though? 🤔