NixOS: declarative configuration Linux distribution

Video in TIB AV-Portal: NixOS: declarative configuration Linux distribution

Formal Metadata

NixOS: declarative configuration Linux distribution
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
In recent years, we've seen many advances from typical imperative configuration of Linux distributions to more sophisticated declarative configuration systems. NixOS takes a different path to achieve declarative configuration than current widely used state-of-art configuration management systems. By redefining how we package software today using Nix package manager, Linux distribution is configured stateless without examining current state of configuration on the machine. During the talk, we'll be looking at concepts behind NixOS stack and I'll show some real world examples of usage
Ring (mathematics) Planning Normal (geometry) Summierbarkeit Public domain Quicksort Routing
Lecture/Conference Figurate number
Revision control Computer animation Lecture/Conference Multiplication sign Electronic mailing list Bit Quicksort Event horizon Information Technology Infrastructure Library Hydraulic jump
Web page Functional programming Functional (mathematics) Information management Computer file Open source Multiplication sign Distribution (mathematics) Set (mathematics) Function (mathematics) Lecture/Conference Endliche Modelltheorie Distribution (mathematics) Programming language Email Closed set Software developer Expression Bit Maxima and minima Machine code System call Category of being Computer animation output Website Right angle Pattern language Resultant
Point (geometry) Functional programming Functional (mathematics) Building Run time (program lifecycle phase) Service (economics) State of matter Decision theory Patch (Unix) Distribution (mathematics) Function (mathematics) Graph coloring Rule of inference Revision control Lecture/Conference File system Energy level Analytic continuation Distribution (mathematics) Programming language Stapeldatei Binary code Data storage device Sound effect Directory service Word Computer animation Software Personal digital assistant output Knowledge-based configuration Right angle
Functional (mathematics) Computer file Open source Multiplication sign Patch (Unix) Source code Set (mathematics) Function (mathematics) Lecture/Conference Software testing Data structure Block (periodic table) Binary code Maxima and minima Determinism Timestamp Arithmetic mean Computer animation Integrated development environment Software Hash function Personal digital assistant Network topology output Right angle Pattern language Quicksort Resultant Local ring
Functional (mathematics) Group action Open source Multiplication sign Set (mathematics) Function (mathematics) Parameter (computer programming) Revision control Component-based software engineering Lecture/Conference Descriptive statistics Distribution (mathematics) Theory of relativity Binary code Fitness function Data storage device Substitute good Type theory Computer animation Integrated development environment Hash function Software Network topology Hessian matrix output Right angle Routing
Web page Point (geometry) Existential quantification Computer animation Lecture/Conference Profil (magazine) State of matter
Web page Point (geometry) Metre Functional (mathematics) Information management Link (knot theory) Computer file Workstation <Musikinstrument> Set (mathematics) Open set Power (physics) Revision control Mathematics Lecture/Conference Profil (magazine) Different (Kate Ryan album) Operator (mathematics) Speicherbereinigung Distribution (mathematics) Form (programming) Physical system Scripting language Multiplication Electric generator Cellular automaton Uniqueness quantification Projective plane Multilateration Computer animation Integrated development environment output Right angle Pole (complex analysis)
Demon Functional (mathematics) Service (economics) Computer file State of matter Execution unit Virtual machine Student's t-test Solid geometry Parameter (computer programming) Food energy Declarative programming Revision control Mathematics User profile Lecture/Conference Profil (magazine) Computer configuration File system Cuboid Endliche Modelltheorie Booting Position operator Distribution (mathematics) Physical system Module (mathematics) Programming language Electric generator Theory of relativity Line (geometry) Machine code Bulletin board system Computer animation Personal digital assistant output Video game Knowledge-based configuration Right angle Natural language
Web page Computer animation Lecture/Conference 2 (number)
Functional (mathematics) Computer file Multiplication sign Virtual machine Mereology Product (business) Front and back ends Revision control Lecture/Conference Cuboid Software testing Arm Diffuser (automotive) Virtualization Cohesion (computer science) Arithmetic mean Spring (hydrology) Computer animation Doubling the cube Integrated development environment Order (biology) Website Point cloud Knowledge-based configuration Fiber bundle
Computer animation Lecture/Conference Block (periodic table) Figurate number Product (business) Number God Fingerprint
the thank you that's what the the end of the 2nd and the the the the the the the the new and that was the is a domain in the room by chance our next speaker domain norm of the sum of the most of the you know the the students in and like the and of and that sort and of thing so I this and that the ring a answer those leaving also add there a 2 more toxin answer that at 7 o'clock or meaning outside of the room here to go and grabbed dinner drinks or whatever it is that we're planning on doing but if you wanna join freedom made up here at 7 o'clock just outside room the end of the war in if you would at it in in a in a in a in so i is dominant route can I Darius speaker located with the blood of the and the guy of the this and all this and so in this the role of the results and and the the and and and what and and and and the we have semantic disease
there in a middle figure is that good uh move over to
the middle so you fill of all the empty seats as it empties it over that to of the seats and back we have an empty here over here i and you know the thank you that
this list by all over the place it in the 1st and the last thing I just said yeah was are a
sort of 2nd to last summer and some donors didn't talk about it so as I think it's very interesting talk a bit more exotic than most of the topics that that today have before he starts I want quickly and let everyone know that there is a conflict jump in 9 against the 2 days after the articles themselves on Monday and Tuesday unfortunately it's totally full so for this year year and out of luck if you don't have this season Lawrie um but so severe a conference today conference and basically all the configuration management tools for communities in have a someone said today it will probably be the only time or 1 of the very few times you'll see that both the people who started the event in the pocket and just talk the same conference or know so in have the very last for now dominated or what makes us and curious seriously so that was it sorry so a
little bit about my background on on pattern gesture developer and I'll use gender for about 8 years and have participated in the Summer of Code trying to alter generates Python packages on an island says user for about a year now and this will become the relevant later I have no prior experience with functional languages so before before you go and talk about the early the distribution we have to rethink the base management so on this is what makes comes in its external stand-alone so package it manages solid basically and onto any any distribution on it's a DSL it's lazy evaluated that's that's a very important of feature and property that you will see there on time entry functional language only because there there is a little bit of the package manager and he's the language we we we call this expression the underlying the the files and the the language that the right and the next is the bayesian endurance of addressed during off to have minimal dependencies so it's really easy to compile it from sources from 2 so on it's it's for the set and I'm not and that's the 1st reason but that's the 1st the first one listed on the website so 2004 I certain bio close to and there's like a dozen of scientific papers published on the next site that is iodide either to a today's for for the and I was built on top of it so we're thinking the package management and if you think about how how currently are distributions would that would going to the system and try to find headers there in in the very all the finally because it makes a lot of times relative there is and they're willing to directors of user include and try to find the correct handlers headers and that will break when you of that some of the packages on so there is a set of problems that's our on call dependency hell and I was like of the feature page which is all all those problems that arise of dependency hell have today and on annotation is to have really reproducible bills right so if I call the the instructions that are machine and run into its we should get the exact same result all so video behind is applied functional language model to do so the packaging right so I think it is actually an output of some function and all of those functions of those inputs the functions of the instructions hold
this package is affected on so
the so this is for example for having a flashing such for with all the packages that you have in your in distributions are stored and there is a US how long the prefix and then the name and the word and inside and then inside this directory this is basically the prefix where you install the packages on inside a handful of directories like being chair and so on and it's the reasonable and slandered as read-only so you you cannot modify it so that it is that when it's actually the package is built and stored inside the next you cannot modify it anymore that's that's the way we ensure that it is really an altitude of the function that you specified in expected so so for the next work there is on attorney-client purity and that basically means that that's we assured at the out for disaffected strongly by the inputs of the packaging functions so nothing else should effects this package right and at the language level this is solved by the weighted through using a functional language so there's no state on nice side effects but on the level of early distribution we have to take a lot of steps to make sure and some of them can't even be solved and some of them are all ongoing effort so for example there is no user there is no being sold in there's always global of folders on your institutional option because on we don't want that still find those packages that we prefix into the next alright on the old also we will take a decision changes so that reassured us they don't have access to the to the file system on so the stories in animal to so for example 1 of the uh impurities is of Transco will have color coded in best right so that's again global we want to we want to so it points out to the exactly batch version that we're building on this status and measures the dependency on so and metric for example we only allow them for a Texas when when you download software and when you actually tests and do other stuff on PennBio and so on there is no no network configure try on we have in patch of that's will perish proper service offered binaries and its rules said the interpreter and their past so we can also make sure that the binary software points to the correct on the to correct the next or open use on and this quote for the continuation of the entire whole actually figure out what we don't build dependencies and the runtime dependence is so we're so actually In the output is a search for the for the next spike output stores and that's then and then that we know on which packages of the bills although in building puts the packets depends on the run time right all you we will think that this is probably wrong but it works very well with the 0 problem that I have seen cases in the practice with this
approach and this is of course possible because of this idea of purity so they're
also introduce for example network a lot of times people will write test for the packet further also offer the tool needs Xs so that's in those cases we just assume those that's because there is no way to ensure that the network is a result of the input of the instructions to the bill of the package right it's something that is not deterministic long and for example sometimes it will have on that's the peril bills all of something will fund will fail because of the source code needs to be fixed right that's all it's also something that makes cannot fix on so when we have this concept the concept of Stein and environment Richard very minimal set of tools like that of the GCC and so can you said and so on and this always when you package of software that's a minimal set of like packages that you need then on we actually use the always 6 tools because of local mean and there's
actually a ticket not improve this in the future so there's also the city of Teheran deterministic binary so the he will see about all this hatch of what it means that when we prefix the package name but all basically this is the hash of all the inputs 0 2 to the function that would instruct cult packaged is structure right on and it's not the sort of the source is not the input so 0 and also do the binary block is not to input on the tree could extend this if we actually removed the impurities in the on and the binary outputs all in all sometimes the people would store timestamps in the of the blood and the binary of wall and of for example in the Python we have pattern compiled files and we patch Python to not include timestamps are so but this is this is an ongoing effort it's it's completely completely wouldn't have like 2 minutes to punish all
right and I was like as before we passed off through that has kind of cold it's passed to the the to the long route to this this utterance to actually see include but this is like an example of an engine makes are how we packages so at the top this is a function and the inputs to the front and the the parameters to the functions are standard environment on the tool functions and and and the dependencies that go on press on all and only the relation on the standard refinement is the the function that has the heavily think so that's the exclusive function that will do all this on faces and execute and package and store tend to do on excel on so as I've said before if you remember there was like this had before the name and version and actually the Hessian is calculated from all of those inputs to this function all except from from the of parameter which is irrelevant for the for the output because if you change like the description of GCC it be compiled the whole tree of what the passengers here so and inside there in the fistula 0 on function and that's that's another way of that another type of how weeks slows us the hashing and it's called out with fixed output so we know the Hanish which is this Hopkins out from 5 so we don't need to tool to are actually has all the inputs because we already know what is the of the creator of the krypton on and decrease hessian of the of the package and then the feature of our actions all output the federal function is actually the path to the next world this time all this election download it all at and if you can imagine the inputs specifies the dependencies and those provides so provide tenders and leaves and so on and so if any of those little will change of the input of the inputs also do engine makes of will be the engine hash will change so it will go and only component will get the prefix all so there's just but there are a few flakes and so on to see that we have that this function accepts quite a lot of parameters that you can affect all but the other 2 more I would mention 1 is there which is actually the best create that takes care of all the building and in the best fit we have phrases like you're nobody was like face install face and you can actually overwrites here this function those faces or at the pre phase post phase and so on so when purity actually work so that means that we've we've removed all introduce we can actually have a distribution that has source and binary packages so if you think about it we we have this hatched that actually uniquely identifies all the inputs to this package and if we have a built from which we do for makes so and we build a package or lot on the
build find then you could say use this as a replacement for a for for the bill functions so before makes actually build something it will go and for trying to find a set substitute so something that already provides a battery package for this hash on so if I go in style and Unix knowledgeable between Donald the binary well but if I go can modify any of the parameters to the engine extend it will could go components from source because the hash will change so so that becomes the question of how do we get an actual environment we have this we have this prefixes stored of packaged software stored in prefix in the store and how do we actually get to the to the to the environment right so the
there you see on I think it's called user and and that's where all of the pages moving into the you install all and and from that external from then on with both of those things from the next profiles will points of the human environment on and as you can see we can of his which is a history of what you change so if you install a package of
few on package we keep a history because that's that's the descendants of this benefit that we can actually have a history and makes provides Rolex so you can actually roll back on if you install something's broken or you have the it can roll back to previous so the previous state all and in those
profiles of generations that recall in history points to the next profile and every user can have a different profile or actually you can even generate a profile on demand for a project so of this actually replaces a userspace tools like in Python we have original environment so on all and this is like a big kid management lateral of the usual environment right so you can actually put those of a set of pages that are only specific for Apollo project and each other at any other profile or install a package another profit this will not affect other profits so the say right on so all and the if you think about makes this is also atomic so that means in the middle of an operator installing gave if it's shut down on the fear power shuts down so the changes won't be affected because the last step is the listening to the poles of his mind and synergies is in Unix atomic myself so that's where everything is to build and configure input into the next hour when this which is this is done then actually have the new environment ected on and then when I think about garbage collection and how we uninstalled packages 1 actually uninstall they catch it will just once it would just remove assuming from profile lot actually go and remove it from so for all so that means that we need the concept of their garbage collection and neutral collect those that is there no other referenced anywhere also you could still because imagine if you're changing the inputs to the friend Firefox function of from yields been could have multiple Firefox's in unique story but still maybe you don't want that you don't have them installed in your profile so on and and the garbage collection was talking it's not referenced by anything else let's let's say that the but so for the course the cost here so system carriages standard we would kind of we still have the beginning and end live and so on but we don't have the the user file folders on and it's also solve with dependency how right so you can have different packages that depend on different versions of openness cell doesn't matter and they're stored in the next door and they're just the link to different versions of the leaders of form open this up so but this is a very good way to advertise how to get started next but it's a really cool with that of the expressive in tree lines I don't recommend to actually run it sold all of the script 1st and no
take other continents lots of many resources into the the next of environment and you can actually go installed engages in you can do this on whatever you distribution work with 6 were from 3 meters station went all and if you want to
Iose solids and just remove the session X and although profiles that is created which is normally just 1 of what the user profile so it makes us is basically a generalization of the expected anything about it all but we don't have to do that much together units of distribution of that so if we store packages in the next or we can also saw the configuration files right that's actually a simplification of a packet that so the something says the system profile which is all the nexus profile from so it's when you operate accessible are in the system profile and so on and on and of course then we need some configuration for the system and the system declarative configuration using know and I think if you think about public service which is different to profit for example if a send public insurer of packages install it go into the machine and inspect if it's installed and if it's not then it was stolen right so that stateful that's code that's students to work and it needs to covered edge cases but we need this comes out of the out of the box right of the design of the model and the language and the system that we so this is an example of configuration of a system and you declare abrupt wise and file system and enable the SSE demon and here I show for example how to configure in a few lines of code so if you want a valid basically you you create a petition deformities slanted on January the conflict ended success starring bulletin have Europe system which whatever you put in your and when you look underground and you will see a history of of your profile so late in the and approach for generations so if something goes wrong with the system which you can actually go and take the old the old so profile on that extra actually work trying so just to quickly go home to write them and excess module and this is about the patents right text is the function that will actually stored of the fall into the next or so this is like a complement to the to the in the relation functions all Salazar related some this is not calls position we already reference besieging the conflict which is not defined so that through it is evaluated on actually when it's when it's referenced and this is how it just defined what options more than 1 features much of prize and you say Angelique's enable which package use and what conflict will be used for the engine x an accessory how we use system the wrong because it really the the the the thinking and Linux works all so there we have a lot of pre pre starts with the tools of start evidence of few everything and then the actual but of execution so that so and there were this engine and that's actually in the path of the prefix of the engine where it's packaged are and then to oppose the config file and the state directly on an and the tolerance that it makes an engine it's available was installed on the system and then you would use it something like this so on just of enabling genetics and what we do actually here is this is some kind of similar to the to the user flexion gentle right on you can have optional on cook behavior and spend the engine genetics is actually here of function that we use that we saw at the beginning and we can pass parameters to it tries so we could have like a parameter enable energy MPE and if you turn true then it would actually come downloads of the the module and configure configure it and goes engine excluded but it means that you want to use the binary package anymore because the change the inputs to the function I and when you make changes to the configuration file you if you run mixers rebuilt switch and that will activate on the the changes that is also a weak so through tested will actually activated but on the next reboot it will go to the previous on on the previous so those generations so it a lot actually and persist and there's also ability and so if I actually built of virtual machine
on a life of show box and tool configure everything inside so you can actually see if if it's working so this is the built
from you all the values are below and
I and I is it perhaps that so we because we all like we we we have baggage is stored and get help and on I'd add up to 30 300 seconds or something is then dental derail pulled changes and below the packages and provide the the binary pages for you right so on here here is like the
history of those built and you can see how many new baggages succeed or how many fail and we also have test soul In order to that make such channel is actually updated all those this needs to pass on to make sure that at least
something is working on the and then as I
as that we have make stops and this this is like deploying makes so as to the cloud and the provisioning arm so we have currently some backends of 4 Bacon's implemented but in of course more could be added on the and this is a quick introduction so In spotted would mix and then you define a machine which is a function of a conflict and packages and you for example you reconfigure Apache and and mix-ups as the suppression of the physical and logical part so the double diffuser cohesive abode for example this this time we will deploy to virtual box and we just say the tag environment is virtual box and then we say CreateSpace those 2 files and mean it's trivial and then deploy in this will actually coarray a virtual box machine on configure everything and fired up and you have ected at room boxing configured with the packages and the the have to a tumor sites that could be so then you could have like uh production version which would which would deploy tection machine on so but on some IP and you can get deployed the same way just provide a different name bond and we had done the CSI spring in Slovenia on the summer and I hope that a last
summer and I hope we will have additional again and was supported by larger blocks and falafel meant
and as it it would be the this figure a chair the
Tolman wasn't done was in Don the arch and I have 1 quick question is anyone using an excessive production to known that I the so we have a fact that has occurred that that was the the main question and it's it looks quite interesting to go in the check out 1 and we have I 1 more I had talked last and then it's a of a can a quick question number 1 we OK this is the the you will have to FIL communities the light of the so you have my God the