bitscoper.dev

My NixOS

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