NixCon 2022

To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
08:30
08:30
25min
Welcome Coffee

Welcome Coffee

Main track (Gym)
08:55
08:55
5min
NixCon Opening Ceremony

Opening notes

Main room
Main track (Gym)
09:05
09:05
25min
NixCon 2022 Opening Keynote - Nix State of the Union

Nix State of the Union

Main track (Gym)
09:30
09:30
25min
Learning the Nix Store layer
John Ericson

Beneath NixOS, Nixpkgs, and the Nix expression language is the “Nix store” interface — a deceptively powerful interface that includes includes both storage itself and also building. Although we rarely use it directly, it’s at the heart of what makes Nix great. By understanding the semantics of the Nix store interface in isolation, intermediate and advanced Nix users can expand their intuition and problem solving skills while working with Nix. The ways we both use and implement the interface will keep evolving in myriad ways, but the interface itself, or at least the core ideas behind it, have remained remarkably stable, anchoring everything else we do.

Main track (Gym)
10:00
10:00
25min
Nix for particle accelerators, and the adventure in cross-compilation
Rémi NICOLE

A presentation of the cross-compilation infrastructure, and the troubles and successes using it for an embedded system.

Main track (Gym)
10:30
10:30
25min
Day 1 Morning Coffee Break

Day 1 Morning Coffee Break

Main track (Gym)
11:00
11:00
5min
Talking about Nix with friends
Guillaume Desforges

A few guidelines to not make people run away when talking about Nix.

Main track (Gym)
11:10
11:10
5min
Nix error traces improvements #6204
Guillaume Maudoux (@layus)

Based on simple examples, this will showcase error reporting improvements implemented in the open https://github.com/NixOS/nix/pull/6204 PR.

Main track (Gym)
11:20
11:20
5min
Packaging Wayland applications on macOS
Weijia Wang

In this lightning talk, I will present my port of Wayland 1.21.0 to macOS, as well as my epoll-shim setup hooks that make it easier to package cross-platform Wayland applications.

Main track (Gym)
11:30
11:30
5min
jupyterWith: Making Jupyter Reproducible
Daniel Baker

jupyterWith has made significant improvements this year towards maintainability and ease of use. This talk will discuss those improvements and how you can quickly start creating reproducible Jupyter notebooks.

Main track (Gym)
11:40
11:40
25min
Debugging closure sizes graphically
Jade Lovelace

Big closure sizes bog down deploys by wasting time and space shipping around unnecessary bits, particularly with Docker containers. Nix provides tools to analyze closures, but both the graphical and textual methods leave something to be desired, especially when dealing with NixOS system closures with hundreds of derivations.

I'll demonstrate debugging excessive closure size of a Docker image of an open source NodeJS application, bringing the image size down from 300MB to around 100MB.

In this session, I'll introduce a new tool I've built that can show system closures graphically as network-graphs, making debugging the causes of excessive closure size easy, irrespective of the number of derivations involved.

Main track (Gym)
12:10
12:10
60min
Day 1 Lunch Break

Day 1 Lunch Break

Main track (Gym)
13:15
13:15
45min
Nix Board Fireside Chat

Fireside chat with the Nix Board

Main track (Gym)
14:00
14:00
25min
Nix in a scientific environment: bringing together Nix's reproducibility with computational chemistry
Markus Kowalewski, Phillip Seeber

High performance compute clusters in a scientific environment are rather specialized environments,
that provide highly specialized software packages for scientists.
Performance optimizations, specific to the given cluster, are an important part of the setup.
In many places, these packages are still hand compiled, hand tested and
made available via the "modules" system, which makes upgrading a package a difficult process.
To the experienced Nix user, it may be obvious that Nix can solve problems with providing software
to users while, at the same time, also providing a path to reproducibility of scientific results.
We thus have developed the NixOS-QChem overlay to provide computational chemistry software packages
in a reproducible, transferable, and customizable way. The overlay provides more than 30
chemistry related software packages, as well as optimized versions of upstream nixpkgs packages.

In this talk, I will give an overview over the overlay and how we have adapted it for a scientific
compute environment, as well as the challenges that we have faced while packaging some more exotic packages.
The focus here will be mainly on the Nix related aspects and lessons learned that apply also to other scientific packages.

