default.nix (9250B) - Raw
1 { 2 lib, 3 pkgs, 4 config, 5 ... 6 }: 7 let 8 cfg = config.mj.profiles.desktop; 9 inherit (config.mj) username; 10 inherit (lib) 11 types 12 mkOption 13 ; 14 15 brightness = pkgs.writeShellApplication { 16 name = "brightness"; 17 text = builtins.readFile ./brightness; 18 }; 19 in 20 { 21 options.mj.profiles.desktop = with types; { 22 enableUserServices = mkOption { 23 type = bool; 24 default = false; 25 }; 26 }; 27 28 imports = [ 29 ../basedesktop 30 ../terminal 31 ]; 32 33 config = { 34 boot = { 35 kernelModules = [ "kvm-intel" ]; 36 }; 37 38 hardware = { 39 bluetooth = { 40 enable = true; 41 powerOnBoot = true; 42 }; 43 }; 44 45 programs = { 46 firefox = { 47 enable = true; 48 package = pkgs.firefox-bin; 49 languagePacks = [ 50 "en-US" 51 "lt" 52 ]; 53 }; 54 55 wireshark = { 56 enable = true; 57 package = pkgs.wireshark-qt; 58 }; 59 }; 60 61 mj.services.printing.enable = true; 62 63 mj.base.users.user.extraGroups = [ 64 "adbusers" 65 "networkmanager" 66 "wireshark" 67 ]; 68 69 services = lib.mkIf cfg.enableUserServices { 70 blueman.enable = true; 71 udev.packages = [ pkgs.yubikey-personalization ]; 72 gnome.gnome-keyring.enable = true; 73 openssh.settings.X11Forwarding = true; 74 75 pulseaudio = { 76 enable = true; 77 package = pkgs.pulseaudioFull; 78 }; 79 80 logind.settings.Login = { 81 HandlePowerKey = "suspend"; 82 HandlePowerKeyLongPress = "poweroff"; 83 HandleLidSwitchExternalPower = "ignore"; 84 }; 85 86 avahi = { 87 enable = true; 88 nssmdns4 = true; 89 openFirewall = true; 90 }; 91 92 xserver = { 93 enable = true; 94 xkb = { 95 layout = "us,lt"; 96 options = "grp:alt_shift_toggle"; 97 }; 98 99 desktopManager.xfce.enable = true; 100 windowManager.awesome.enable = true; 101 displayManager.lightdm.enable = true; 102 }; 103 104 displayManager = { 105 defaultSession = lib.mkDefault "none+awesome"; 106 autoLogin = { 107 enable = true; 108 user = username; 109 }; 110 }; 111 112 pipewire.enable = false; 113 114 }; 115 116 programs = { 117 adb.enable = true; 118 slock.enable = true; 119 nm-applet.enable = true; 120 command-not-found.enable = false; 121 }; 122 123 security.rtkit.enable = true; 124 125 networking.networkmanager.enable = true; 126 127 # wip put clight-gui to nixpkgs 128 #services.geoclue2 = { 129 # enable = true; 130 # enableWifi = true; 131 #}; 132 #location.provider = "geoclue2"; 133 134 fonts.packages = with pkgs; [ 135 xkcd-font 136 ]; 137 138 environment.systemPackages = with pkgs; [ 139 # packages defined here 140 nicer 141 brightness 142 143 f3 # flight-flash-fraud 144 gdb 145 ntp 146 sox 147 mpv 148 imv # image viewer 149 gimp 150 qemu 151 xclip 152 pdftk 153 scrot 154 dillo 155 typst 156 sioyek 157 cowsay 158 xboard 159 (kazam.override { 160 python3Packages = pkgs.python311Packages; 161 }) # alternative to gtk-recordMyDesktop 162 x11vnc 163 tinycc 164 cheese 165 arandr 166 evince 167 ioping 168 motion 169 gthumb 170 csvkit 171 calibre 172 gparted 173 scribus 174 gnumake 175 libwebp 176 librsvg 177 picocom 178 libheif 179 mplayer 180 tcpflow 181 fairymax 182 ddrescue 183 gcompris 184 nautilus 185 smplayer 186 inkscape 187 hunspell 188 tigervnc 189 bsdgames 190 pstoedit 191 xss-lock 192 audacity 193 colordiff 194 trayscale 195 espeak-ng 196 man-pages 197 rox-filer 198 miniupnpc 199 v4l-utils 200 #nerdfonts 201 winetricks 202 shellcheck 203 virtualenv 204 get_iplayer 205 #ventoy-full 206 pavucontrol 207 photocollage 208 libqalculate # qalc 209 qalculate-qt # qalculate 210 google-chrome 211 wirelesstools 212 squashfsTools 213 aspellDicts.en 214 aspellDicts.lt 215 libreoffice-qt 216 graphicsmagick 217 signal-desktop 218 gnome-calendar 219 element-desktop 220 netsurf-browser 221 man-pages-posix 222 gnome-calculator 223 kdePackages.okular 224 nvtopPackages.amd 225 nvtopPackages.intel 226 hunspellDicts.en_US 227 samsung-unified-linux-driver 228 229 xdotool 230 xorg.xev 231 xorg.xeyes 232 xorg.lndir 233 xorg.xinit 234 235 ]; 236 237 # https://discourse.nixos.org/t/nixos-rebuild-switch-upgrade-networkmanager-wait-online-service-failure/30746 238 systemd.services.NetworkManager-wait-online.enable = false; 239 240 home-manager.users.${username} = 241 { pkgs, config, ... }: 242 { 243 imports = [ ./plasma.nix ]; 244 xdg.configFile = { 245 "gdb/gdbinit".text = '' 246 set style address foreground yellow 247 set style function foreground cyan 248 set style string foreground magenta 249 ''; 250 }; 251 252 programs = { 253 ghostty = { 254 settings = { 255 window-decoration = false; 256 gtk-single-instance = true; 257 }; 258 }; 259 260 chromium = lib.mkIf pkgs.stdenv.isLinux { 261 enable = true; 262 extensions = [ 263 { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin 264 { id = "mdjildafknihdffpkfmmpnpoiajfjnjd"; } # consent-o-matic 265 ]; 266 }; 267 268 firefox = { 269 enable = true; 270 package = pkgs.firefox-bin; 271 policies.DisableAppUpdate = true; 272 profiles = { 273 xdefault = { 274 isDefault = true; 275 settings = { 276 "app.update.auto" = false; 277 "browser.uidensity" = 1; 278 "browser.aboutConfig.showWarning" = false; 279 "browser.contentblocking.category" = "strict"; 280 "browser.urlbar.showSearchSuggestionsFirst" = false; 281 "layout.css.prefers-color-scheme.content-override" = 0; 282 "signon.management.page.breach-alerts.enabled" = false; 283 "signon.rememberSignons" = false; 284 285 # go/ 286 "browser.fixup.domainwhitelist.go" = true; 287 }; 288 extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ 289 bitwarden 290 ublock-origin 291 consent-o-matic 292 multi-account-containers 293 ]; 294 }; 295 }; 296 }; 297 298 }; 299 300 services = { 301 cbatticon.enable = true; 302 blueman-applet.enable = true; 303 304 syncthing.tray = { 305 enable = true; 306 #extraOptions = ["--wait"]; 307 }; 308 309 pasystray = { 310 enable = true; 311 extraOptions = [ 312 "--key-grabbing" 313 "--notify=all" 314 ]; 315 }; 316 317 gpg-agent = { 318 enable = true; 319 enableSshSupport = true; 320 pinentry.package = pkgs.pinentry-gtk2; 321 }; 322 323 screen-locker = { 324 enable = lib.mkDefault true; 325 xautolock.enable = false; 326 lockCmd = ''${pkgs.bash}/bin/bash -c "${pkgs.coreutils}/bin/sleep 0.2; ${pkgs.xorg.xset}/bin/xset dpms force off; /run/wrappers/bin/slock"''; 327 }; 328 }; 329 330 # https://github.com/nix-community/home-manager/issues/2064 331 systemd.user.targets.tray = { 332 Unit = { 333 Description = "Home Manager System Tray"; 334 Requires = [ "graphical-session-pre.target" ]; 335 }; 336 }; 337 338 # thanks K900 339 gtk = { 340 enable = true; 341 theme = { 342 package = pkgs.kdePackages.breeze-gtk; 343 name = "Breeze"; 344 }; 345 cursorTheme = { 346 package = pkgs.kdePackages.breeze-icons; 347 name = "Breeze_Snow"; 348 }; 349 iconTheme = { 350 package = pkgs.papirus-icon-theme; 351 name = "Papirus-Dark"; 352 }; 353 gtk2 = { 354 configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; 355 extraConfig = '' 356 gtk-alternative-button-order = 1 357 ''; 358 }; 359 gtk3.extraConfig = { 360 gtk-application-prefer-dark-theme = true; 361 gtk-decoration-layout = "icon:minimize,maximize,close"; 362 }; 363 gtk4.extraConfig = { 364 gtk-application-prefer-dark-theme = true; 365 gtk-decoration-layout = "icon:minimize,maximize,close"; 366 }; 367 }; 368 369 mj.plasma.kconfig = { 370 kdeglobals = { 371 General.ColorScheme = "ArcDark"; 372 Icons.Theme = "Papirus-Dark"; 373 KDE.widgetStyle = "Breeze"; 374 }; 375 plasmarc.Theme.name = "Arc-Dark"; 376 kscreenlockerrc.Greeter = { 377 Theme = "com.github.varlesh.arc-dark"; 378 }; 379 ksplashrc.KSplash = { 380 Engine = "KSplashQML"; 381 Theme = "com.github.varlesh.arc-dark"; 382 }; 383 kwinrc."org.kde.kdecoration2" = { 384 library = "org.kde.kwin.aurorae"; 385 theme = "__aurorae__svg__Arc-Dark"; 386 }; 387 kcminputrc.Mouse.cursorTheme = "Breeze_Snow"; 388 # don't mess with GTK settings 389 kded5rc."Module-gtkconfig".autoload = false; 390 }; 391 }; 392 }; 393 }