/*

   This service-level bind mounts the host store into the container
   when the service.useHostStore option is set to true.

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

let
  inherit (lib) mkOption types mkIf;
in
{
  options = {
    service.useHostStore = mkOption {
      type = types.bool;
      default = false;
      description = "Bind mounts the host store if enabled, avoiding copying.";
    };
  };
  config = mkIf config.service.useHostStore {
    service.image = "arion-base";
    service.build.context = "${../../../arion-image}";
    service.volumes = [
      "${config.host.nixStorePrefix}/nix/store:/nix/store"
      "${config.host.nixStorePrefix}${pkgs.buildEnv { name = "container-system-env"; paths = [ pkgs.bashInteractive pkgs.coreutils ]; }}:/run/system"
    ];
  };
}