Main track (Gym)
14:30
14:30
25min
Rethinking basic primitives for store based systems
Farid Zakaria, Carlos Maltzahn, Tom Scogland

Nix has introduced the world to store-based systems and ushered a new wave of reproducibility. These new systems however are built atop long established patterns and occasionally leverage them to band-aid over the problems Nix aims to solve.

How much further can we leverage the store abstraction to rethink long valued established patterns in Unix based operating systems? This talk will introduce some of the simple improvements one can uncover starting at the linking phase of object building and process startup.

The authors introduce Shrinkwrap which can greatly improve startup performance and further improve reproducibility for applications ported to Nix by making simple improvement to how libraries are discovered and leveraging the store further. Additional explorations for improvements during the linking phase will be discussed and explored. It's time we rethink everything.

Main track (Gym)
15:00
15:00
25min
Day 1 Afternoon Coffee Break

Day 2 Afternoon Coffee Break

Main track (Gym)
15:30
15:30
25min
Why we've built yet another Nix deployment tool
Domen Kožar

Deep dive into Cachix deploy design decisions and demonstration of common developer workflows

Main room
Main track (Gym)
16:00
16:00
25min
Scaling Up Flakes
Eelco Dolstra

Flakes are becoming the de facto standard way of packaging Nix-based
projects. However, flakes have some major problems due to the way Nix
enforces hermetic evaluation: flake inputs (such as Git repositories)
are copied to the Nix store, which is slow for large repositories,
massively wastes disk space, and leads to confusing error messages. I
will discuss recent flake changes that not only solve these problems
but provide a bunch of other benefits, such as the ability to apply
patches to inputs. I will also talk about future directions for
flakes.

Main track (Gym)
16:30
16:30
5min
NixCon Closing Statements Day 1

closing notes for first day

Main track (Gym)
18:00
18:00
120min
Social Event: Jazz Concert

A jazz concert involving Swing and Bossa Nova:

  • Caravan
  • Every wants to be a cat
  • Chega de Saudade
  • Take Five

And more.

A special Nix-theme music was composed for this concert by the band, ask organizers about details, history and genesis. :)

Main room
Main track (Gym)
08:30
08:30
25min
Welcome Coffee

Welcome Coffee

Main track (Gym)
09:00
09:00
5min
NixCon Opening Statements Day 2

Welcome to Day 2!

Main track (Gym)
09:05
09:05
25min
NixOS can live anywhere: why, how, and where?
Linus Heckemann

NixOS is extremely versatile in terms of ways to get it onto machines! Let's explore:
- How a Linux system boots
- What a NixOS system consists of
- How this enables deploying it to a wide variety of environments
- Various examples environments into which a NixOS system can be deployed

Main track (Gym)
09:30
09:30
25min
Nix2container: faster container image rebuilds
lewo

Nix2container is an alternative implementation to our
nixpkgs.dockerTools. Its main difference is to rely on Skopeo to
actually build the image: this allows us to use the container image
building logic of Skopeo and also provide opportunities to implement
more aggressive layer caching and skipping.

Main track (Gym)
10:00
10:00
30min
Squeezing efficient and small Nix containers into Nomad
Richard Brežák

This talk will discuss one possible strategy for building and deploying small and efficient Nix containers. We will go through what has been tried before and then present a personal deployment of the proposed system which has been actively used and proven to work. We will also explore and explain why the current solutions available aren't suitable as shown by the lacking prevelance of Nix containers in the Nix community.

Main room
Main track (Gym)
10:30
10:30
25min
Day 2 Morning Coffee Break

Day 2 Morning Coffee Break

Main track (Gym)
11:00
11:00
30min
Strong Nix
Ron Efroni

How we pull together to set the community and Nix up for decades of Success

Main track (Gym)
11:30
11:30
5min
Running the Nix daemon (nearly) rootless
Théophane Hufschmitt

Making Nix follow the principle of least privilege by removing as much as possible the need to it to run as root

Main track (Gym)
11:40
11:40
5min
Reproducibly building artifacts that contain embedded signatures
Martin Schwaighofer

Signatures are annoying when you are trying build software reproducibly, especially when deeply embedded in the output artifact. Let's look at how we can tackle this problem elegantly with Nix.

