1{ lib, pkgs, config, user, ... }:
2
3with lib;
4let
5 inherit (generators) toLua;
6 cfg = config.modules.desktop;
7in {
8 options.modules.desktop.networking = {
9 enable = mkOption {
10 default = cfg.enable;
11 example = true;
12 description = "Whether to enable networking.";
13 type = types.bool;
14 };
15
16 printing = mkOption {
17 default = cfg.networking.enable;
18 example = true;
19 description = "Whether to enable printing.";
20 type = types.bool;
21 };
22 };
23
24 config = mkIf cfg.networking.enable {
25 networking = {
26 firewall = {
27 enable = mkDefault true;
28 checkReversePath = "loose";
29 allowedUDPPorts = [ 5353 ];
30 };
31 nftables = {
32 enable = mkForce true;
33 checkRuleset = false;
34 flushRuleset = true;
35 };
36 networkmanager = {
37 enable = mkDefault true;
38 dns = mkDefault (if config.servies.resolved.enable then "systemd-resolved" else "default");
39 connectionConfig = {
40 "connection.mdns" = mkDefault 2;
41 "connection.llmnr" = 0;
42 };
43 wifi = {
44 backend = "iwd";
45 powersave = true;
46 };
47 };
48 };
49
50 services = {
51 resolved = {
52 enable = true;
53 llmnr = "false";
54 extraConfig = ''
55 [Resolve]
56 MulticastDNS=yes
57 '';
58 };
59
60 printing = mkIf cfg.networking.printing {
61 enable = true;
62 stateless = true;
63 webInterface = false;
64 };
65 };
66 };
67}