{ config
, pkgs
, lib
, ...
}:
let
  cfg = config.dadada.inputs;
in
{
  options = {
    dadada.inputs = lib.mkOption {
      type = lib.types.attrsOf lib.types.attrs;
      description = "Flake inputs that should be available inside Nix modules";
      default = { };
    };
  };

  config = {
    nix.nixPath = lib.mapAttrsToList (name: value: "${name}=${value}") cfg;
    nix.registry = lib.mapAttrs' (name: value: lib.nameValuePair name { flake = value; }) cfg;

    nix.settings.substituters = [
      https://cache.nixos.org/
      https://nix-community.cachix.org/
    ];

    nix.settings.trusted-public-keys = [
      "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
      "gorgon:eEE/PToceRh34UnnoFENERhk89dGw5yXOpJ2CUbfL/Q="
      "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
    ];

    nix.settings.require-sigs = true;
    nix.settings.sandbox = true;
  };
}