ICLC 2023 Catalogue PROOF VERSION

Introduction to Nix for Live Coding Software Packaging

Alejandro Sánchez Medina

This workshop will provide a guided introduction to Nix (https://nixos.org/), a functional package manager for declarative configuration of general software dependencies. The workshop will consist of:

  • An introduction to the principles of declarative software dependency management.
  • A guided tutorial to the Nix language.
  • A presentation of common packaging examples and patterns.
  • On-site tutoring packaging the live-coding software chosen by the participant.

Requirements for participation: bring your personal laptop to work during the practical part of the workshop. Windows users are encouraged to come with a Linux Virtual Machine. Nix can work from within the Windows Subsystem for Linux, albeit with some limitations compared to native *nix systems.

It is highly recommended that participants come with their own project to package, or a project they already want to use but could not manage to make it work in a specific setup.

Abstract


The abstract is displayed here for proof-reading and will only be part of the published proceedings, not of the final version of this web catalogue.

A common pattern around live-coding software is that it tends to be hard to install for the average user. The reasons vary greatly, from authors not having the appropriate background or resources to package their projects for a big array of end-user platforms, to the sheer complexity of software dependencies in some projects.

There is a subset of live-coding tools that use web technologies, treating browsers as universal virtual machine platforms, in order to make their software more accessible. This is a line of practice/development with value of its own. However, as a community we would greatly benefit from lowering the barrier of entrance to more complex stacks for a wider and more inclusive reach. A tool that can help nudging the live-coding ecosystem towards this goal is the package manager Nix.

This workshop will provide a guided introduction to Nix (https://nixos.org/), a functional package manager for declarative configuration of general software dependencies. The following will be covered in the workshop:

  • An introduction to the principles of declarative software dependency management.
  • A guided tutorial to the Nix language.
  • A presentation of common packaging examples and patterns.
  • On-site tutoring packaging the live-coding software chosen by the participant.

No previous Nix experience is required to participate in this workshop. Participants with Nix knowledge might be interested in the practical part of the workshop.

Participants will need to bring their personal laptop to setup Nix and get hands on experience packaging software. Windows users are encouraged to come with a Linux Virtual Machine. Nix can work from within the Windows Subsystem for Linux, albeit with some limitations compared to native *nix systems.

Anybody curious enough is welcomed to join but the following profiles will potentially benefit the most from participating in this workshop:

  • Students with interest on declarative software dependency management.
  • Live-coding software developers that want to package their dependencies in a more holistic way,
  • Live-coders wanting to learn how to manage complex software stacks for their performances and research.

It is highly recommended that participants come with their own project to package, or a project they already want to use but could not manage to make it work in a specific setup.