bitscoper.dev

My NixOS

Dynamically fetched the /etc/nixos/configuration.nix file containing 4766 lines hosted on my GitHub repository.

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