{ outputs, ... }:
{
  # Configure nixpkgs
  nixpkgs = {
    overlays = [
      outputs.overlays.nixpkgs-unstable
      outputs.overlays.nixpkgs-stable
    ];

    config = {
      # Enable non free
      allowUnfree = true;

      # enable cuda support
      cudaSupport = true;
      allowUnfreePredicate = p:
        builtins.all (
          license:
          license.free
          || builtins.elem license.shortName [
            "CUDA EULA"
            "cuDNN EULA"
            "cuTENSOR EULA"
            "NVidia OptiX EULA"
          ]
        ) (if builtins.isList p.meta.license then p.meta.license else [ p.meta.license ]);
    };
  };
}