NixCon 2020: Online Edition
Nix's configuration language is quite powerful, but suffers from a
lack of discoverability, usability and consistency. In this talk, I'll
describe an experimental Nix module system that provides a consistent,
discoverable mechanism to write configurations such as packages and
NixOS systems, and show how this enables a better user experience for
both new and advanced users.
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.
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.
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.
Nix is almost 20 years old.
The innovation Nix brought is now present in almost all recent packaging tooling,
while Nix hasn't been adopted yet by a larger audience.
Why should we care about that?
What can we do to remove the barriers to mainstream adoption?
We'll look at examples from books, similar stories and what people and leaders of our industry are saying.
We'll dive into each topic briefly, providing an opinionated set of goals to get Nix in hands of everyone.
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.
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.
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.
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.
This 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.
[1] http://pypl.github.io/PYPL.html
[2]https://github.com/fzakaria/mvn2nix
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.
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.
Currently, Nix-based service deployment is solved by a small number of solutions:
- NixOS requires you to adopt a fully Nixified Linux system and uses systemd as a process manager.
- nix-darwin only works on macOS with launchd as a process manager
If 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.
The 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.
It offers the following features:
* It uses simple conventions for describing process instances, e.g. function definitions and function invocations
* It works with high-level deployment specifications that can universally target the following process managers: sysvinit, bsdrc, systemd, supervisord, cygrunsrv and launchd
* Tested on the following operating systems: Linux, macOS, Cygwin and FreeBSD
* Automatically derives the activation order from process dependencies
* Allows you to deploy multiple instances of the same service
* Unprivileged user deployments
In 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.)
(Although the tool advertises itself as a prototype, it is already quite usable)
Introduction to Hercules CI, NixOps and a step by step demonstration of setting up a continuous delivery pipeline with these tools.
This is part of the Intensional Store model. See https://github.com/NixOS/rfcs/pull/62
Short comments from the trenches of High Performance Clusters on working with Nix on kernel locked-in systems without proot support.
A quick presentation of Nickel, a general configuration language which is inspired from Nix expressions to which it adds some cool features.
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.
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.
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.
We will explore how to build and manage dozens of NixOS virtual machines in a Proxmox cluster using NixOps in a declarative fashion.
In my talk I'd like to go over:
- Why Nix community needs a marketing team
- What have we been up to in marketing team in the last 6 months
- What are the plans for the next 6 months
Marketing, 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’t 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.