Scripts to (interactively) demonstrate capabilities of Nix. Mirror of https://gitlab.com/SFrijters/nix-container-demo
{
  description = "Examples of cross-compilation";

  inputs = {
    # flake-utils is a utility library to work with flakes (duh)
    flake-utils.url = "github:numtide/flake-utils";
    nixpkgs.url = "github:NixOS/nixpkgs";
  };

  outputs = { self, nixpkgs, flake-utils }:
    # This creates packages for multiple system types
    flake-utils.lib.eachDefaultSystem (system:
      let
        # We import nixpkgs for each particular 'system', and inject
        # wttr-delft into the package set using an overlay.
        pkgs = import nixpkgs {
          inherit system;
          overlays = [
            # This is a very simple overlay, but in general they can be used to manipulate nixpkgs,
            # e.g. to change some piece of software to a different version, or add a patch, or... the sky is the limit.
            (final: prev: {
              wttr-delft = prev.callPackage ./wttr-delft.nix {};
            })
          ];
        };
      in
        {
          # The 'default' package is the package injected into our package set
          packages = {
            default = pkgs.wttr-delft;
            # But the package set also has a pkgsCross set, and we can select our package from one of its contents
            cross-riscv64 = pkgs.pkgsCross.riscv64.wttr-delft;
            static = pkgs.pkgsCross.musl64.pkgsStatic.wttr-delft;
            cross-aarch64-static = pkgs.pkgsCross.aarch64-multiplatform.pkgsStatic.wttr-delft;
          };
        }
    );
}