Dynamically fetched the /etc/nixos/configuration.nix file containing 5164 lines hosted on my GitHub repository.
1 # By Abdullah As-Sadeed 2 3 { 4 config, 5 options, 6 pkgs, 7 lib, 8 ... 9 }: 10 let 11 home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/refs/heads/master.tar.gz"; 12 13 nix-rice = builtins.fetchTarball "https://github.com/bertof/nix-rice/archive/refs/heads/main.tar.gz"; 14 nix-rice-lib = import (nix-rice + "/lib.nix") { 15 lib = pkgs.lib; 16 kitty-themes-src = null; 17 }; 18 19 convert_hex_color_code_to_rgba_color_code = 20 hex_color: 21 let 22 color_set = nix-rice-lib.color.hexToRgba hex_color; 23 24 red = builtins.floor color_set.r; 25 green = builtins.floor color_set.g; 26 blue = builtins.floor color_set.b; 27 alpha = builtins.floor (color_set.a / 255); 28 in 29 "rgba(${toString red}, ${toString green}, ${toString blue}, ${toString alpha})"; 30 31 android_nixpkgs = 32 pkgs.callPackage 33 (import ( 34 builtins.fetchGit { 35 url = "https://github.com/tadfisher/android-nixpkgs.git"; 36 } 37 )) 38 { 39 channel = "stable"; 40 }; 41 android_sdk = android_nixpkgs.sdk ( 42 sdkPkgs: with sdkPkgs; [ 43 build-tools-35-0-0 44 build-tools-36-0-0 45 cmake-3-22-1 46 cmdline-tools-latest 47 emulator 48 ndk-26-3-11579264 49 ndk-27-0-12077973 50 ndk-29-0-13599879 51 platform-tools 52 platforms-android-30 53 platforms-android-31 54 platforms-android-32 55 platforms-android-33 56 platforms-android-34 57 platforms-android-35 58 platforms-android-36 59 system-images-android-36-google-apis-playstore-x86-64 60 tools 61 ] 62 ); 63 android_sdk_path = "${android_sdk}/share/android-sdk"; 64 65 font_preferences = { 66 package = pkgs.nerd-fonts.noto; 67 68 name = { 69 mono = "NotoMono Nerd Font Mono"; 70 sans_serif = "NotoSans Nerd Font"; 71 serif = "NotoSerif Nerd Font"; 72 emoji = "Noto Color Emoji"; 73 }; 74 75 size = builtins.floor (design_factor * 0.75); # 12 76 }; 77 78 cursor = { 79 theme = { 80 name = "Bibata-Modern-Classic"; 81 package = pkgs.bibata-cursors; 82 }; 83 84 size = builtins.floor (design_factor * 1.50); # 24 85 }; 86 87 fetched_gtk_css_file = builtins.fetchurl { 88 url = "https://gitlab.gnome.org/GNOME/gtk/-/raw/gtk-3-24/gtk/theme/Adwaita/gtk-contained-dark.css"; 89 }; 90 gtk_css_file = builtins.readFile fetched_gtk_css_file; 91 gtk_css_lines = builtins.filter (x: builtins.isString x) (builtins.split "\n" gtk_css_file); 92 93 gtk_css_color_lines = builtins.filter ( 94 line: builtins.match "^@define-color [^ ]+ [^;]+;" line != null 95 ) gtk_css_lines; 96 gtk_color_list = builtins.filter (x: x != null) ( 97 builtins.map ( 98 line: 99 let 100 mapping = builtins.match "@define-color ([^ ]+) ([^;]+);" line; 101 in 102 if mapping == null then 103 null 104 else 105 { 106 name = builtins.elemAt mapping 0; 107 value = builtins.elemAt mapping 1; 108 } 109 ) gtk_css_color_lines 110 ); 111 gtk_color_attributes = builtins.listToAttrs gtk_color_list; 112 113 colors = { 114 hex = { 115 borders = gtk_color_attributes.borders; 116 unfocused_borders = gtk_color_attributes.unfocused_borders; 117 118 background = gtk_color_attributes.theme_bg_color; 119 base_background = gtk_color_attributes.theme_base_color; 120 selected_background = gtk_color_attributes.theme_selected_bg_color; 121 unfocused_background = gtk_color_attributes.theme_unfocused_bg_color; 122 unfocused_base_background = gtk_color_attributes.theme_unfocused_base_color; 123 unfocused_selected_background = gtk_color_attributes.theme_unfocused_selected_bg_color; 124 insensitive_background = gtk_color_attributes.insensitive_bg_color; 125 insensitive_base_background = gtk_color_attributes.insensitive_base_color; 126 content_view_background = gtk_color_attributes.content_view_bg; 127 text_view_background = gtk_color_attributes.text_view_bg; 128 129 foreground = gtk_color_attributes.theme_fg_color; 130 selected_foreground = gtk_color_attributes.theme_selected_fg_color; 131 insensitive_foreground = gtk_color_attributes.insensitive_fg_color; 132 text = gtk_color_attributes.theme_text_color; 133 unfocused_foreground = gtk_color_attributes.theme_unfocused_fg_color; 134 unfocused_selected_foreground = gtk_color_attributes.theme_unfocused_selected_fg_color; 135 unfocused_insensitive_color = gtk_color_attributes.unfocused_insensitive_color; 136 unfocused_text = gtk_color_attributes.theme_unfocused_text_color; 137 138 warning = gtk_color_attributes.warning_color; 139 error = gtk_color_attributes.error_color; 140 success = gtk_color_attributes.success_color; 141 }; 142 }; 143 144 design_factor = 16; 145 animation_duration = 200; # ms 146 147 wallpaper = builtins.fetchurl { 148 url = "https://raw.githubusercontent.com/JaKooLit/Wallpaper-Bank/refs/heads/main/wallpapers/Dark_Nature.png"; 149 }; 150 151 backlight_device = "intel_backlight"; 152 153 secrets = import ./secrets.nix; 154 in 155 { 156 imports = [ 157 (import "${home-manager}/nixos") 158 159 ./hardware-configuration.nix 160 ]; 161 162 boot = { 163 loader = { 164 efi.canTouchEfiVariables = true; 165 timeout = 2; 166 167 systemd-boot = { 168 enable = true; 169 consoleMode = "max"; 170 configurationLimit = null; 171 172 memtest86.enable = true; 173 }; 174 }; 175 176 kernel = { 177 enable = true; 178 179 sysctl = { 180 "net.ipv4.tcp_syncookies" = true; 181 }; 182 }; 183 184 kernelPackages = pkgs.linuxKernel.packages.linux_zen; 185 186 extraModulePackages = with config.boot.kernelPackages; [ 187 # apfs # Build Failure 188 # shufflecake # Build Failure 189 acpi_call 190 cpupower 191 cryptodev 192 mm-tools 193 nullfs 194 openafs 195 perf 196 tmon 197 turbostat 198 usbip 199 vendor-reset 200 zfs_unstable # Build Failure 201 ]; 202 203 kernelModules = [ 204 "at24" 205 "ee1004" 206 "kvm-intel" 207 "spd5118" 208 ]; 209 210 extraModprobeConfig = '' 211 options kvm_intel nested=1 212 options kvm report_ignored_msrs=0 213 ''; 214 215 kernelParams = [ 216 "boot.shell_on_fail" 217 "intel_iommu=on" 218 "iommu=pt" 219 "kvm.ignore_msrs=1" 220 "mitigations=auto" 221 "rd.systemd.show_status=true" 222 "rd.udev.log_level=err" 223 "udev.log_level=err" 224 "udev.log_priority=err" 225 ]; 226 227 initrd = { 228 enable = true; 229 230 kernelModules = config.boot.kernelModules; 231 232 systemd = { 233 enable = true; 234 package = config.systemd.package; 235 }; 236 237 network.ssh.enable = true; 238 239 verbose = true; 240 }; 241 242 consoleLogLevel = 4; # 4 = KERN_WARNING 243 244 tmp.cleanOnBoot = true; 245 246 plymouth = { 247 enable = true; 248 249 themePackages = [ 250 pkgs.nixos-bgrt-plymouth 251 ]; 252 theme = "nixos-bgrt"; 253 254 font = "${pkgs.nerd-fonts.noto}/share/fonts/truetype/NerdFonts/Noto/NotoSansNerdFont-Regular.ttf"; 255 256 extraConfig = '' 257 UseFirmwareBackground=true 258 ''; 259 }; 260 }; 261 262 time = { 263 timeZone = "Asia/Dhaka"; 264 hardwareClockInLocalTime = true; 265 }; 266 267 system = { 268 copySystemConfiguration = true; 269 270 switch.enable = true; 271 tools = { 272 nixos-build-vms.enable = true; 273 nixos-enter.enable = true; 274 nixos-generate-config.enable = true; 275 nixos-install.enable = true; 276 nixos-option.enable = true; 277 nixos-rebuild.enable = true; 278 nixos-version.enable = true; 279 }; 280 281 autoUpgrade = { 282 enable = false; 283 channel = "https://nixos.org/channels/nixos-unstable"; 284 operation = "boot"; 285 allowReboot = false; 286 }; 287 288 # activationScripts = { }; 289 # userActivationScripts = { }; 290 291 stateVersion = "24.11"; 292 }; 293 294 nix = { 295 enable = true; 296 channel.enable = true; 297 298 settings = { 299 experimental-features = [ 300 "flakes" 301 "nix-command" 302 "pipe-operators" 303 ]; 304 305 require-sigs = true; 306 sandbox = true; 307 auto-optimise-store = true; 308 309 cores = 0; # 0 = All 310 max-jobs = 1; 311 }; 312 313 gc = { 314 automatic = true; 315 dates = "weekly"; 316 persistent = true; 317 }; 318 }; 319 320 nixpkgs = { 321 hostPlatform = "x86_64-linux"; 322 323 config = { 324 allowUnfree = true; 325 android_sdk.accept_license = true; 326 }; 327 328 # overlays = [ ]; 329 }; 330 331 appstream.enable = true; 332 333 i18n = { 334 defaultLocale = "en_US.UTF-8"; 335 extraLocales = "all"; 336 337 extraLocaleSettings = { 338 LC_ADDRESS = config.i18n.defaultLocale; 339 LC_COLLATE = config.i18n.defaultLocale; 340 LC_CTYPE = config.i18n.defaultLocale; 341 LC_IDENTIFICATION = config.i18n.defaultLocale; 342 LC_MEASUREMENT = config.i18n.defaultLocale; 343 LC_MESSAGES = config.i18n.defaultLocale; 344 LC_MONETARY = config.i18n.defaultLocale; 345 LC_NAME = config.i18n.defaultLocale; 346 LC_NUMERIC = config.i18n.defaultLocale; 347 LC_PAPER = config.i18n.defaultLocale; 348 LC_TELEPHONE = config.i18n.defaultLocale; 349 LC_TIME = config.i18n.defaultLocale; 350 LC_ALL = config.i18n.defaultLocale; 351 }; 352 353 inputMethod = { 354 enable = true; 355 type = "fcitx5"; 356 357 fcitx5 = { 358 waylandFrontend = true; 359 360 addons = with pkgs; [ 361 fcitx5-gtk 362 # fcitx5-openbangla-keyboard # Build Failure 363 ]; 364 }; 365 }; 366 }; 367 368 networking = { 369 enableIPv6 = true; 370 371 domain = "local"; 372 hostName = "Bitscoper-WorkStation"; 373 fqdn = "${config.networking.hostName}.${config.networking.domain}"; 374 375 wireless = { 376 dbusControlled = true; 377 userControlled.enable = true; 378 }; 379 380 networkmanager = { 381 enable = true; 382 package = ( 383 pkgs.networkmanager.override { 384 withSystemd = true; 385 } 386 ); 387 388 ethernet.macAddress = "permanent"; 389 390 wifi = { 391 backend = "wpa_supplicant"; 392 393 powersave = false; 394 395 scanRandMacAddress = true; 396 macAddress = "permanent"; 397 }; 398 399 logLevel = "WARN"; 400 }; 401 402 firewall = { 403 enable = false; 404 405 allowPing = true; 406 407 allowedTCPPorts = [ 408 5900 # VNC 409 ]; 410 allowedUDPPorts = [ 411 5900 # VNC 412 ]; 413 }; 414 415 nameservers = [ 416 "1.1.1.3#one.one.one.one" 417 "1.0.0.3#one.one.one.one" 418 ]; 419 420 timeServers = [ 421 "0.nixos.pool.ntp.org" 422 "1.nixos.pool.ntp.org" 423 "2.nixos.pool.ntp.org" 424 "3.nixos.pool.ntp.org" 425 ]; 426 }; 427 428 security = { 429 allowSimultaneousMultithreading = true; 430 431 tpm2.enable = true; 432 433 lockKernelModules = false; 434 435 pam = { 436 mount = { 437 enable = true; 438 439 createMountPoints = true; 440 removeCreatedMountPoints = true; 441 442 logoutHup = true; 443 logoutTerm = false; 444 logoutKill = false; 445 446 logoutWait = 0; 447 }; 448 449 services = { 450 login = { 451 unixAuth = true; 452 nodelay = false; 453 454 fprintAuth = true; 455 456 logFailures = true; 457 458 enableGnomeKeyring = true; 459 460 gnupg = { 461 enable = true; 462 storeOnly = false; 463 noAutostart = false; 464 }; 465 }; 466 467 greetd = { 468 unixAuth = true; 469 nodelay = false; 470 471 fprintAuth = true; 472 473 logFailures = true; 474 475 enableGnomeKeyring = true; 476 477 gnupg = { 478 enable = true; 479 storeOnly = false; 480 noAutostart = false; 481 }; 482 }; 483 484 hyprlock = { 485 unixAuth = true; 486 nodelay = false; 487 488 fprintAuth = true; 489 490 logFailures = true; 491 492 enableGnomeKeyring = true; 493 494 gnupg = { 495 enable = true; 496 storeOnly = false; 497 noAutostart = false; 498 }; 499 }; 500 501 sudo = { 502 unixAuth = true; 503 nodelay = false; 504 505 fprintAuth = true; 506 507 logFailures = true; 508 }; 509 510 polkit-1 = { 511 unixAuth = true; 512 nodelay = false; 513 514 fprintAuth = true; 515 516 logFailures = true; 517 }; 518 }; 519 }; 520 521 sudo = { 522 enable = true; 523 package = ( 524 pkgs.sudo.override { 525 withInsults = true; 526 } 527 ); 528 529 execWheelOnly = true; 530 wheelNeedsPassword = true; 531 }; 532 533 polkit = { 534 enable = true; 535 package = ( 536 pkgs.polkit.override { 537 useSystemd = true; 538 } 539 ); 540 }; 541 542 soteria = { 543 enable = true; 544 package = pkgs.soteria; 545 }; 546 547 rtkit.enable = true; 548 549 wrappers = { 550 spice-client-glib-usb-acl-helper.source = "${ 551 (pkgs.spice-gtk.override { 552 withPolkit = true; 553 }) 554 }/bin/spice-client-glib-usb-acl-helper"; 555 }; 556 557 audit = { 558 enable = false; 559 }; 560 }; 561 562 hardware = { 563 enableAllFirmware = true; # Unfree 564 enableRedistributableFirmware = true; 565 firmware = with pkgs; [ 566 alsa-firmware 567 linux-firmware 568 sof-firmware 569 ]; 570 571 cpu = { 572 intel = { 573 updateMicrocode = true; 574 }; 575 }; 576 577 graphics = { 578 enable = true; 579 enable32Bit = true; 580 581 extraPackages = with pkgs; [ 582 intel-media-driver 583 intel-compute-runtime 584 ]; 585 }; 586 587 sensor = { 588 hddtemp = { 589 enable = true; 590 unit = "C"; 591 drives = [ 592 "/dev/disk/by-path/*" 593 ]; 594 }; 595 }; 596 597 bluetooth = { 598 enable = true; 599 package = ( 600 pkgs.bluez.override { 601 enableExperimental = true; 602 } 603 ); 604 605 hsphfpd.enable = false; # Conflicts wwth WirePlumber 606 607 powerOnBoot = true; 608 609 input.General = { 610 IdleTimeout = 0; # 0 = Disabled 611 LEAutoSecurity = true; 612 ClassicBondedOnly = true; 613 UserspaceHID = true; 614 }; 615 616 network.General = { 617 DisableSecurity = false; 618 }; 619 620 settings = { 621 General = { 622 MaxControllers = 0; # 0 = Unlimited 623 ControllerMode = "dual"; 624 625 Name = config.networking.hostName; 626 627 DiscoverableTimeout = 0; # 0 = Disabled 628 PairableTimeout = 0; # 0 = Disabled 629 AlwaysPairable = true; 630 FastConnectable = true; 631 632 ReverseServiceDiscovery = true; 633 NameResolving = true; 634 RemoteNameRequestRetryDelay = 60; # 1 Minute 635 RefreshDiscovery = true; 636 TemporaryTimeout = 0; # 0 = Disabled 637 638 SecureConnections = "on"; 639 Privacy = "off"; 640 641 Experimental = true; # Shows Battery Percentage 642 KernelExperimental = true; 643 }; 644 645 Policy = { 646 AutoEnable = true; 647 648 ResumeDelay = 2; # Seconds 649 ReconnectAttempts = 7; 650 ReconnectIntervals = "1, 2, 4, 8, 16, 32, 64"; 651 }; 652 653 GATT = { 654 Cache = "always"; 655 }; 656 657 CSIS = { 658 Encryption = true; 659 }; 660 661 AVRCP = { 662 VolumeCategory = true; 663 VolumeWithoutTarget = false; 664 }; 665 666 AVDTP = { 667 SessionMode = "ertm"; 668 }; 669 670 AdvMon = { 671 RSSISamplingPeriod = "0x00"; 672 }; 673 }; 674 }; 675 676 rtl-sdr = { 677 enable = true; 678 package = pkgs.rtl-sdr; 679 }; 680 681 sane = { 682 enable = true; 683 backends-package = ( 684 pkgs.sane-backends.override { 685 withSystemd = true; 686 } 687 ); 688 # extraBackends = with pkgs; [ ]; 689 snapshot = false; 690 691 openFirewall = true; 692 }; 693 694 steam-hardware.enable = true; 695 }; 696 697 virtualisation = { 698 libvirtd = { 699 enable = true; 700 package = pkgs.libvirt; 701 702 qemu = { 703 package = ( 704 pkgs.qemu_kvm.override { 705 guestAgentSupport = true; 706 alsaSupport = true; 707 pulseSupport = true; 708 pipewireSupport = true; 709 sdlSupport = true; 710 jackSupport = true; 711 gtkSupport = true; 712 vncSupport = true; 713 smartcardSupport = true; 714 spiceSupport = true; 715 usbredirSupport = true; 716 glusterfsSupport = true; 717 openGLSupport = true; 718 rutabagaSupport = true; 719 virglSupport = true; 720 libiscsiSupport = true; 721 smbdSupport = true; 722 tpmSupport = true; 723 uringSupport = true; 724 pluginsSupport = true; 725 enableDocs = true; 726 enableTools = true; 727 enableBlobs = true; 728 } 729 ); 730 731 swtpm = { 732 enable = true; 733 package = pkgs.swtpm; 734 }; 735 736 ovmf = { 737 enable = true; 738 packages = [ 739 (pkgs.OVMFFull.override { 740 secureBoot = true; 741 httpSupport = true; 742 tpmSupport = true; 743 tlsSupport = true; 744 }).fd 745 ]; 746 }; 747 748 runAsRoot = true; 749 }; 750 }; 751 spiceUSBRedirection.enable = true; 752 753 containers.enable = true; 754 755 podman = { 756 enable = true; 757 package = pkgs.podman; 758 dockerCompat = true; 759 760 defaultNetwork.settings.dns_enabled = true; 761 }; 762 763 oci-containers.backend = "podman"; 764 765 waydroid = { 766 enable = true; 767 package = pkgs.waydroid; 768 }; 769 }; 770 771 systemd = { 772 package = ( 773 pkgs.systemd.override { 774 withAcl = true; 775 withCryptsetup = true; 776 withDocumentation = true; 777 withLogind = true; 778 withOpenSSL = true; 779 withPam = true; 780 withPolkit = true; 781 } 782 ); 783 784 packages = with pkgs; [ 785 (hardinfo2.override { 786 printingSupport = true; 787 }) 788 ]; 789 790 services = { 791 hardinfo2_custom = { 792 description = "Hardinfo2 support for root access"; 793 wantedBy = [ "basic.target" ]; 794 795 serviceConfig = { 796 Type = "oneshot"; 797 ExecStart = "${pkgs.hardinfo2}/bin/hwinfo2_fetch_sysdata"; # The ${pkgs.hardinfo2}/lib/systemd/system/hardinfo2.service file intends to run ${pkgs.hardinfo2}/bin/hwinfo2_fetch_sysdata oneshot which calls ${pkgs.hardinfo2}/bin/.hwinfo2_fetch_sysdata-wrapped 798 }; 799 800 enable = true; 801 }; 802 }; # Custom Service Unit File due to Errors 803 804 }; 805 806 services = { 807 dbus = { 808 enable = true; 809 dbusPackage = ( 810 pkgs.dbus.override { 811 enableSystemd = true; 812 } 813 ); 814 815 implementation = "broker"; 816 817 # packages = with pkgs; [ ]; 818 }; 819 820 timesyncd = { 821 enable = true; 822 823 servers = config.networking.timeServers; 824 fallbackServers = config.networking.timeServers; 825 }; 826 827 fwupd = { 828 enable = true; 829 package = ( 830 pkgs.fwupd.override { 831 enableFlashrom = true; 832 } 833 ); 834 }; 835 836 acpid = { 837 enable = true; 838 839 # powerEventCommands = ''''; 840 # acEventCommands = ''''; 841 # lidEventCommands = ''''; 842 843 logEvents = false; 844 }; 845 846 thermald = { 847 enable = true; 848 package = pkgs.thermald; 849 850 ignoreCpuidCheck = false; 851 852 debug = false; 853 }; 854 855 power-profiles-daemon = { 856 enable = true; 857 package = pkgs.power-profiles-daemon; 858 }; 859 860 logind = { 861 settings = { 862 Login = { 863 killUserProcesses = true; 864 865 lidSwitch = "ignore"; 866 lidSwitchDocked = "ignore"; 867 lidSwitchExternalPower = "ignore"; 868 869 powerKey = "poweroff"; 870 powerKeyLongPress = "poweroff"; 871 872 rebootKey = "reboot"; 873 rebootKeyLongPress = "reboot"; 874 875 suspendKey = "ignore"; 876 suspendKeyLongPress = "ignore"; 877 878 hibernateKey = "ignore"; 879 hibernateKeyLongPress = "ignore"; 880 }; 881 }; 882 }; 883 884 udev = { 885 enable = true; 886 packages = with pkgs; [ 887 android-udev-rules 888 game-devices-udev-rules 889 libmtp.out 890 rtl-sdr 891 steam-devices-udev-rules 892 ]; 893 }; 894 895 libinput = { 896 enable = true; 897 898 mouse = { 899 leftHanded = false; 900 disableWhileTyping = false; 901 tapping = true; 902 middleEmulation = true; 903 clickMethod = "buttonareas"; 904 scrollMethod = "twofinger"; 905 naturalScrolling = true; 906 horizontalScrolling = true; 907 tappingDragLock = true; 908 sendEventsMode = "enabled"; 909 }; 910 911 touchpad = { 912 leftHanded = false; 913 disableWhileTyping = false; 914 tapping = true; 915 middleEmulation = true; 916 clickMethod = "buttonareas"; 917 scrollMethod = "twofinger"; 918 naturalScrolling = true; 919 horizontalScrolling = true; 920 tappingDragLock = true; 921 sendEventsMode = "enabled"; 922 }; 923 }; 924 925 fprintd = { 926 enable = true; 927 package = if config.services.fprintd.tod.enable then pkgs.fprintd-tod else pkgs.fprintd; 928 # tod = { 929 # enable = true; 930 # driver = ; 931 # }; 932 }; 933 934 greetd = { 935 enable = true; 936 package = pkgs.greetd; 937 938 restart = true; 939 940 settings = { 941 default_session = { 942 command = "${pkgs.lib.getExe pkgs.tuigreet} --greet-align center --time --greeting Welcome --user-menu --asterisks --asterisks-char \"*\" --cmd \"${pkgs.lib.getExe config.programs.uwsm.package} start hyprland-uwsm.desktop\""; 943 user = "bitscoper"; 944 }; 945 }; 946 }; 947 948 gnome = { 949 gnome-keyring.enable = true; 950 gcr-ssh-agent.enable = true; 951 }; 952 953 gvfs = { 954 enable = true; 955 package = ( 956 pkgs.gvfs.override { 957 udevSupport = true; 958 } 959 ); 960 }; 961 962 udisks2 = { 963 enable = true; 964 package = pkgs.udisks2; 965 966 mountOnMedia = false; 967 }; 968 969 pipewire = { 970 enable = true; 971 package = ( 972 pkgs.pipewire.override { 973 enableSystemd = true; 974 vulkanSupport = true; 975 bluezSupport = true; 976 zeroconfSupport = true; 977 raopSupport = true; 978 rocSupport = true; 979 } 980 ); 981 systemWide = false; 982 983 audio.enable = true; 984 985 alsa.enable = true; 986 alsa.support32Bit = true; 987 pulse.enable = true; 988 jack.enable = true; 989 990 socketActivation = true; 991 992 wireplumber = { 993 enable = true; 994 package = ( 995 pkgs.wireplumber.override { 996 enableDocs = true; 997 } 998 ); 999 1000 extraConfig.bluetoothEnhancements = { 1001 "monitor.bluez.properties" = { 1002 "bluez5.enable-hw-volume" = true; 1003 1004 "bluez5.enable-sbc-xq" = true; 1005 "bluez5.enable-msbc" = true; 1006 1007 "bluez5.roles" = [ 1008 "a2dp_sink" 1009 "a2dp_source" 1010 "bap_sink" 1011 "bap_source" 1012 "hfp_ag" 1013 "hfp_hf" 1014 "hsp_ag" 1015 "hsp_hs" 1016 ]; 1017 1018 "bluez5.codecs" = [ 1019 "aac" 1020 "aptx" 1021 "aptx_hd" 1022 "aptx_ll" 1023 "aptx_ll_duplex" 1024 "faststream" 1025 "faststream_duplex" 1026 "lc3" 1027 "lc3plus_h3" 1028 "ldac" 1029 "opus_05" 1030 "opus_05_51" 1031 "opus_05_71" 1032 "opus_05_duplex" 1033 "opus_05_pro" 1034 "sbc" 1035 "sbc_xq" 1036 ]; 1037 }; 1038 }; 1039 }; 1040 1041 raopOpenFirewall = true; 1042 }; 1043 1044 pulseaudio.enable = false; 1045 1046 phpfpm = { 1047 phpPackage = 1048 (pkgs.php.override { 1049 cgiSupport = true; 1050 cliSupport = true; 1051 fpmSupport = true; 1052 pearSupport = true; 1053 pharSupport = true; 1054 phpdbgSupport = true; 1055 argon2Support = true; 1056 cgotoSupport = true; 1057 staticSupport = true; 1058 ipv6Support = true; 1059 zendSignalsSupport = true; 1060 zendMaxExecutionTimersSupport = false; 1061 systemdSupport = true; 1062 valgrindSupport = true; 1063 ztsSupport = true; 1064 }).buildEnv 1065 { 1066 extensions = 1067 { 1068 enabled, 1069 all, 1070 }: 1071 enabled 1072 ++ (with all; [ 1073 bz2 1074 calendar 1075 ctype 1076 curl 1077 dba 1078 dom 1079 exif 1080 ffi 1081 fileinfo 1082 filter 1083 ftp 1084 gd 1085 iconv 1086 imagick 1087 imap 1088 mailparse 1089 memcached 1090 mysqli 1091 mysqlnd 1092 opcache 1093 openssl 1094 pcntl 1095 pdo 1096 pdo_mysql 1097 pdo_pgsql 1098 pgsql 1099 posix 1100 session 1101 sockets 1102 sodium 1103 systemd 1104 xdebug 1105 xml 1106 xmlreader 1107 xmlwriter 1108 xsl 1109 zip 1110 zlib 1111 ]); 1112 1113 extraConfig = config.services.phpfpm.phpOptions; 1114 }; 1115 1116 settings = { 1117 log_level = "warning"; 1118 }; 1119 1120 phpOptions = '' 1121 default_charset = "UTF-8" 1122 error_reporting = E_ALL 1123 display_errors = Off 1124 log_errors = On 1125 cgi.force_redirect = 1 1126 expose_php = Off 1127 file_uploads = On 1128 session.cookie_lifetime = 0 1129 session.use_cookies = 1 1130 session.use_only_cookies = 1 1131 session.use_strict_mode = 1 1132 session.cookie_httponly = 1 1133 session.cookie_secure = 1 1134 session.cookie_samesite = "Strict" 1135 session.gc_maxlifetime = 43200 1136 session.use_trans_sid = O 1137 session.cache_limiter = nocache 1138 xdebug.mode=debug 1139 ''; 1140 }; 1141 1142 avahi = { 1143 enable = true; 1144 package = ( 1145 pkgs.avahi.override { 1146 gtk3Support = true; 1147 } 1148 ); 1149 1150 ipv4 = true; 1151 ipv6 = true; 1152 1153 nssmdns4 = true; 1154 nssmdns6 = true; 1155 1156 wideArea = false; 1157 1158 publish = { 1159 enable = true; 1160 1161 domain = true; 1162 addresses = true; 1163 workstation = true; 1164 hinfo = true; 1165 userServices = true; 1166 }; 1167 1168 domainName = config.networking.domain; 1169 hostName = config.networking.hostName; 1170 1171 openFirewall = true; 1172 }; 1173 1174 openssh = { 1175 enable = true; 1176 package = ( 1177 pkgs.openssh.override { 1178 withPAM = true; 1179 linkOpenssl = true; 1180 isNixos = true; 1181 } 1182 ); 1183 1184 listenAddresses = [ 1185 { 1186 addr = "0.0.0.0"; 1187 } 1188 { 1189 addr = "::"; 1190 } 1191 ]; 1192 ports = [ 1193 22 1194 ]; 1195 allowSFTP = true; 1196 1197 banner = config.networking.fqdn; 1198 1199 authorizedKeysInHomedir = true; 1200 1201 settings = { 1202 PermitRootLogin = "yes"; 1203 PasswordAuthentication = true; 1204 X11Forwarding = false; 1205 StrictModes = true; 1206 UseDns = true; 1207 LogLevel = "ERROR"; 1208 }; 1209 1210 openFirewall = true; 1211 }; 1212 sshd.enable = true; 1213 1214 cockpit = { 1215 enable = true; 1216 package = pkgs.cockpit; 1217 1218 port = 9090; 1219 allowed-origins = [ 1220 "*" 1221 ]; 1222 1223 settings = { 1224 WebService = { 1225 AllowUnencrypted = false; 1226 1227 LoginTo = true; 1228 AllowMultiHost = true; 1229 }; 1230 }; 1231 1232 openFirewall = true; 1233 }; 1234 1235 blueman.enable = true; 1236 1237 printing = { 1238 enable = true; 1239 package = ( 1240 pkgs.cups.override { 1241 enableSystemd = true; 1242 } 1243 ); 1244 1245 drivers = with pkgs; [ 1246 (gutenprint.override { 1247 cupsSupport = true; 1248 }) 1249 gutenprintBin 1250 ]; 1251 1252 cups-pdf.enable = true; 1253 1254 listenAddresses = [ 1255 "*:631" 1256 ]; 1257 1258 allowFrom = [ 1259 "all" 1260 ]; 1261 1262 browsing = true; 1263 webInterface = true; 1264 1265 defaultShared = true; 1266 startWhenNeeded = true; 1267 1268 extraConf = '' 1269 DefaultLanguage en 1270 ServerName ${config.networking.fqdn} 1271 ServerAlias * 1272 ServerTokens Full 1273 ServerAdmin bitscoper@${config.networking.fqdn} 1274 BrowseLocalProtocols all 1275 BrowseWebIF On 1276 HostNameLookups On 1277 AccessLogLevel config 1278 AutoPurgeJobs Yes 1279 PreserveJobHistory Off 1280 PreserveJobFiles Off 1281 DirtyCleanInterval 30 1282 LogTimeFormat standard 1283 ''; 1284 1285 logLevel = "warn"; 1286 1287 openFirewall = true; 1288 }; 1289 ipp-usb.enable = true; 1290 system-config-printer.enable = true; 1291 1292 saned = { 1293 enable = true; 1294 }; 1295 1296 bind = { 1297 enable = false; 1298 package = pkgs.bind; 1299 1300 listenOn = [ 1301 "any" 1302 ]; 1303 ipv4Only = false; 1304 listenOnIpv6 = [ 1305 "any" 1306 ]; 1307 1308 cacheNetworks = [ 1309 "127.0.0.0/24" 1310 "::1/128" 1311 ]; 1312 1313 extraOptions = '' 1314 recursion no; 1315 ''; 1316 }; 1317 1318 memcached = { 1319 enable = true; 1320 listen = "*"; 1321 port = 11211; 1322 enableUnixSocket = false; 1323 maxMemory = 64; # Megabytes 1324 maxConnections = 256; 1325 }; 1326 1327 postgresql = { 1328 enable = true; 1329 package = ( 1330 pkgs.postgresql_17_jit.override { 1331 # curlSupport = true; 1332 # pamSupport = true; 1333 # systemdSupport = true; 1334 # uringSupport = true; 1335 } 1336 ); 1337 1338 enableTCPIP = true; 1339 1340 settings = pkgs.lib.mkForce { 1341 listen_addresses = "*"; 1342 port = 5432; 1343 jit = true; 1344 }; 1345 1346 authentication = pkgs.lib.mkOverride 10 '' 1347 local all all md5 1348 host all all 0.0.0.0/0 md5 1349 host all all ::/0 md5 1350 local replication all md5 1351 host replication all 0.0.0.0/0 md5 1352 host replication all ::/0 md5 1353 ''; 1354 1355 checkConfig = true; 1356 1357 initialScript = pkgs.writeText "initScript" '' 1358 ALTER USER postgres WITH PASSWORD '${secrets.password_1_of_bitscoper}'; 1359 ''; 1360 }; 1361 1362 mysql = { 1363 enable = true; 1364 package = pkgs.mariadb_118; 1365 1366 settings = { 1367 mysqld = { 1368 bind-address = "*"; 1369 port = 3306; 1370 1371 sql_mode = ""; 1372 }; 1373 }; 1374 1375 initialScript = pkgs.writeText "initScript" '' 1376 grant all privileges on *.* to 'root'@'%' identified by password '${secrets.hashed_password_1_of_bitscoper}' with grant option; 1377 DELETE FROM mysql.user WHERE `Host`='localhost' AND `User`='root'; 1378 flush privileges; 1379 ''; 1380 }; 1381 1382 postfix = { 1383 enable = true; 1384 1385 enableSmtp = true; 1386 enableSubmission = true; 1387 enableSubmissions = true; 1388 1389 virtualMapType = "pcre"; 1390 aliasMapType = "pcre"; 1391 enableHeaderChecks = true; 1392 1393 setSendmail = true; 1394 1395 settings = { 1396 main = { 1397 mydomain = config.networking.fqdn; 1398 myhostname = config.networking.fqdn; 1399 myorigin = config.networking.fqdn; 1400 }; 1401 }; 1402 }; 1403 1404 opendkim = { 1405 enable = true; 1406 1407 domains = "csl:${config.networking.fqdn}"; 1408 selector = "default"; 1409 1410 # settings = { }; 1411 }; 1412 1413 dovecot2 = { 1414 enable = true; 1415 1416 enableImap = true; 1417 enableLmtp = true; 1418 enablePop3 = false; 1419 protocols = [ 1420 "imap" 1421 "lmtp" 1422 ]; 1423 1424 enableQuota = true; 1425 quotaPort = "12340"; 1426 1427 enableDHE = true; 1428 1429 createMailUser = true; 1430 1431 enablePAM = true; 1432 showPAMFailure = true; 1433 1434 # pluginSettings = { }; 1435 }; 1436 1437 icecast = { 1438 enable = true; 1439 1440 hostname = config.networking.fqdn; 1441 listen = { 1442 address = "0.0.0.0"; 1443 port = 17101; 1444 }; 1445 1446 user = "nobody"; 1447 group = "nogroup"; 1448 1449 admin = { 1450 user = "bitscoper"; 1451 password = secrets.password_1_of_bitscoper; 1452 }; 1453 1454 extraConf = '' 1455 <location>${config.networking.fqdn}</location> 1456 <admin>bitscoper@${config.networking.fqdn}</admin> 1457 <authentication> 1458 <source-password>${secrets.password_2_of_bitscoper}</source-password> 1459 <relay-password>${secrets.password_2_of_bitscoper}</relay-password> 1460 </authentication> 1461 <directory> 1462 <yp-url-timeout>15</yp-url-timeout> 1463 <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url> 1464 </directory> 1465 <logging> 1466 <loglevel>2</loglevel> 1467 </logging> 1468 <server-id>${config.networking.fqdn}</server-id> 1469 ''; # <loglevel>2</loglevel> = Warn 1470 1471 logDir = "/var/log/icecast/"; 1472 }; 1473 1474 jellyfin = { 1475 enable = true; 1476 package = pkgs.jellyfin; 1477 1478 openFirewall = true; 1479 }; 1480 1481 ollama = { 1482 enable = true; 1483 package = pkgs.ollama; 1484 1485 host = "0.0.0.0"; 1486 port = 11434; 1487 openFirewall = true; 1488 }; 1489 1490 tailscale = { 1491 enable = true; 1492 package = pkgs.tailscale; 1493 1494 disableTaildrop = false; 1495 1496 port = 0; # 0 = Automatic 1497 openFirewall = true; 1498 }; 1499 1500 kubernetes = { 1501 package = pkgs.kubernetes; 1502 }; 1503 1504 logrotate = { 1505 enable = true; 1506 1507 checkConfig = true; 1508 allowNetworking = true; 1509 }; 1510 }; 1511 1512 programs = { 1513 command-not-found.enable = true; 1514 1515 nix-ld = { 1516 enable = true; 1517 package = pkgs.nix-ld; 1518 1519 libraries = 1520 options.programs.nix-ld.libraries.default 1521 ++ (with pkgs; [ 1522 glib.out 1523 llvmPackages.stdenv.cc.cc.lib 1524 stdenv.cc.cc.lib 1525 ]); 1526 }; 1527 1528 java = { 1529 enable = true; 1530 package = ( 1531 pkgs.jdk24.override { 1532 enableGtk = true; 1533 } 1534 ); 1535 1536 binfmt = true; 1537 }; 1538 1539 appimage = { 1540 enable = true; 1541 package = ( 1542 pkgs.appimage-run.override { 1543 extraPkgs = 1544 pkgs: with pkgs; [ 1545 libepoxy 1546 ]; 1547 } 1548 ); 1549 1550 binfmt = true; 1551 }; 1552 1553 uwsm = { 1554 enable = true; 1555 package = ( 1556 pkgs.uwsm.override { 1557 fumonSupport = true; 1558 uuctlSupport = true; 1559 uwsmAppSupport = true; 1560 } 1561 ); 1562 }; 1563 1564 hyprland = { 1565 enable = true; 1566 package = ( 1567 pkgs.hyprland.override { 1568 enableXWayland = true; 1569 wrapRuntimeDeps = true; 1570 } 1571 ); 1572 portalPackage = pkgs.xdg-desktop-portal-hyprland; 1573 1574 withUWSM = true; 1575 xwayland.enable = true; 1576 }; 1577 1578 xwayland.enable = true; 1579 1580 bash = { 1581 completion = { 1582 enable = true; 1583 package = pkgs.bash-completion; 1584 }; 1585 1586 enableLsColors = true; 1587 1588 undistractMe = { 1589 enable = true; 1590 playSound = true; 1591 }; 1592 1593 # shellAliases = { }; 1594 1595 # loginShellInit = ''''; 1596 # shellInit = ''''; 1597 1598 interactiveShellInit = '' 1599 PROMPT_COMMAND="history -a" 1600 ''; 1601 }; 1602 1603 fish = { 1604 enable = true; 1605 package = pkgs.fish; 1606 1607 vendor = { 1608 config.enable = true; 1609 functions.enable = true; 1610 completions.enable = true; 1611 }; 1612 1613 # shellAbbrs = { }; 1614 # shellAliases = { }; 1615 1616 # promptInit = ''''; 1617 # loginShellInit = ''''; 1618 # shellInit = ''''; 1619 1620 interactiveShellInit = '' 1621 if command -q nix-your-shell 1622 nix-your-shell fish | source 1623 end 1624 function save_history --on-event fish_prompt 1625 history --save 1626 end 1627 ''; 1628 }; 1629 1630 zoxide = { 1631 enable = true; 1632 package = ( 1633 pkgs.zoxide.override { 1634 withFzf = true; 1635 } 1636 ); 1637 1638 enableBashIntegration = true; 1639 enableFishIntegration = true; 1640 1641 flags = [ 1642 "--cmd cd" 1643 ]; 1644 }; 1645 1646 direnv = { 1647 enable = true; 1648 package = pkgs.direnv; 1649 1650 nix-direnv.enable = true; 1651 loadInNixShell = true; 1652 1653 enableBashIntegration = true; 1654 enableFishIntegration = true; 1655 1656 silent = false; 1657 }; 1658 1659 nix-index = { 1660 package = pkgs.nix-index; 1661 1662 enableBashIntegration = true; 1663 enableFishIntegration = true; 1664 }; 1665 1666 gnupg = { 1667 package = ( 1668 pkgs.gnupg.override { 1669 guiSupport = true; 1670 withTpm2Tss = true; 1671 } 1672 ); 1673 1674 agent = { 1675 enable = true; 1676 1677 enableBrowserSocket = true; 1678 enableExtraSocket = true; 1679 enableSSHSupport = false; 1680 1681 pinentryPackage = ( 1682 pkgs.pinentry-gtk2.override { 1683 withLibsecret = true; 1684 } 1685 ); 1686 }; 1687 1688 dirmngr.enable = true; 1689 }; 1690 1691 ssh = { 1692 package = ( 1693 pkgs.openssh.override { 1694 withPAM = true; 1695 linkOpenssl = true; 1696 isNixos = true; 1697 } 1698 ); 1699 1700 startAgent = false; # `services.gnome.gcr-ssh-agent.enable' and `programs.ssh.startAgent' cannot both be enabled at the same time. 1701 agentTimeout = null; 1702 }; 1703 1704 git = { 1705 enable = true; 1706 package = ( 1707 pkgs.gitFull.override { 1708 svnSupport = true; 1709 guiSupport = true; 1710 withManual = true; 1711 withpcre2 = true; 1712 sendEmailSupport = true; 1713 withLibsecret = true; 1714 withSsh = true; 1715 } 1716 ); 1717 1718 lfs = { 1719 enable = true; 1720 package = pkgs.git-lfs; 1721 1722 enablePureSSHTransfer = true; 1723 }; 1724 1725 prompt.enable = true; 1726 1727 config = { 1728 init.defaultBranch = "main"; 1729 1730 credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret"; 1731 1732 user = { 1733 name = "Abdullah As-Sadeed"; 1734 email = "bitscoper@gmail.com"; 1735 }; 1736 }; 1737 }; 1738 1739 usbtop.enable = true; 1740 1741 adb.enable = true; 1742 1743 nano = { 1744 enable = true; 1745 package = pkgs.nano; 1746 1747 syntaxHighlight = true; 1748 1749 nanorc = '' 1750 set linenumbers 1751 set softwrap 1752 set indicator 1753 set autoindent 1754 ''; 1755 }; 1756 1757 bat = { 1758 enable = true; 1759 package = pkgs.bat; 1760 extraPackages = with pkgs.bat-extras; [ 1761 batdiff 1762 batgrep 1763 batman 1764 batpipe 1765 batwatch 1766 prettybat 1767 ]; 1768 }; 1769 1770 gnome-disks.enable = true; 1771 system-config-printer.enable = true; 1772 seahorse.enable = true; 1773 1774 nm-applet = { 1775 enable = true; 1776 indicator = true; 1777 }; 1778 1779 nautilus-open-any-terminal = { 1780 enable = true; 1781 terminal = "tilix"; 1782 }; 1783 1784 file-roller.enable = true; 1785 1786 firefox = { 1787 enable = true; 1788 package = pkgs.firefox-devedition; 1789 languagePacks = [ 1790 "ar" 1791 "bn" 1792 "en-US" 1793 ]; 1794 1795 # nativeMessagingHosts = { 1796 # packages = with pkgs; [ 1797 # (pkgs.keepassxc.override { 1798 # withKeePassBrowser = true; 1799 # withKeePassBrowserPasskeys = true; 1800 # withKeePassFDOSecrets = true; 1801 # withKeePassKeeShare = true; 1802 # withKeePassNetworking = true; 1803 # withKeePassSSHAgent = true; 1804 # withKeePassYubiKey = true; 1805 # }) 1806 # ]; 1807 # }; 1808 1809 policies = { 1810 Extensions = { 1811 Install = [ 1812 "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi" 1813 "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi" 1814 "https://addons.mozilla.org/firefox/downloads/latest/languagetool/latest.xpi" 1815 "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi" 1816 "https://addons.mozilla.org/firefox/downloads/latest/search_by_image/latest.xpi" 1817 "https://addons.mozilla.org/firefox/downloads/latest/simple-mass-downloader/latest.xpi" 1818 "https://addons.mozilla.org/firefox/downloads/latest/single-file/latest.xpi" 1819 "https://addons.mozilla.org/firefox/downloads/latest/tab-disguiser/latest.xpi" 1820 "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" 1821 "https://addons.mozilla.org/firefox/downloads/latest/zjm-whatfont/latest.xpi" 1822 ]; 1823 1824 Locked = [ 1825 "@testpilot-containers" # "Firefox Multi-Account Containers" 1826 "jid1-BoFifL9Vbdl2zQ@jetpack" # "Decentraleyes" 1827 "uBlock0@raymondhill.net" # "uBlock Origin" 1828 ]; 1829 }; 1830 }; 1831 1832 # autoConfig = ''''; 1833 1834 preferences = { 1835 "browser.contentblocking.category" = "strict"; 1836 "browser.search.region" = "BD"; 1837 "browser.search.suggest.enabled.private" = true; 1838 "dom.security.https_only_mode" = true; 1839 "privacy.globalprivacycontrol.enabled" = true; 1840 "security.warn_submit_secure_to_insecure" = true; 1841 # "privacy.fingerprintingProtection" = true; 1842 # "privacy.trackingprotection.enabled" = true; 1843 }; 1844 preferencesStatus = "locked"; 1845 }; 1846 1847 thunderbird = { 1848 enable = true; 1849 package = pkgs.thunderbird-latest; 1850 1851 # preferences = { }; 1852 }; 1853 1854 obs-studio = { 1855 enable = true; 1856 package = ( 1857 pkgs.obs-studio.override { 1858 scriptingSupport = true; 1859 alsaSupport = true; 1860 pulseaudioSupport = true; 1861 browserSupport = true; 1862 pipewireSupport = true; 1863 withFdk = true; 1864 } 1865 ); 1866 1867 enableVirtualCamera = true; 1868 1869 plugins = with pkgs.obs-studio-plugins; [ 1870 obs-3d-effect 1871 obs-backgroundremoval 1872 obs-composite-blur 1873 obs-gradient-source 1874 obs-gstreamer 1875 obs-move-transition 1876 obs-multi-rtmp 1877 obs-mute-filter 1878 obs-pipewire-audio-capture 1879 obs-scale-to-sound 1880 obs-source-clone 1881 obs-source-record 1882 obs-source-switcher 1883 obs-text-pthread 1884 obs-transition-table 1885 obs-vaapi 1886 obs-vertical-canvas 1887 obs-vkcapture 1888 ]; 1889 }; 1890 1891 ghidra = { 1892 enable = true; 1893 package = pkgs.ghidra; 1894 gdb = true; 1895 }; 1896 1897 wireshark = { 1898 enable = true; 1899 package = pkgs.wireshark; 1900 1901 dumpcap.enable = true; 1902 usbmon.enable = true; 1903 }; 1904 1905 localsend = { 1906 enable = true; 1907 package = pkgs.localsend; 1908 1909 openFirewall = true; 1910 }; 1911 1912 steam = { 1913 enable = true; 1914 package = pkgs.steam; 1915 1916 extraCompatPackages = with pkgs; [ 1917 proton-ge-bin 1918 ]; 1919 1920 localNetworkGameTransfers.openFirewall = true; 1921 remotePlay.openFirewall = true; 1922 dedicatedServer.openFirewall = true; 1923 }; # Unfree 1924 1925 virt-manager = { 1926 enable = true; 1927 package = ( 1928 pkgs.virt-manager.override { 1929 spiceSupport = true; 1930 } 1931 ); 1932 }; 1933 1934 dconf = { 1935 enable = true; 1936 profiles.user.databases = [ 1937 { 1938 lockAll = true; 1939 1940 settings = { 1941 "org/gnome/desktop/interface" = { 1942 color-scheme = "prefer-dark"; 1943 }; 1944 1945 "com/saivert/pwvucontrol" = { 1946 beep-on-volume-changes = true; 1947 enable-overamplification = true; 1948 }; 1949 1950 "com/gexperts/Tilix" = { 1951 auto-hide-mouse = false; 1952 close-with-last-session = false; 1953 control-scroll-zoom = true; 1954 enable-wide-handle = true; 1955 encodings = [ 1956 "UTF-8" 1957 ]; 1958 focus-follow-mouse = true; 1959 middle-click-close = false; 1960 new-instance-mode = "new-window"; 1961 paste-strip-first-char = false; 1962 paste-strip-trailing-whitespace = false; 1963 tab-position = "top"; 1964 terminal-title-show-when-single = true; 1965 terminal-title-style = "normal"; 1966 theme-variant = "dark"; 1967 use-overlay-scrollbar = false; 1968 window-save-state = false; 1969 window-style = "normal"; 1970 }; 1971 1972 "org/gnome/desktop/privacy" = { 1973 remember-app-usage = false; 1974 remember-recent-files = false; 1975 remove-old-temp-files = true; 1976 remove-old-trash-files = true; 1977 report-technical-problems = false; 1978 send-software-usage-stats = false; 1979 usb-protection = true; 1980 }; 1981 "org/gtk/gtk4/settings/file-chooser" = { 1982 sort-directories-first = true; 1983 }; 1984 "org/gnome/nautilus/preferences" = { 1985 click-policy = "double"; 1986 recursive-search = "always"; 1987 show-create-link = true; 1988 show-delete-permanently = true; 1989 show-directory-item-counts = "always"; 1990 show-image-thumbnails = "always"; 1991 date-time-format = "simple"; 1992 }; 1993 "org/gnome/nautilus/icon-view" = { 1994 captions = [ 1995 "size" 1996 "date_modified" 1997 "none" 1998 ]; 1999 }; 2000 2001 "org/gnome/file-roller/ui" = { 2002 view-sidebar = true; 2003 }; 2004 2005 "org/gnome/eog/plugins" = { 2006 active-plugins = [ 2007 "fullscreen" 2008 "reload" 2009 "statusbar-date" 2010 ]; 2011 }; 2012 "org/gnome/eog/ui" = { 2013 image-gallery = false; 2014 sidebar = true; 2015 statusbar = true; 2016 }; 2017 "org/gnome/eog/view" = { 2018 autorotate = true; 2019 extrapolate = true; 2020 interpolate = true; 2021 transparency = "checked"; 2022 use-background-color = false; 2023 }; 2024 "org/gnome/eog/fullscreen" = { 2025 loop = false; 2026 upscale = false; 2027 }; 2028 2029 "com/github/huluti/Curtail" = { 2030 file-attributes = true; 2031 metadata = false; 2032 new-file = true; 2033 recursive = true; 2034 }; 2035 2036 "com/github/tenderowl/frog" = { 2037 telemetry = false; 2038 }; 2039 2040 "org/gnome/meld" = { 2041 enable-space-drawer = true; 2042 highlight-current-line = true; 2043 highlight-syntax = true; 2044 prefer-dark-theme = true; 2045 show-line-numbers = true; 2046 show-overview-map = true; 2047 wrap-mode = "word"; 2048 }; 2049 2050 "io/gitlab/adhami3310/Converter" = { 2051 show-less-popular = true; 2052 }; 2053 2054 "io/github/amit9838/mousam" = { 2055 unit = "metric"; 2056 use-24h-clock = false; 2057 use-gradient-bg = true; 2058 }; 2059 2060 "io/missioncenter/MissionCenter" = { 2061 apps-page-core-count-affects-percentages = true; 2062 apps-page-merged-process-stats = false; 2063 apps-page-remember-sorting = false; 2064 performance-page-network-dynamic-scaling = true; 2065 performance-smooth-graphs = false; 2066 window-interface-style = "dark"; 2067 }; 2068 2069 "org/virt-manager/virt-manager" = { 2070 xmleditor-enabled = true; 2071 }; 2072 "org/virt-manager/virt-manager/connections" = { 2073 autoconnect = [ 2074 "qemu:///system" 2075 ]; 2076 uris = [ 2077 "qemu:///system" 2078 ]; 2079 }; 2080 "org/virt-manager/virt-manager/new-vm" = { 2081 cpu-default = "host-passthrough"; 2082 }; 2083 "org/virt-manager/virt-manager/console" = { 2084 auto-redirect = false; 2085 autoconnect = true; 2086 }; 2087 "org/virt-manager/virt-manager/stats" = { 2088 enable-cpu-poll = true; 2089 enable-disk-poll = true; 2090 enable-memory-poll = true; 2091 enable-net-poll = true; 2092 }; 2093 "org/virt-manager/virt-manager/vmlist-fields" = { 2094 cpu-usage = true; 2095 disk-usage = true; 2096 host-cpu-usage = true; 2097 memory-usage = true; 2098 network-traffic = true; 2099 }; 2100 "org/virt-manager/virt-manager/confirm" = { 2101 delete-storage = true; 2102 forcepoweroff = true; 2103 pause = true; 2104 poweroff = true; 2105 removedev = true; 2106 unapplied-dev = true; 2107 }; 2108 }; 2109 } 2110 ]; 2111 }; 2112 }; 2113 2114 fonts = { 2115 enableDefaultPackages = false; 2116 packages = with pkgs; [ 2117 corefonts # Unfree 2118 nerd-fonts.noto 2119 noto-fonts 2120 noto-fonts-cjk-sans 2121 noto-fonts-cjk-serif 2122 noto-fonts-color-emoji 2123 noto-fonts-lgc-plus 2124 ]; 2125 2126 fontconfig = { 2127 enable = true; 2128 2129 allowBitmaps = true; 2130 allowType1 = false; 2131 cache32Bit = true; 2132 2133 defaultFonts = { 2134 monospace = [ 2135 font_preferences.name.mono 2136 ]; 2137 2138 sansSerif = [ 2139 font_preferences.name.sans_serif 2140 ]; 2141 2142 serif = [ 2143 font_preferences.name.serif 2144 ]; 2145 2146 emoji = [ 2147 font_preferences.name.emoji 2148 ]; 2149 }; 2150 2151 includeUserConf = true; 2152 }; 2153 }; 2154 2155 environment = { 2156 enableDebugInfo = false; 2157 2158 enableAllTerminfo = true; 2159 2160 wordlist = { 2161 enable = true; 2162 # lists = ; 2163 }; 2164 2165 homeBinInPath = true; 2166 localBinInPath = true; 2167 2168 stub-ld.enable = true; 2169 2170 variables = { 2171 ANDROID_SDK_ROOT = android_sdk_path; 2172 ANDROID_HOME = android_sdk_path; 2173 2174 LD_LIBRARY_PATH = lib.mkForce "${pkgs.lib.makeLibraryPath (with pkgs; [ sqlite ])}:$LD_LIBRARY_PATH"; 2175 }; 2176 2177 sessionVariables = { 2178 NIXOS_OZONE_WL = "1"; 2179 }; 2180 2181 shellAliases = { 2182 fetch_upgrade_data = "sudo nix-channel --update && sudo nix-env -u --always"; 2183 2184 upgrade = "sudo nix-channel --update && sudo nix-env -u --always && sudo nixos-rebuild switch --refresh --install-bootloader --upgrade-all"; 2185 2186 clean_upgrade = "sudo nix-channel --update && sudo nix-env -u --always && sudo rm -rf /nix/var/nix/gcroots/auto/* && sudo nix-env --delete-generations old && sudo nix-collect-garbage -d && sudo nix-store --gc && sudo nix-store --optimise && sudo nixos-rebuild switch --refresh --install-bootloader --upgrade-all"; 2187 }; 2188 2189 # extraInit = ''''; 2190 # loginShellInit = ''''; 2191 # shellInit = ''''; 2192 # interactiveShellInit = ''''; 2193 2194 systemPackages = 2195 with pkgs; 2196 [ 2197 # gpredicts # Build Failure 2198 # metadata-cleaner # Build Failure 2199 # natron # Marked Broken 2200 # reiser4progs # Marked Broken 2201 above 2202 acl 2203 acpidump-all 2204 addlicense 2205 agi # Cannot find libswt 2206 aircrack-ng 2207 alpaca 2208 alsa-plugins 2209 alsa-tools 2210 alsa-utils 2211 alsa-utils-nhlt 2212 android_sdk # Custom 2213 android-backup-extractor 2214 android-tools 2215 apfsprogs 2216 apkeep 2217 apkleaks 2218 arduino-cli 2219 arduino-ide 2220 arduino-language-server 2221 arj 2222 armitage 2223 audacity 2224 autopsy 2225 avrdude 2226 baobab 2227 bash-language-server 2228 bcachefs-tools 2229 binary 2230 binwalk 2231 bleachbit 2232 bluez-tools 2233 brightnessctl 2234 btop 2235 btrfs-assistant 2236 btrfs-progs 2237 bulk_extractor 2238 bustle 2239 butt 2240 bzip3 2241 cameractrls-gtk4 2242 celestia 2243 certbot-full 2244 clang 2245 clang-analyzer 2246 clang-tools 2247 clinfo 2248 cliphist 2249 cloc 2250 cmake 2251 cmake-language-server 2252 collision 2253 cpio 2254 cramfsprogs 2255 cryptsetup 2256 ctop 2257 cups-filters 2258 cups-printers 2259 curtail 2260 cve-bin-tool 2261 cvehound 2262 d-spy 2263 darktable 2264 dart 2265 dbeaver-bin 2266 dconf-editor 2267 dconf2nix 2268 debase 2269 dig 2270 dmg2img 2271 dmidecode 2272 dnsrecon 2273 docker-language-server 2274 dosfstools 2275 dropwatch 2276 e2fsprogs 2277 efibootmgr 2278 eog 2279 esptool 2280 evtest 2281 evtest-qt 2282 exfatprogs 2283 f2fs-tools 2284 ferrishot 2285 ffmpegthumbnailer 2286 fh 2287 file 2288 fileinfo 2289 filezilla 2290 fish-lsp 2291 flake-checker 2292 flare-floss 2293 flightgear 2294 flutter 2295 fontfor 2296 fritzing 2297 fstl 2298 gcc15 2299 gdb 2300 gimp3-with-plugins 2301 git-filter-repo 2302 github-changelog-generator 2303 gnome-characters 2304 gnome-clocks 2305 gnome-decoder 2306 gnome-font-viewer 2307 gnome-frog 2308 gnome-graphs 2309 gnome-logs 2310 gnome-nettool 2311 gnugrep 2312 gnumake 2313 gnused 2314 gnutar 2315 gource 2316 gparted 2317 guestfs-tools 2318 gzip 2319 hashcat 2320 hashcat-utils 2321 hashes 2322 hdparm 2323 hfsprogs 2324 hieroglyphic 2325 host 2326 hw-probe 2327 hydra-check 2328 hyprls 2329 hyprpicker 2330 i2c-tools 2331 iaito 2332 iftop 2333 indent 2334 inkscape-with-extensions 2335 inotify-tools 2336 input-leap 2337 iotop-c 2338 jfsutils 2339 jmol 2340 john 2341 johnny 2342 jq 2343 kernel-hardening-checker 2344 kernelshark 2345 keyutils 2346 killall 2347 kind 2348 kmod 2349 kubectl 2350 kubectl-graph 2351 kubectl-tree 2352 kubectl-view-secret 2353 kubernetes-helm 2354 letterpress 2355 lhasa 2356 libreoffice-fresh 2357 libva-utils 2358 linux-exploit-suggester 2359 linuxConsoleTools 2360 linuxquota 2361 logdy 2362 logtop 2363 lrzip 2364 lsb-release 2365 lshw 2366 lsof 2367 lsscsi 2368 lssecret 2369 lvm2 2370 lynis 2371 lyto 2372 lz4 2373 lzip 2374 lzop 2375 macchanger 2376 mailcap 2377 masscan 2378 massdns 2379 mattermost-desktop 2380 md-lsp 2381 meld 2382 metasploit 2383 mfcuk 2384 mfoc 2385 minikube 2386 mission-center 2387 mousam 2388 mtools 2389 mtr-gui 2390 nautilus 2391 nethogs 2392 networkmanagerapplet 2393 nikto 2394 nilfs-utils 2395 ninja 2396 nix-diff 2397 nix-info 2398 nix-prefetch-github 2399 nixd 2400 nixfmt-rfc-style 2401 nixpkgs-lint 2402 nixpkgs-review 2403 nmap 2404 ntfs3g 2405 nuclei 2406 nvme-cli 2407 onionshare-gui 2408 openafs 2409 opendmarc 2410 openh264 2411 openssl 2412 p7zip 2413 paper-clip 2414 patchelf 2415 pciutils 2416 pdf4qt 2417 pdfarranger 2418 pg_top 2419 pinta 2420 pkg-config 2421 platformio 2422 playerctl 2423 podman-compose 2424 podman-desktop 2425 postgres-lsp 2426 prctl 2427 profile-cleaner 2428 progress 2429 protonvpn-gui 2430 psmisc 2431 pwvucontrol 2432 qalculate-gtk 2433 qemu-utils 2434 qpwgraph 2435 qr-backup 2436 radare2 2437 reiserfsprogs 2438 rpi-imager 2439 rpmextract 2440 rpPPPoE 2441 rtl-sdr-librtlsdr 2442 rtl-sdr-osmocom 2443 rzip 2444 scalpel 2445 scrcpy 2446 screen 2447 sdrangel 2448 selectdefaultapplication 2449 serial-studio 2450 share-preview 2451 sherlock 2452 simple-scan 2453 sipvicious 2454 sleuthkit 2455 smartmontools 2456 sof-tools 2457 songrec 2458 soundconverter 2459 sox 2460 spooftooph 2461 sslscan 2462 stegseek 2463 subfinder 2464 subtitleedit 2465 switcheroo 2466 symlinks 2467 syshud 2468 systemd-lsp 2469 szyszka 2470 telegram-desktop 2471 telegraph 2472 terminal-colors 2473 terminaltexteffects 2474 texliveFull 2475 theharvester 2476 tilix 2477 time 2478 tpm2-tools 2479 traitor 2480 tree 2481 trufflehog 2482 trustymail 2483 udftools 2484 udiskie 2485 unar 2486 universal-android-debloater # uad-ng 2487 unix-privesc-check 2488 unzip 2489 upnp-router-control 2490 upscayl 2491 usbip-ssh 2492 usbutils 2493 util-linux 2494 virt-top 2495 virt-v2v 2496 virtiofsd 2497 vulkan-caps-viewer 2498 vulkan-tools 2499 wafw00f 2500 waycheck 2501 waydroid-helper 2502 wayland-utils 2503 waylevel 2504 wayvnc 2505 webfontkitgenerator 2506 wev 2507 whatfiles 2508 which 2509 whois 2510 wl-clipboard 2511 wpprobe 2512 wvkbd # wvkbd-mobintl 2513 x2goclient 2514 xdg-user-dirs 2515 xdg-utils 2516 xfsdump 2517 xfsprogs 2518 xfstests 2519 xoscope 2520 xz 2521 yaml-language-server 2522 yara-x 2523 zenity 2524 zenmap 2525 zfs 2526 zip 2527 zpaq 2528 zstd 2529 (blender.override { 2530 colladaSupport = true; 2531 jackaudioSupport = true; 2532 openUsdSupport = true; 2533 spaceNavSupport = true; 2534 waylandSupport = true; 2535 }) 2536 (coreutils-full.override { 2537 aclSupport = true; 2538 withOpenssl = true; 2539 }) 2540 (curlFull.override { 2541 brotliSupport = true; 2542 c-aresSupport = true; 2543 gsaslSupport = true; 2544 gssSupport = true; 2545 http2Support = true; 2546 http3Support = true; 2547 websocketSupport = true; 2548 idnSupport = true; 2549 opensslSupport = true; 2550 pslSupport = true; 2551 rtmpSupport = true; 2552 scpSupport = true; 2553 zlibSupport = true; 2554 zstdSupport = true; 2555 }) 2556 (ffmpeg-full.override { 2557 withAlsa = true; 2558 withAom = true; 2559 withAribb24 = true; 2560 withAribcaption = true; 2561 withAss = true; 2562 withAvisynth = true; 2563 withBluray = true; 2564 withBs2b = true; 2565 withBzlib = true; 2566 withCaca = true; 2567 withCdio = true; 2568 withCelt = true; 2569 withChromaprint = true; 2570 withCodec2 = true; 2571 withDav1d = true; 2572 withDavs2 = true; 2573 withDc1394 = true; 2574 withDrm = true; 2575 withDvdnav = true; 2576 withDvdread = true; 2577 withFlite = true; 2578 withFontconfig = true; 2579 withFreetype = true; 2580 withFrei0r = true; 2581 withFribidi = true; 2582 withGme = true; 2583 withGnutls = true; 2584 withGsm = true; 2585 withHarfbuzz = true; 2586 withIconv = true; 2587 withIlbc = true; 2588 withJack = true; 2589 withJxl = true; 2590 withKvazaar = true; 2591 withLadspa = true; 2592 withLc3 = true; 2593 withLcevcdec = true; 2594 withLcms2 = true; 2595 withLzma = true; 2596 withModplug = true; 2597 withMp3lame = true; 2598 withMysofa = true; 2599 withOpenal = true; 2600 withOpencl = true; 2601 withOpencoreAmrnb = true; 2602 withOpencoreAmrwb = true; 2603 withOpengl = true; 2604 withOpenh264 = true; 2605 withOpenjpeg = true; 2606 withOpenmpt = true; 2607 withOpus = true; 2608 withPlacebo = true; 2609 withPulse = true; 2610 withQrencode = true; 2611 withQuirc = true; 2612 withRav1e = true; 2613 withRist = true; 2614 withRtmp = true; 2615 withRubberband = true; 2616 withSamba = true; 2617 withSdl2 = true; 2618 withShaderc = true; 2619 withShine = true; 2620 withSnappy = true; 2621 withSoxr = true; 2622 withSpeex = true; 2623 withSrt = true; 2624 withSsh = true; 2625 withSvg = true; 2626 withSvtav1 = true; 2627 withTheora = true; 2628 withTwolame = true; 2629 withUavs3d = true; 2630 withV4l2 = true; 2631 withV4l2M2m = true; 2632 withVaapi = true; 2633 withVdpau = true; 2634 withVidStab = true; 2635 withVmaf = true; 2636 withVoAmrwbenc = true; 2637 withVorbis = true; 2638 withVpx = true; 2639 withVulkan = true; 2640 withVvenc = true; 2641 withWebp = true; 2642 withX264 = true; 2643 withX265 = true; 2644 withXavs = true; 2645 withXavs2 = true; 2646 withXevd = true; 2647 withXeve = true; 2648 withXml2 = true; 2649 withXvid = true; 2650 withZimg = true; 2651 withZlib = true; 2652 withZmq = true; 2653 withZvbi = true; 2654 2655 withUnfree = false; 2656 2657 withGrayscale = true; 2658 withSwscaleAlpha = true; 2659 withMultithread = true; 2660 withNetwork = true; 2661 }) 2662 (freecad.override { 2663 spaceNavSupport = true; 2664 }) 2665 (hardinfo2.override { 2666 printingSupport = true; 2667 }) 2668 (kicad.override { 2669 addons = with pkgs.kicadAddons; [ 2670 kikit 2671 kikit-library 2672 ]; 2673 stable = true; 2674 withNgspice = true; 2675 withScripting = true; 2676 with3d = false; # Build Failure 2677 withI18n = true; 2678 }) 2679 (python312Full.override { 2680 bluezSupport = true; 2681 mimetypesSupport = true; 2682 withReadline = true; 2683 }) 2684 (python313Full.override { 2685 bluezSupport = true; 2686 mimetypesSupport = true; 2687 withReadline = true; 2688 }) 2689 (qbittorrent.override { 2690 guiSupport = true; 2691 trackerSearch = true; 2692 webuiSupport = false; 2693 }) 2694 (sdrpp.override { 2695 airspy_source = true; 2696 airspyhf_source = true; 2697 bladerf_source = true; 2698 file_source = true; 2699 hackrf_source = true; 2700 limesdr_source = true; 2701 plutosdr_source = true; 2702 rfspace_source = true; 2703 rtl_sdr_source = true; 2704 rtl_tcp_source = true; 2705 soapy_source = true; 2706 spyserver_source = true; 2707 usrp_source = true; 2708 2709 audio_sink = true; 2710 network_sink = true; 2711 portaudio_sink = true; 2712 2713 m17_decoder = true; 2714 meteor_demodulator = true; 2715 2716 frequency_manager = true; 2717 recorder = true; 2718 rigctl_server = true; 2719 scanner = true; 2720 }) 2721 (spice-gtk.override { 2722 withPolkit = true; 2723 }) 2724 (tor-browser.override { 2725 libnotifySupport = true; 2726 waylandSupport = true; 2727 mediaSupport = true; 2728 audioSupport = true; 2729 pipewireSupport = true; 2730 pulseaudioSupport = true; 2731 libvaSupport = true; 2732 }) 2733 (virt-viewer.override { 2734 spiceSupport = true; 2735 }) 2736 (vlc.override { 2737 chromecastSupport = true; 2738 jackSupport = true; 2739 skins2Support = true; 2740 waylandSupport = true; 2741 }) 2742 (wget.override { 2743 withLibpsl = true; 2744 withOpenssl = true; 2745 }) 2746 config.services.phpfpm.phpPackage 2747 ] 2748 ++ (with unixtools; [ 2749 arp 2750 fdisk 2751 ifconfig 2752 netstat 2753 nettools 2754 ping 2755 route 2756 util-linux 2757 whereis 2758 ]) 2759 ++ (with fishPlugins; [ 2760 async-prompt 2761 autopair 2762 done 2763 fish-you-should-use 2764 sponge 2765 ]) 2766 ++ (with gst_all_1; [ 2767 (gst-libav.override { 2768 enableDocumentation = true; 2769 }) 2770 (gst-plugins-bad.override { 2771 enableZbar = true; 2772 opencvSupport = true; 2773 ldacbtSupport = true; 2774 webrtcAudioProcessingSupport = true; 2775 ajaSupport = true; 2776 openh264Support = true; 2777 enableGplPlugins = true; 2778 bluezSupport = true; 2779 microdnsSupport = true; 2780 enableDocumentation = true; 2781 guiSupport = true; 2782 }) 2783 (gst-plugins-base.override { 2784 enableWayland = true; 2785 enableAlsa = true; 2786 enableCdparanoia = true; 2787 enableDocumentation = true; 2788 }) 2789 (gst-plugins-good.override { 2790 gtkSupport = true; 2791 qt6Support = true; 2792 enableJack = true; 2793 enableWayland = true; 2794 enableDocumentation = true; 2795 }) 2796 (gst-plugins-ugly.override { 2797 enableGplPlugins = true; 2798 enableDocumentation = true; 2799 }) 2800 (gst-vaapi.override { 2801 enableDocumentation = true; 2802 }) 2803 (gstreamer.override { 2804 enableDocumentation = true; 2805 }) 2806 ]) 2807 ++ (with php84Packages; [ 2808 psysh 2809 ]) 2810 ++ (with texlivePackages; [ 2811 latexmk 2812 ]) 2813 ++ (with ghidra-extensions; [ 2814 findcrypt 2815 ghidra-delinker-extension 2816 ghidra-golanganalyzerextension 2817 ghidraninja-ghidra-scripts 2818 gnudisassembler 2819 lightkeeper 2820 machinelearning 2821 ret-sync 2822 sleighdevtools 2823 wasm 2824 ]) 2825 ++ config.boot.extraModulePackages; 2826 }; 2827 2828 xdg = { 2829 mime = { 2830 enable = true; 2831 2832 addedAssociations = config.xdg.mime.defaultApplications; 2833 2834 # removedAssociations = { }; 2835 2836 # https://www.iana.org/assignments/media-types/media-types.xhtml 2837 defaultApplications = { 2838 "inode/directory" = "nautilus.desktop"; 2839 2840 "text/1d-interleaved-parityfec" = "codium.desktop"; 2841 "text/cache-manifest" = "codium.desktop"; 2842 "text/calendar" = "codium.desktop"; 2843 "text/cql-expression" = "codium.desktop"; 2844 "text/cql-identifier" = "codium.desktop"; 2845 "text/cql" = "codium.desktop"; 2846 "text/css" = "codium.desktop"; 2847 "text/csv-schema" = "codium.desktop"; 2848 "text/csv" = "codium.desktop"; 2849 "text/dns" = "codium.desktop"; 2850 "text/encaprtp" = "codium.desktop"; 2851 "text/enriched" = "codium.desktop"; 2852 "text/example" = "codium.desktop"; 2853 "text/fhirpath" = "codium.desktop"; 2854 "text/flexfec" = "codium.desktop"; 2855 "text/fwdred" = "codium.desktop"; 2856 "text/gff3" = "codium.desktop"; 2857 "text/grammar-ref-list" = "codium.desktop"; 2858 "text/hl7v2" = "codium.desktop"; 2859 "text/html" = "codium.desktop"; 2860 "text/javascript" = "codium.desktop"; 2861 "text/jcr-cnd" = "codium.desktop"; 2862 "text/markdown" = "codium.desktop"; 2863 "text/mizar" = "codium.desktop"; 2864 "text/n3" = "codium.desktop"; 2865 "text/parameters" = "codium.desktop"; 2866 "text/parityfec" = "codium.desktop"; 2867 "text/plain" = "codium.desktop"; 2868 "text/provenance-notation" = "codium.desktop"; 2869 "text/prs.fallenstein.rst" = "codium.desktop"; 2870 "text/prs.lines.tag" = "codium.desktop"; 2871 "text/prs.prop.logic" = "codium.desktop"; 2872 "text/prs.texi" = "codium.desktop"; 2873 "text/raptorfec" = "codium.desktop"; 2874 "text/RED" = "codium.desktop"; 2875 "text/rfc822-headers" = "codium.desktop"; 2876 "text/richtext" = "codium.desktop"; 2877 "text/rtf" = "codium.desktop"; 2878 "text/rtp-enc-aescm128" = "codium.desktop"; 2879 "text/rtploopback" = "codium.desktop"; 2880 "text/rtx" = "codium.desktop"; 2881 "text/SGML" = "codium.desktop"; 2882 "text/shaclc" = "codium.desktop"; 2883 "text/shex" = "codium.desktop"; 2884 "text/spdx" = "codium.desktop"; 2885 "text/strings" = "codium.desktop"; 2886 "text/t140" = "codium.desktop"; 2887 "text/tab-separated-values" = "codium.desktop"; 2888 "text/troff" = "codium.desktop"; 2889 "text/turtle" = "codium.desktop"; 2890 "text/ulpfec" = "codium.desktop"; 2891 "text/uri-list" = "codium.desktop"; 2892 "text/vcard" = "codium.desktop"; 2893 "text/vnd.a" = "codium.desktop"; 2894 "text/vnd.abc" = "codium.desktop"; 2895 "text/vnd.ascii-art" = "codium.desktop"; 2896 "text/vnd.curl" = "codium.desktop"; 2897 "text/vnd.debian.copyright" = "codium.desktop"; 2898 "text/vnd.DMClientScript" = "codium.desktop"; 2899 "text/vnd.dvb.subtitle" = "codium.desktop"; 2900 "text/vnd.esmertec.theme-descriptor" = "codium.desktop"; 2901 "text/vnd.exchangeable" = "codium.desktop"; 2902 "text/vnd.familysearch.gedcom" = "codium.desktop"; 2903 "text/vnd.ficlab.flt" = "codium.desktop"; 2904 "text/vnd.fly" = "codium.desktop"; 2905 "text/vnd.fmi.flexstor" = "codium.desktop"; 2906 "text/vnd.gml" = "codium.desktop"; 2907 "text/vnd.graphviz" = "codium.desktop"; 2908 "text/vnd.hans" = "codium.desktop"; 2909 "text/vnd.hgl" = "codium.desktop"; 2910 "text/vnd.in3d.3dml" = "codium.desktop"; 2911 "text/vnd.in3d.spot" = "codium.desktop"; 2912 "text/vnd.IPTC.NewsML" = "codium.desktop"; 2913 "text/vnd.IPTC.NITF" = "codium.desktop"; 2914 "text/vnd.latex-z" = "codium.desktop"; 2915 "text/vnd.motorola.reflex" = "codium.desktop"; 2916 "text/vnd.ms-mediapackage" = "codium.desktop"; 2917 "text/vnd.net2phone.commcenter.command" = "codium.desktop"; 2918 "text/vnd.radisys.msml-basic-layout" = "codium.desktop"; 2919 "text/vnd.senx.warpscript" = "codium.desktop"; 2920 "text/vnd.sosi" = "codium.desktop"; 2921 "text/vnd.sun.j2me.app-descriptor" = "codium.desktop"; 2922 "text/vnd.trolltech.linguist" = "codium.desktop"; 2923 "text/vnd.typst" = "codium.desktop"; 2924 "text/vnd.vcf" = "codium.desktop"; 2925 "text/vnd.wap.si" = "codium.desktop"; 2926 "text/vnd.wap.sl" = "codium.desktop"; 2927 "text/vnd.wap.wml" = "codium.desktop"; 2928 "text/vnd.wap.wmlscript" = "codium.desktop"; 2929 "text/vnd.zoo.kcl" = "codium.desktop"; 2930 "text/vtt" = "codium.desktop"; 2931 "text/wgsl" = "codium.desktop"; 2932 "text/xml-external-parsed-entity" = "codium.desktop"; 2933 "text/xml" = "codium.desktop"; 2934 2935 "image/aces" = "org.gnome.eog.desktop"; 2936 "image/apng" = "org.gnome.eog.desktop"; 2937 "image/avci" = "org.gnome.eog.desktop"; 2938 "image/avcs" = "org.gnome.eog.desktop"; 2939 "image/avif" = "org.gnome.eog.desktop"; 2940 "image/bmp" = "org.gnome.eog.desktop"; 2941 "image/cgm" = "org.gnome.eog.desktop"; 2942 "image/dicom-rle" = "org.gnome.eog.desktop"; 2943 "image/dpx" = "org.gnome.eog.desktop"; 2944 "image/emf" = "org.gnome.eog.desktop"; 2945 "image/fits" = "org.gnome.eog.desktop"; 2946 "image/g3fax" = "org.gnome.eog.desktop"; 2947 "image/gif" = "org.gnome.eog.desktop"; 2948 "image/heic-sequence" = "org.gnome.eog.desktop"; 2949 "image/heic" = "org.gnome.eog.desktop"; 2950 "image/heif-sequence" = "org.gnome.eog.desktop"; 2951 "image/heif" = "org.gnome.eog.desktop"; 2952 "image/hej2k" = "org.gnome.eog.desktop"; 2953 "image/hsj2" = "org.gnome.eog.desktop"; 2954 "image/ief" = "org.gnome.eog.desktop"; 2955 "image/j2c" = "org.gnome.eog.desktop"; 2956 "image/jaii" = "org.gnome.eog.desktop"; 2957 "image/jais" = "org.gnome.eog.desktop"; 2958 "image/jls" = "org.gnome.eog.desktop"; 2959 "image/jp2" = "org.gnome.eog.desktop"; 2960 "image/jpeg" = "org.gnome.eog.desktop"; 2961 "image/jph" = "org.gnome.eog.desktop"; 2962 "image/jphc" = "org.gnome.eog.desktop"; 2963 "image/jpm" = "org.gnome.eog.desktop"; 2964 "image/jpx" = "org.gnome.eog.desktop"; 2965 "image/jxl" = "org.gnome.eog.desktop"; 2966 "image/jxr" = "org.gnome.eog.desktop"; 2967 "image/jxrA" = "org.gnome.eog.desktop"; 2968 "image/jxrS" = "org.gnome.eog.desktop"; 2969 "image/jxs" = "org.gnome.eog.desktop"; 2970 "image/jxsc" = "org.gnome.eog.desktop"; 2971 "image/jxsi" = "org.gnome.eog.desktop"; 2972 "image/jxss" = "org.gnome.eog.desktop"; 2973 "image/ktx" = "org.gnome.eog.desktop"; 2974 "image/ktx2" = "org.gnome.eog.desktop"; 2975 "image/naplps" = "org.gnome.eog.desktop"; 2976 "image/png" = "org.gnome.eog.desktop"; 2977 "image/prs.btif" = "org.gnome.eog.desktop"; 2978 "image/prs.pti" = "org.gnome.eog.desktop"; 2979 "image/pwg-raster" = "org.gnome.eog.desktop"; 2980 "image/svg+xml" = "org.gnome.eog.desktop"; 2981 "image/t38" = "org.gnome.eog.desktop"; 2982 "image/tiff-fx" = "org.gnome.eog.desktop"; 2983 "image/tiff" = "org.gnome.eog.desktop"; 2984 "image/vnd.adobe.photoshop" = "org.gnome.eog.desktop"; 2985 "image/vnd.airzip.accelerator.azv" = "org.gnome.eog.desktop"; 2986 "image/vnd.cns.inf2" = "org.gnome.eog.desktop"; 2987 "image/vnd.dece.graphic" = "org.gnome.eog.desktop"; 2988 "image/vnd.djvu" = "org.gnome.eog.desktop"; 2989 "image/vnd.dvb.subtitle" = "org.gnome.eog.desktop"; 2990 "image/vnd.dwg" = "org.gnome.eog.desktop"; 2991 "image/vnd.dxf" = "org.gnome.eog.desktop"; 2992 "image/vnd.fastbidsheet" = "org.gnome.eog.desktop"; 2993 "image/vnd.fpx" = "org.gnome.eog.desktop"; 2994 "image/vnd.fst" = "org.gnome.eog.desktop"; 2995 "image/vnd.fujixerox.edmics-mmr" = "org.gnome.eog.desktop"; 2996 "image/vnd.fujixerox.edmics-rlc" = "org.gnome.eog.desktop"; 2997 "image/vnd.globalgraphics.pgb" = "org.gnome.eog.desktop"; 2998 "image/vnd.microsoft.icon" = "org.gnome.eog.desktop"; 2999 "image/vnd.mix" = "org.gnome.eog.desktop"; 3000 "image/vnd.mozilla.apng" = "org.gnome.eog.desktop"; 3001 "image/vnd.ms-modi" = "org.gnome.eog.desktop"; 3002 "image/vnd.net-fpx" = "org.gnome.eog.desktop"; 3003 "image/vnd.pco.b16" = "org.gnome.eog.desktop"; 3004 "image/vnd.radiance" = "org.gnome.eog.desktop"; 3005 "image/vnd.sealed.png" = "org.gnome.eog.desktop"; 3006 "image/vnd.sealedmedia.softseal.gif" = "org.gnome.eog.desktop"; 3007 "image/vnd.sealedmedia.softseal.jpg" = "org.gnome.eog.desktop"; 3008 "image/vnd.svf" = "org.gnome.eog.desktop"; 3009 "image/vnd.tencent.tap" = "org.gnome.eog.desktop"; 3010 "image/vnd.valve.source.texture" = "org.gnome.eog.desktop"; 3011 "image/vnd.wap.wbmp" = "org.gnome.eog.desktop"; 3012 "image/vnd.xiff" = "org.gnome.eog.desktop"; 3013 "image/vnd.zbrush.pcx" = "org.gnome.eog.desktop"; 3014 "image/webp" = "org.gnome.eog.desktop"; 3015 "image/wmf" = "org.gnome.eog.desktop"; 3016 3017 "audio/1d-interleaved-parityfec" = "vlc.desktop"; 3018 "audio/32kadpcm" = "vlc.desktop"; 3019 "audio/3gpp" = "vlc.desktop"; 3020 "audio/3gpp2" = "vlc.desktop"; 3021 "audio/aac" = "vlc.desktop"; 3022 "audio/ac3" = "vlc.desktop"; 3023 "audio/AMR-WB" = "vlc.desktop"; 3024 "audio/amr-wb+" = "vlc.desktop"; 3025 "audio/AMR" = "vlc.desktop"; 3026 "audio/aptx" = "vlc.desktop"; 3027 "audio/asc" = "vlc.desktop"; 3028 "audio/ATRAC-ADVANCED-LOSSLESS" = "vlc.desktop"; 3029 "audio/ATRAC-X" = "vlc.desktop"; 3030 "audio/ATRAC3" = "vlc.desktop"; 3031 "audio/basic" = "vlc.desktop"; 3032 "audio/BV16" = "vlc.desktop"; 3033 "audio/BV32" = "vlc.desktop"; 3034 "audio/clearmode" = "vlc.desktop"; 3035 "audio/CN" = "vlc.desktop"; 3036 "audio/DAT12" = "vlc.desktop"; 3037 "audio/dls" = "vlc.desktop"; 3038 "audio/dsr-es201108" = "vlc.desktop"; 3039 "audio/dsr-es202050" = "vlc.desktop"; 3040 "audio/dsr-es202211" = "vlc.desktop"; 3041 "audio/dsr-es202212" = "vlc.desktop"; 3042 "audio/DV" = "vlc.desktop"; 3043 "audio/DVI4" = "vlc.desktop"; 3044 "audio/eac3" = "vlc.desktop"; 3045 "audio/encaprtp" = "vlc.desktop"; 3046 "audio/EVRC-QCP" = "vlc.desktop"; 3047 "audio/EVRC" = "vlc.desktop"; 3048 "audio/EVRC0" = "vlc.desktop"; 3049 "audio/EVRC1" = "vlc.desktop"; 3050 "audio/EVRCB" = "vlc.desktop"; 3051 "audio/EVRCB0" = "vlc.desktop"; 3052 "audio/EVRCB1" = "vlc.desktop"; 3053 "audio/EVRCNW" = "vlc.desktop"; 3054 "audio/EVRCNW0" = "vlc.desktop"; 3055 "audio/EVRCNW1" = "vlc.desktop"; 3056 "audio/EVRCWB" = "vlc.desktop"; 3057 "audio/EVRCWB0" = "vlc.desktop"; 3058 "audio/EVRCWB1" = "vlc.desktop"; 3059 "audio/EVS" = "vlc.desktop"; 3060 "audio/flac" = "vlc.desktop"; 3061 "audio/flexfec" = "vlc.desktop"; 3062 "audio/fwdred" = "vlc.desktop"; 3063 "audio/G711-0" = "vlc.desktop"; 3064 "audio/G719" = "vlc.desktop"; 3065 "audio/G722" = "vlc.desktop"; 3066 "audio/G7221" = "vlc.desktop"; 3067 "audio/G723" = "vlc.desktop"; 3068 "audio/G726-16" = "vlc.desktop"; 3069 "audio/G726-24" = "vlc.desktop"; 3070 "audio/G726-32" = "vlc.desktop"; 3071 "audio/G726-40" = "vlc.desktop"; 3072 "audio/G728" = "vlc.desktop"; 3073 "audio/G729" = "vlc.desktop"; 3074 "audio/G7291" = "vlc.desktop"; 3075 "audio/G729D" = "vlc.desktop"; 3076 "audio/G729E" = "vlc.desktop"; 3077 "audio/GSM-EFR" = "vlc.desktop"; 3078 "audio/GSM-HR-08" = "vlc.desktop"; 3079 "audio/GSM" = "vlc.desktop"; 3080 "audio/iLBC" = "vlc.desktop"; 3081 "audio/ip-mr_v2.5" = "vlc.desktop"; 3082 "audio/L16" = "vlc.desktop"; 3083 "audio/L20" = "vlc.desktop"; 3084 "audio/L24" = "vlc.desktop"; 3085 "audio/L8" = "vlc.desktop"; 3086 "audio/LPC" = "vlc.desktop"; 3087 "audio/matroska" = "vlc.desktop"; 3088 "audio/MELP" = "vlc.desktop"; 3089 "audio/MELP1200" = "vlc.desktop"; 3090 "audio/MELP2400" = "vlc.desktop"; 3091 "audio/MELP600" = "vlc.desktop"; 3092 "audio/mhas" = "vlc.desktop"; 3093 "audio/midi-clip" = "vlc.desktop"; 3094 "audio/mobile-xmf" = "vlc.desktop"; 3095 "audio/mp4" = "vlc.desktop"; 3096 "audio/MP4A-LATM" = "vlc.desktop"; 3097 "audio/mpa-robust" = "vlc.desktop"; 3098 "audio/MPA" = "vlc.desktop"; 3099 "audio/mpeg" = "vlc.desktop"; 3100 "audio/mpeg4-generic" = "vlc.desktop"; 3101 "audio/ogg" = "vlc.desktop"; 3102 "audio/opus" = "vlc.desktop"; 3103 "audio/parityfec" = "vlc.desktop"; 3104 "audio/PCMA-WB" = "vlc.desktop"; 3105 "audio/PCMA" = "vlc.desktop"; 3106 "audio/PCMU-WB" = "vlc.desktop"; 3107 "audio/PCMU" = "vlc.desktop"; 3108 "audio/prs.sid" = "vlc.desktop"; 3109 "audio/QCELP" = "vlc.desktop"; 3110 "audio/raptorfec" = "vlc.desktop"; 3111 "audio/RED" = "vlc.desktop"; 3112 "audio/rtp-enc-aescm128" = "vlc.desktop"; 3113 "audio/rtp-midi" = "vlc.desktop"; 3114 "audio/rtploopback" = "vlc.desktop"; 3115 "audio/rtx" = "vlc.desktop"; 3116 "audio/scip" = "vlc.desktop"; 3117 "audio/SMV-QCP" = "vlc.desktop"; 3118 "audio/SMV" = "vlc.desktop"; 3119 "audio/SMV0" = "vlc.desktop"; 3120 "audio/sofa" = "vlc.desktop"; 3121 "audio/sp-midi" = "vlc.desktop"; 3122 "audio/speex" = "vlc.desktop"; 3123 "audio/t140c" = "vlc.desktop"; 3124 "audio/t38" = "vlc.desktop"; 3125 "audio/telephone-event" = "vlc.desktop"; 3126 "audio/TETRA_ACELP_BB" = "vlc.desktop"; 3127 "audio/TETRA_ACELP" = "vlc.desktop"; 3128 "audio/tone" = "vlc.desktop"; 3129 "audio/TSVCIS" = "vlc.desktop"; 3130 "audio/UEMCLIP" = "vlc.desktop"; 3131 "audio/ulpfec" = "vlc.desktop"; 3132 "audio/usac" = "vlc.desktop"; 3133 "audio/VDVI" = "vlc.desktop"; 3134 "audio/VMR-WB" = "vlc.desktop"; 3135 "audio/vnd.3gpp.iufp" = "vlc.desktop"; 3136 "audio/vnd.4SB" = "vlc.desktop"; 3137 "audio/vnd.audiokoz" = "vlc.desktop"; 3138 "audio/vnd.CELP" = "vlc.desktop"; 3139 "audio/vnd.cisco.nse" = "vlc.desktop"; 3140 "audio/vnd.cmles.radio-events" = "vlc.desktop"; 3141 "audio/vnd.cns.anp1" = "vlc.desktop"; 3142 "audio/vnd.cns.inf1" = "vlc.desktop"; 3143 "audio/vnd.dece.audio" = "vlc.desktop"; 3144 "audio/vnd.digital-winds" = "vlc.desktop"; 3145 "audio/vnd.dlna.adts" = "vlc.desktop"; 3146 "audio/vnd.dolby.heaac.1" = "vlc.desktop"; 3147 "audio/vnd.dolby.heaac.2" = "vlc.desktop"; 3148 "audio/vnd.dolby.mlp" = "vlc.desktop"; 3149 "audio/vnd.dolby.mps" = "vlc.desktop"; 3150 "audio/vnd.dolby.pl2" = "vlc.desktop"; 3151 "audio/vnd.dolby.pl2x" = "vlc.desktop"; 3152 "audio/vnd.dolby.pl2z" = "vlc.desktop"; 3153 "audio/vnd.dolby.pulse.1" = "vlc.desktop"; 3154 "audio/vnd.dra" = "vlc.desktop"; 3155 "audio/vnd.dts.hd" = "vlc.desktop"; 3156 "audio/vnd.dts.uhd" = "vlc.desktop"; 3157 "audio/vnd.dts" = "vlc.desktop"; 3158 "audio/vnd.dvb.file" = "vlc.desktop"; 3159 "audio/vnd.everad.plj" = "vlc.desktop"; 3160 "audio/vnd.hns.audio" = "vlc.desktop"; 3161 "audio/vnd.lucent.voice" = "vlc.desktop"; 3162 "audio/vnd.ms-playready.media.pya" = "vlc.desktop"; 3163 "audio/vnd.nokia.mobile-xmf" = "vlc.desktop"; 3164 "audio/vnd.nortel.vbk" = "vlc.desktop"; 3165 "audio/vnd.nuera.ecelp4800" = "vlc.desktop"; 3166 "audio/vnd.nuera.ecelp7470" = "vlc.desktop"; 3167 "audio/vnd.nuera.ecelp9600" = "vlc.desktop"; 3168 "audio/vnd.octel.sbc" = "vlc.desktop"; 3169 "audio/vnd.presonus.multitrack" = "vlc.desktop"; 3170 "audio/vnd.rhetorex.32kadpcm" = "vlc.desktop"; 3171 "audio/vnd.rip" = "vlc.desktop"; 3172 "audio/vnd.sealedmedia.softseal.mpeg" = "vlc.desktop"; 3173 "audio/vnd.vmx.cvsd" = "vlc.desktop"; 3174 "audio/vorbis-config" = "vlc.desktop"; 3175 "audio/vorbis" = "vlc.desktop"; 3176 3177 "video/1d-interleaved-parityfec" = "vlc.desktop"; 3178 "video/3gpp-tt" = "vlc.desktop"; 3179 "video/3gpp" = "vlc.desktop"; 3180 "video/3gpp2" = "vlc.desktop"; 3181 "video/AV1" = "vlc.desktop"; 3182 "video/BMPEG" = "vlc.desktop"; 3183 "video/BT656" = "vlc.desktop"; 3184 "video/CelB" = "vlc.desktop"; 3185 "video/DV" = "vlc.desktop"; 3186 "video/encaprtp" = "vlc.desktop"; 3187 "video/evc" = "vlc.desktop"; 3188 "video/FFV1" = "vlc.desktop"; 3189 "video/flexfec" = "vlc.desktop"; 3190 "video/H261" = "vlc.desktop"; 3191 "video/H263-1998" = "vlc.desktop"; 3192 "video/H263-2000" = "vlc.desktop"; 3193 "video/H263" = "vlc.desktop"; 3194 "video/H264-RCDO" = "vlc.desktop"; 3195 "video/H264-SVC" = "vlc.desktop"; 3196 "video/H264" = "vlc.desktop"; 3197 "video/H265" = "vlc.desktop"; 3198 "video/H266" = "vlc.desktop"; 3199 "video/iso.segment" = "vlc.desktop"; 3200 "video/JPEG" = "vlc.desktop"; 3201 "video/jpeg2000" = "vlc.desktop"; 3202 "video/jxsv" = "vlc.desktop"; 3203 "video/matroska-3d" = "vlc.desktop"; 3204 "video/matroska" = "vlc.desktop"; 3205 "video/mj2" = "vlc.desktop"; 3206 "video/MP1S" = "vlc.desktop"; 3207 "video/MP2P" = "vlc.desktop"; 3208 "video/MP2T" = "vlc.desktop"; 3209 "video/mp4" = "vlc.desktop"; 3210 "video/MP4V-ES" = "vlc.desktop"; 3211 "video/mpeg" = "vlc.desktop"; 3212 "video/mpeg4-generic" = "vlc.desktop"; 3213 "video/MPV" = "vlc.desktop"; 3214 "video/nv" = "vlc.desktop"; 3215 "video/ogg" = "vlc.desktop"; 3216 "video/parityfec" = "vlc.desktop"; 3217 "video/pointer" = "vlc.desktop"; 3218 "video/quicktime" = "vlc.desktop"; 3219 "video/raptorfec" = "vlc.desktop"; 3220 "video/raw" = "vlc.desktop"; 3221 "video/rtp-enc-aescm128" = "vlc.desktop"; 3222 "video/rtploopback" = "vlc.desktop"; 3223 "video/rtx" = "vlc.desktop"; 3224 "video/scip" = "vlc.desktop"; 3225 "video/smpte291" = "vlc.desktop"; 3226 "video/SMPTE292M" = "vlc.desktop"; 3227 "video/ulpfec" = "vlc.desktop"; 3228 "video/vc1" = "vlc.desktop"; 3229 "video/vc2" = "vlc.desktop"; 3230 "video/vnd.CCTV" = "vlc.desktop"; 3231 "video/vnd.dece.hd" = "vlc.desktop"; 3232 "video/vnd.dece.mobile" = "vlc.desktop"; 3233 "video/vnd.dece.mp4" = "vlc.desktop"; 3234 "video/vnd.dece.pd" = "vlc.desktop"; 3235 "video/vnd.dece.sd" = "vlc.desktop"; 3236 "video/vnd.dece.video" = "vlc.desktop"; 3237 "video/vnd.directv.mpeg-tts" = "vlc.desktop"; 3238 "video/vnd.directv.mpeg" = "vlc.desktop"; 3239 "video/vnd.dlna.mpeg-tts" = "vlc.desktop"; 3240 "video/vnd.dvb.file" = "vlc.desktop"; 3241 "video/vnd.fvt" = "vlc.desktop"; 3242 "video/vnd.hns.video" = "vlc.desktop"; 3243 "video/vnd.iptvforum.1dparityfec-1010" = "vlc.desktop"; 3244 "video/vnd.iptvforum.1dparityfec-2005" = "vlc.desktop"; 3245 "video/vnd.iptvforum.2dparityfec-1010" = "vlc.desktop"; 3246 "video/vnd.iptvforum.2dparityfec-2005" = "vlc.desktop"; 3247 "video/vnd.iptvforum.ttsavc" = "vlc.desktop"; 3248 "video/vnd.iptvforum.ttsmpeg2" = "vlc.desktop"; 3249 "video/vnd.motorola.video" = "vlc.desktop"; 3250 "video/vnd.motorola.videop" = "vlc.desktop"; 3251 "video/vnd.mpegurl" = "vlc.desktop"; 3252 "video/vnd.ms-playready.media.pyv" = "vlc.desktop"; 3253 "video/vnd.nokia.interleaved-multimedia" = "vlc.desktop"; 3254 "video/vnd.nokia.mp4vr" = "vlc.desktop"; 3255 "video/vnd.nokia.videovoip" = "vlc.desktop"; 3256 "video/vnd.objectvideo" = "vlc.desktop"; 3257 "video/vnd.radgamettools.bink" = "vlc.desktop"; 3258 "video/vnd.radgamettools.smacker" = "vlc.desktop"; 3259 "video/vnd.sealed.mpeg1" = "vlc.desktop"; 3260 "video/vnd.sealed.mpeg4" = "vlc.desktop"; 3261 "video/vnd.sealed.swf" = "vlc.desktop"; 3262 "video/vnd.sealedmedia.softseal.mov" = "vlc.desktop"; 3263 "video/vnd.uvvu.mp4" = "vlc.desktop"; 3264 "video/vnd.vivo" = "vlc.desktop"; 3265 "video/vnd.youtube.yt" = "vlc.desktop"; 3266 "video/VP8" = "vlc.desktop"; 3267 "video/VP9" = "vlc.desktop"; 3268 "video/x-matroska" = "vlc.desktop"; # https://mime.wcode.net/mkv 3269 3270 "application/vnd.oasis.opendocument.text" = "writer.desktop"; # .odt 3271 "application/msword" = "writer.desktop"; # .doc 3272 "application/vnd.openxmlformats-officedocument.wordprocessingml.document" = "writer.desktop"; # .docx 3273 "application/vnd.openxmlformats-officedocument.wordprocessingml.template" = "writer.desktop"; # .dotx 3274 3275 "application/vnd.oasis.opendocument.spreadsheet" = "calc.desktop"; # .ods 3276 "application/vnd.ms-excel" = "calc.desktop"; # .xls 3277 "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" = "calc.desktop"; # .xlsx 3278 "application/vnd.openxmlformats-officedocument.spreadsheetml.template" = "calc.desktop"; # .xltx 3279 3280 "application/vnd.oasis.opendocument.presentation" = "impress.desktop"; # .odp 3281 "application/vnd.ms-powerpoint" = "impress.desktop"; # .ppt 3282 "application/vnd.openxmlformats-officedocument.presentationml.presentation" = "impress.desktop"; # .pptx 3283 "application/vnd.openxmlformats-officedocument.presentationml.template" = "impress.desktop"; # .potx 3284 3285 "application/pdf" = "firefox-devedition.desktop"; 3286 3287 "font/collection" = "org.gnome.font-viewer.desktop"; 3288 "font/otf" = "org.gnome.font-viewer.desktop"; 3289 "font/sfnt" = "org.gnome.font-viewer.desktop"; 3290 "font/ttf" = "org.gnome.font-viewer.desktop"; 3291 "font/woff" = "org.gnome.font-viewer.desktop"; 3292 "font/woff2" = "org.gnome.font-viewer.desktop"; 3293 3294 "application/gzip" = "org.gnome.FileRoller.desktop"; 3295 "application/vnd.rar" = "org.gnome.FileRoller.desktop"; 3296 "application/x-7z-compressed" = "org.gnome.FileRoller.desktop"; 3297 "application/x-arj" = "org.gnome.FileRoller.desktop"; 3298 "application/x-bzip2" = "org.gnome.FileRoller.desktop"; 3299 "application/x-gtar" = "org.gnome.FileRoller.desktop"; 3300 "application/x-rar-compressed " = "org.gnome.FileRoller.desktop"; # More common than "application/vnd.rar" 3301 "application/x-tar" = "org.gnome.FileRoller.desktop"; 3302 "application/zip" = "org.gnome.FileRoller.desktop"; 3303 3304 "x-scheme-handler/http" = "firefox-devedition.desktop"; 3305 "x-scheme-handler/https" = "firefox-devedition.desktop"; 3306 3307 "x-scheme-handler/mailto" = "thunderbird.desktop"; 3308 }; 3309 }; 3310 3311 icons.enable = true; 3312 sounds.enable = true; 3313 3314 menus.enable = true; 3315 autostart.enable = true; 3316 3317 terminal-exec.enable = true; 3318 3319 portal = { 3320 enable = true; 3321 extraPortals = with pkgs; [ 3322 xdg-desktop-portal-gtk 3323 xdg-desktop-portal-hyprland 3324 ]; 3325 3326 xdgOpenUsePortal = false; # Opening Programs 3327 3328 config = { 3329 common = { 3330 default = [ 3331 "gtk" 3332 "hyprland" 3333 ]; 3334 3335 "org.freedesktop.impl.portal.Secret" = [ 3336 "gnome-keyring" 3337 ]; 3338 }; 3339 }; 3340 }; 3341 }; 3342 3343 qt = { 3344 enable = true; 3345 3346 platformTheme = "gnome"; 3347 style = "adwaita-dark"; 3348 }; 3349 3350 documentation = { 3351 enable = true; 3352 dev.enable = true; 3353 doc.enable = true; 3354 info.enable = true; 3355 3356 man = { 3357 enable = true; 3358 3359 man-db = { 3360 enable = true; 3361 package = pkgs.man-db; 3362 }; 3363 3364 generateCaches = true; 3365 }; 3366 3367 nixos = { 3368 enable = true; 3369 includeAllModules = true; 3370 options.warningsAreErrors = false; 3371 }; 3372 }; 3373 3374 users = { 3375 groups = { 3376 hardinfo2 = { }; 3377 }; 3378 3379 enforceIdUniqueness = true; 3380 mutableUsers = true; 3381 3382 defaultUserShell = pkgs.fish; 3383 3384 motd = "Welcome"; 3385 3386 users.bitscoper = { 3387 isNormalUser = true; 3388 3389 name = "bitscoper"; 3390 description = "Abdullah As-Sadeed"; # Full Name 3391 3392 extraGroups = [ 3393 "adbusers" 3394 "audio" 3395 "dialout" 3396 "hardinfo2" 3397 "input" 3398 "jellyfin" 3399 "kvm" 3400 "libvirtd" 3401 "lp" 3402 "networkmanager" 3403 "plugdev" 3404 "podman" 3405 "qemu-libvirtd" 3406 "scanner" 3407 "seat" 3408 "tty" 3409 "uucp" 3410 "video" 3411 "wheel" 3412 "wireshark" 3413 ]; 3414 3415 useDefaultShell = true; 3416 }; 3417 }; 3418 3419 home-manager = { 3420 useGlobalPkgs = true; 3421 useUserPackages = true; 3422 3423 backupFileExtension = "old"; 3424 3425 sharedModules = [ 3426 { 3427 home = { 3428 enableNixpkgsReleaseCheck = true; 3429 3430 shell = { 3431 enableShellIntegration = true; 3432 enableBashIntegration = true; 3433 enableFishIntegration = true; 3434 }; 3435 3436 pointerCursor = { 3437 name = cursor.theme.name; 3438 package = cursor.theme.package; 3439 size = cursor.size; 3440 3441 hyprcursor = { 3442 enable = true; 3443 size = cursor.size; 3444 }; 3445 3446 gtk.enable = true; 3447 }; 3448 3449 preferXdgDirectories = true; 3450 3451 # sessionSearchVariables = { }; 3452 3453 enableDebugInfo = false; 3454 3455 stateVersion = "24.11"; 3456 }; 3457 3458 wayland.windowManager.hyprland = { 3459 enable = true; 3460 package = ( 3461 pkgs.hyprland.override { 3462 enableXWayland = true; 3463 wrapRuntimeDeps = true; 3464 } 3465 ); 3466 3467 systemd = { 3468 enable = false; 3469 enableXdgAutostart = true; 3470 3471 variables = [ 3472 "--all" 3473 ]; 3474 }; 3475 3476 plugins = with pkgs.hyprlandPlugins; [ 3477 hyprexpo 3478 ]; 3479 3480 xwayland.enable = true; 3481 3482 sourceFirst = true; 3483 3484 settings = { 3485 env = [ 3486 "XCURSOR_SIZE, ${toString cursor.size}" 3487 ]; 3488 3489 monitor = [ 3490 # Name, Resolution, Position, Scale, Transform-Parameter, Transform 3491 ", highres, auto, 1, transform, 0" 3492 "eDP-1, highres, auto, 1, transform, 0" 3493 "HDMI-A-1, highres, auto, 1, transform, 0" 3494 ]; 3495 3496 exec-once = [ 3497 "setfacl --modify user:jellyfin:--x ~" 3498 "adb start-server" 3499 3500 "uwsm app -- wl-paste --type text --watch cliphist store" 3501 "uwsm app -- wl-paste --type image --watch cliphist store" 3502 "uwsm app -- syshud" 3503 "uwsm app -- udiskie --tray --appindicator --automount --notify --file-manager nautilus" 3504 3505 "rm -rf ~/.local/share/applications/waydroid.*" 3506 ]; 3507 3508 bind = [ 3509 "SUPER, L, exec, loginctl lock-session" 3510 "SUPER CTRL, L, exec, uwsm stop" 3511 "SUPER CTRL, P, exec, systemctl poweroff" 3512 "SUPER CTRL, R, exec, systemctl reboot" 3513 3514 "SUPER, O, hyprexpo:expo, toggle" 3515 3516 "SUPER, 1, workspace, 1" 3517 "SUPER, 2, workspace, 2" 3518 "SUPER, 3, workspace, 3" 3519 "SUPER, 4, workspace, 4" 3520 "SUPER, 5, workspace, 5" 3521 "SUPER, 6, workspace, 6" 3522 "SUPER, 7, workspace, 7" 3523 "SUPER, 8, workspace, 8" 3524 "SUPER, 9, workspace, 9" 3525 "SUPER, 0, workspace, 10" 3526 "SUPER, mouse_down, workspace, e+1" 3527 "SUPER, mouse_up, workspace, e-1" 3528 "SUPER, S, togglespecialworkspace, magic" 3529 3530 "SUPER, left, movefocus, l" 3531 "SUPER, right, movefocus, r" 3532 "SUPER, up, movefocus, u" 3533 "SUPER, down, movefocus, d" 3534 3535 "SUPER SHIFT, T, togglesplit," 3536 "SUPER SHIFT, F, togglefloating," 3537 ", F11, fullscreen, 0" 3538 "SUPER, Q, killactive," 3539 3540 "SUPER SHIFT, 1, movetoworkspace, 1" 3541 "SUPER SHIFT, 2, movetoworkspace, 2" 3542 "SUPER SHIFT, 3, movetoworkspace, 3" 3543 "SUPER SHIFT, 4, movetoworkspace, 4" 3544 "SUPER SHIFT, 5, movetoworkspace, 5" 3545 "SUPER SHIFT, 6, movetoworkspace, 6" 3546 "SUPER SHIFT, 7, movetoworkspace, 7" 3547 "SUPER SHIFT, 8, movetoworkspace, 8" 3548 "SUPER SHIFT, 9, movetoworkspace, 9" 3549 "SUPER SHIFT, 0, movetoworkspace, 10" 3550 "SUPER SHIFT, S, movetoworkspace, special:magic" 3551 3552 "SUPER SHIFT ALT, 1, movetoworkspacesilent, 1" 3553 "SUPER SHIFT ALT, 2, movetoworkspacesilent, 2" 3554 "SUPER SHIFT ALT, 3, movetoworkspacesilent, 3" 3555 "SUPER SHIFT ALT, 4, movetoworkspacesilent, 4" 3556 "SUPER SHIFT ALT, 5, movetoworkspacesilent, 5" 3557 "SUPER SHIFT ALT, 6, movetoworkspacesilent, 6" 3558 "SUPER SHIFT ALT, 7, movetoworkspacesilent, 7" 3559 "SUPER SHIFT ALT, 8, movetoworkspacesilent, 8" 3560 "SUPER SHIFT ALT, 9, movetoworkspacesilent, 9" 3561 "SUPER SHIFT ALT, 0, movetoworkspacesilent, 10" 3562 "SUPER SHIFT ALT, S, movetoworkspacesilent, special:magic" 3563 3564 "SUPER, C, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy" 3565 3566 ", PRINT, exec, uwsm app -- ferrishot" 3567 3568 "SUPER, A, exec, uwsm app -- wofi --show drun --disable-history | xargs -r uwsm app --" 3569 "SUPER, R, exec, uwsm app -- wofi --show run --disable-history | xargs -r uwsm app --" 3570 3571 "SUPER, T, exec, uwsm app -- tilix" 3572 3573 ", XF86Explorer, exec, uwsm app -- nautilus" 3574 "SUPER, F, exec, uwsm app -- nautilus" 3575 3576 "SUPER, U, exec, uwsm app -- missioncenter" 3577 3578 "SUPER, W, exec, uwsm app -- firefox-devedition" 3579 "SUPER ALT, W, exec, uwsm app -- firefox-devedition --private-window" 3580 3581 ", XF86Mail, exec, uwsm app -- thunderbird" 3582 "SUPER, M, exec, uwsm app -- thunderbird" 3583 3584 "SUPER, E, exec, uwsm app -- codium" 3585 "SUPER, D, exec, uwsm app -- dbeaver" 3586 3587 "SUPER, V, exec, uwsm app -- vlc" 3588 ]; 3589 3590 bindm = [ 3591 "SUPER, mouse:272, movewindow" 3592 "SUPER, mouse:273, resizewindow" 3593 ]; # Mouse 3594 3595 bindl = [ 3596 ", XF86AudioPlay, exec, playerctl play-pause" 3597 ", XF86AudioPause, exec, playerctl play-pause" 3598 ", XF86AudioStop, exec, playerctl stop" 3599 3600 ", XF86AudioPrev, exec, playerctl previous" 3601 ", XF86AudioNext, exec, playerctl next" 3602 ]; # Will also work when locked 3603 3604 bindel = [ 3605 ", XF86MonBrightnessUp, exec, brightnessctl s 1%+" 3606 ", XF86MonBrightnessDown, exec, brightnessctl s 1%-" 3607 3608 ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+" 3609 ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-" 3610 ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" 3611 ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" 3612 ]; # Repeat and will work when locked 3613 3614 general = { 3615 allow_tearing = false; 3616 3617 gaps_workspaces = 0; 3618 3619 layout = "dwindle"; 3620 3621 gaps_in = 2; 3622 gaps_out = "2, 0, 0, 0"; # Top, Right, Bottom, Left 3623 3624 no_border_on_floating = false; 3625 3626 border_size = 0; 3627 3628 no_focus_fallback = false; 3629 3630 resize_on_border = true; 3631 hover_icon_on_border = true; 3632 3633 snap = { 3634 enabled = true; 3635 border_overlap = false; 3636 }; 3637 }; 3638 3639 ecosystem = { 3640 no_update_news = false; 3641 }; 3642 3643 misc = { 3644 disable_autoreload = false; 3645 3646 allow_session_lock_restore = true; 3647 3648 key_press_enables_dpms = true; 3649 mouse_move_enables_dpms = true; 3650 3651 vfr = true; 3652 vrr = 1; 3653 3654 mouse_move_focuses_monitor = true; 3655 3656 disable_hyprland_logo = true; 3657 force_default_wallpaper = 1; 3658 disable_splash_rendering = true; 3659 3660 font_family = font_preferences.name.sans_serif; 3661 3662 close_special_on_empty = true; 3663 3664 animate_mouse_windowdragging = false; 3665 animate_manual_resizes = false; 3666 3667 exit_window_retains_fullscreen = false; 3668 3669 layers_hog_keyboard_focus = true; 3670 3671 focus_on_activate = false; 3672 3673 middle_click_paste = true; 3674 }; 3675 3676 dwindle = { 3677 pseudotile = false; 3678 3679 use_active_for_splits = true; 3680 force_split = 0; # Follows Mouse 3681 smart_split = false; 3682 preserve_split = true; 3683 3684 smart_resizing = true; 3685 }; 3686 3687 xwayland = { 3688 enabled = true; 3689 force_zero_scaling = true; 3690 use_nearest_neighbor = true; 3691 }; 3692 3693 windowrule = [ 3694 "suppressevent maximize, class:.*" 3695 "nofocus, class:^$, title:^$, xwayland:1, floating:1, fullscreen:0, pinned:0" 3696 "bordercolor rgba(ff0000ff), xwayland:1" # TODO: Test and Adjust 3697 ]; 3698 3699 input = { 3700 kb_layout = "us"; 3701 3702 numlock_by_default = false; 3703 3704 follow_mouse = 1; 3705 focus_on_close = 1; 3706 3707 left_handed = false; 3708 natural_scroll = false; 3709 3710 touchpad = { 3711 natural_scroll = true; 3712 3713 tap-to-click = true; 3714 tap-and-drag = true; 3715 drag_lock = true; 3716 3717 disable_while_typing = true; 3718 }; 3719 3720 touchdevice = { 3721 enabled = true; 3722 }; 3723 3724 tablet = { 3725 left_handed = false; 3726 }; 3727 }; 3728 3729 cursor = { 3730 no_hardware_cursors = false; 3731 3732 enable_hyprcursor = true; 3733 sync_gsettings_theme = true; 3734 3735 persistent_warps = true; 3736 3737 no_warps = false; 3738 3739 hide_on_key_press = false; 3740 hide_on_touch = true; 3741 }; 3742 3743 binds = { 3744 disable_keybind_grabbing = true; 3745 pass_mouse_when_bound = false; 3746 3747 window_direction_monitor_fallback = true; 3748 }; 3749 3750 gestures = { 3751 # Touchpad 3752 workspace_swipe = true; 3753 workspace_swipe_invert = true; 3754 3755 # Touchscreen 3756 workspace_swipe_touch = false; 3757 workspace_swipe_touch_invert = false; 3758 3759 workspace_swipe_create_new = true; 3760 workspace_swipe_forever = true; 3761 }; 3762 3763 decoration = { 3764 dim_special = 0.25; 3765 3766 rounding = builtins.floor (design_factor * 0.50); # 8 3767 3768 active_opacity = 1.0; 3769 fullscreen_opacity = 1.0; 3770 inactive_opacity = 1.0; 3771 3772 dim_inactive = false; 3773 dim_strength = 0.0; 3774 3775 blur.enabled = false; 3776 shadow.enabled = false; 3777 }; 3778 3779 animations = { 3780 enabled = true; 3781 first_launch_animation = true; 3782 3783 bezier = [ 3784 "linear, 0, 0, 1, 1" # https://www.cssportal.com/css-cubic-bezier-generator/#0,0,1,1 3785 ]; 3786 3787 animation = [ 3788 "global, 1, 1.0, linear" 3789 "border, 1, 1.0, linear" 3790 "windows, 1, 1.0, linear" 3791 "windowsIn, 1, 1.0, linear" 3792 "windowsOut, 1, 1.0, linear" 3793 "fadeIn, 1, 1.0, linear" 3794 "fadeOut, 1, 1.0, linear" 3795 "fade, 1, 1.0, linear" 3796 "layers, 1, 1.0, linear" 3797 "layersIn, 1, 1.0, linear" 3798 "layersOut, 1, 1.0, linear" 3799 "fadeLayersIn, 1, 1.0, linear" 3800 "fadeLayersOut, 1, 1.0, linear" 3801 "workspaces, 1, 1.0, linear" 3802 "workspacesIn, 1, 1.0, linear" 3803 "workspacesOut, 1, 1.0, linear" 3804 ]; 3805 # Name, On/Off, Speed, Bezier 3806 }; 3807 3808 plugin = { 3809 hyprexpo = { 3810 skip_empty = true; 3811 workspace_method = "center current"; 3812 3813 columns = 3; 3814 gap_size = 4; 3815 bg_col = convert_hex_color_code_to_rgba_color_code colors.hex.background; 3816 3817 enable_gesture = true; 3818 gesture_fingers = 3; 3819 gesture_positive = false; 3820 gesture_distance = 200; 3821 }; 3822 }; 3823 }; 3824 }; 3825 3826 xdg = { 3827 mime.enable = true; 3828 3829 mimeApps = { 3830 enable = true; 3831 3832 associations = { 3833 added = config.xdg.mime.addedAssociations; 3834 3835 removed = config.xdg.mime.removedAssociations; 3836 }; 3837 3838 defaultApplications = config.xdg.mime.defaultApplications; 3839 }; 3840 3841 configFile = { 3842 "mimeapps.list".force = true; 3843 }; 3844 }; 3845 3846 gtk = { 3847 enable = true; 3848 3849 theme = { 3850 name = "Adwaita-dark"; 3851 package = pkgs.gnome-themes-extra; 3852 }; 3853 3854 iconTheme = { 3855 name = "Papirus-Dark"; 3856 package = ( 3857 pkgs.papirus-icon-theme.override { 3858 color = "black"; 3859 } 3860 ); 3861 }; 3862 3863 cursorTheme = { 3864 name = cursor.theme.name; 3865 package = cursor.theme.package; 3866 size = cursor.size; 3867 }; 3868 3869 font = { 3870 name = font_preferences.name.sans_serif; 3871 package = font_preferences.package; 3872 size = font_preferences.size; 3873 }; 3874 }; 3875 3876 qt = { 3877 enable = true; 3878 3879 platformTheme.name = "adwaita"; 3880 style.name = "adwaita-dark"; 3881 }; 3882 3883 services = { 3884 swaync = { 3885 enable = true; 3886 package = pkgs.swaynotificationcenter; 3887 3888 settings = { 3889 "\$schema" = "${pkgs.swaynotificationcenter}/etc/xdg/swaync/configSchema.json"; 3890 cssPriority = "application"; 3891 3892 layer-shell = true; 3893 layer-shell-cover-screen = true; 3894 fit-to-screen = false; 3895 3896 control-center-layer = "overlay"; 3897 control-center-exclusive-zone = true; 3898 control-center-positionX = "right"; 3899 control-center-positionY = "top"; 3900 control-center-margin-top = builtins.floor (design_factor * 0.50); # 8 3901 control-center-margin-right = builtins.floor (design_factor * 0.50); # 8 3902 control-center-margin-bottom = builtins.floor (design_factor * 0.50); # 8 3903 control-center-margin-left = builtins.floor (design_factor * 0.50); # 8 3904 3905 layer = "overlay"; 3906 positionX = "right"; 3907 positionY = "top"; 3908 3909 text-empty = "No Notifications"; 3910 widgets = [ 3911 "title" 3912 "notifications" 3913 "mpris" 3914 "dnd" 3915 ]; 3916 widget-config = { 3917 title = { 3918 text = "Notifications"; 3919 3920 clear-all-button = true; 3921 button-text = "Clear"; 3922 }; 3923 3924 mpris = { 3925 image-radius = design_factor; 3926 blur = true; 3927 }; 3928 3929 dnd = { 3930 text = "Do Not Disturb"; 3931 }; 3932 }; 3933 3934 image-visibility = "when-available"; 3935 relative-timestamps = true; 3936 notification-inline-replies = true; 3937 notification-2fa-action = true; 3938 transition-time = animation_duration; 3939 3940 timeout = 8; 3941 timeout-critical = 0; # 0 = Disable 3942 timeout-low = 4; 3943 3944 keyboard-shortcuts = true; 3945 hide-on-action = true; 3946 hide-on-clear = true; 3947 script-fail-notify = true; 3948 }; 3949 3950 style = '' 3951 .blank-window { 3952 background: transparent; 3953 } 3954 3955 .control-center { 3956 border-radius: ${toString design_factor}px; 3957 background-color: ${colors.hex.borders}; 3958 font-size: ${toString font_preferences.size}px; 3959 color: ${colors.hex.foreground}; 3960 } 3961 3962 .widget-title, 3963 .widget-dnd { 3964 font-size: ${toString (font_preferences.size * 1.5)}px; 3965 color: ${colors.hex.foreground}; 3966 } 3967 3968 .widget-title > button { 3969 border-radius: ${toString design_factor}px; 3970 } 3971 3972 .notification-row .notification-background .notification { 3973 border-radius: ${toString design_factor}px; 3974 } 3975 3976 .notification-row .notification-background .notification .notification-default-action { 3977 border-radius: ${toString design_factor}px; 3978 } 3979 3980 .notification-row .notification-background .notification .notification-default-action .notification-content { 3981 border-radius: ${toString design_factor}px; 3982 } 3983 3984 .notification-row .notification-background .notification .notification-default-action .notification-content .body-image { 3985 border-radius: ${toString design_factor}px; 3986 } 3987 3988 .notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry { 3989 border-radius: ${toString design_factor}px; 3990 } 3991 3992 .notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button { 3993 border-radius: ${toString design_factor}px; 3994 } 3995 3996 .widget-mpris .widget-mpris-player { 3997 border-radius: ${toString design_factor}px; 3998 } 3999 4000 .widget-mpris .widget-mpris-player .widget-mpris-album-art { 4001 border-radius: ${toString design_factor}px; 4002 } 4003 4004 .widget-dnd > switch { 4005 border-radius: ${toString design_factor}px; 4006 } 4007 4008 .widget-dnd > switch slider { 4009 border-radius: ${toString design_factor}px; 4010 } 4011 ''; 4012 }; 4013 4014 hypridle = { 4015 enable = true; 4016 package = pkgs.hypridle; 4017 4018 settings = { 4019 general = { 4020 ignore_systemd_inhibit = false; 4021 ignore_wayland_inhibit = false; 4022 ignore_dbus_inhibit = false; 4023 4024 lock_cmd = "pidof hyprlock || hyprlock --immediate"; 4025 }; 4026 4027 listener = [ 4028 { 4029 ignore_inhibit = false; 4030 4031 timeout = 300; # 5 Minutes 4032 on-timeout = "loginctl lock-session"; 4033 } 4034 ]; 4035 }; 4036 }; 4037 4038 hyprpaper = { 4039 enable = true; 4040 package = pkgs.hyprpaper; 4041 4042 settings = { 4043 ipc = "on"; 4044 4045 splash = false; 4046 4047 preload = [ 4048 wallpaper 4049 ]; 4050 4051 wallpaper = [ 4052 ", ${wallpaper}" 4053 ]; 4054 }; 4055 }; 4056 }; 4057 4058 programs = { 4059 nix-your-shell = { 4060 enable = true; 4061 package = pkgs.nix-your-shell; 4062 4063 enableFishIntegration = true; 4064 }; 4065 4066 dircolors = { 4067 enable = true; 4068 package = ( 4069 pkgs.coreutils-full.override { 4070 aclSupport = true; 4071 withOpenssl = true; 4072 } 4073 ); 4074 4075 enableBashIntegration = true; 4076 enableFishIntegration = true; 4077 }; 4078 4079 kubecolor = { 4080 enable = true; 4081 package = pkgs.kubecolor; 4082 4083 enableAlias = true; 4084 4085 settings = { 4086 kubectl = pkgs.lib.getExe pkgs.kubectl; 4087 preset = "dark"; 4088 }; 4089 }; 4090 4091 hyprlock = { 4092 enable = true; 4093 package = pkgs.hyprlock; 4094 4095 sourceFirst = true; 4096 4097 settings = { 4098 general = { 4099 immediate_render = true; 4100 fractional_scaling = 2; # 2 = Automatic 4101 4102 text_trim = false; 4103 hide_cursor = false; 4104 4105 ignore_empty_input = true; 4106 fail_timeout = 2000; # ms 4107 }; 4108 4109 auth = { 4110 pam = { 4111 enabled = true; 4112 module = "hyprlock"; 4113 }; 4114 4115 fingerprint = { 4116 enabled = true; 4117 4118 ready_message = "Scan Fingerprint"; 4119 present_message = "Scanning Fingerprint"; 4120 4121 retry_delay = 250; # ms 4122 }; 4123 }; 4124 4125 background = [ 4126 { 4127 monitor = ""; # "" = All 4128 path = wallpaper; 4129 } 4130 ]; 4131 4132 label = [ 4133 { 4134 monitor = ""; # "" = All 4135 halign = "center"; 4136 valign = "top"; 4137 position = "0, -128"; 4138 4139 text_align = "center"; 4140 font_family = font_preferences.name.sans_serif; 4141 color = convert_hex_color_code_to_rgba_color_code colors.hex.foreground; 4142 font_size = design_factor * 4; 4143 text = "$TIME12"; 4144 } 4145 4146 { 4147 monitor = ""; # "" = All 4148 halign = "center"; 4149 valign = "center"; 4150 position = "0, 0"; 4151 4152 text_align = "center"; 4153 font_family = font_preferences.name.sans_serif; 4154 color = convert_hex_color_code_to_rgba_color_code colors.hex.foreground; 4155 font_size = design_factor; 4156 text = "$DESC"; # Full Name 4157 } 4158 ]; 4159 4160 input-field = [ 4161 { 4162 monitor = ""; # "" = All 4163 halign = "center"; 4164 valign = "bottom"; 4165 position = "0, 128"; 4166 4167 size = "256, 48"; 4168 rounding = design_factor; 4169 outline_thickness = 1; 4170 outer_color = convert_hex_color_code_to_rgba_color_code colors.hex.background; 4171 shadow_passes = 0; 4172 hide_input = false; 4173 inner_color = convert_hex_color_code_to_rgba_color_code colors.hex.background; 4174 font_family = font_preferences.name.sans_serif; 4175 font_color = convert_hex_color_code_to_rgba_color_code colors.hex.foreground; 4176 placeholder_text = "Enter Password"; 4177 dots_center = true; 4178 dots_rounding = -1; 4179 4180 fade_on_empty = true; 4181 4182 invert_numlock = false; 4183 capslock_color = convert_hex_color_code_to_rgba_color_code colors.hex.warning; 4184 numlock_color = convert_hex_color_code_to_rgba_color_code colors.hex.warning; 4185 bothlock_color = convert_hex_color_code_to_rgba_color_code colors.hex.warning; 4186 4187 check_color = convert_hex_color_code_to_rgba_color_code colors.hex.success; 4188 fail_color = convert_hex_color_code_to_rgba_color_code colors.hex.error; 4189 fail_text = "$FAIL <b>($ATTEMPTS)</b>"; 4190 } 4191 ]; 4192 }; 4193 }; 4194 4195 waybar = { 4196 enable = true; 4197 package = ( 4198 pkgs.waybar.override { 4199 enableManpages = true; 4200 evdevSupport = true; 4201 gpsSupport = true; 4202 inputSupport = true; 4203 jackSupport = true; 4204 mprisSupport = true; 4205 pipewireSupport = true; 4206 pulseSupport = true; 4207 rfkillSupport = true; 4208 sndioSupport = true; 4209 systemdSupport = true; 4210 traySupport = true; 4211 udevSupport = true; 4212 wireplumberSupport = true; 4213 withMediaPlayer = true; 4214 } 4215 ); 4216 4217 systemd.enable = true; 4218 4219 settings = { 4220 top_bar = { 4221 start_hidden = false; 4222 reload_style_on_change = true; 4223 position = "top"; 4224 exclusive = true; 4225 layer = "top"; 4226 passthrough = false; 4227 fixed-center = true; 4228 spacing = 4; 4229 4230 modules-left = [ 4231 "group/backlight-and-ppd-and-idle-inhibitor" 4232 "group/pulseaudio-and-bluetooth" 4233 "group/hardware-statistics" 4234 "network" 4235 "privacy" 4236 ]; 4237 4238 modules-center = [ 4239 "clock" 4240 ]; 4241 4242 modules-right = [ 4243 "group/swaync-and-systemd" 4244 "tray" 4245 "group/workspaces-and-taskbar" 4246 ]; 4247 4248 clock = { 4249 timezone = config.time.timeZone; 4250 locale = "en_US"; 4251 interval = 1; 4252 4253 format = "{:%I:%M %p}"; 4254 format-alt = "{:%A, %B %d, %Y}"; 4255 4256 tooltip = true; 4257 tooltip-format = "<tt><small>{calendar}</small></tt>"; 4258 4259 calendar = { 4260 mode = "year"; 4261 mode-mon-col = 3; 4262 weeks-pos = "right"; 4263 4264 format = { 4265 months = "<b>{}</b>"; 4266 days = "{}"; 4267 weekdays = "<b>{}</b>"; 4268 weeks = "<i>{:%U}</i>"; 4269 today = "<u>{}</u>"; 4270 }; 4271 }; 4272 }; 4273 4274 "group/backlight-and-ppd-and-idle-inhibitor" = { 4275 modules = [ 4276 "backlight" 4277 "power-profiles-daemon" 4278 "idle_inhibitor" 4279 ]; 4280 drawer = { 4281 click-to-reveal = false; 4282 transition-left-to-right = true; 4283 transition-duration = animation_duration; 4284 }; 4285 "orientation" = "inherit"; 4286 }; 4287 4288 backlight = { 4289 device = backlight_device; 4290 interval = 1; 4291 4292 format = "{percent}% {icon}"; 4293 format-icons = [ 4294 "" 4295 "" 4296 "" 4297 "" 4298 "" 4299 "" 4300 "" 4301 "" 4302 "" 4303 ]; 4304 4305 tooltip = true; 4306 tooltip-format = "{percent}% {icon}"; 4307 4308 on-scroll-up = "brightnessctl s +1%"; 4309 on-scroll-down = "brightnessctl s 1%-"; 4310 reverse-scrolling = false; 4311 reverse-mouse-scrolling = false; 4312 scroll-step = 1.0; 4313 }; 4314 4315 power-profiles-daemon = { 4316 format = "{icon}"; 4317 format-icons = { 4318 performance = ""; 4319 balanced = ""; 4320 power-saver = ""; 4321 }; 4322 4323 tooltip = true; 4324 tooltip-format = "Driver: {driver}\nProfile: {profile}"; 4325 }; 4326 4327 idle_inhibitor = { 4328 start-activated = false; 4329 4330 format = "{icon}"; 4331 format-icons = { 4332 activated = ""; 4333 deactivated = ""; 4334 }; 4335 4336 tooltip = true; 4337 tooltip-format-activated = "{status}"; 4338 tooltip-format-deactivated = "{status}"; 4339 }; 4340 4341 "group/pulseaudio-and-bluetooth" = { 4342 modules = [ 4343 "pulseaudio" 4344 "bluetooth" 4345 ]; 4346 drawer = { 4347 click-to-reveal = false; 4348 transition-left-to-right = true; 4349 transition-duration = animation_duration; 4350 }; 4351 "orientation" = "inherit"; 4352 }; 4353 4354 pulseaudio = { 4355 format = "{volume}% {icon} {format_source}"; 4356 format-muted = "{icon} {format_source}"; 4357 4358 format-bluetooth = "{volume}% {icon} {format_source}"; 4359 format-bluetooth-muted = "{icon} {format_source}"; 4360 4361 format-source = " {volume}% "; 4362 format-source-muted = ""; 4363 4364 format-icons = { 4365 default = [ 4366 "" 4367 "" 4368 "" 4369 ]; 4370 default-muted = ""; 4371 4372 speaker = ""; 4373 speaker-muted = ""; 4374 4375 headphone = ""; 4376 headphone-muted = ""; 4377 4378 headset = ""; 4379 headset-muted = ""; 4380 4381 hands-free = ""; 4382 hands-free-muted = ""; 4383 4384 phone = ""; 4385 phone-muted = ""; 4386 4387 portable = ""; 4388 portable-muted = ""; 4389 4390 hdmi = ""; 4391 hdmi-muted = ""; 4392 4393 hifi = ""; 4394 hifi-muted = ""; 4395 4396 car = ""; 4397 car-muted = ""; 4398 }; 4399 4400 tooltip = true; 4401 tooltip-format = "{desc}"; 4402 4403 scroll-step = 1.0; 4404 reverse-scrolling = false; 4405 reverse-mouse-scrolling = false; 4406 max-volume = 100; 4407 on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+"; 4408 on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-"; 4409 4410 on-click = "uwsm app -- pwvucontrol"; 4411 }; 4412 4413 bluetooth = { 4414 format = "{status} {icon}"; 4415 format-disabled = "Disabled {icon}"; 4416 format-off = "Off {icon}"; 4417 format-on = "On {icon}"; 4418 format-connected = "{device_alias} {icon}"; 4419 format-connected-battery = "{device_alias} ({device_battery_percentage}%)"; 4420 format-icons = { 4421 no-controller = ""; 4422 disabled = ""; 4423 off = ""; 4424 on = ""; 4425 connected = ""; 4426 }; 4427 4428 tooltip = true; 4429 tooltip-format = "Status: {status}\nController Address: {controller_address} ({controller_address_type})\nController Alias: {controller_alias}"; 4430 tooltip-format-disabled = "Status: Disabled"; 4431 tooltip-format-off = "Status: Off"; 4432 tooltip-format-on = "Status: On\nController Address: {controller_address} ({controller_address_type})\nController Alias: {controller_alias}"; 4433 tooltip-format-connected = "Status: Connected\nController Address: {controller_address} ({controller_address_type})\nController Alias: {controller_alias}\nConnected Devices ({num_connections}): {device_enumerate}"; 4434 tooltip-format-connected-battery = "Status: Connected\nController Address: {controller_address} ({controller_address_type})\nController Alias: {controller_alias}\nConnected Devices ({num_connections}): {device_enumerate}"; 4435 tooltip-format-enumerate-connected = "\n\tAddress: {device_address} ({device_address_type})\n\tAlias: {device_alias}"; 4436 tooltip-format-enumerate-connected-battery = "\n\tAddress: {device_address} ({device_address_type})\n\tAlias: {device_alias}\n\tBattery: {device_battery_percentage}%"; 4437 4438 on-click = "uwsm app -- blueman-manager"; 4439 }; 4440 4441 "group/hardware-statistics" = { 4442 modules = [ 4443 "battery" 4444 "cpu" 4445 "memory" 4446 "disk" 4447 ]; 4448 drawer = { 4449 click-to-reveal = false; 4450 transition-left-to-right = true; 4451 transition-duration = animation_duration; 4452 }; 4453 "orientation" = "inherit"; 4454 }; 4455 4456 battery = { 4457 bat = "BAT0"; 4458 adapter = "AC0"; 4459 design-capacity = false; 4460 weighted-average = true; 4461 interval = 1; 4462 4463 full-at = 100; 4464 states = { 4465 warning = 25; 4466 critical = 10; 4467 }; 4468 4469 format = "{capacity}% {icon}"; 4470 format-plugged = "{capacity}% "; 4471 format-charging = "{capacity}% "; 4472 format-full = "{capacity}% {icon}"; 4473 format-alt = "{time} {icon}"; 4474 format-time = "{H} h {m} min"; 4475 format-icons = [ 4476 "" 4477 "" 4478 "" 4479 "" 4480 "" 4481 ]; 4482 4483 tooltip = true; 4484 tooltip-format = "Capacity: {capacity}%\nPower: {power} W\n{timeTo}\nCycles: {cycles}\nHealth: {health}%"; 4485 }; 4486 4487 cpu = { 4488 interval = 1; 4489 4490 format = "{usage}% "; 4491 4492 tooltip = true; 4493 4494 on-click = "uwsm app -- missioncenter"; 4495 }; 4496 4497 memory = { 4498 interval = 1; 4499 4500 format = "{percentage}% "; 4501 4502 tooltip = true; 4503 tooltip-format = "Used RAM: {used} GiB ({percentage}%)\nUsed Swap: {swapUsed} GiB ({swapPercentage}%)\nAvailable RAM: {avail} GiB\nAvailable Swap: {swapAvail} GiB"; 4504 4505 on-click = "uwsm app -- missioncenter"; 4506 }; 4507 4508 disk = { 4509 path = "/"; 4510 unit = "GB"; 4511 interval = 1; 4512 4513 format = "{percentage_used}% "; 4514 4515 tooltip = true; 4516 tooltip-format = "Total: {specific_total} GB\nUsed: {specific_used} GB ({percentage_used}%)\nFree: {specific_free} GB ({percentage_free}%)"; 4517 4518 on-click = "uwsm app -- missioncenter"; 4519 }; 4520 4521 network = { 4522 interval = 1; 4523 4524 format = "{bandwidthUpBytes} {bandwidthDownBytes}"; 4525 format-disconnected = "Disconnected "; 4526 format-linked = "No IP "; 4527 format-ethernet = "{bandwidthUpBytes} {bandwidthDownBytes}"; 4528 format-wifi = "{bandwidthUpBytes} {bandwidthDownBytes}"; 4529 4530 tooltip = true; 4531 tooltip-format = "Interface: {ifname}\nGateway: {gwaddr}\nSubnet Mask: {netmask}\nCIDR Notation: {cidr}\nIP Address: {ipaddr}\nUp Speed: {bandwidthUpBytes}\nDown Speed: {bandwidthDownBytes}\nTotal Speed: {bandwidthTotalBytes}"; 4532 tooltip-format-disconnected = "Disconnected"; 4533 tooltip-format-ethernet = "Interface: {ifname}\nGateway: {gwaddr}\nSubnet Mask: {netmask}\nCIDR Notation= {cidr}\nIP Address: {ipaddr}\nUp Speed: {bandwidthUpBytes}\nDown Speed: {bandwidthDownBytes}\nTotal Speed: {bandwidthTotalBytes}"; 4534 tooltip-format-wifi = "Interface: {ifname}\nESSID: {essid}\nFrequency: {frequency} GHz\nStrength: {signaldBm} dBm ({signalStrength}%)\nGateway: {gwaddr}\nSubnet Mask: {netmask}\nCIDR Notation: {cidr}\nIP Address: {ipaddr}\nUp Speed: {bandwidthUpBytes}\nDown Speed: {bandwidthDownBytes}\nTotal Speed: {bandwidthTotalBytes}"; 4535 4536 on-click = "uwsm app -- nm-connection-editor"; 4537 }; 4538 4539 privacy = { 4540 icon-size = font_preferences.size; 4541 icon-spacing = builtins.floor (design_factor * 0.50); # 8 4542 transition-duration = 200; 4543 4544 modules = [ 4545 { 4546 type = "screenshare"; 4547 tooltip = true; 4548 tooltip-icon-size = font_preferences.size; 4549 } 4550 { 4551 type = "audio-in"; 4552 tooltip = true; 4553 tooltip-icon-size = font_preferences.size; 4554 } 4555 ]; 4556 }; 4557 4558 "group/swaync-and-systemd" = { 4559 modules = [ 4560 "custom/swaync" 4561 "systemd-failed-units" 4562 ]; 4563 drawer = { 4564 click-to-reveal = false; 4565 transition-left-to-right = false; 4566 transition-duration = animation_duration; 4567 }; 4568 "orientation" = "inherit"; 4569 }; 4570 4571 "custom/swaync" = { 4572 format = "{} {icon}"; 4573 format-icons = { 4574 notification = "<span foreground=\"${colors.hex.warning}\"><sup></sup></span>"; 4575 none = ""; 4576 4577 inhibited-notification = "<span foreground=\"${colors.hex.warning}\"><sup></sup></span>"; 4578 inhibited-none = ""; 4579 4580 dnd-notification = "<span foreground=\"${colors.hex.warning}\"><sup></sup></span>"; 4581 dnd-none = ""; 4582 4583 dnd-inhibited-notification = "<span foreground=\"${colors.hex.warning}\"><sup></sup></span>"; 4584 dnd-inhibited-none = ""; 4585 }; 4586 4587 tooltip = false; 4588 4589 return-type = "json"; 4590 exec-if = "which swaync-client"; 4591 exec = "uwsm app -- swaync-client -swb"; 4592 on-click = "swaync-client -t -sw"; 4593 on-click-right = "swaync-client -d -sw"; 4594 escape = true; 4595 }; 4596 4597 systemd-failed-units = { 4598 system = true; 4599 user = true; 4600 4601 hide-on-ok = false; 4602 4603 format = "{nr_failed_system}, {nr_failed_user} "; 4604 format-ok = ""; 4605 }; 4606 4607 tray = { 4608 show-passive-items = true; 4609 reverse-direction = false; 4610 icon-size = font_preferences.size; 4611 spacing = 4; 4612 }; 4613 4614 "group/workspaces-and-taskbar" = { 4615 modules = [ 4616 "hyprland/workspaces" 4617 "wlr/taskbar" 4618 ]; 4619 drawer = { 4620 click-to-reveal = false; 4621 transition-left-to-right = false; 4622 transition-duration = animation_duration; 4623 }; 4624 "orientation" = "inherit"; 4625 }; 4626 4627 "hyprland/workspaces" = { 4628 all-outputs = false; 4629 show-special = true; 4630 special-visible-only = false; 4631 active-only = false; 4632 format = "{name}"; 4633 move-to-monitor = false; 4634 }; 4635 4636 "wlr/taskbar" = { 4637 all-outputs = false; 4638 active-first = false; 4639 sort-by-app-id = false; 4640 format = "{icon}"; 4641 icon-size = font_preferences.size; 4642 markup = true; 4643 4644 tooltip = true; 4645 tooltip-format = "Title: {title}\nName: {name}\nID: {app_id}\nState: {state}"; 4646 4647 on-click = "activate"; 4648 }; 4649 }; 4650 }; 4651 4652 style = '' 4653 * { 4654 font-family: ${font_preferences.name.sans_serif}; 4655 font-size: ${toString font_preferences.size}; 4656 } 4657 4658 window#waybar { 4659 border: none; 4660 background-color: transparent; 4661 } 4662 4663 .modules-right > widget:last-child > #workspaces { 4664 margin-right: 0; 4665 } 4666 4667 .modules-left > widget:first-child > #workspaces { 4668 margin-left: 0; 4669 } 4670 4671 #power-profiles-daemon, 4672 #idle_inhibitor, 4673 #backlight, 4674 #pulseaudio, 4675 #bluetooth, 4676 #network, 4677 #clock, 4678 #custom-swaync, 4679 #privacy, 4680 #systemd-failed-units, 4681 #disk, 4682 #memory, 4683 #cpu, 4684 #battery, 4685 #window { 4686 border-radius: ${toString design_factor}px; 4687 background-color: ${colors.hex.borders}; 4688 padding: 2px 8px; 4689 color: ${colors.hex.foreground}; 4690 } 4691 4692 #power-profiles-daemon.power-saver, 4693 #power-profiles-daemon.balanced { 4694 color: ${colors.hex.success}; 4695 } 4696 4697 #power-profiles-daemon.performance { 4698 color: ${colors.hex.foreground}; 4699 } 4700 4701 #idle_inhibitor.deactivated { 4702 color: ${colors.hex.foreground}; 4703 } 4704 4705 #idle_inhibitor.activated { 4706 color: ${colors.hex.success}; 4707 } 4708 4709 #pulseaudio.muted, 4710 #pulseaudio.source-muted { 4711 color: ${colors.hex.error}; 4712 } 4713 4714 #pulseaudio.bluetooth { 4715 color: ${colors.hex.foreground}; 4716 } 4717 4718 #bluetooth.no-controller, 4719 #bluetooth.disabled, 4720 #bluetooth.off { 4721 color: ${colors.hex.error}; 4722 } 4723 4724 #bluetooth.on, 4725 #bluetooth.discoverable, 4726 #bluetooth.pairable { 4727 color: ${colors.hex.foreground}; 4728 } 4729 4730 #bluetooth.discovering, 4731 #bluetooth.connected { 4732 color: ${colors.hex.success}; 4733 } 4734 4735 #network.disabled, 4736 #network.disconnected, 4737 #network.linked { 4738 color: ${colors.hex.error}; 4739 } 4740 4741 #network.etherenet, 4742 #network.wifi { 4743 color: ${colors.hex.foreground}; 4744 } 4745 4746 #custom-swaync { 4747 font-family: ${font_preferences.name.mono}; 4748 } 4749 4750 #privacy-item.audio-in, 4751 #privacy-item.screenshare { 4752 color: ${colors.hex.success}; 4753 } 4754 4755 #systemd-failed-units.ok { 4756 color: ${colors.hex.foreground}; 4757 } 4758 4759 #systemd-failed-units.degraded { 4760 color: ${colors.hex.error}; 4761 } 4762 4763 #battery.plugged, 4764 #battery.full { 4765 color: ${colors.hex.foreground}; 4766 } 4767 4768 #battery.charging { 4769 color: ${colors.hex.success}; 4770 } 4771 4772 #battery.warning { 4773 color: ${colors.hex.warning}; 4774 } 4775 4776 #battery.critical { 4777 color: ${colors.hex.error}; 4778 } 4779 4780 #workspaces, 4781 #taskbar, 4782 #tray { 4783 background-color: transparent; 4784 } 4785 4786 button { 4787 margin: 0px 2px; 4788 border-radius: ${toString design_factor}px; 4789 background-color: ${colors.hex.borders}; 4790 padding: 0px; 4791 color: ${colors.hex.foreground}; 4792 } 4793 4794 button * { 4795 padding: 0px 4px; 4796 } 4797 4798 button.active { 4799 background-color: ${colors.hex.background}; 4800 } 4801 4802 #window label { 4803 padding: 0px 4px; 4804 font-size: ${toString font_preferences.size}; 4805 } 4806 4807 #tray > widget { 4808 border-radius: ${toString design_factor}px; 4809 background-color: ${colors.hex.borders}; 4810 color: ${colors.hex.foreground}; 4811 } 4812 4813 #tray image { 4814 padding: 0px 8px; 4815 } 4816 4817 #tray > .passive { 4818 -gtk-icon-effect: dim; 4819 } 4820 4821 #tray > .active { 4822 background-color: ${colors.hex.borders}; 4823 } 4824 4825 #tray > .needs-attention { 4826 background-color: ${colors.hex.success}; 4827 -gtk-icon-effect: highlight; 4828 } 4829 4830 #tray > widget:hover { 4831 background-color: ${colors.hex.background}; 4832 } 4833 ''; 4834 }; 4835 4836 gradle = { 4837 enable = true; 4838 package = pkgs.gradle; 4839 }; 4840 4841 matplotlib = { 4842 enable = true; 4843 4844 config = { 4845 axes = { 4846 grid = true; 4847 }; 4848 }; 4849 }; 4850 4851 keepassxc = { 4852 enable = true; 4853 package = ( 4854 pkgs.keepassxc.override { 4855 withKeePassBrowser = true; 4856 withKeePassBrowserPasskeys = true; 4857 withKeePassFDOSecrets = true; 4858 withKeePassKeeShare = true; 4859 withKeePassNetworking = true; 4860 withKeePassSSHAgent = true; 4861 withKeePassYubiKey = true; 4862 } 4863 ); 4864 4865 # settings = { }; 4866 }; 4867 4868 gh = { 4869 enable = true; 4870 package = pkgs.gh; 4871 extensions = with pkgs; [ 4872 gh-contribs 4873 gh-notify 4874 gh-skyline 4875 ]; 4876 4877 gitCredentialHelper = { 4878 enable = true; 4879 4880 hosts = [ 4881 "https://github.com" 4882 "https://gist.github.com" 4883 ]; 4884 }; 4885 4886 settings = { 4887 git_protocol = "https"; 4888 4889 editor = "nano"; 4890 4891 # aliases = { }; 4892 }; 4893 }; 4894 4895 awscli = { 4896 enable = true; 4897 package = pkgs.awscli2; 4898 4899 settings = { 4900 default = { 4901 output = "json"; 4902 }; 4903 }; 4904 4905 # credentials = { }; 4906 }; 4907 4908 wofi = { 4909 enable = true; 4910 package = pkgs.wofi; 4911 4912 settings = { 4913 normal_window = false; 4914 layer = "overlay"; 4915 location = "center"; 4916 4917 gtk_dark = true; 4918 columns = 2; 4919 dynamic_lines = false; 4920 # lines = 9; # 9 -1 = 8 # Seems Broken 4921 height = "50%"; 4922 hide_scroll = false; 4923 4924 hide_search = false; 4925 prompt = "Search"; 4926 show_all = true; 4927 allow_markup = true; 4928 allow_images = true; 4929 image_size = 32; 4930 no_actions = true; 4931 4932 insensitive = true; 4933 4934 single_click = true; 4935 term = "tilix"; 4936 }; 4937 4938 style = '' 4939 window { 4940 border-radius: ${toString design_factor}px; 4941 } 4942 4943 #outer-box { 4944 padding: 16px; 4945 } 4946 4947 #inner-box { 4948 margin-top: 16px; 4949 } 4950 4951 #entry { 4952 margin-top: 4px; 4953 margin-bottom: 4px; 4954 } 4955 4956 #img { 4957 margin-right: 4px; 4958 } 4959 ''; 4960 }; 4961 4962 vscode = { 4963 enable = true; 4964 package = pkgs.vscodium; 4965 mutableExtensionsDir = false; 4966 4967 profiles = { 4968 default = { 4969 extensions = 4970 with pkgs.vscode-extensions; 4971 [ 4972 aaron-bond.better-comments 4973 adpyke.codesnap 4974 albymor.increment-selection 4975 alefragnani.bookmarks 4976 alexisvt.flutter-snippets 4977 antfu.slidev 4978 anweber.vscode-httpyac 4979 arrterian.nix-env-selector 4980 bierner.color-info 4981 bierner.comment-tagged-templates 4982 bierner.docs-view 4983 bierner.emojisense 4984 bierner.github-markdown-preview 4985 bierner.markdown-checkbox 4986 bierner.markdown-emoji 4987 bierner.markdown-footnotes 4988 bierner.markdown-mermaid 4989 bierner.markdown-preview-github-styles 4990 bmalehorn.vscode-fish 4991 bradgashler.htmltagwrap 4992 chanhx.crabviz 4993 christian-kohler.path-intellisense 4994 codezombiech.gitignore 4995 coolbear.systemd-unit-file 4996 cweijan.vscode-database-client2 4997 dart-code.dart-code 4998 dart-code.flutter 4999 davidanson.vscode-markdownlint 5000 dendron.adjust-heading-level 5001 dotenv.dotenv-vscode 5002 ecmel.vscode-html-css 5003 edonet.vscode-command-runner 5004 esbenp.prettier-vscode 5005 ethansk.restore-terminals 5006 fabiospampinato.vscode-open-in-github 5007 firefox-devtools.vscode-firefox-debug 5008 formulahendry.auto-close-tag 5009 formulahendry.auto-rename-tag 5010 formulahendry.code-runner 5011 foxundermoon.shell-format 5012 github.vscode-github-actions 5013 github.vscode-pull-request-github 5014 grapecity.gc-excelviewer 5015 gruntfuggly.todo-tree 5016 hars.cppsnippets 5017 hbenl.vscode-test-explorer 5018 hediet.vscode-drawio 5019 ibm.output-colorizer 5020 iciclesoft.workspacesort 5021 iliazeus.vscode-ansi 5022 james-yu.latex-workshop 5023 jbockle.jbockle-format-files 5024 jellyedwards.gitsweep 5025 jkillian.custom-local-formatters 5026 jnoortheen.nix-ide 5027 jock.svg 5028 llvm-vs-code-extensions.vscode-clangd 5029 lokalise.i18n-ally 5030 mads-hartmann.bash-ide-vscode 5031 mechatroner.rainbow-csv 5032 meganrogge.template-string-converter 5033 mishkinf.goto-next-previous-member 5034 mkhl.direnv 5035 moshfeu.compare-folders 5036 ms-azuretools.vscode-containers 5037 ms-azuretools.vscode-docker 5038 ms-kubernetes-tools.vscode-kubernetes-tools 5039 ms-python.black-formatter 5040 ms-python.debugpy 5041 ms-python.isort 5042 ms-python.python 5043 ms-toolsai.datawrangler 5044 ms-toolsai.jupyter 5045 ms-toolsai.jupyter-keymap 5046 ms-toolsai.jupyter-renderers 5047 ms-toolsai.vscode-jupyter-cell-tags 5048 ms-toolsai.vscode-jupyter-slideshow 5049 ms-vscode.anycode 5050 ms-vscode.cmake-tools 5051 ms-vscode.cpptools # Unfree 5052 ms-vscode.hexeditor 5053 ms-vscode.live-server 5054 ms-vscode.makefile-tools 5055 ms-vscode.test-adapter-converter 5056 njpwerner.autodocstring 5057 oderwat.indent-rainbow 5058 piousdeer.adwaita-theme 5059 platformio.platformio-vscode-ide 5060 quicktype.quicktype 5061 redhat.vscode-xml 5062 redhat.vscode-yaml 5063 rioj7.commandonallfiles 5064 rubymaniac.vscode-paste-and-indent 5065 ryu1kn.partial-diff 5066 sanaajani.taskrunnercode 5067 shardulm94.trailing-spaces 5068 slevesque.vscode-multiclip 5069 spywhere.guides 5070 stylelint.vscode-stylelint 5071 tailscale.vscode-tailscale 5072 tamasfe.even-better-toml 5073 timonwong.shellcheck 5074 usernamehw.errorlens 5075 vincaslt.highlight-matching-tag 5076 visualstudioexptteam.intellicode-api-usage-examples 5077 visualstudioexptteam.vscodeintellicode 5078 vscjava.vscode-gradle 5079 vscode-icons-team.vscode-icons 5080 vspacecode.whichkey 5081 wmaurer.change-case 5082 xdebug.php-debug 5083 zainchen.json 5084 ] 5085 ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ 5086 { 5087 name = "unique-lines"; 5088 publisher = "bibhasdn"; 5089 version = "1.0.0"; 5090 sha256 = "W0ZpZ6+vjkfNfOtekx5NWOFTyxfWAiB0XYcIwHabFPQ="; 5091 } 5092 { 5093 name = "vscode-sort"; 5094 publisher = "henriiik"; 5095 version = "0.2.5"; 5096 sha256 = "pvlSlWJTnLB9IbcVsz5HypT6NM9Ujb7UYs2kohwWVWk="; 5097 } 5098 { 5099 name = "vscode-sort-json"; 5100 publisher = "richie5um2"; 5101 version = "1.20.0"; 5102 sha256 = "Jobx5Pf4SYQVR2I4207RSSP9I85qtVY6/2Nvs/Vvi/0="; 5103 } 5104 { 5105 name = "pubspec-assist"; 5106 publisher = "jeroen-meijer"; 5107 version = "2.3.2"; 5108 sha256 = "+Mkcbeq7b+vkuf2/LYT10mj46sULixLNKGpCEk1Eu/0="; 5109 } 5110 { 5111 name = "arb-editor"; 5112 publisher = "Google"; 5113 version = "0.2.1"; 5114 sha256 = "uHdQeW9ZXYg6+VnD6cb5CU10/xV5hCtxt5K+j0qb7as="; 5115 } 5116 { 5117 name = "vscode-serial-monitor"; 5118 publisher = "ms-vscode"; 5119 version = "0.13.250826001"; 5120 sha256 = "zK/Q4tQkwrUzsn0FhnoWLfoR6+OYXKB2fnuimpiBfcI="; 5121 } 5122 ]; 5123 5124 enableUpdateCheck = true; 5125 enableExtensionUpdateCheck = true; 5126 5127 # userSettings = { }; 5128 }; 5129 }; 5130 }; 5131 5132 yt-dlp = { 5133 enable = true; 5134 package = ( 5135 pkgs.yt-dlp.override { 5136 atomicparsleySupport = true; 5137 ffmpegSupport = true; 5138 rtmpSupport = true; 5139 withAlias = true; 5140 } 5141 ); 5142 5143 settings = { 5144 no-embed-thumbnail = true; 5145 }; 5146 }; 5147 }; 5148 } 5149 ]; 5150 5151 users.root = { }; 5152 users.bitscoper = { }; 5153 5154 verbose = true; 5155 }; 5156 } 5157 5158 # FIXME: 05ac-033e-Gamepad > Rumble 5159 # FIXME: Cockpit > Login 5160 # FIXME: ELAN7001 SPI Fingerprint Sensor 5161 # FIXME: MariaDB > Login 5162 # FIXME: Unified Greeter and Lockscreen Themes 5163 # FIXME: Wofi > Window > Border Radius > Transperant Background 5164