{
  lib,
  stdenv,
  indi-3rdparty,
  indi-with-drivers,
  indilib,
}:

let
  licenseFree = p: p.meta.license.free or false;
  isFree =
    p:
    (builtins.all licenseFree ((p.buildInputs or [ ]) ++ (p.propagatedBuildInputs or [ ])))
    && licenseFree p;
  drivers = builtins.filter (
    attrs: isFree attrs && (lib.meta.availableOn stdenv.hostPlatform attrs)
  ) (builtins.attrValues indi-3rdparty);
in
indi-with-drivers.override {
  pname = "indi-full";
  inherit (indilib) version;
  extraDrivers = drivers;
}