{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2026.3.0.dev0", "url": "https://talks.nixcon.org"}, "schedule": {"url": "https://talks.nixcon.org/nixcon2020/schedule/", "version": "0.16", "base_url": "https://talks.nixcon.org", "conference": {"acronym": "nixcon2020", "title": "NixCon 2020: Online Edition", "start": "2020-10-16", "end": "2020-10-18", "daysCount": 3, "timeslot_duration": "00:05", "time_zone_name": "UTC", "colors": {"primary": "#5277C3"}, "rooms": [{"name": "Main Stream", "slug": "2325-main-stream", "guid": "95026702-9fa3-5b33-b06f-0ccaae98406a", "description": null, "capacity": null}], "tracks": [], "days": [{"index": 1, "date": "2020-10-16", "day_start": "2020-10-16T04:00:00+00:00", "day_end": "2020-10-17T03:59:00+00:00", "rooms": {"Main Stream": [{"guid": "4fbf44b6-8555-5409-804b-71a16643091a", "code": "K89WJY", "id": 35394, "logo": null, "date": "2020-10-16T11:15:00+00:00", "start": "11:15", "end": "2020-10-16T11:40:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35394-nix-modules-improving-nix-s-discoverability-and-usability", "url": "https://talks.nixcon.org/nixcon2020/talk/K89WJY/", "title": "Nix modules: Improving Nix's discoverability and usability", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Nix's configuration language is quite powerful, but suffers from a\nlack of discoverability, usability and consistency. In this talk, I'll\ndescribe an experimental Nix module system that provides a consistent,\ndiscoverable mechanism to write configurations such as packages and\nNixOS systems, and show how this enables a better user experience for\nboth new and advanced users.", "description": "Nix's configuration language is quite powerful, but suffers from a\nlack of discoverability, usability and consistency. To name just a few\nexamples:\n\n* There is no easy way to find out from the command line or from the\n  REPL what arguments are supported by functions like\n  `stdenv.mkDerivation` or `buildPythonPackage`.\n\n* Mechanisms like the .override attribute provide an almost unlimited\n  ability to customize packages, but the only way to figure out what\n  you can override is to read the source of the Nix package, and\n  *writing* overrides is often black magic.\n\n* NixOS has a nice self-documenting module system, but Nix packages\n  are written in a completely different functional style.\n\n* The Nix CLI doesn't know anything about package functions, `.override`\n  and `.overrideDerivation`, the NixOS module system, the Nixpkgs\n  `config` attribute set, Nixpkgs overlays, or any other customization\n  mechanisms that have emerged over the years.\n\n* The syntax and semantics of Nix expressions are often an obstacle to\n  new users and have a steep learning curve.\n\nIn this talk, I'll show an experimental Nix module system, similar to\nthe NixOS module system, to replace the \"functional\" package style\nusing in Nixpkgs. This means that functions like `mkDerivation` or\n`buildPythonPackage` as well as packages become modules that can build\non each other. For instance, the \"GNU Hello\" package is a module that\ninherits from the `unixPackage` module, which in turn inherits from other\nmodules like `derivation`. Package customization is done in the same\nway: by inheriting a module.\n\nThese modules, just like in NixOS, have types and documentation. As a\nresult, everything becomes discoverable and modifiable from the\ncommand line. For instance, there is a command `nix list-options` that\nshows everything that can be customized in a package. It also provides\na standard for documentation: the command `nix doc` generates HTML\ndocumentation for the modules in a flake.", "recording_license": "", "do_not_record": false, "persons": [{"code": "7FFNXC", "name": "Eelco Dolstra", "avatar": null, "biography": "Eelco Dolstra is a Senior Software Engineer at Tweag I/O. He obtained\na PhD in Computer Science from Utrecht University in 2006 and was a\npostdoctoral researcher at Utrecht University and Delft University of\nTechnology. From 2012 to 2018 he was a Software Engineer at LogicBlox\n(acquired by Infor in 2016). As part of his PhD research project at\nUtrecht University, he developed Nix, the purely functional package\nmanager. Together with Armijn Hemel, he started the NixOS Linux\ndistribution in 2006. He joined Tweag I/O in 2018. He also serves as\nPresident of the NixOS Foundation.", "public_name": "Eelco Dolstra", "guid": "8540c9c6-805f-5e31-8b57-d141d7601dbc", "url": "https://talks.nixcon.org/nixcon2020/speaker/7FFNXC/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/K89WJY/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/K89WJY/", "attachments": [{"title": "Slides", "url": "/media/nixcon2020/submissions/K89WJY/resources/nixcon-oct-2020_BxdurRx.pdf", "type": "related"}]}, {"guid": "e2bdb6bb-6ad6-5759-8756-5f4e3f70c831", "code": "88S9QQ", "id": 35395, "logo": null, "date": "2020-10-16T11:45:00+00:00", "start": "11:45", "end": "2020-10-16T12:10:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35395-an-intelligent-system-to-recommend-configurations", "url": "https://talks.nixcon.org/nixcon2020/talk/88S9QQ/", "title": "An Intelligent System to Recommend Configurations", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "In this talk I will discuss the idea of recommending configurations automatically, as well as its applications and challenges, as well as how it functions within the larger community.", "description": "I will be demonstrating the system in action, while explaining how and why it works the way it does.", "recording_license": "", "do_not_record": false, "persons": [{"code": "9L3GHD", "name": "Yisroel Newmark", "avatar": null, "biography": "I am a Linux enthusiast that became enamored by the control I got from NixOS.", "public_name": "Yisroel Newmark", "guid": "4599e3f0-40f4-543b-97fe-833ec6eb5704", "url": "https://talks.nixcon.org/nixcon2020/speaker/9L3GHD/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/88S9QQ/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/88S9QQ/", "attachments": []}, {"guid": "af8b0975-a1a6-582b-a2ed-6912093fe50b", "code": "XSF8GD", "id": 35396, "logo": null, "date": "2020-10-16T12:15:00+00:00", "start": "12:15", "end": "2020-10-16T12:40:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35396-nix-at-chatroulette-v2", "url": "https://talks.nixcon.org/nixcon2020/talk/XSF8GD/", "title": "Nix at Chatroulette v2", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "People already familiar with Nix already know its benefits but what is the best way to tell others what they are missing out? How do you convince your employer and colleagues that using Nix is a good idea? Let me tell you how I did it at Chatroulette (https://about.chatroulette.com/) and show you that you can easily do it at your company too.", "description": "The main programming language at Chatroulette is Scala, a hybrid OOP-FP language that runs on the JVM, even though we only make use of the functional subset. We run the entire system on Kubernetes (Istio / Envoy) and deploy our microservices as Docker containers.\n\nIntroducing Nix in such a big system - running in different platforms - might not seem trivial but you would never know if you never try! \n\nThe talk will also touch on the current state of Nix in the Scala community. How many use Nix? How many don't know what Nix is? What can we do better?\n\nThe ultimate goal of this talk is to give you the itch to at least think about introducing it at your company.", "recording_license": "", "do_not_record": false, "persons": [{"code": "A7R9KE", "name": "Gabriel Volpe", "avatar": null, "biography": "Gabriel is a passionate Haskeller-Scalaer-Nixer-Vimmer software engineer. Highly active [open-source contributor](https://github.com/gvolpe). Author of [Practical FP in Scala](https://leanpub.com/pfp-scala). Currently working at Chatroulette.", "public_name": "Gabriel Volpe", "guid": "f37a6783-7336-596b-ac22-3d45bea6d5aa", "url": "https://talks.nixcon.org/nixcon2020/speaker/A7R9KE/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/XSF8GD/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/XSF8GD/", "attachments": []}, {"guid": "fe076f24-5cc7-53c6-a22e-52e1e440c432", "code": "ZJQAMF", "id": 35397, "logo": null, "date": "2020-10-16T12:45:00+00:00", "start": "12:45", "end": "2020-10-16T13:10:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35397-nix-flakes-in-production-what-why-and-how", "url": "https://talks.nixcon.org/nixcon2020/talk/ZJQAMF/", "title": "Nix Flakes in Production: What, Why and How", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "At Serokell, we have been using Nix for over 5 years. In the last half-year, we have started an effort to use flakes to build our infrastructure and projects. In this talk, I would like to give a refresher of what flakes are, explain why we are so excited about them, and share experiences, thoughts, and advice on the matter.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "XVAS3B", "name": "Alexander Bantyev", "avatar": null, "biography": "Hacking on Nixpkgs, Nix, NixOS and the surrounding ecosystem for years. Helping people figure out how Nix works. Supporting Serokell build infrastructure.", "public_name": "Alexander Bantyev", "guid": "d96f0096-cf88-5bf7-99ef-a80379373883", "url": "https://talks.nixcon.org/nixcon2020/speaker/XVAS3B/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/ZJQAMF/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/ZJQAMF/", "attachments": []}, {"guid": "af486a84-1c14-51df-bb9f-9509da96eea6", "code": "RKPT7U", "id": 35398, "logo": null, "date": "2020-10-16T15:00:00+00:00", "start": "15:00", "end": "2020-10-16T15:25:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35398-how-to-change-the-nix-ecosystem-to-become-mainstream", "url": "https://talks.nixcon.org/nixcon2020/talk/RKPT7U/", "title": "How to change the Nix ecosystem to become mainstream?", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Nix is almost 20 years old. \n\nThe innovation Nix brought is now present in almost all recent packaging tooling,\nwhile Nix hasn't been adopted yet by a larger audience.\n\nWhy should we care about that?\n\nWhat can we do to remove the barriers to mainstream adoption?\n\nWe'll look at examples from books, similar stories and what people and leaders of our industry are saying.\n\nWe'll dive into each topic briefly, providing an opinionated set of goals to get Nix in hands of everyone.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "XC9HWT", "name": "Domen Ko\u017ear", "avatar": null, "biography": "My mission is to bring Nix to en masse.\n\n\n\nI've started using Nix in 2012 and after years of many contributions in free time, started using Nix exclusively in 2016 packaging up OpenStack and functional testing a cluster with scenarios.\n\nIn 2016 I've founded Enlambda consulting which helped many clients like Snabb and IOHK to adopt Nix as a way to solve interesting complex software distribution problems in our industry.", "public_name": "Domen Ko\u017ear", "guid": "82a81bc8-bebb-5d8d-960d-bc03e065a960", "url": "https://talks.nixcon.org/nixcon2020/speaker/XC9HWT/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/RKPT7U/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/RKPT7U/", "attachments": []}, {"guid": "4d2839f0-a589-5bae-b080-ed88ba9a6c3e", "code": "R7LSXJ", "id": 35399, "logo": null, "date": "2020-10-16T15:30:00+00:00", "start": "15:30", "end": "2020-10-16T15:55:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35399-remote-deployments-with-nixos-and-nixops-at-yakkertech", "url": "https://talks.nixcon.org/nixcon2020/talk/R7LSXJ/", "title": "Remote deployments with NixOS and Nixops at Yakkertech", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "At Yakkertech we use NixOS and Nixops to deploy software in a safe, reproducible, and manageable way to our embedded baseball pitch tracking machines installed in ball fields in the US.", "description": "In this talk I'll discuss what we do at Yakkertech, some of the software and computer-related challenges that this brings, the aspects of NixOS that help us address these challenges and why we chose it, how we use it in practice, and our experience of having used it.", "recording_license": "", "do_not_record": false, "persons": [{"code": "KY7PWK", "name": "Aden Seaman", "avatar": null, "biography": "Aden is the CTO of Yakkertech, and is a software developer, engineer, and physicist by training.\nHe has been using Linux since 1994, and Nix for the past 2 years.\nHe is passionate about math, computers, functional programming, and open source software.", "public_name": "Aden Seaman", "guid": "8118120c-1335-5a93-9ecf-0dbd0699e454", "url": "https://talks.nixcon.org/nixcon2020/speaker/KY7PWK/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/R7LSXJ/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/R7LSXJ/", "attachments": []}, {"guid": "e80fcbe9-6f05-5289-b0fa-658e3d40aeef", "code": "AK98WZ", "id": 35400, "logo": null, "date": "2020-10-16T16:00:00+00:00", "start": "16:00", "end": "2020-10-16T16:25:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35400-robotnix-build-android-aosp-using-nix", "url": "https://talks.nixcon.org/nixcon2020/talk/AK98WZ/", "title": "Robotnix - Build Android (AOSP) using Nix", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Robotnix enables a user to build Android (AOSP) images using the Nix package manager. AOSP projects often contain long and complicated build instructions requiring a variety of tools for fetching source code and executing the build. This applies not only to Android itself, but also to projects which are to be included in the Android build, such as the Linux kernel, Chromium webview, MicroG, other external/prebuilt privileged apps, etc. Robotnix orchestrates the diverse build tools across these multiple projects using Nix, inheriting its reliability and reproducibility benefits, and consequently making the build and signing process very simple for an end-user.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "PBAZNP", "name": "Daniel Fullmer", "avatar": null, "biography": "Daniel Fullmer is a recent EE PhD graduate from Yale University, where he focused on distributed computation and control. Before this he was a software developer and SRE at various companies. He has been a Nix/NixOS user since 2015, and has been interested in declaratively specifying more aspects of his life using Nix.", "public_name": "Daniel Fullmer", "guid": "e088e401-c848-5333-bc4c-8eeefe783093", "url": "https://talks.nixcon.org/nixcon2020/speaker/PBAZNP/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/AK98WZ/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/AK98WZ/", "attachments": [{"title": "Slides", "url": "/media/nixcon2020/submissions/AK98WZ/resources/robotnix-nixcon2020-final_7vx7E6L.pdf", "type": "related"}]}, {"guid": "b9c7b111-4ae8-58c0-ae4e-fe161cb3a3b7", "code": "DHGPLN", "id": 35401, "logo": null, "date": "2020-10-16T16:30:00+00:00", "start": "16:30", "end": "2020-10-16T16:55:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35401-bringing-nixos-to-my-school", "url": "https://talks.nixcon.org/nixcon2020/talk/DHGPLN/", "title": "Bringing NixOS to my school", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "EPITA, a French school of engineers in computer science, is bringing NixOS to its students. Here is a presentation of the challenges of maintaining an infrastructure of more than 800 machines used by students.", "description": "The presentation will start with a current state of our learning infrastructure running on Arch Linux, the challenges we face with it, the up- and downsides of migrating to NixOS and what has already been done.", "recording_license": "", "do_not_record": false, "persons": [{"code": "8XC8PN", "name": "Marc Schmitt", "avatar": null, "biography": "I am a student at EPITA, a computer engineering school in Paris, with a specialty in systems administration. I currently am part of the school's IT department, managing an infrastructure of 800 machines for 4000 students.", "public_name": "Marc Schmitt", "guid": "33837d0a-1c4d-577f-8a89-5fe906e0cfb2", "url": "https://talks.nixcon.org/nixcon2020/speaker/8XC8PN/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/DHGPLN/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/DHGPLN/", "attachments": [{"title": "Talk slides", "url": "/media/nixcon2020/submissions/DHGPLN/resources/NixCon_2020_-_Bringing_NixOS_to_my_school_Oqcsvm_oXSNavK.pdf", "type": "related"}]}, {"guid": "ec6c4308-347b-5e93-a915-3707ea7925d8", "code": "PSLELK", "id": 35402, "logo": null, "date": "2020-10-16T17:00:00+00:00", "start": "17:00", "end": "2020-10-16T17:25:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35402-nix-in-the-java-ecosystem", "url": "https://talks.nixcon.org/nixcon2020/talk/PSLELK/", "title": "Nix in the Java ecosystem", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Java is one of the most popular languages (ranked 2nd by PYPL [1]), however there is a fragmented and incomplete solution when it comes to tooling available by NixPkgs.\n\nThis talk will go over the current state of affairs (what's available today), what's so difficult about Java compared to other supported languages in NixPkg and a proposed solution (mvn2nix [2]) aimed at filling the gap.\n\n[1] http://pypl.github.io/PYPL.html\n[2]https://github.com/fzakaria/mvn2nix", "description": "submission outline:\n- discuss how other languages integrate with Nix; mainly by creating fixed-output derivations for their dependencies which are fetched to construct a build environment.\n- communicate that Java's main build systems (Maven & Gradle) go beyond much more than simple dependency retrieval; generate sources or even bytecode weaving/\n- touch on Maven specifically; whose initial release was in 2004. The tool is immensly complex and it is non-trivial to determine all the necessary dependencies.\n- go over the \"double invocation\" pattern as a workable solution\n- announce / release mvn2nix as a forward looking solution", "recording_license": "", "do_not_record": false, "persons": [{"code": "AREWHF", "name": "Farid Zakaria", "avatar": null, "biography": "I'm a software engineer, father and wishful amateur surfer.\nI have over a decade of experience writing software and am currently employed by Google.\nMy prior experience has largely centered around building public cloud infrastructure for AWS & Oracle.\nI am deeply passionate about reproducibility, developer tooling & ergonomics.\n\nhttps://fzakaria.com/\nhttps://www.linkedin.com/in/fmzakari/", "public_name": "Farid Zakaria", "guid": "77dc097e-1bdd-56f7-9683-8d7b08202f1c", "url": "https://talks.nixcon.org/nixcon2020/speaker/AREWHF/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/PSLELK/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/PSLELK/", "attachments": []}]}}, {"index": 2, "date": "2020-10-17", "day_start": "2020-10-17T04:00:00+00:00", "day_end": "2020-10-18T03:59:00+00:00", "rooms": {"Main Stream": [{"guid": "6971bcc2-2ac9-5ce8-8928-3a8eb8282e9d", "code": "38MEX7", "id": 35403, "logo": null, "date": "2020-10-17T11:15:00+00:00", "start": "11:15", "end": "2020-10-17T11:40:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35403-bridging-the-stepping-stones-using-pieces-of-nixos-without-full-commitment", "url": "https://talks.nixcon.org/nixcon2020/talk/38MEX7/", "title": "Bridging the stepping stones: using pieces of NixOS without full commitment", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "The talk explains use of NixOS code as a library instead of a framework: the present, the possible even better future, and some of the payoff.", "description": "Nix package manager has a lot of useful properties, and NixOS permits to expand the use of such properties beyond just installing packages. However, while Nixpkgs behaves mostly like a library, with overrides sometimes used to change even the fundamental assumptions if these are not used by some packages (see, e.g., pkgsMusl), NixOS is typically perceived closer to a framework. Using NixOS service management means committing to the module system (but Nixpkgs overrides are still useful), nonatomic /etc switch, systemd, NixOS driver management, etc. \n\nThis creates a leap of faith, as installing Nix side-by-side breaks only storage quotas, but installing NixOS breaks everything; and leads to some duplication with nix-darwin and similar projects. \n\nIn the talk I will tell what and how to reuse from NixOS now, what NixOS changes could simplify use of NixOS as a shared knowledge collection about running services between different projects with different commitment level, and how a bit of commitment to dumping the core assumptions turns some features from a weird dream into table stakes.", "recording_license": "", "do_not_record": false, "persons": [{"code": "N3EJ73", "name": "Michael Raskin", "avatar": null, "biography": "One of the people who stopped using mainline NixOS but still uses Nix (and Nixpkgs kernels) after more than ten years.", "public_name": "Michael Raskin", "guid": "36727a3f-5bf6-58f3-9a05-30ad597a400d", "url": "https://talks.nixcon.org/nixcon2020/speaker/N3EJ73/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/38MEX7/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/38MEX7/", "attachments": [{"title": "Talk slides", "url": "/media/nixcon2020/submissions/38MEX7/resources/stepping-stones-slides_PLnK23k.pdf", "type": "related"}]}, {"guid": "a67575b2-12fc-52fa-8222-2911201d9149", "code": "TW79FU", "id": 35404, "logo": null, "date": "2020-10-17T11:45:00+00:00", "start": "11:45", "end": "2020-10-17T12:10:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35404-nix-processmgmt-an-experimental-nix-based-process-manager-agnostic-framework", "url": "https://talks.nixcon.org/nixcon2020/talk/TW79FU/", "title": "nix-processmgmt: An experimental Nix-based process manager-agnostic framework", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Nix is package manager that offers all kinds of powerful features to make package deployments reliable and reproducible. Although Nix can be used to conveniently deploy packages, on various operating systems (such as Linux and macOS), and even allows unprivileged users to deploy packages, deploying services (such as PostgreSQL and Apache HTTPD) still has its limitations.\n\nCurrently, Nix-based service deployment is solved by a small number of solutions:\n\n* NixOS requires you to adopt a fully Nixified Linux system and uses systemd as a process manager.\n* nix-darwin only works on macOS with launchd as a process manager\n\nIf you are using Nix on a conventional Linux distribution, a different operating system (e.g. FreeBSD), with a different process manager (e.g. supervisord), or as an unprivileged user, then there is no off-the-shelf solution that can help you (yet) to conveniently deploy Nix-provided services.\n\nThe nix-processmgmt framework (https://github.com/svanderburg/nix-processmgmt) is a prototype that tries to provide universal Nix-based service deployment on all systems where Nix can be used.\n\nIt offers the following features:\n* It uses simple conventions for describing process instances, e.g. function definitions and function invocations\n* It works with high-level deployment specifications that can universally target the following process managers: sysvinit, bsdrc, systemd, supervisord, cygrunsrv and launchd\n* Tested on the following operating systems: Linux, macOS, Cygwin and FreeBSD\n* Automatically derives the activation order from process dependencies\n* Allows you to deploy multiple instances of the same service\n* Unprivileged user deployments\n\nIn this talk, I will provide background information about this framework, describe how it works, and show a number of real-life usage scenarios using commonly used services (PostgreSQL, Apache HTTPD etc.) in a number of interesting usage scenarios (unprivileged user deployments, deployment on FreeBSD etc.)\n\n(Although the tool advertises itself as a prototype, it is already quite usable)", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "ZKT837", "name": "Sander van der Burg", "avatar": null, "biography": "I'm a Nix/Nixpkgs/NixOS contributor since 2007 who has worked on many things, such as FHS chroot environments, Nix android build environment. I'm also the main developer for various Nix-related utilities: Disnix, Dysnomia, node2nix, composer2nix.", "public_name": "Sander van der Burg", "guid": "b207e00c-0476-58c1-9a8c-d8d1fbf1c9f7", "url": "https://talks.nixcon.org/nixcon2020/speaker/ZKT837/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/TW79FU/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/TW79FU/", "attachments": [{"title": "Slides", "url": "/media/nixcon2020/submissions/TW79FU/resources/nix-processmgmt_HbcSD4u.pdf", "type": "related"}]}, {"guid": "6a513cbd-d948-511e-a1d3-3fa96633f9ae", "code": "DDXWDY", "id": 35405, "logo": "https://talks.nixcon.org/media/nixcon2020/submissions/DDXWDY/2020-10-17_10-11-07-00.00.02.678_ywh96mf_g6r2S2V.jpeg", "date": "2020-10-17T12:15:00+00:00", "start": "12:15", "end": "2020-10-17T12:40:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35405-automating-deployment-with-hercules-ci-and-nixops", "url": "https://talks.nixcon.org/nixcon2020/talk/DDXWDY/", "title": "Automating deployment with Hercules CI and NixOps", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "Introduction to Hercules CI, NixOps and a step by step demonstration of setting up a continuous delivery pipeline with these tools.", "description": "Hercules CI is a continuous integration service that coordinates build agents on your own infrastructure. It is built around Nix for the best developer user experience.\n\nNixOps is the Nix ecosystem's primary deployment tool, supporting multiple clouds through its Nix-based input format.\n\nBy integrating the two, we achieve a continuous delivery pipeline that is configured entirely with Nix.", "recording_license": "", "do_not_record": false, "persons": [{"code": "GR8DSQ", "name": "Robert Hensing", "avatar": null, "biography": "Founder of [Hercules CI](https://hercules-ci.com), the CI/CD service for Nix-based projects.\nHe's the author of Arion, a docker-compose wrapper for Nixified local development, gitignore.nix and every now and then he's involved with the NixOS module system, pre-commit-hooks.nix and dockerTools.\n\n[@robert_hensing on Twitter](https://twitter.com/robert_hensing)\n\n`roberth` on GitHub and IRC", "public_name": "Robert Hensing", "guid": "f30accce-fb4b-5c0b-8dfe-54b36c6e5036", "url": "https://talks.nixcon.org/nixcon2020/speaker/GR8DSQ/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/DDXWDY/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/DDXWDY/", "attachments": [{"title": "Hercules CI Effects and NixOps.pdf", "url": "/media/nixcon2020/submissions/DDXWDY/resources/nixops_presentation_UqdwZsq.pdf", "type": "related"}]}, {"guid": "8825b33f-9b7b-5229-b335-cb4dced5ee54", "code": "TTTNYK", "id": 35406, "logo": null, "date": "2020-10-17T12:40:00+00:00", "start": "12:40", "end": "2020-10-17T12:45:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35406-content-addressed-derivations", "url": "https://talks.nixcon.org/nixcon2020/talk/TTTNYK/", "title": "content-addressed derivations", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "This is part of the Intensional Store model. See https://github.com/NixOS/rfcs/pull/62", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "8VPAEJ", "name": "Th\u00e9ophane Hufschmitt", "avatar": null, "biography": null, "public_name": "Th\u00e9ophane Hufschmitt", "guid": "06ab3836-53e1-5f53-9000-a15ec47f2da7", "url": "https://talks.nixcon.org/nixcon2020/speaker/8VPAEJ/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/TTTNYK/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/TTTNYK/", "attachments": []}, {"guid": "ad8e15b8-90dc-5d04-88a0-ccf64fc53a97", "code": "CUE78W", "id": 35407, "logo": null, "date": "2020-10-17T12:50:00+00:00", "start": "12:50", "end": "2020-10-17T12:55:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35407-nix-from-the-dark-ages-without-root", "url": "https://talks.nixcon.org/nixcon2020/talk/CUE78W/", "title": "Nix from the dark ages (without Root)", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "Short comments from the trenches of High Performance Clusters on working with Nix on kernel locked-in systems without proot support.", "description": "Mostly an exploratory exposition, with some suggestions on moving forward. Meant to call attention to this user-base! See this for some context: https://rgoswami.me/posts/local-nix-no-root/\n\nDiscussion Post: https://rgoswami.me/posts/nixcon-in-2020-meta\nSlides: https://speakerdeck.com/rgoswami/nix-from-the-dark-ages-without-root", "recording_license": "", "do_not_record": false, "persons": [{"code": "SKLH9C", "name": "Rohit Goswami", "avatar": null, "biography": "Doctoral researcher at the University of Iceland working on problems at the intersection of quantum chemistry and machine learning. Nix fanatic, FOSS developer. Co-lead of the nix-first d-SEAMS software suite.", "public_name": "Rohit Goswami", "guid": "2988ca05-90ca-5a33-a480-1c057737ec9c", "url": "https://talks.nixcon.org/nixcon2020/speaker/SKLH9C/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/CUE78W/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/CUE78W/", "attachments": []}, {"guid": "6b110b5b-938f-5e6d-8584-cee069c61a26", "code": "NPVFK9", "id": 35408, "logo": null, "date": "2020-10-17T13:00:00+00:00", "start": "13:00", "end": "2020-10-17T13:05:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35408-meet-nickel-better-configuration-for-less", "url": "https://talks.nixcon.org/nixcon2020/talk/NPVFK9/", "title": "Meet Nickel: better configuration for less", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "A quick presentation of Nickel, a general configuration language which is inspired from Nix expressions to which it adds some cool features.", "description": "Have you ever wished once that you could use the Nix language for something else than Nix ? To write a small project-specific script, or to generate a configuration when having to deal with horrendous YAML templating languages ? Nix may have its flaws, but it uses a simple yet powerful language - fundamentally, a lazy JSON with higher-order functions - that could very well be used to generate other configurations than Nix packages. In this short talk, I present the Nickel configuration language, which is an ongoing effort to make a standalone offspring of the Nix language , and while doing so, takes the opportunity to add new capabilities to the language.", "recording_license": "", "do_not_record": false, "persons": [{"code": "VHBN9B", "name": "Yann Hamdaoui", "avatar": null, "biography": "After a PhD in computer science , I worked as a freelance fullstack developer for some time. I recently joined Tweag where I got the chance to dive into the awesome world of Nix. In life, I love all aspects of food, climbing, and enjoying nature in general.", "public_name": "Yann Hamdaoui", "guid": "e8ca2904-5b21-5af9-8f3d-62ac639b4d05", "url": "https://talks.nixcon.org/nixcon2020/speaker/VHBN9B/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/NPVFK9/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/NPVFK9/", "attachments": []}, {"guid": "eaf30496-19b8-51e8-9f9e-e05d08304dd3", "code": "HSWMGQ", "id": 35409, "logo": null, "date": "2020-10-17T13:10:00+00:00", "start": "13:10", "end": "2020-10-17T13:15:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35409-home-manager-template", "url": "https://talks.nixcon.org/nixcon2020/talk/HSWMGQ/", "title": "home-manager template", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "home-manager template provides a quick-start template for using home-manager in a more reproducible way. You don't have to install home-manager, and it uses pinning. [Learn more](https://github.com/ryantm/home-manager-template).", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "EBDZLW", "name": "Ryan Mulligan", "avatar": null, "biography": "Ryan Mulligan is the creator of nixpkgs-update/r-ryantm, a project responsible for over 10 thousand merged pull requests to Nixpkgs in the last year. He lives in Las Vegas.", "public_name": "Ryan Mulligan", "guid": "80895423-06bd-531b-8700-ef908e2924ab", "url": "https://talks.nixcon.org/nixcon2020/speaker/EBDZLW/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/HSWMGQ/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/HSWMGQ/", "attachments": []}, {"guid": "b6f09ded-63b4-5031-8357-cd0dc160a791", "code": "CTUZUG", "id": 35410, "logo": null, "date": "2020-10-17T13:20:00+00:00", "start": "13:20", "end": "2020-10-17T13:25:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35410-host-a-devops-exam-using-nixos", "url": "https://talks.nixcon.org/nixcon2020/talk/CTUZUG/", "title": "Host a DevOps exam using NixOS", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "We will explore how to host a DevOps exam consisting in deploying a Bastion host and a KVM virtual machine per student in order for them to deploy a website which will be auto-validated.", "description": "DevOps students have to test their skills in a real-world exam, what's better than scripting this using NixOps in order to reuse it ?\n\nThey will be provided with their own user account on the Bastion and access to a jump user account, WireGuard will be autoconfigured on the host to enable access to their KVM host directly.\n\nThe main point is controlling the KVM guests \"declaratively\" and giving choice to the students to choose their guest OS: Debian or NixOS.\n\nWe will see how we can easily generate Nix expression from a scripting language, e.g. Python and feed it to NixOS.", "recording_license": "", "do_not_record": false, "persons": [{"code": "TLAJQZ", "name": "Ryan Lahfa", "avatar": null, "biography": "FOSS developer for more than five years, (eternal?) student in mathematics and computer science, interested into formal methods applied to computer security, networks and more.\n\nI enjoy playing around with infrastructure and run my own micro-datacenter in order to understand how can we develop an (economic viable?) model of an NixOS-only and IPv6-only datacenter as much as possible.\n\nAnd then, someday, I will write a formal proof that the Nix core is sound. But that will be for another day.", "public_name": "Ryan Lahfa", "guid": "4d5aa722-e06c-5ec6-924b-0543818f99fa", "url": "https://talks.nixcon.org/nixcon2020/speaker/TLAJQZ/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/CTUZUG/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/CTUZUG/", "attachments": []}, {"guid": "bee3fd2c-e428-5c25-b0c0-0c1c52c940d7", "code": "EUKUDK", "id": 35411, "logo": null, "date": "2020-10-17T13:30:00+00:00", "start": "13:30", "end": "2020-10-17T13:40:00+00:00", "duration": "00:10", "room": "Main Stream", "slug": "nixcon2020-35411-nix-ipfs", "url": "https://talks.nixcon.org/nixcon2020/talk/EUKUDK/", "title": "Nix \u00d7 IPFS", "subtitle": "", "track": null, "type": "Rain Talk", "language": "en", "abstract": "IPFS is a natural way to distribute sources and build artifacts for Nix because of their shared focus on immutability, content addressing, and decentralization. We at Obsidian Systems have spent the past several months integrating the two, and we're excited to present the result to the the Nix community, along with the future directions this work unlocks.", "description": "See also https://github.com/obsidiansystems/ipfs-nix-guide for a tutorial.", "recording_license": "", "do_not_record": false, "persons": [{"code": "TST7PA", "name": "John Ericson", "avatar": null, "biography": "github.com/Ericson2314/", "public_name": "John Ericson", "guid": "346b452e-bdf3-529b-8cb0-87a5f65d430e", "url": "https://talks.nixcon.org/nixcon2020/speaker/TST7PA/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/EUKUDK/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/EUKUDK/", "attachments": [{"title": "Slides", "url": "/media/nixcon2020/submissions/EUKUDK/resources/Nix__IPFS_tkrmLhy_XAzEXTj.pdf", "type": "related"}]}, {"guid": "0f9ca4ba-81f4-50da-b798-09cf186409b9", "code": "7RKBTE", "id": 35412, "logo": null, "date": "2020-10-17T13:45:00+00:00", "start": "13:45", "end": "2020-10-17T13:50:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35412-nixops-for-proxmox", "url": "https://talks.nixcon.org/nixcon2020/talk/7RKBTE/", "title": "NixOps for Proxmox", "subtitle": "", "track": null, "type": "Thunder Talk", "language": "en", "abstract": "We will explore how to build and manage dozens of NixOS virtual machines in a Proxmox cluster using NixOps in a declarative fashion.", "description": "Managing a fleet of NixOS machines can be achieved using supported backends of NixOps or other tooling (Disnix, Krops, Morph, etc.), but most of them do not solve the \"initialization\" of your host, e.g. installing NixOS, starting the \nnode, except if you're using a major cloud provider like AWS for example.\n\nIf you're running your own mini-datacenter and want to manage the whole infrastructure end to end, using the Nix language, it would prove quite difficult.\n\nnixops-proxmox is one step towards a NixOS-heavy datacenter, e.g. storage backends, PCI devices, network adapters can be considered as resources and ultimately all of them can be controlled from a \"reproducible\" and centralized Nix expression.\n\nThis talk will feature how to use IPv6 (!) inside a NixOps plugin, especially useful for IPv6-only networks.", "recording_license": "", "do_not_record": false, "persons": [{"code": "TLAJQZ", "name": "Ryan Lahfa", "avatar": null, "biography": "FOSS developer for more than five years, (eternal?) student in mathematics and computer science, interested into formal methods applied to computer security, networks and more.\n\nI enjoy playing around with infrastructure and run my own micro-datacenter in order to understand how can we develop an (economic viable?) model of an NixOS-only and IPv6-only datacenter as much as possible.\n\nAnd then, someday, I will write a formal proof that the Nix core is sound. But that will be for another day.", "public_name": "Ryan Lahfa", "guid": "4d5aa722-e06c-5ec6-924b-0543818f99fa", "url": "https://talks.nixcon.org/nixcon2020/speaker/TLAJQZ/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/7RKBTE/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/7RKBTE/", "attachments": []}, {"guid": "c806b513-adb2-5172-9718-0164f2e29adf", "code": "83RFWZ", "id": 35413, "logo": null, "date": "2020-10-17T14:05:00+00:00", "start": "14:05", "end": "2020-10-17T14:30:00+00:00", "duration": "00:25", "room": "Main Stream", "slug": "nixcon2020-35413-how-nix-grew-a-marketing-team", "url": "https://talks.nixcon.org/nixcon2020/talk/83RFWZ/", "title": "How Nix grew a marketing team", "subtitle": "", "track": null, "type": "Talk", "language": "en", "abstract": "In my talk I'd like to go over:\n\n1. Why Nix community needs a marketing team\n2. What have we been up to in marketing team in the last 6 months\n3. What are the plans for the next 6 months\n\nMarketing, and non-technical work in general, is all too often an afterthought for developers or worse it is viewed as something negative. I really wish it weren\u2019t the case. Having clearly defined problems, audience and strategy should be as important to us as having clean and tested code. This is important for Nix. This is important for any project that aims to succeed.", "description": "", "recording_license": "", "do_not_record": false, "persons": [{"code": "3QPXAU", "name": "Rok Garbas", "avatar": null, "biography": "Senior Software Engineer at Tweag I/O", "public_name": "Rok Garbas", "guid": "12623329-31be-5ed3-8d3c-de5f95a45ed9", "url": "https://talks.nixcon.org/nixcon2020/speaker/3QPXAU/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/83RFWZ/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/83RFWZ/", "attachments": []}]}}, {"index": 3, "date": "2020-10-18", "day_start": "2020-10-18T04:00:00+00:00", "day_end": "2020-10-19T03:59:00+00:00", "rooms": {"Main Stream": [{"guid": "fa00f369-748a-5aa5-9bf0-f95fd12ebeb2", "code": "JLX3T9", "id": 35414, "logo": null, "date": "2020-10-18T11:05:00+00:00", "start": "11:05", "end": "2020-10-18T11:10:00+00:00", "duration": "00:05", "room": "Main Stream", "slug": "nixcon2020-35414-hack-day-join-point", "url": "https://talks.nixcon.org/nixcon2020/talk/JLX3T9/", "title": "Hack Day Join Point", "subtitle": "", "track": null, "type": "Lightning Talk", "language": "en", "abstract": "#!/usr/bin/env bash\n\nplaces=(\"Jitsi\"   \"IRC\"   \"Matrix\"   \"Discord\"   \"\\$other_platform\" )\n\nactivities=( \"meet other Nix users\"  \"find a bug to fix\"  \"discuss the future of NixOS\"\n   \"collaborate on a project\"   \"do something\"   \"gain knowledge\" )\n\noneOf () {\n  eval echo \"\\${$1[$RANDOM % \\${#$1[@]}]}\"   # this code was translated to be more abstract\n}\n\necho \"Join us on $(oneOf places) and let's $(oneOf activities).\"", "description": "# Self-organize\n\nMeet up together online, organize, and hack away.\n\n## PAD w/ ideas\nhttps://cryptpad.piratenpartei.de/code/#/2/code/edit/nNNcnWiDb1S0EYH3fTYo+FoM/", "recording_license": "", "do_not_record": false, "persons": [{"code": "GSCN7J", "name": "Nick Bathum", "avatar": null, "biography": "Nick (he/him) is a human software engineer who enjoys systems, lists, architecture, trampolines, and jumping. Not necessarily in that order.", "public_name": "Nick Bathum", "guid": "58cbd1de-61cc-519c-bddf-0e6c6913d730", "url": "https://talks.nixcon.org/nixcon2020/speaker/GSCN7J/"}], "links": [], "feedback_url": "https://talks.nixcon.org/nixcon2020/talk/JLX3T9/feedback/", "origin_url": "https://talks.nixcon.org/nixcon2020/talk/JLX3T9/", "attachments": []}]}}]}}}