summary refs log tree commit diff
path: root/nixos/modules/services/networking/hostapd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/networking/hostapd.nix')
-rw-r--r--nixos/modules/services/networking/hostapd.nix219
1 files changed, 0 insertions, 219 deletions
diff --git a/nixos/modules/services/networking/hostapd.nix b/nixos/modules/services/networking/hostapd.nix
deleted file mode 100644
index f719ff59cc7..00000000000
--- a/nixos/modules/services/networking/hostapd.nix
+++ /dev/null
@@ -1,219 +0,0 @@
-{ config, lib, pkgs, utils, ... }:
-
-# TODO:
-#
-# asserts
-#   ensure that the nl80211 module is loaded/compiled in the kernel
-#   wpa_supplicant and hostapd on the same wireless interface doesn't make any sense
-
-with lib;
-
-let
-
-  cfg = config.services.hostapd;
-
-  escapedInterface = utils.escapeSystemdPath cfg.interface;
-
-  configFile = pkgs.writeText "hostapd.conf" ''
-    interface=${cfg.interface}
-    driver=${cfg.driver}
-    ssid=${cfg.ssid}
-    hw_mode=${cfg.hwMode}
-    channel=${toString cfg.channel}
-    ${optionalString (cfg.countryCode != null) "country_code=${cfg.countryCode}"}
-    ${optionalString (cfg.countryCode != null) "ieee80211d=1"}
-
-    # logging (debug level)
-    logger_syslog=-1
-    logger_syslog_level=${toString cfg.logLevel}
-    logger_stdout=-1
-    logger_stdout_level=${toString cfg.logLevel}
-
-    ctrl_interface=/run/hostapd
-    ctrl_interface_group=${cfg.group}
-
-    ${optionalString cfg.wpa ''
-      wpa=2
-      wpa_passphrase=${cfg.wpaPassphrase}
-    ''}
-    ${optionalString cfg.noScan "noscan=1"}
-
-    ${cfg.extraConfig}
-  '' ;
-
-in
-
-{
-  ###### interface
-
-  options = {
-
-    services.hostapd = {
-
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Enable putting a wireless interface into infrastructure mode,
-          allowing other wireless devices to associate with the wireless
-          interface and do wireless networking. A simple access point will
-          <option>enable hostapd.wpa</option>,
-          <option>hostapd.wpaPassphrase</option>, and
-          <option>hostapd.ssid</option>, as well as DHCP on the wireless
-          interface to provide IP addresses to the associated stations, and
-          NAT (from the wireless interface to an upstream interface).
-        '';
-      };
-
-      interface = mkOption {
-        default = "";
-        example = "wlp2s0";
-        type = types.str;
-        description = ''
-          The interfaces <command>hostapd</command> will use.
-        '';
-      };
-
-      noScan = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Do not scan for overlapping BSSs in HT40+/- mode.
-          Caution: turning this on will violate regulatory requirements!
-        '';
-      };
-
-      driver = mkOption {
-        default = "nl80211";
-        example = "hostapd";
-        type = types.str;
-        description = ''
-          Which driver <command>hostapd</command> will use.
-          Most applications will probably use the default.
-        '';
-      };
-
-      ssid = mkOption {
-        default = "nixos";
-        example = "mySpecialSSID";
-        type = types.str;
-        description = "SSID to be used in IEEE 802.11 management frames.";
-      };
-
-      hwMode = mkOption {
-        default = "g";
-        type = types.enum [ "a" "b" "g" ];
-        description = ''
-          Operation mode.
-          (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g).
-        '';
-      };
-
-      channel = mkOption {
-        default = 7;
-        example = 11;
-        type = types.int;
-        description = ''
-          Channel number (IEEE 802.11)
-          Please note that some drivers do not use this value from
-          <command>hostapd</command> and the channel will need to be configured
-          separately with <command>iwconfig</command>.
-        '';
-      };
-
-      group = mkOption {
-        default = "wheel";
-        example = "network";
-        type = types.str;
-        description = ''
-          Members of this group can control <command>hostapd</command>.
-        '';
-      };
-
-      wpa = mkOption {
-        type = types.bool;
-        default = true;
-        description = ''
-          Enable WPA (IEEE 802.11i/D3.0) to authenticate with the access point.
-        '';
-      };
-
-      wpaPassphrase = mkOption {
-        default = "my_sekret";
-        example = "any_64_char_string";
-        type = types.str;
-        description = ''
-          WPA-PSK (pre-shared-key) passphrase. Clients will need this
-          passphrase to associate with this access point.
-          Warning: This passphrase will get put into a world-readable file in
-          the Nix store!
-        '';
-      };
-
-      logLevel = mkOption {
-        default = 2;
-        type = types.int;
-        description = ''
-          Levels (minimum value for logged events):
-          0 = verbose debugging
-          1 = debugging
-          2 = informational messages
-          3 = notification
-          4 = warning
-        '';
-      };
-
-      countryCode = mkOption {
-        default = null;
-        example = "US";
-        type = with types; nullOr str;
-        description = ''
-          Country code (ISO/IEC 3166-1). Used to set regulatory domain.
-          Set as needed to indicate country in which device is operating.
-          This can limit available channels and transmit power.
-          These two octets are used as the first two octets of the Country String
-          (dot11CountryString).
-          If set this enables IEEE 802.11d. This advertises the countryCode and
-          the set of allowed channels and transmit power levels based on the
-          regulatory limits.
-        '';
-      };
-
-      extraConfig = mkOption {
-        default = "";
-        example = ''
-          auth_algo=0
-          ieee80211n=1
-          ht_capab=[HT40-][SHORT-GI-40][DSSS_CCK-40]
-          '';
-        type = types.lines;
-        description = "Extra configuration options to put in hostapd.conf.";
-      };
-    };
-  };
-
-
-  ###### implementation
-
-  config = mkIf cfg.enable {
-
-    environment.systemPackages =  [ pkgs.hostapd ];
-
-    services.udev.packages = optional (cfg.countryCode != null) [ pkgs.crda ];
-
-    systemd.services.hostapd =
-      { description = "hostapd wireless AP";
-
-        path = [ pkgs.hostapd ];
-        after = [ "sys-subsystem-net-devices-${escapedInterface}.device" ];
-        bindsTo = [ "sys-subsystem-net-devices-${escapedInterface}.device" ];
-        requiredBy = [ "network-link-${cfg.interface}.service" ];
-        wantedBy = [ "multi-user.target" ];
-
-        serviceConfig =
-          { ExecStart = "${pkgs.hostapd}/bin/hostapd ${configFile}";
-            Restart = "always";
-          };
-      };
-  };
-}