End "dependency hell" in geospatial projects. This hands-on workshop introduces the Nix package manager to build deterministic, immutable development environments. Learn to version-control your entire software stack to ensure perfect reproducibility across local, cloud, and production infrastructure.
Geospatial development often relies on complex, interdependent software stacks involving tools like GDAL, GEOS, PROJ, and various language such as Python R, Rust, C, C++ etc. Maintaining these environments across different machines, CI/CD pipelines, and server clusters is a notorious source of friction the "it works on my machine" problem. This workshop aims to teach participants on how to use the Nix package manager to solve these challenges through a purely functional approach to software management.
Workshop Objectives:
By the end of this session, participants will be able to:
Understand the Nix Model: Move beyond imperative package installation (e.g., apt, pip, uv, conda) to a declarative model where the environment is defined as code.
Achieve Determinism: Create environments that are identical across all machines, regardless of the host operating system or existing library versions.
Manage Dependencies: Utilize the Nix Store to isolate tools, allowing multiple, conflicting versions of libraries (such as different GDAL versions) to coexist without interference.
Implement Nix Flakes: Build modern, reproducible project shells that can be shared and deployed instantly by other developers.
Agenda:
Part 1: The Problem Space (30 mins): We will explore common pitfalls in geospatial environment management and demonstrate how Nix’s unique cryptographic hash-based approach prevents configuration drift.
Part 2: Declarative Foundations (60 mins): Hands-on practice creating flake.nix files. Participants will define a standard geospatial stack including Python, Jupyter, and core C libraries (GDAL/PROJ).
Part 3: Advanced Workflows (60 mins): How to integrate Nix with existing geospatial tools and building OCI images. We will demonstrate how to transition from local development to production-ready deployments.
Part 4: Q&A and Community Best Practices (30 mins): Discussion on scaling Nix within teams and contributing to the nixpkgs geospatial ecosystem.
Target Audience:
This workshop is designed for GIS developers, geospatial data scientists, and DevOps engineers who manage complex spatial software stacks. While basic command-line proficiency is expected, no prior experience with Nix is required.