Notebook global variable

I wonder if it can be used for this use case too?

My understanding is that you want a value shared across notebooks, so a secret/env makes sense. Otherwise you can just define a variable in the setup cell, or at the top.

As for Mix.install, in case of runtime config I usually prefer this:

Mix.install([
  {:req, "~> 0.5.6"},
  {:kino, "~> 0.14.0"},
  {:ex_aws, "~> 2.1"},
  {:ex_aws_s3, "~> 2.0"},
  {:hackney, "~> 1.9"},
  {:sweet_xml, "~> 0.6"},
  {:cachex, "~> 4.0"},
  {:exjsx, "~> 4.0"},
  {:kino_slack, "~> 0.1.1"}
])

Application.put_env(:ex_aws,
  debug_requests: true,
  json_codec: Jason,
  access_key_id: {:system, "LB_AWS_ACCESS_KEY_ID"},
  secret_access_key: {:system, "LB_AWS_SECRET_ACCESS_KEY"},
  s3: [
    scheme: "https://",
    host: "fly.storage.tigris.dev",
    region: "auto"
  ]
)

The advantages is that changing config in this way doesn’t invalidate the Mix.install cache.