Flake for my NixOS devices
1{...}: {
2 config,
3 lib,
4 ...
5}: {
6 options.cow.network = {
7 wireless = lib.mkEnableOption "wireless networking with IWD";
8 bluetooth = lib.mkEnableOption "bluetooth networking";
9 };
10
11 config = {
12 hardware.bluetooth = lib.mkIf config.cow.network.bluetooth {
13 enable = true;
14 settings = {
15 General = {
16 Experimental = true;
17 };
18 };
19 };
20
21 cow.imperm.keepCache =
22 (lib.optional config.cow.network.bluetooth "/var/lib/bluetooth")
23 ++ (lib.optional config.cow.network.wireless "/var/lib/iwd");
24
25 networking = lib.mkIf config.cow.network.wireless {
26 wireless.iwd.enable = true;
27 useNetworkd = true;
28 useDHCP = true;
29 };
30
31 systemd.network = {
32 enable = lib.mkDefault config.cow.network.wireless;
33 wait-online = {
34 enable = lib.mkDefault false;
35 };
36 };
37
38 services = lib.mkIf config.cow.network.wireless {
39 resolved = {
40 enable = true;
41 llmnr = "false";
42 fallbackDns = [
43 "2606:4700:4700::1111"
44 "2606:4700:4700::1001"
45 "1.1.1.1"
46 "1.0.0.1"
47 ];
48 };
49 timesyncd.servers = map (x: "time-${x}-g.nist.gov") [
50 "a"
51 "b"
52 "c"
53 "d"
54 "e"
55 "f"
56 "g"
57 ];
58 };
59 };
60}