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