{ config, lib, ... }:
let
  cfg = config.my.hardware.networking;
in
{
  options.my.hardware.networking = with lib; {
    externalInterface = mkOption {
      type = types.nullOr types.str;
      default = null;
      example = "eth0";
      description = ''
        Name of the network interface that egresses to the internet. Used for
        e.g. NATing internal networks.
      '';
    };

    wireless = {
      enable = mkEnableOption "wireless configuration";
    };
  };

  config = lib.mkMerge [
    (lib.mkIf cfg.wireless.enable {
      networking.networkmanager.enable = true;
    })
  ];
}