aboutsummaryrefslogtreecommitdiff
path: root/hosts/ganymede/networking.nix
blob: 72eb0268011166e727c8f955f716a66eef4ecac1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{
  config,
  pkgs,
  lib,
  ...
}: let
  static = {
    ssid = "williams";
    pskFile = config.collinux.secrets."williams-psk".path; # file should look like "psk=<PSK>"
    ip = "192.168.50.2/24";
    gateway = "192.168.50.1";
  };
in {
  networking = {
    dhcpcd.enable = false;
    useDHCP = false;
    networkmanager.enable = false;

    useNetworkd = true;

    firewall = {
      enable = true;
      checkReversePath = "loose";
    };

    resolvconf.enable = true;
    nameservers = ["127.0.0.1"];

    wireless = {
      enable = true;
      secretsFile = static.pskFile;
      networks.${static.ssid}.pskRaw = "ext:psk";
    };
  };
  systemd = {
    services."disable-wifi-powersave" = {
      description = "Disable wifi powersaving using iw";
      after = ["network.target"];
      serviceConfig.ExecStart = "${lib.getExe pkgs.iw} dev wlp108s0 set power_save off";
      wantedBy = ["default.target"];
    };

    network = {
      enable = true;
      wait-online = {
        enable = true;
        anyInterface = true;
      };

      networks."11-default" = {
        name = "wl*";
        networkConfig = {
          Address = static.ip;
          Gateway = static.gateway;
          DHCP = "no";
        };
      };

      networks."20-teather" = {
        # for next time I break networking...
        name = "enp*";
        networkConfig = {
          DHCP = "yes";
        };
      };
    };
  };

  services = {
    resolved.enable = false;

    unbound = {
      enable = true;
      settings.server = {
        interface = ["0.0.0.0" "::1"];
        port = 53;
        access-control = [
          "127.0.0.0/8 allow"
          "10.100.0.0/24 allow"
          "0.0.0.0/0 refuse"
        ];

        local-zone = [''"ganymede." redirect''];
        local-data = [''"ganymede. IN A 10.100.0.1"''];
      };
    };
  };
}