packages feed

arion-compose-0.1.1.0: src/nix/modules/composition/arion-base-image.nix


# This module is subject to change.
# In particular, arion-base should use a generic non-service image building system

{ config, lib, pkgs, ... }: 

let

  tag = lib.head (lib.strings.splitString "-" (baseNameOf builtImage.outPath));
  name = "arion-base";

  builtImage = pkgs.dockerTools.buildImage {
    inherit name;
    contents = pkgs.runCommand "minimal-contents" {} ''
        mkdir -p $out/bin $out/usr/bin
        ln -s /run/system/bin/sh $out/bin/sh
        ln -s /run/system/usr/bin/env $out/usr/bin/env
      '';
    config = {};
  };

in

{

  options = {
    arionBaseImage = lib.mkOption {
      type = lib.types.str;
      description = "Image to use when using useHostStore. Don't use this option yourself. It's going away.";
      internal = true;
    };
  };

  config = {
    arionBaseImage = "${name}:${tag}";
    build.imagesToLoad = lib.mkIf (lib.any (s: s.service.useHostStore) (lib.attrValues config.services)) [
      { image = builtImage; imageName = name; imageTag = tag; }
    ];  
  };
}