So, we're going to continue with the next talk.
I think it's always interesting to hear about how people,
like how infrastructure works,
and especially the conference like this.
There's always cool to hear about this kind of stuff.
So, I'm wondering, I'm sure you're going to talk about it.
So, I'm not going to ask the question.
I'm just going to hand over to the talk.
The talk is called, the title of this talk is conference video streaming
with the help of NYXOS.
So, I'm really curious to hear what you're doing there.
And this is Godfather and Angle of.
So, a round of applause for our speakers, please,
and have a good time with this talk.
Thank you.
First of all, thank you for coming to this talk.
And second of all, I want to thank to the people who made this NYXOS chain.
I feel like a true NYXOS hacker.
Today, we want to tell you something about what we did.
And we want to talk about OpenFest,
which is a really cool conference that we are kind of helping for.
And we're going to talk about the challenge that we had,
how we use NYX to solve all of these challenges and what's next.
So, very roughly, what's OpenFest OpenFest is a conference in
Sofia Bulgaria that happens for the last 20 something years.
Since 2003, it usually happens every full around October.
So, if you happen to be around Bulgaria in October,
please, Robby, we'll be happy to talk about anything.
Open source and open culture related.
At some point, it used to be in multiple cities simultaneously.
Right now, it's just in Sofia, but it's a lot of fun.
I promise.
So, basically, we have this thing.
We have audio and video mixers.
Basically, the same problem that full of them has.
We have cameras.
We have online streaming.
We have presenters.
We have microphones.
And this something has somehow has to be mixed all together.
It has to go online.
It has to be backed up.
It has to be streamed.
It has to be like, it has to work basically.
So, every time we had to deal with this,
it's like, you're setting up basically a Linux machine.
While Linux, I probably wouldn't explain, but yeah.
And the problem is that every time something small changes,
we don't really believe that it's going to work tomorrow.
And that's why we decided we want to do audio video mixer.
That's basically everything has to work from the get-go.
Basically, I want to boot the machine.
And it should like rise up with everything configured and installed.
And I should just press buttons.
We add a lot of fun doing this.
Of course, we did it with nix.
And you'll start at the project.
I joined somewhere in the middle.
And my qualifications were basically I like nix.
And I like fiddle with operating system.
And it turns out that I don't really have to know a lot about audio and video mixers.
But because nix is so flexible and powerful,
you can just apply your knowledge to build something that could complex.
And we had some interesting issues.
For example, we stumbled upon a bug in FFNPEG.
That required like very specific bug.
That required us to kind of roll back to a very specific release of FFNPEG,
which made us kind of compile certain stuff for the specific hardware.
We had to bundle the GPU drivers and all the other stuff.
I had a lot of fun rising sway to like basically all my way bar config.
And all that other cool stuff that I put on my desktop machine.
I put in that configuration and people seem to like that.
Another fun thing that we did is I don't know if I've used something for streaming.
There is a tinkled train deck, which is basically a macro pad with very fancy displays as buttons.
That you can reprogram.
We solved this problem by buying like a very simple and stupid small numpad keyboard.
And we just printed labels on top of it.
And we packed it a little bit with shortcuts for nix and it worked perfectly well.
We also wanted to pack all the assets, all the promo images and videos,
etc. inside the operating system.
So in case something goes wrong and things in conferences go wrong all the time.
I promise it's a fact of life.
So everything's baked in.
And again another friend of ours configured OBS.
So basically when you boot the system, you have exactly the same separation of different screens and all the views.
One of the cool things that we could do because it's nix.
We used nix generators to basically generate QM image.
And because you need to test a lot of stuff all the time.
We need to iterate very fast. QM allows you to boot really fast, validate, fix, rebuild and so on and so on.
And finally, we were using deployers to deploy on the remote host.
That's how we're bootstrapping the mixer computer.
But Angel did not like the process at all for some reason.
He's going to tell the problem more about it.
And he did a thing that he calls deploy Omatic, which besides that it sounds cool.
I know nothing about.
And that was the plan.
We knew that basically the entire point of doing this was to make it softer, disaster recoverable.
So I had a plan.
We had the machine.
Everything's installed on it.
I have a backup hard drive.
And everything's in it on it.
So I can basically at any point boot from it.
And it's going to have exactly the same setup reproducible all of this stuff.
The night before the conference, like before we did the setup.
I decided as that's not that's not good enough.
And I exposed my own binary cache from my home computer to the one in the conference room.
So in case we need to rebuild everything, at least we can save the compile time.
So we used Nick serve.
So we were kind of backed up in a lot of ways.
And of course, as things go with conferences, things broke.
Like Friday afternoon, like late evening, things broke with the computer did not start at all.
There is out that the problem was like our boot loader disappeared, which is like happens.
And the best thing about it is that we kind of figure out what was going on.
But the best thing is because it's Nick's.
We don't have to know how and why it's broken.
I just booted from Nick'sOS Tom Drive.
And I downloaded the flake and I said, hey, I wanted to rebuild that flake on that machine.
And I said, oh, I see that thing.
It took like literally three seconds and it fixed it.
And we rebooted and it was all working.
So basically, it seemed like our investment of doing the setup in Nick'sOS worked.
And a fun fact is that, yeah, I was wondering, I was just lucky that I had a thumb drive in boot.
And I asked around, like, hey, does anyone have a flash drive?
Turns out, on a Linux conference, like 20 people have one.
So how many people have a Linux in their pocket?
Okay, good.
We're in safe hands, so if something goes wrong here, we can fix it.
And the other thing is, we were all prepared for all the software problems that we may occur
because at any point, we can just rebuild everything.
And we know that we're going to get to a state where it works.
And I asked, oh, hey, I know.
We're all backed up with the software.
What's going to happen if the hardware fails?
And he said, well, we're going to cry.
So now, it's going to tell you how we're going to solve this problem.
Yeah.
So one of the good things about deploying software
with nixes that it's reproducible, like when it breaks, you can just get a new one.
Well, we can just apply that to hardware.
And that's what we do at false them for.
Okay, thank you.
So at false them, we use these boxes to stream video from every single room.
So what if we combined this reproducible hardware that's easy to make and open source.
And we have 70 of those that can be replaced when something breaks.
With software that's also reproducible and can be used and rebuilt.
Whenever there is something going wrong.
Well, the false them video box gives us that opportunity.
And so why not run nixOS on it?
And so for the new revision of the false them video box that we're planning to make for false them next year.
We tried just building an image of makesOS, so the system that we made for open-fest for the false them video box.
And it turns out that it just works.
You just have to change a few parameters to make the image build on this target hardware.
That's a little bit more constrained and different.
And it boots and it discovers like the capture cards.
And they appear at the correct places in the device chain.
And all we have to do was package all the software that runs on the video box to actually make use of the custom hardware there.
And that wasn't really any difficult because all of the software is already packaged in the respective programming languages package managers.
And nix just has a very affordable ways of packaging something that's already packaged for example written in go or in Python or in something similar.
So basically that's what we did with the false them box.
And maybe tomorrow one room in false them may or may not run nixOS for its video stream.
And you may or may not notice it breaking or not.
I don't know.
But anyway, what we did for deployment to this repeatable environment is that we generated the disk image.
We first did that with nixOS generators and just flashed it onto the drive of the system.
And then for subsequent.
For subsequent builds, we just deploy the game with deployers or nixOS rebuilds which deploy.
But we discovered a tiny problem with that which is that nixOS generators actually does do really simple things.
It adds some custom nixOS modules to the install so that the target disk is supported.
For example, if you're building for a nix86 system nixOS generators will insert something that will have base hardware support for x86 something like that.
And then it just runs something that's already there a function that's already in nix packages that creates an image for this particular system.
But if you read it, load that nixOS configuration remotely with something like deployers.
Then the custom stuff that gets generated by nixOS generators isn't included.
And so we rendered our systems and bootable the first few times until we figured out what was going wrong.
And then we found out what is going wrong.
And I just couldn't think of more idiomatic way to fix it.
So I just ditched nixOS generators and wrote an even stupider to called deployonmatic.
That simply does the two aforementioned things and also injects the modules that depend on the targets inside the system that gets deployed.
So in the end, we got quite a reproducible system that can be used on multiple hardware instances that we have.
That works on the false them video box. It uses another software for video mixing.
That's not the one that's used on the much more powerful PC that we used that open first.
But the core operating system settings are the same in each case.
And nixOS really makes it easy to share all the bits that are common between the two installs and have the benefit of actually making a fix in one place and having that fix be available in the other place.
So yeah, thanks to the whole nixOS community for making this possible.
And yeah, I hope we will continue using nixOS for video streaming and developing this tool more.
Thank you.