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