desktop.nix
1 { 2 config, 3 lib, 4 pkgs, 5 ... 6 }: 7 with pkgs; 8 let 9 cfg = config.dusk.system.nixos.desktop; 10 11 inherit (config.dusk) username; 12 inherit (config.dusk.folders) home; 13 inherit (lib) mkForce mkIf; 14 15 terminal = config.dusk.terminal.default; 16 in 17 { 18 imports = [ 19 ./gaming 20 ./gnome 21 ./hyprland 22 ]; 23 24 config = mkIf cfg.enable { 25 environment = { 26 sessionVariables = { 27 # Enable Wayland support on most Electron applications 28 NIXOS_OZONE_WL = "1"; 29 30 # Enable newer freetype features 31 FREETYPE_PROPERTIES = "truetype:interpreter-version=40"; 32 33 BROWSER = config.dusk.defaults.browser; 34 TERMINAL = terminal; 35 36 QT_QPA_PLATFORM = "wayland"; 37 SDL_VIDEODRIVER = "wayland"; 38 CLUTTER_BACKEND = "wayland"; 39 XDG_SESSION_TYPE = "wayland"; 40 }; 41 42 systemPackages = with pkgs; [ 43 brave 44 discord 45 easyeffects 46 element-desktop 47 firefox 48 fractal 49 helvum 50 inkscape 51 obs-studio 52 obsidian 53 qpwgraph 54 telegram-desktop 55 todoist-electron 56 vlc 57 wl-clipboard-rs 58 zed-editor 59 60 # Fonts 61 cantarell-fonts 62 dejavu_fonts 63 noto-fonts 64 source-code-pro 65 source-sans 66 ]; 67 }; 68 69 fonts.fontconfig = { 70 enable = true; 71 72 antialias = true; 73 74 hinting = { 75 enable = true; 76 autohint = false; 77 style = "slight"; 78 }; 79 80 subpixel = { 81 lcdfilter = "default"; 82 rgba = "rgb"; 83 }; 84 }; 85 86 hardware.graphics.enable = true; 87 88 home-manager.users.${config.dusk.username} = { 89 programs.brave = { 90 enable = true; 91 commandLineArgs = [ 92 "--enable-features=VaapiVideoDecodeLinuxGL" 93 "--use-gl=angle" 94 "--use-angle=gl" 95 "--ozone-platform=wayland" 96 ]; 97 }; 98 }; 99 100 programs.gnupg.agent.pinentryPackage = pkgs.pinentry-all; 101 102 security.rtkit.enable = true; 103 104 services = { 105 pulseaudio.enable = mkForce false; 106 107 pipewire = { 108 enable = true; 109 socketActivation = true; 110 111 alsa = { 112 enable = true; 113 support32Bit = true; 114 }; 115 116 jack.enable = true; 117 pulse.enable = true; 118 }; 119 120 syncthing = { 121 enable = true; 122 123 user = username; 124 dataDir = "${home}/Sync"; 125 }; 126 }; 127 }; 128 }