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