me like nix
1{ ... }: {
2 flake.modules.nixos.pi-wifi =
3 { config, pkgs, ... }:
4 {
5 services.openssh.hostKeys = [
6 {
7 path = "/etc/ssh/ssh_host_ed25519_key";
8 type = "ed25519";
9 }
10 ];
11
12 age.identityPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
13 age.secrets.wifi = {
14 file = ../secrets/wifi.age;
15 mode = "0444";
16 };
17
18 # Ensure wpa_supplicant starts after agenix decrypts the WiFi PSK
19 systemd.services.wpa_supplicant.after = [ "run-agenix.d.mount" ];
20 systemd.services.wpa_supplicant.requires = [ "run-agenix.d.mount" ];
21
22 networking.wireless = {
23 enable = true;
24 secretsFile = config.age.secrets.wifi.path;
25 networks."GL-MT6000-6a6" = {
26 pskRaw = "ext:WIFI_PSK";
27 extraConfig = ''
28 freq_list=5180 5200 5220 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5745 5765 5785 5805 5825
29 '';
30 };
31 };
32
33 systemd.services.wifi-powersave-off = {
34 description = "Disable WiFi power save";
35 after = [ "network.target" ];
36 wantedBy = [ "multi-user.target" ];
37 serviceConfig = {
38 Type = "oneshot";
39 ExecStart = "${pkgs.iw}/bin/iw dev wlan0 set power_save off";
40 RemainAfterExit = true;
41 };
42 };
43 };
44}