Main track (Gym)
11:50
11:50
5min
We should manage secrets the systemd way!
korfuri

Systemd 250 introduced a way to manage encrypted "credentials" (secrets, reallly) in a way that I think NixOS could benefit from. We're not using it anywhere yet, but we should. This describes briefly how systemd wants to manage credentials and how to integrate that in a NixOS setup.

Main track (Gym)
12:00
12:00
5min
Nix and legacy enterprise software development: an unlikely match made in heaven
Maximilian Bosch

This talk is supposed to demonstrate a nice side-effect of being able to build old Nix expressions and even having a binary cache with the build artifacts available: for the data migration from a legacy project we had to debug a flash-based component. Even in 2021 where the Flash player is dead and unavailable it was trivial to revive this piece of old software with Nix (and web.archive.org).

Main track (Gym)
12:10
12:10
5min
Revolutionizing my daily development with Nix
Luc Perkins

My laptop environment is the staging ground for my life as a developer. In this talk, I’ll tell the story of how a Nix flake I call Nome, my “Nix home,” provides not just a fully declarative and easily reproducible global environment on my laptop but also a variety of templates and other helpers that have supercharged my per-project environments as well.

Main track (Gym)
12:20
12:20
5min
Jitsi on NixOS
Cleeyv, tshaynik

Jitsi Meet is one of the most widely used options for open source video conferencing. In addition to basic video conferences, it also supports a substantial ecosystem of additional components and features, and while these add important functionality they also increase substantially the complexity of a deployment. As part of Summer of Nix 2021 and 2022 we have been working on dramatically simplifying the process of doing more complex, featureful deployments of Jitsi Meet by using the powerful packaging and configuration tools of NixOS. This talk will cover what we have done so far on this project, the work that still remains, and what this means more broadly for packaging and deploying large server-side open source projects on NixOS.

Main track (Gym)
12:30
12:30
60min
Day 2 Lunch Break

Day 2 Lunch Break

Main track (Gym)
13:30
13:30
10min
flox to nix
Tom Bereknyei

flox, a quick run through of bringing Nix to work, making it simple and scalable

Main room
Main track (Gym)
13:45
13:45
10min
Write the Nix package of a Rust project in 2022: an opinionated comparison
Yvan Sraka

In this talk, we will address the different existing strategies to package an arbitrary Rust crate. Our goals are to try to minimize the amount of Nix code required to quick start, discussing how to deal with overlays, and finally demonstrating why Nix offers a greater cross-compilation developer experience than Cargo.

Main track (Gym)
14:00
14:00
25min
Good Enough
Graham Christensen

Nix and Nix users tend to see a little nugget of Nix and crystalize everything around it.
Nix is very "viral" in that way.

Sometimes you find imperfections in the system and it breaks everything: it is very difficult or impossible to finish the "Nixifying" or Ice-Nineing of your project. How frustrating!
We also tend to be "Nix Maximalists", pushing Nix to the very edge of our domain. Building as much as possible as close to the final deliverable as we can.

This has extraordinary benefits and can present a really fun puzzle. But in some cases it has real costs around performance, usability, and adoption.

Let's talk about software which disrupts the crystal: software which is hard to "nixify." Let's also talk about amazing user experiences that become possible by taking one step back from the edge.

Main track (Gym)
14:30
14:30
25min
Nix: a space odyssey
Leandro Emmanuel Reina Kiperman

An overview on how we make use of NixOS in our satellite payloads as the backbone of our wildfire detection services.

Main track (Gym)
15:00
15:00
25min
Day 2 Afternoon Coffee Break

Day 2 Afternoon Coffee Break

Main track (Gym)
15:30
15:30
25min
Improving Nix documentation
Valentin Gagarin

Documentation has always been a sore point for Nix, and the 2022 community survey results have clearly shown demand for improvement. This talk reports on this year's proceedings in better documenting the Nix ecosystem.

Main track (Gym)
16:00
16:00
5min
NixCon Closing Ceremony

NixCon Opening Ceremony

Main track (Gym)
16:05
16:05
120min
Hiring Happy Hour (Day 2)

Day 2 Hiring Happy Hour

Main track (Gym)