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