Personal Nix setup
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Update service setup for desktop modules

+97 -68
+1 -1
modules/desktop/affinity.nix
··· 60 60 }; 61 61 nix.sliceConfig = mkIf cfg.affinity.isolateNixDaemon { 62 62 CPUQuota = "80%"; 63 + IOWeight = 90; 63 64 ManagedOOMMemoryPressure = "kill"; 64 65 ManagedOOMMemoryPressureLimit = "80%"; 65 - Nice = 9; 66 66 }; 67 67 }; 68 68 services = {
+2 -26
modules/desktop/default.nix
··· 18 18 }; 19 19 } // helpers.linuxAttrs { 20 20 imports = [ 21 - ./services.nix 22 21 ./session.nix 23 22 ./affinity.nix 24 23 ./fonts.nix 25 24 ./rawaccel.nix 25 + ./audio.nix 26 + ./networking.nix 26 27 ]; 27 28 28 29 config = mkIf cfg.enable { 29 30 users.users."${user}".extraGroups = [ "video" ]; 30 - 31 - networking = { 32 - firewall = { 33 - enable = mkDefault true; 34 - checkReversePath = "loose"; 35 - }; 36 - nftables = { 37 - enable = mkForce true; 38 - checkRuleset = false; 39 - flushRuleset = true; 40 - }; 41 - networkmanager = { 42 - enable = mkDefault true; 43 - wifi = { 44 - backend = "iwd"; 45 - powersave = true; 46 - }; 47 - }; 48 - }; 49 - 50 - hardware = { 51 - steam-hardware.enable = true; 52 - }; 53 - 54 - security.rtkit.enable = true; 55 31 }; 56 32 }
+67
modules/desktop/networking.nix
··· 1 + { lib, pkgs, config, user, ... }: 2 + 3 + with lib; 4 + let 5 + inherit (generators) toLua; 6 + cfg = config.modules.desktop; 7 + in { 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 + }
+27 -41
modules/desktop/services.nix modules/desktop/audio.nix
··· 5 5 inherit (generators) toLua; 6 6 cfg = config.modules.desktop; 7 7 in { 8 - options.modules.desktop.services = { 8 + options.modules.desktop.audio = { 9 9 enable = mkOption { 10 - default = cfg.enable; 10 + default = true; 11 11 example = true; 12 - description = "Whether to enable services."; 12 + description = "Whether to enable Pipewire audio."; 13 13 type = types.bool; 14 14 }; 15 15 16 - pipewire = { 17 - enable = mkOption { 18 - default = cfg.services.enable; 19 - example = true; 20 - description = "Whether to enable Pipewire low latency."; 21 - type = types.bool; 22 - }; 23 - 24 - lowLatency = mkOption { 25 - default = true; 26 - example = true; 27 - description = "Whether to enable Pipewire low latency."; 28 - type = types.bool; 29 - }; 16 + lowLatency = mkOption { 17 + default = true; 18 + example = true; 19 + description = "Whether to enable Pipewire low latency."; 20 + type = types.bool; 21 + }; 30 22 31 - quantum = mkOption { 32 - description = "Minimum quantum to set"; 33 - type = types.int; 34 - default = 64; 35 - example = 32; 36 - }; 23 + quantum = mkOption { 24 + description = "Minimum quantum to set"; 25 + type = types.int; 26 + default = 64; 27 + example = 32; 28 + }; 37 29 38 - rate = mkOption { 39 - description = "Rate to set"; 40 - type = types.int; 41 - default = 48000; 42 - example = 96000; 43 - }; 30 + rate = mkOption { 31 + description = "Rate to set"; 32 + type = types.int; 33 + default = 48000; 34 + example = 96000; 44 35 }; 45 36 }; 46 37 47 - config = mkIf cfg.services.enable { 48 - users.users."${user}".extraGroups = [ "video" ]; 38 + config = mkIf cfg.audio.enable { 39 + security.rtkit.enable = true; 49 40 50 41 services = { 51 - hardware.bolt.enable = true; 52 - printing.enable = true; 53 - colord.enable = true; 54 - fwupd.enable = true; 55 - 56 42 pipewire = let 57 - quantum = cfg.services.pipewire.quantum; 58 - rate = cfg.services.pipewire.rate; 43 + quantum = cfg.audio.quantum; 44 + rate = cfg.audio.rate; 59 45 qr = "${toString quantum}/${toString rate}"; 60 46 in { 61 - enable = cfg.services.pipewire.enable; 47 + enable = cfg.audio.enable; 62 48 pulse.enable = true; 63 49 jack.enable = true; 64 50 alsa = { 65 51 enable = true; 66 - support32Bit = true; 52 + support32Bit = mkDefault true; 67 53 }; 68 54 69 55 # write extra config 70 - extraConfig.pipewire = mkIf cfg.services.pipewire.lowLatency { 56 + extraConfig.pipewire = mkIf cfg.audio.lowLatency { 71 57 "99-lowlatency" = { 72 58 context = { 73 59 properties.default.clock.min-quantum = quantum;