bitscoper.dev

My NixOS

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

1	# By Abdullah As-Sadeed
2	
3	{
4	  config,
5	  pkgs,
6	  ...
7	}:
8	let
9	  android_nixpkgs =
10	    pkgs.callPackage
11	      (import (
12	        builtins.fetchGit {
13	          url = "https://github.com/tadfisher/android-nixpkgs.git";
14	        }
15	      ))
16	      {
17	        channel = "stable";
18	      };
19	  android_sdk = android_nixpkgs.sdk (
20	    sdkPkgs: with sdkPkgs; [
21	      build-tools-36-0-0
22	      cmdline-tools-latest
23	      emulator
24	      platform-tools
25	      platforms-android-36
26	      system-images-android-36-google-apis-playstore-x86-64
27	      tools
28	    ]
29	  );
30	  android_sdk_path = "${android_sdk}/share/android-sdk";
31	
32	  home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/refs/heads/master.tar.gz";
33	
34	  font_preferences = {
35	    package = pkgs.nerd-fonts.noto;
36	
37	    name = {
38	      mono = "NotoMono Nerd Font";
39	      sans_serif = "NotoSans Nerd Font";
40	      serif = "NotoSerif Nerd Font";
41	      emoji = "Noto Color Emoji";
42	    };
43	
44	    size = 12;
45	  };
46	
47	  cursor = {
48	    theme = {
49	      package = pkgs.gnome-themes-extra;
50	      name = "Adwaita";
51	    };
52	
53	    size = 24;
54	  };
55	
56	  secrets = import ./secrets.nix;
57	in
58	{
59	  imports = [
60	    (import "${home-manager}/nixos")
61	
62	    ./hardware-configuration.nix
63	  ];
64	
65	  boot = {
66	    loader = {
67	      efi.canTouchEfiVariables = true;
68	      timeout = 2;
69	
70	      systemd-boot = {
71	        enable = true;
72	        consoleMode = "max";
73	        configurationLimit = null;
74	
75	        memtest86.enable = true;
76	      };
77	    };
78	
79	    initrd = {
80	      enable = true;
81	
82	      kernelModules = config.boot.kernelModules;
83	
84	      systemd = {
85	        enable = true;
86	        package = config.systemd.package;
87	      };
88	
89	      network.ssh.enable = true;
90	
91	      verbose = true;
92	    };
93	
94	    kernelPackages = pkgs.linuxPackages_zen;
95	
96	    extraModulePackages = with config.boot.kernelPackages; [
97	    ];
98	
99	    kernelModules = [
100	      "at24"
101	      "ee1004"
102	      "kvm-intel"
103	      "spd5118"
104	    ];
105	
106	    extraModprobeConfig = "options kvm_intel nested=1";
107	
108	    kernelParams = [
109	      "intel_iommu=on"
110	      "iommu=pt"
111	      "kvm.ignore_msrs=1"
112	      "boot.shell_on_fail"
113	      "rd.systemd.show_status=true"
114	      "rd.udev.log_level=err"
115	      "udev.log_level=err"
116	      "udev.log_priority=err"
117	    ];
118	
119	    consoleLogLevel = 4; # 4 = KERN_WARNING
120	
121	    tmp.cleanOnBoot = true;
122	
123	    plymouth = {
124	      enable = true;
125	
126	      themePackages = [
127	        pkgs.nixos-bgrt-plymouth
128	      ];
129	      theme = "nixos-bgrt";
130	
131	      extraConfig = ''
132	        UseFirmwareBackground=true
133	      '';
134	    };
135	  };
136	
137	  time = {
138	    timeZone = "Asia/Dhaka";
139	    hardwareClockInLocalTime = true;
140	  };
141	
142	  system = {
143	    copySystemConfiguration = true;
144	
145	    switch.enable = true;
146	    tools = {
147	      nixos-build-vms.enable = true;
148	      nixos-enter.enable = true;
149	      nixos-generate-config.enable = true;
150	      nixos-install.enable = true;
151	      nixos-option.enable = true;
152	      nixos-rebuild.enable = true;
153	      nixos-version.enable = true;
154	    };
155	
156	    autoUpgrade = {
157	      enable = false;
158	      channel = "https://nixos.org/channels/nixos-unstable";
159	      operation = "boot";
160	      allowReboot = false;
161	    };
162	
163	    activationScripts = { };
164	
165	    userActivationScripts = { };
166	
167	    stateVersion = "24.11";
168	  };
169	
170	  nix = {
171	    enable = true;
172	    channel.enable = true;
173	
174	    settings = {
175	      experimental-features = [
176	        "nix-command"
177	      ];
178	
179	      require-sigs = true;
180	      sandbox = true;
181	      auto-optimise-store = true;
182	
183	      cores = 0; # 0 = All
184	      # max-jobs = 1;
185	    };
186	
187	    gc = {
188	      automatic = true;
189	      dates = "weekly";
190	      persistent = true;
191	    };
192	  };
193	
194	  nixpkgs = {
195	    hostPlatform = "x86_64-linux";
196	
197	    config = {
198	      allowUnfree = true;
199	      android_sdk.accept_license = true;
200	    };
201	
202	    overlays = [
203	
204	    ];
205	  };
206	
207	  appstream.enable = true;
208	
209	  i18n = {
210	    defaultLocale = "en_US.UTF-8";
211	    extraLocales = [
212	      "C.UTF-8"
213	      "ar_SA.UTF-8"
214	      "bn_BD"
215	    ];
216	
217	    extraLocaleSettings = {
218	      LC_ADDRESS = config.i18n.defaultLocale;
219	      LC_COLLATE = config.i18n.defaultLocale;
220	      LC_CTYPE = config.i18n.defaultLocale;
221	      LC_IDENTIFICATION = config.i18n.defaultLocale;
222	      LC_MEASUREMENT = config.i18n.defaultLocale;
223	      LC_MESSAGES = config.i18n.defaultLocale;
224	      LC_MONETARY = config.i18n.defaultLocale;
225	      LC_NAME = config.i18n.defaultLocale;
226	      LC_NUMERIC = config.i18n.defaultLocale;
227	      LC_PAPER = config.i18n.defaultLocale;
228	      LC_TELEPHONE = config.i18n.defaultLocale;
229	      LC_TIME = config.i18n.defaultLocale;
230	      LC_ALL = config.i18n.defaultLocale;
231	    };
232	
233	    inputMethod = {
234	      enable = true;
235	      type = "ibus";
236	      ibus.engines = with pkgs.ibus-engines; [
237	        openbangla-keyboard
238	      ];
239	    };
240	  };
241	
242	  networking = {
243	    enableIPv6 = true;
244	
245	    domain = "bitscoper";
246	    hostName = "Bitscoper-WorkStation";
247	    fqdn = "${config.networking.hostName}.${config.networking.domain}";
248	
249	    wireless = {
250	      dbusControlled = true;
251	      userControlled.enable = true;
252	    };
253	
254	    networkmanager = {
255	      enable = true;
256	      package = pkgs.networkmanager;
257	
258	      ethernet.macAddress = "permanent";
259	
260	      wifi = {
261	        backend = "wpa_supplicant";
262	
263	        powersave = false;
264	
265	        scanRandMacAddress = true;
266	        macAddress = "permanent";
267	      };
268	
269	      logLevel = "WARN";
270	    };
271	
272	    firewall = {
273	      enable = false;
274	
275	      allowPing = true;
276	
277	      allowedTCPPorts = [
278	
279	      ];
280	      allowedUDPPorts = [
281	
282	      ];
283	    };
284	
285	    nameservers = [
286	      "1.1.1.3#one.one.one.one"
287	      "1.0.0.3#one.one.one.one"
288	    ];
289	
290	    timeServers = [
291	      "0.nixos.pool.ntp.org"
292	      "1.nixos.pool.ntp.org"
293	      "2.nixos.pool.ntp.org"
294	      "3.nixos.pool.ntp.org"
295	    ];
296	  };
297	
298	  security = {
299	    allowSimultaneousMultithreading = true;
300	
301	    tpm2.enable = true;
302	
303	    lockKernelModules = false;
304	
305	    pam = {
306	      mount = {
307	        enable = true;
308	
309	        createMountPoints = true;
310	        removeCreatedMountPoints = true;
311	
312	        logoutHup = true;
313	        logoutTerm = false;
314	        logoutKill = false;
315	
316	        logoutWait = 0;
317	      };
318	
319	      services = {
320	        login = {
321	          unixAuth = true;
322	          nodelay = false;
323	
324	          # fprintAuth = true;
325	
326	          logFailures = true;
327	
328	          enableGnomeKeyring = true;
329	
330	          gnupg = {
331	            enable = true;
332	            storeOnly = false;
333	            noAutostart = false;
334	          };
335	        };
336	
337	        sudo = {
338	          unixAuth = true;
339	          nodelay = false;
340	
341	          fprintAuth = true;
342	
343	          logFailures = true;
344	        };
345	
346	        polkit-1 = {
347	          unixAuth = true;
348	          nodelay = false;
349	
350	          fprintAuth = true;
351	
352	          logFailures = true;
353	        };
354	      };
355	    };
356	
357	    sudo = {
358	      enable = true;
359	      package = pkgs.sudo;
360	
361	      execWheelOnly = true;
362	      wheelNeedsPassword = true;
363	    };
364	
365	    polkit = {
366	      enable = true;
367	      package = pkgs.polkit;
368	    };
369	
370	    rtkit.enable = true;
371	
372	    wrappers = {
373	      spice-client-glib-usb-acl-helper.source = "${pkgs.spice-gtk}/bin/spice-client-glib-usb-acl-helper";
374	    };
375	
376	    audit = {
377	      enable = false;
378	    };
379	  };
380	
381	  hardware = {
382	    enableAllFirmware = true;
383	    enableRedistributableFirmware = true;
384	
385	    cpu = {
386	      intel = {
387	        updateMicrocode = true;
388	      };
389	    };
390	
391	    graphics = {
392	      enable = true;
393	      enable32Bit = true;
394	
395	      extraPackages = with pkgs; [
396	        intel-media-driver
397	        intel-compute-runtime
398	      ];
399	    };
400	
401	    sensor = {
402	      hddtemp = {
403	        enable = true;
404	        unit = "C";
405	        drives = [
406	          "/dev/disk/by-path/*"
407	        ];
408	      };
409	    };
410	
411	    bluetooth = {
412	      enable = true;
413	      package = pkgs.bluez;
414	
415	      hsphfpd.enable = false; # Conflicts wwth WirePlumber
416	
417	      powerOnBoot = true;
418	
419	      input.General = {
420	        IdleTimeout = 0; # 0 = Disabled
421	        LEAutoSecurity = true;
422	        ClassicBondedOnly = true;
423	        UserspaceHID = true;
424	      };
425	
426	      network.General = {
427	        DisableSecurity = false;
428	      };
429	
430	      settings = {
431	        General = {
432	          MaxControllers = 0; # 0 = Unlimited
433	          ControllerMode = "dual";
434	
435	          Name = config.networking.hostName;
436	
437	          DiscoverableTimeout = 0; # 0 = Disabled
438	          PairableTimeout = 0; # 0 = Disabled
439	          AlwaysPairable = true;
440	          FastConnectable = true;
441	
442	          ReverseServiceDiscovery = true;
443	          NameResolving = true;
444	          RemoteNameRequestRetryDelay = 60; # Seconds
445	          RefreshDiscovery = true;
446	          TemporaryTimeout = 0; # 0 = Disabled
447	
448	          SecureConnections = "on";
449	          Privacy = "off";
450	
451	          Experimental = true;
452	          KernelExperimental = true;
453	        };
454	
455	        Policy = {
456	          AutoEnable = true;
457	
458	          ResumeDelay = 2; # Seconds
459	          ReconnectAttempts = 7;
460	          ReconnectIntervals = "1, 2, 4, 8, 16, 32, 64";
461	        };
462	
463	        GATT = {
464	          Cache = "always";
465	        };
466	
467	        CSIS = {
468	          Encryption = true;
469	        };
470	
471	        AVRCP = {
472	          VolumeCategory = true;
473	          VolumeWithoutTarget = false;
474	        };
475	
476	        AVDTP = {
477	          SessionMode = "ertm";
478	        };
479	
480	        AdvMon = {
481	          RSSISamplingPeriod = "0x00";
482	        };
483	      };
484	    };
485	
486	    rtl-sdr = {
487	      enable = true;
488	      package = pkgs.rtl-sdr;
489	    };
490	
491	    sane = {
492	      enable = true;
493	      openFirewall = true;
494	    };
495	  };
496	
497	  virtualisation = {
498	    libvirtd = {
499	      enable = true;
500	      package = pkgs.libvirt;
501	
502	      qemu = {
503	        package = pkgs.qemu_kvm;
504	
505	        swtpm = {
506	          enable = true;
507	          package = pkgs.swtpm;
508	        };
509	
510	        ovmf = {
511	          enable = true;
512	          packages = [
513	            (pkgs.OVMFFull.override {
514	              secureBoot = true;
515	              tpmSupport = true;
516	            }).fd
517	          ];
518	        };
519	
520	        runAsRoot = true;
521	      };
522	    };
523	    spiceUSBRedirection.enable = true;
524	
525	    containers.enable = true;
526	
527	    podman = {
528	      enable = true;
529	      package = pkgs.podman;
530	      dockerCompat = true;
531	
532	      defaultNetwork.settings.dns_enabled = true;
533	    };
534	
535	    oci-containers.backend = "podman";
536	
537	    waydroid.enable = true;
538	  };
539	
540	  systemd = {
541	    package = pkgs.systemd;
542	
543	    packages = with pkgs; [
544	      cloudflare-warp
545	      hardinfo2
546	    ];
547	
548	    globalEnvironment = { };
549	
550	    targets = {
551	      multi-user.wants = [
552	        "warp-svc.service"
553	      ];
554	    };
555	  };
556	
557	  services = {
558	    dbus = {
559	      enable = true;
560	      dbusPackage = pkgs.dbus;
561	
562	      implementation = "broker";
563	
564	      packages = with pkgs; [
565	      ];
566	    };
567	
568	    timesyncd = {
569	      enable = true;
570	
571	      servers = config.networking.timeServers;
572	      fallbackServers = config.networking.timeServers;
573	
574	      extraConfig = '''';
575	    };
576	
577	    fwupd = {
578	      enable = true;
579	      package = pkgs.fwupd;
580	    };
581	
582	    btrfs.autoScrub = {
583	      enable = true;
584	
585	      interval = "weekly";
586	      fileSystems = [
587	        "/"
588	      ];
589	    };
590	
591	    acpid = {
592	      enable = true;
593	
594	      powerEventCommands = '''';
595	      acEventCommands = '''';
596	      lidEventCommands = '''';
597	
598	      logEvents = false;
599	    };
600	
601	    power-profiles-daemon = {
602	      enable = true;
603	      package = pkgs.power-profiles-daemon;
604	    };
605	
606	    logind = {
607	      killUserProcesses = true;
608	
609	      lidSwitch = "ignore";
610	      lidSwitchDocked = "ignore";
611	      lidSwitchExternalPower = "ignore";
612	
613	      powerKey = "poweroff";
614	      powerKeyLongPress = "poweroff";
615	
616	      rebootKey = "reboot";
617	      rebootKeyLongPress = "reboot";
618	
619	      suspendKey = "ignore";
620	      suspendKeyLongPress = "ignore";
621	
622	      hibernateKey = "ignore";
623	      hibernateKeyLongPress = "ignore";
624	    };
625	
626	    udev = {
627	      enable = true;
628	      packages = with pkgs; [
629	        android-udev-rules
630	        game-devices-udev-rules
631	        gnome-settings-daemon
632	        libmtp.out
633	        rtl-sdr
634	      ];
635	    };
636	
637	    libinput = {
638	      enable = true;
639	
640	      mouse = {
641	        leftHanded = false;
642	        disableWhileTyping = false;
643	        tapping = true;
644	        middleEmulation = true;
645	        clickMethod = "buttonareas";
646	        scrollMethod = "twofinger";
647	        naturalScrolling = true;
648	        horizontalScrolling = true;
649	        tappingDragLock = true;
650	        sendEventsMode = "enabled";
651	      };
652	
653	      touchpad = {
654	        leftHanded = false;
655	        disableWhileTyping = false;
656	        tapping = true;
657	        middleEmulation = true;
658	        clickMethod = "buttonareas";
659	        scrollMethod = "twofinger";
660	        naturalScrolling = true;
661	        horizontalScrolling = true;
662	        tappingDragLock = true;
663	        sendEventsMode = "enabled";
664	      };
665	    };
666	
667	    fprintd = {
668	      enable = true;
669	      package = if config.services.fprintd.tod.enable then pkgs.fprintd-tod else pkgs.fprintd;
670	      # tod = {
671	      #   enable = true;
672	      #   driver = ;
673	      # };
674	    };
675	
676	    displayManager = {
677	      enable = true;
678	      preStart = '''';
679	
680	      defaultSession = "gnome";
681	
682	      autoLogin = {
683	        enable = false;
684	        user = null;
685	      };
686	
687	      logToJournal = true;
688	      logToFile = true;
689	    };
690	
691	    xserver = {
692	      enable = true;
693	
694	      displayManager = {
695	        gdm = {
696	          enable = true;
697	          wayland = true;
698	
699	          banner = config.networking.hostName;
700	          autoSuspend = false;
701	
702	          settings = { };
703	
704	          debug = false;
705	        };
706	      };
707	
708	      desktopManager = {
709	        gnome = {
710	          enable = true;
711	
712	          extraGSettingsOverridePackages = with pkgs; [
713	          ];
714	          extraGSettingsOverrides = '''';
715	
716	          debug = false;
717	        };
718	
719	        xterm.enable = false;
720	      };
721	
722	      excludePackages = with pkgs; [
723	        xterm
724	      ];
725	    };
726	
727	    gnome = {
728	      core-apps.enable = true;
729	      core-os-services.enable = true;
730	      core-shell.enable = true;
731	      glib-networking.enable = true;
732	      gnome-browser-connector.enable = true;
733	      gnome-keyring.enable = true;
734	      gnome-online-accounts.enable = true;
735	      gnome-remote-desktop.enable = true;
736	      gnome-settings-daemon.enable = true;
737	      gnome-user-share.enable = true;
738	    };
739	
740	    gvfs = {
741	      enable = true;
742	      package = pkgs.gnome.gvfs;
743	    };
744	
745	    pipewire = {
746	      enable = true;
747	      package = pkgs.pipewire;
748	      systemWide = false;
749	
750	      audio.enable = true;
751	
752	      alsa.enable = true;
753	      alsa.support32Bit = true;
754	      pulse.enable = true;
755	      jack.enable = true;
756	
757	      socketActivation = true;
758	
759	      wireplumber = {
760	        enable = true;
761	        package = pkgs.wireplumber;
762	
763	        extraConfig.bluetoothEnhancements = {
764	          "monitor.bluez.properties" = {
765	            "bluez5.enable-hw-volume" = true;
766	
767	            "bluez5.enable-sbc-xq" = true;
768	            "bluez5.enable-msbc" = true;
769	
770	            "bluez5.roles" = [
771	              "a2dp_sink"
772	              "a2dp_source"
773	              "bap_sink"
774	              "bap_source"
775	              "hfp_ag"
776	              "hfp_hf"
777	              "hsp_ag"
778	              "hsp_hs"
779	            ];
780	
781	            "bluez5.codecs" = [
782	              "aac"
783	              "aptx"
784	              "aptx_hd"
785	              "aptx_ll"
786	              "aptx_ll_duplex"
787	              "faststream"
788	              "faststream_duplex"
789	              "lc3"
790	              "lc3plus_h3"
791	              "ldac"
792	              "opus_05"
793	              "opus_05_51"
794	              "opus_05_71"
795	              "opus_05_duplex"
796	              "opus_05_pro"
797	              "sbc"
798	              "sbc_xq"
799	            ];
800	          };
801	        };
802	      };
803	
804	      raopOpenFirewall = true;
805	    };
806	
807	    pulseaudio.enable = false;
808	
809	    phpfpm = {
810	      settings = { };
811	
812	      phpOptions = ''
813	        default_charset = "UTF-8"
814	        error_reporting = E_ALL
815	        display_errors = Off
816	        log_errors = On
817	        cgi.force_redirect = 1
818	        expose_php = On
819	        file_uploads = On
820	        session.cookie_lifetime = 0
821	        session.use_cookies = 1
822	        session.use_only_cookies = 1
823	        session.use_strict_mode = 1
824	        session.cookie_httponly = 1
825	        session.cookie_secure = 1
826	        session.cookie_samesite = "Strict"
827	        session.gc_maxlifetime = 43200
828	        session.use_trans_sid = O
829	        session.cache_limiter = nocache
830	        session.sid_length = 248
831	      '';
832	    };
833	
834	    avahi = {
835	      enable = true;
836	      package = pkgs.avahi;
837	
838	      ipv4 = true;
839	      ipv6 = true;
840	
841	      nssmdns4 = true;
842	      nssmdns6 = true;
843	
844	      wideArea = true;
845	
846	      publish = {
847	        enable = true;
848	        domain = true;
849	        addresses = true;
850	        workstation = true;
851	        hinfo = true;
852	        userServices = true;
853	      };
854	
855	      domainName = config.networking.hostName;
856	      hostName = config.networking.hostName;
857	
858	      openFirewall = true;
859	    };
860	
861	    openssh = {
862	      enable = true;
863	      package = pkgs.openssh;
864	
865	      listenAddresses = [
866	        {
867	          addr = "0.0.0.0";
868	        }
869	        {
870	          addr = "::";
871	        }
872	      ];
873	      ports = [
874	        22
875	      ];
876	      allowSFTP = true;
877	
878	      banner = config.networking.hostName;
879	
880	      authorizedKeysInHomedir = true;
881	
882	      settings = {
883	        PermitRootLogin = "yes";
884	        PasswordAuthentication = true;
885	        X11Forwarding = false;
886	        StrictModes = true;
887	        UseDns = true;
888	        LogLevel = "ERROR";
889	      };
890	
891	      openFirewall = true;
892	    };
893	    sshd.enable = true;
894	
895	    cockpit = {
896	      enable = true;
897	      package = pkgs.cockpit;
898	
899	      port = 9090;
900	      openFirewall = true;
901	    };
902	
903	    printing = {
904	      enable = true;
905	      package = pkgs.cups;
906	
907	      drivers = with pkgs; [
908	        gutenprint
909	        gutenprintBin
910	      ];
911	
912	      cups-pdf.enable = true;
913	
914	      listenAddresses = [
915	        "*:631"
916	      ];
917	
918	      allowFrom = [
919	        "all"
920	      ];
921	
922	      browsing = true;
923	      webInterface = true;
924	
925	      defaultShared = true;
926	      startWhenNeeded = true;
927	
928	      extraConf = ''
929	        DefaultLanguage en
930	        ServerName ${config.networking.hostName}
931	        ServerAlias *
932	        ServerTokens Full
933	        ServerAdmin bitscoper@${config.networking.hostName}
934	        BrowseLocalProtocols all
935	        BrowseWebIF On
936	        HostNameLookups On
937	        AccessLogLevel config
938	        AutoPurgeJobs Yes
939	        PreserveJobHistory Off
940	        PreserveJobFiles Off
941	        DirtyCleanInterval 30
942	        LogTimeFormat standard
943	      '';
944	
945	      logLevel = "warn";
946	
947	      openFirewall = true;
948	    };
949	    ipp-usb.enable = true;
950	    system-config-printer.enable = true;
951	
952	    bind = {
953	      enable = false;
954	      package = pkgs.bind;
955	
956	      listenOn = [
957	        "any"
958	      ];
959	      ipv4Only = false;
960	      listenOnIpv6 = [
961	        "any"
962	      ];
963	
964	      cacheNetworks = [
965	        "127.0.0.0/24"
966	        "::1/128"
967	      ];
968	
969	      extraOptions = ''
970	        recursion no;
971	      '';
972	    };
973	
974	    memcached = {
975	      enable = true;
976	      listen = "*";
977	      port = 11211;
978	      enableUnixSocket = false;
979	      maxMemory = 64; # Megabytes
980	      maxConnections = 256;
981	    };
982	
983	    postgresql = {
984	      enable = true;
985	      package = pkgs.postgresql;
986	
987	      enableTCPIP = true;
988	
989	      settings = pkgs.lib.mkForce {
990	        listen_addresses = "*";
991	        port = 5432;
992	        jit = true;
993	      };
994	
995	      authentication = pkgs.lib.mkOverride 10 ''
996	        local all all md5
997	        host all all 0.0.0.0/0 md5
998	        host all all ::/0 md5
999	        local replication all md5
1000	        host replication all 0.0.0.0/0 md5
1001	        host replication all ::/0 md5
1002	      '';
1003	
1004	      checkConfig = true;
1005	
1006	      initialScript = pkgs.writeText "initScript" ''
1007	        ALTER USER postgres WITH PASSWORD '${secrets.password_1_of_bitscoper}';
1008	      '';
1009	    };
1010	
1011	    mysql = {
1012	      enable = true;
1013	      package = pkgs.mariadb;
1014	
1015	      settings = {
1016	        mysqld = {
1017	          bind-address = "*";
1018	          port = 3306;
1019	
1020	          sql_mode = "";
1021	        };
1022	      };
1023	
1024	      initialScript = pkgs.writeText "initScript" ''
1025	        grant all privileges on *.* to 'root'@'%' identified by password '${secrets.hashed_password_1_of_bitscoper}' with grant option;
1026	        DELETE FROM mysql.user WHERE `Host`='localhost' AND `User`='root';
1027	        flush privileges;
1028	      '';
1029	    };
1030	
1031	    postfix = {
1032	      enable = true;
1033	
1034	      enableSmtp = true;
1035	      enableSubmission = true;
1036	      enableSubmissions = true;
1037	
1038	      domain = config.networking.hostName;
1039	      hostname = config.networking.hostName;
1040	      origin = config.networking.hostName;
1041	
1042	      virtualMapType = "pcre";
1043	      aliasMapType = "pcre";
1044	      enableHeaderChecks = true;
1045	
1046	      setSendmail = true;
1047	
1048	      config = { };
1049	    };
1050	
1051	    opendkim = {
1052	      enable = true;
1053	
1054	      domains = "csl:${config.networking.hostName}";
1055	      selector = "default";
1056	
1057	      settings = { };
1058	    };
1059	
1060	    dovecot2 = {
1061	      enable = true;
1062	
1063	      enableImap = true;
1064	      enableLmtp = true;
1065	      enablePop3 = false;
1066	      protocols = [
1067	        "imap"
1068	        "lmtp"
1069	      ];
1070	
1071	      enableQuota = true;
1072	      quotaPort = "12340";
1073	
1074	      enableDHE = true;
1075	
1076	      createMailUser = true;
1077	
1078	      enablePAM = true;
1079	      showPAMFailure = true;
1080	
1081	      pluginSettings = { };
1082	
1083	      extraConfig = '''';
1084	    };
1085	
1086	    jellyfin = {
1087	      enable = true;
1088	      package = pkgs.jellyfin;
1089	
1090	      openFirewall = true;
1091	    };
1092	
1093	    ollama = {
1094	      enable = true;
1095	      package = pkgs.ollama;
1096	
1097	      host = "0.0.0.0";
1098	      port = 11434;
1099	      openFirewall = true;
1100	    };
1101	
1102	    open-webui = {
1103	      enable = true;
1104	      package = pkgs.open-webui;
1105	
1106	      host = "*";
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	      sites = { };
1164	    };
1165	
1166	    tailscale = {
1167	      enable = true;
1168	      package = pkgs.tailscale;
1169	
1170	      disableTaildrop = false;
1171	
1172	      port = 0; # 0 = Automatic
1173	      openFirewall = true;
1174	    };
1175	
1176	    sysprof.enable = true;
1177	
1178	    logrotate = {
1179	      enable = true;
1180	
1181	      checkConfig = true;
1182	      allowNetworking = true;
1183	    };
1184	  };
1185	
1186	  programs = {
1187	    command-not-found.enable = true;
1188	
1189	    nix-ld = {
1190	      enable = true;
1191	      package = pkgs.nix-ld;
1192	
1193	      libraries = with pkgs; [
1194	        glib.out
1195	        libGL
1196	        llvmPackages.stdenv.cc.cc.lib
1197	        stdenv.cc.cc.lib
1198	      ];
1199	    };
1200	
1201	    java = {
1202	      enable = true;
1203	      package = pkgs.jdk23;
1204	
1205	      binfmt = true;
1206	    };
1207	
1208	    appimage = {
1209	      enable = true;
1210	      package = pkgs.appimage-run;
1211	
1212	      binfmt = true;
1213	    };
1214	
1215	    xwayland.enable = true;
1216	
1217	    bash = {
1218	      completion = {
1219	        enable = true;
1220	        package = pkgs.bash-completion;
1221	      };
1222	
1223	      enableLsColors = true;
1224	
1225	      shellAliases = { };
1226	
1227	      loginShellInit = '''';
1228	
1229	      shellInit = '''';
1230	
1231	      interactiveShellInit = ''
1232	        PROMPT_COMMAND="history -a"
1233	      '';
1234	    };
1235	
1236	    fish = {
1237	      enable = true;
1238	      package = pkgs.fish;
1239	
1240	      vendor = {
1241	        config.enable = true;
1242	        functions.enable = true;
1243	        completions.enable = true;
1244	      };
1245	
1246	      shellAbbrs = { };
1247	      shellAliases = { };
1248	
1249	      promptInit = '''';
1250	
1251	      loginShellInit = '''';
1252	
1253	      shellInit = '''';
1254	
1255	      interactiveShellInit = ''
1256	        if command -q nix-your-shell
1257	        nix-your-shell fish | source
1258	        end
1259	      '';
1260	    };
1261	
1262	    direnv = {
1263	      enable = true;
1264	      package = pkgs.direnv;
1265	
1266	      nix-direnv.enable = true;
1267	      loadInNixShell = true;
1268	
1269	      enableBashIntegration = true;
1270	      enableFishIntegration = true;
1271	
1272	      direnvrcExtra = '''';
1273	
1274	      silent = false;
1275	    };
1276	
1277	    nix-index = {
1278	      package = pkgs.nix-index;
1279	
1280	      enableBashIntegration = true;
1281	      enableFishIntegration = true;
1282	    };
1283	
1284	    gnupg = {
1285	      package = pkgs.gnupg;
1286	
1287	      agent = {
1288	        enable = true;
1289	
1290	        enableBrowserSocket = true;
1291	        enableExtraSocket = true;
1292	        enableSSHSupport = false;
1293	
1294	        pinentryPackage = pkgs.pinentry-gnome3;
1295	      };
1296	
1297	      dirmngr.enable = true;
1298	    };
1299	
1300	    ssh = {
1301	      package = pkgs.openssh;
1302	
1303	      startAgent = true;
1304	      agentTimeout = null;
1305	    };
1306	
1307	    git = {
1308	      enable = true;
1309	      package = pkgs.gitFull;
1310	
1311	      lfs = {
1312	        enable = true;
1313	        package = pkgs.git-lfs;
1314	
1315	        enablePureSSHTransfer = true;
1316	      };
1317	
1318	      prompt.enable = true;
1319	
1320	      config = {
1321	        init.defaultBranch = "main";
1322	
1323	        credential.helper = "${pkgs.gitFull}/bin/git-credential-libsecret";
1324	
1325	        user = {
1326	          name = "Abdullah As-Sadeed";
1327	          email = "bitscoper@gmail.com";
1328	        };
1329	      };
1330	    };
1331	
1332	    usbtop.enable = true;
1333	
1334	    adb.enable = true;
1335	
1336	    nano = {
1337	      enable = true;
1338	      package = pkgs.nano;
1339	
1340	      syntaxHighlight = true;
1341	
1342	      nanorc = ''
1343	        set linenumbers
1344	        set softwrap
1345	        set indicator
1346	        set autoindent
1347	      '';
1348	    };
1349	
1350	    bat = {
1351	      enable = true;
1352	      package = pkgs.bat;
1353	      extraPackages = with pkgs.bat-extras; [
1354	        batdiff
1355	        batgrep
1356	        batman
1357	        batpipe
1358	        batwatch
1359	        prettybat
1360	      ];
1361	
1362	      settings = { };
1363	    };
1364	
1365	    virt-manager = {
1366	      enable = true;
1367	      package = pkgs.virt-manager;
1368	    };
1369	
1370	    system-config-printer.enable = true;
1371	
1372	    file-roller.enable = true;
1373	    gnome-disks.enable = true;
1374	    seahorse.enable = true;
1375	
1376	    firefox = {
1377	      enable = true;
1378	      package = pkgs.firefox-devedition;
1379	      languagePacks = [
1380	        "ar"
1381	        "bn"
1382	        "en-US"
1383	      ];
1384	
1385	      nativeMessagingHosts = {
1386	        packages = with pkgs; [
1387	          gnomeExtensions.gsconnect
1388	          keepassxc
1389	        ];
1390	      };
1391	
1392	      policies = {
1393	        Extensions = {
1394	          Install = [
1395	            "https://addons.mozilla.org/firefox/downloads/latest/decentraleyes/latest.xpi"
1396	            "https://addons.mozilla.org/firefox/downloads/latest/gnome-shell-integration/latest.xpi"
1397	            "https://addons.mozilla.org/firefox/downloads/latest/gsconnect/latest.xpi"
1398	            "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi"
1399	            "https://addons.mozilla.org/firefox/downloads/latest/languagetool/latest.xpi"
1400	            "https://addons.mozilla.org/firefox/downloads/latest/search_by_image/latest.xpi"
1401	            "https://addons.mozilla.org/firefox/downloads/latest/single-file/latest.xpi"
1402	            "https://addons.mozilla.org/firefox/downloads/latest/tab-disguiser/latest.xpi"
1403	            "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"
1404	            "https://addons.mozilla.org/firefox/downloads/latest/zjm-whatfont/latest.xpi"
1405	          ];
1406	
1407	          Locked = [
1408	            "chrome-gnome-shell@gnome.org" # GNOME Shell Integration
1409	            "gsconnect@andyholmes.github.io" # GSConnect
1410	            "jid1-BoFifL9Vbdl2zQ@jetpack" # Decentraleyes
1411	            "uBlock0@raymondhill.net" # uBlock Origin
1412	            "{19b92b95-9cca-4f8d-b364-37a81f7133d5}" # Tab Disguiser
1413	            "{2e5ff8c8-32fe-46d0-9fc8-6b8986621f3c}" # Search by Image
1414	            "{531906d3-e22f-4a6c-a102-8057b88a1a63}" # SingleFile
1415	            "{dcb8caa2-63fa-41aa-a508-a45c5990ebdd}" # WhatFont
1416	          ];
1417	        };
1418	      };
1419	
1420	      autoConfig = '''';
1421	
1422	      preferences = {
1423	        "browser.contentblocking.category" = "strict";
1424	        "browser.search.region" = "BD";
1425	        "browser.search.suggest.enabled.private" = true;
1426	        "dom.security.https_only_mode" = true;
1427	        "privacy.globalprivacycontrol.enabled" = true;
1428	        "security.warn_submit_secure_to_insecure" = true;
1429	        # "privacy.fingerprintingProtection" = true;
1430	        # "privacy.trackingprotection.enabled" = true;
1431	      };
1432	      preferencesStatus = "locked";
1433	    };
1434	
1435	    thunderbird = {
1436	      enable = true;
1437	      package = pkgs.thunderbird-latest;
1438	
1439	      preferences = { };
1440	    };
1441	
1442	    wireshark = {
1443	      enable = true;
1444	      package = pkgs.wireshark;
1445	
1446	      dumpcap.enable = true;
1447	      usbmon.enable = true;
1448	    };
1449	
1450	    localsend = {
1451	      enable = true;
1452	      package = pkgs.localsend;
1453	
1454	      openFirewall = true;
1455	    };
1456	
1457	    dconf = {
1458	      enable = true;
1459	      profiles.user.databases = [
1460	        {
1461	          lockAll = true;
1462	
1463	          settings = {
1464	            "system/locale" = {
1465	              region = config.i18n.defaultLocale;
1466	            };
1467	            "system/proxy" = {
1468	              mode = "auto";
1469	            };
1470	
1471	            "org/gnome/system/location" = {
1472	              enabled = true;
1473	            };
1474	            "org/gnome/settings-daemon/plugins/power" = {
1475	              idle-dim = false;
1476	              power-button-action = "interactive";
1477	              power-saver-profile-on-low-battery = false;
1478	              sleep-inactive-ac-type = "nothing";
1479	              sleep-inactive-battery-type = "nothing";
1480	            };
1481	            "org/gnome/settings-daemon/plugins/color" = {
1482	              night-light-enabled = false;
1483	            };
1484	            "org/gnome/desktop/peripherals/keyboard" = {
1485	              numlock-state = true;
1486	              repeat = true;
1487	            };
1488	            "org/gnome/desktop/peripherals/mouse" = {
1489	              accel-profile = "default";
1490	              left-handed = false;
1491	              natural-scroll = false;
1492	            };
1493	            "org/gnome/desktop/peripherals/touchpad" = {
1494	              click-method = "areas";
1495	              disable-while-typing = true;
1496	              edge-scrolling-enabled = false;
1497	              natural-scroll = true;
1498	              send-events = "enabled";
1499	              tap-to-click = true;
1500	              two-finger-scrolling-enabled = true;
1501	            };
1502	            "org/gnome/desktop/peripherals/pointingstick" = {
1503	              scroll-method = "default";
1504	            };
1505	            "org/gnome/desktop/media-handling" = {
1506	              autorun-never = false;
1507	            };
1508	            "org/gnome/desktop/input-sources" = {
1509	              per-window = false;
1510	              show-all-sources = true;
1511	              sources = [
1512	                (pkgs.lib.gvariant.mkTuple [
1513	                  "xkb"
1514	                  "us"
1515	                ])
1516	                (pkgs.lib.gvariant.mkTuple [
1517	                  "ibus"
1518	                  "OpenBangla"
1519	                ])
1520	                (pkgs.lib.gvariant.mkTuple [
1521	                  "xkb"
1522	                  "bd"
1523	                ])
1524	                (pkgs.lib.gvariant.mkTuple [
1525	                  "xkb"
1526	                  "ara"
1527	                ])
1528	              ];
1529	            };
1530	            "org/gnome/desktop/sound" = {
1531	              allow-volume-above-100-percent = true;
1532	              event-sounds = true;
1533	            };
1534	            "org/gnome/desktop/datetime" = {
1535	              automatic-timezone = false;
1536	            };
1537	            "org/gnome/desktop/session" = {
1538	              idle-delay = pkgs.lib.gvariant.mkUint32 0; # 0 = Disabled
1539	            };
1540	            "org/gnome/desktop/privacy" = {
1541	              disable-camera = false;
1542	              old-files-age = pkgs.lib.gvariant.mkUint32 1; # 1 = 1 day
1543	              remember-app-usage = false;
1544	              remember-recent-files = false;
1545	              remove-old-temp-files = true;
1546	              remove-old-trash-files = true;
1547	              report-technical-problems = false;
1548	              send-software-usage-stats = false;
1549	              usb-protection = true;
1550	            };
1551	            "org/gnome/desktop/screensaver" = {
1552	              lock-enabled = false;
1553	            };
1554	            "org/gnome/desktop/notifications" = {
1555	              show-in-lock-screen = true;
1556	            };
1557	            "org/gnome/desktop/interface" = {
1558	              # overlay-scrolling = true;
1559	              clock-format = "12h";
1560	              clock-show-date = true;
1561	              clock-show-weekday = true;
1562	              color-scheme = "prefer-dark";
1563	              cursor-blink = true;
1564	              document-font-name = "${font_preferences.name.sans_serif} ${toString font_preferences.size}";
1565	              enable-animations = true;
1566	              enable-hot-corners = true;
1567	              gtk-enable-primary-paste = true;
1568	              gtk-key-theme = "Default";
1569	              locate-pointer = true;
1570	              monospace-font-name = "${font_preferences.name.mono} ${toString font_preferences.size}";
1571	              show-battery-percentage = true;
1572	            };
1573	            "org/gnome/desktop/wm/preferences" = {
1574	              action-double-click-titlebar = "toggle-maximize";
1575	              action-middle-click-titlebar = "toggle-maximize-vertically";
1576	              action-right-click-titlebar = "menu";
1577	              auto-raise = true;
1578	              button-layout = "appmenu:minimize,maximize,close";
1579	              focus-mode = "mouse";
1580	              mouse-button-modifier = "<Super>";
1581	              resize-with-right-button = false;
1582	              visual-bell = false;
1583	            };
1584	            "org/gnome/desktop/calendar" = {
1585	              show-weekdate = true;
1586	            };
1587	            "org/gnome/desktop/search-providers" = {
1588	              disable-external = false;
1589	            };
1590	            "org/gnome/desktop/file-sharing" = {
1591	              require-password = "always";
1592	            };
1593	            "org/gnome/desktop/a11y" = {
1594	              always-show-universal-access-status = false;
1595	            };
1596	            "org/gnome/desktop/a11y/keyboard" = {
1597	              enable = false;
1598	              bouncekeys-enable = false;
1599	              mousekeys-enable = false;
1600	              slowkeys-enable = false;
1601	              stickykeys-enable = false;
1602	              togglekeys-enable = true;
1603	            };
1604	            "org/gnome/desktop/a11y/mouse" = {
1605	              secondary-click-enabled = false;
1606	              dwell-click-enabled = false;
1607	            };
1608	            "org/gnome/desktop/a11y/interface" = {
1609	              high-contrast = false;
1610	              show-status-shapes = true;
1611	            };
1612	            "org/gnome/desktop/a11y/magnifier" = {
1613	              invert-lightness = false;
1614	            };
1615	            "org/gnome/shell" = {
1616	              # app-picker-layout = pkgs.lib.gvariant.mkEmptyArray (pkgs.lib.gvariant.type.string); # Alphabetical Sort
1617	              always-show-log-out = true;
1618	              disable-extension-version-validation = false;
1619	              disable-user-extensions = false;
1620	              enabled-extensions = [
1621	                "Vitals@CoreCoding.com"
1622	                "appindicatorsupport@rgcjonas.gmail.com"
1623	                "blur-my-shell@aunetx"
1624	                "desktop-cube@schneegans.github.com"
1625	                "drive-menu@gnome-shell-extensions.gcampax.github.com"
1626	                "gsconnect@andyholmes.github.io"
1627	                "pano@elhan.io"
1628	                "places-menu@gnome-shell-extensions.gcampax.github.com"
1629	              ];
1630	              favorite-apps = [
1631	                "org.gnome.Console.desktop"
1632	                "org.gnome.Nautilus.desktop"
1633	                "firefox-devedition.desktop"
1634	                "thunderbird.desktop"
1635	                "org.fritzing.Fritzing.desktop"
1636	                "org.kicad.kicad.desktop"
1637	                "serial-studio.desktop"
1638	                "code.desktop"
1639	                "com.obsproject.Studio.desktop"
1640	                "sdrangel.desktop"
1641	                "sdrpp.desktop"
1642	                "virt-manager.desktop"
1643	              ];
1644	              last-selected-power-profile = "performance";
1645	            };
1646	            "org/gnome/shell/app-switcher" = {
1647	              current-workspace-only = false;
1648	            };
1649	            "org/gnome/shell/extensions/appindicator" = {
1650	              legacy-tray-enabled = true;
1651	            };
1652	            "org/gnome/shell/extensions/gsconnect" = {
1653	              keep-alive-when-locked = true;
1654	              name = config.networking.hostName;
1655	              show-indicators = true;
1656	            };
1657	            "org/gnome/shell/extensions/pano" = {
1658	              item-date-font-family = font_preferences.name.sans_serif;
1659	              item-title-font-family = font_preferences.name.sans_serif;
1660	              keep-search-entry = false;
1661	              link-previews = true;
1662	              open-links-in-browser = true;
1663	              paste-on-select = false;
1664	              play-audio-on-copy = false;
1665	              search-bar-font-family = font_preferences.name.sans_serif;
1666	              send-notification-on-copy = false;
1667	              session-only-mode = true;
1668	              show-indicator = true;
1669	              sync-primary = true;
1670	              watch-exclusion-list = true;
1671	              wiggle-indicator = true;
1672	            };
1673	            "org/gnome/shell/extensions/vitals" = {
1674	              fixed-widths = false;
1675	              hide-icons = false;
1676	              hide-zeros = false;
1677	              hot-sensors = [
1678	                "_processor_usage_"
1679	                "_memory_usage_"
1680	                "__network-rx_max__"
1681	                "__network-tx_max__"
1682	              ];
1683	              include-public-ip = true;
1684	              include-static-gpu-info = true;
1685	              include-static-info = true;
1686	              menu-centered = true;
1687	              show-battery = true;
1688	              show-fan = true;
1689	              show-gpu = true;
1690	              show-memory = true;
1691	              show-network = true;
1692	              show-processor = true;
1693	              show-storage = true;
1694	              show-system = true;
1695	              show-temperature = true;
1696	              show-voltage = true;
1697	              use-higher-precision = true;
1698	            };
1699	            "org/gnome/shell/extensions/desktop-cube" = {
1700	              do-explode = true;
1701	              enable-desktop-dragging = true;
1702	              enable-desktop-edge-switch = true;
1703	              enable-overview-dragging = true;
1704	              enable-overview-edge-switch = true;
1705	              enable-panel-dragging = true;
1706	              last-first-gap = true;
1707	            };
1708	            "org/gnome/mutter" = {
1709	              attach-modal-dialogs = false;
1710	              center-new-windows = true;
1711	              dynamic-workspaces = true;
1712	              edge-tiling = true;
1713	              workspaces-only-on-primary = false;
1714	            };
1715	
1716	            "org/gtk/settings/file-chooser" = {
1717	              clock-format = "12h";
1718	            };
1719	            "org/gtk/gtk4/settings/file-chooser" = {
1720	              sort-directories-first = true;
1721	            };
1722	            "org/gnome/nautilus/preferences" = {
1723	              click-policy = "double";
1724	              recursive-search = "always";
1725	              show-create-link = true;
1726	              show-delete-permanently = true;
1727	              show-directory-item-counts = "always";
1728	              show-image-thumbnails = "always";
1729	              date-time-format = "simple";
1730	            };
1731	            "org/gnome/nautilus/icon-view" = {
1732	              captions = [
1733	                "size"
1734	                "date_modified"
1735	                "none"
1736	              ];
1737	            };
1738	
1739	            "org/gnome/file-roller/ui" = {
1740	              view-sidebar = true;
1741	            };
1742	
1743	            "org/gnome/Console" = {
1744	              audible-bell = true;
1745	              ignore-scrollback-limit = true;
1746	              theme = "night";
1747	              use-system-font = true;
1748	              visual-bell = true;
1749	            };
1750	
1751	            "org/virt-manager/virt-manager" = {
1752	              xmleditor-enabled = true;
1753	            };
1754	            "org/virt-manager/virt-manager/connections" = {
1755	              autoconnect = [
1756	                "qemu:///system"
1757	              ];
1758	              uris = [
1759	                "qemu:///system"
1760	              ];
1761	            };
1762	            "org/virt-manager/virt-manager/new-vm" = {
1763	              cpu-default = "host-passthrough";
1764	            };
1765	            "org/virt-manager/virt-manager/console" = {
1766	              auto-redirect = false;
1767	              autoconnect = true;
1768	            };
1769	            "org/virt-manager/virt-manager/stats" = {
1770	              enable-cpu-poll = true;
1771	              enable-disk-poll = true;
1772	              enable-memory-poll = true;
1773	              enable-net-poll = true;
1774	            };
1775	            "org/virt-manager/virt-manager/vmlist-fields" = {
1776	              cpu-usage = true;
1777	              disk-usage = true;
1778	              host-cpu-usage = true;
1779	              memory-usage = true;
1780	              network-traffic = true;
1781	            };
1782	            "org/virt-manager/virt-manager/confirm" = {
1783	              delete-storage = true;
1784	              forcepoweroff = true;
1785	              pause = true;
1786	              poweroff = true;
1787	              removedev = true;
1788	              unapplied-dev = true;
1789	            };
1790	
1791	            "org/gnome/gnome-system-monitor" = {
1792	              cpu-smooth-graph = true;
1793	              kill-dialog = true;
1794	              network-in-bits = false;
1795	              network-total-in-bits = false;
1796	              process-memory-in-iec = true;
1797	              resources-memory-in-iec = true;
1798	              show-all-fs = true;
1799	              show-dependencies = true;
1800	              show-whose-processes = "all";
1801	              smooth-refresh = true;
1802	              solaris-mode = true;
1803	            };
1804	            "org/gnome/gnome-system-monitor/proctree" = {
1805	              col-0-visible = true;
1806	              col-1-visible = true;
1807	              col-2-visible = true;
1808	              col-3-visible = true;
1809	              col-4-visible = true;
1810	              col-6-visible = true;
1811	              col-7-visible = true;
1812	              col-8-visible = true;
1813	              col-9-visible = true;
1814	              col-10-visible = true;
1815	              col-11-visible = true;
1816	              col-12-visible = true;
1817	              col-14-visible = true;
1818	              col-15-visible = true;
1819	              col-16-visible = true;
1820	              col-17-visible = true;
1821	              col-18-visible = true;
1822	              col-19-visible = true;
1823	              col-20-visible = true;
1824	              col-21-visible = true;
1825	              col-22-visible = true;
1826	              col-23-visible = true;
1827	              col-24-visible = true;
1828	              col-25-visible = true;
1829	              col-26-visible = true;
1830	            };
1831	            "org/gnome/gnome-system-monitor/disksview" = {
1832	              col-available-visible = true;
1833	              col-device-visible = true;
1834	              col-directory-visible = true;
1835	              col-free-visible = true;
1836	              col-total-visible = true;
1837	              col-type-visible = true;
1838	              col-used-visible = true;
1839	            };
1840	
1841	            "org/gnome/Snapshot" = {
1842	              enable-audio-recording = true;
1843	              play-shutter-sound = true;
1844	              show-composition-guidelines = true;
1845	            };
1846	
1847	            "com/github/huluti/Curtail" = {
1848	              file-attributes = true;
1849	              metadata = false;
1850	              new-file = true;
1851	              recursive = true;
1852	            };
1853	
1854	            "org/gnome/simple-scan" = {
1855	              postproc-keep-original = true;
1856	            };
1857	
1858	            "com/github/tenderowl/frog" = {
1859	              telemetry = false;
1860	            };
1861	
1862	            "app/drey/EarTag" = {
1863	              musicbrainz-cover-size = "Maximum size";
1864	            };
1865	
1866	            "org/gnome/meld" = {
1867	              enable-space-drawer = true;
1868	              highlight-current-line = true;
1869	              highlight-syntax = true;
1870	              prefer-dark-theme = true;
1871	              show-line-numbers = true;
1872	              show-overview-map = true;
1873	              wrap-mode = "word";
1874	            };
1875	
1876	            "org/gnome/calculator" = {
1877	              show-thousands = true;
1878	              show-zeroes = true;
1879	            };
1880	
1881	            "io/gitlab/adhami3310/Converter" = {
1882	              show-less-popular = true;
1883	            };
1884	
1885	            "org/gnome/maps" = {
1886	              show-scale = true;
1887	            };
1888	
1889	            "org/gnome/GWeather4" = {
1890	              temperature-unit = "centigrade";
1891	            };
1892	
1893	            "app/drey/Dialect" = {
1894	              color-scheme = "dark";
1895	              show-pronunciation = true;
1896	              src-auto = true;
1897	            };
1898	          };
1899	        }
1900	      ];
1901	    };
1902	  };
1903	
1904	  fonts = {
1905	    enableDefaultPackages = false;
1906	    packages = with pkgs; [
1907	      corefonts
1908	      nerd-fonts.noto
1909	      noto-fonts
1910	      noto-fonts-cjk-sans
1911	      noto-fonts-cjk-serif
1912	      noto-fonts-color-emoji
1913	      noto-fonts-lgc-plus
1914	    ];
1915	
1916	    fontconfig = {
1917	      enable = true;
1918	
1919	      allowBitmaps = true;
1920	      allowType1 = false;
1921	      cache32Bit = true;
1922	
1923	      defaultFonts = {
1924	        monospace = [
1925	          font_preferences.name.mono
1926	        ];
1927	
1928	        sansSerif = [
1929	          font_preferences.name.sans_serif
1930	        ];
1931	
1932	        serif = [
1933	          font_preferences.name.serif
1934	        ];
1935	
1936	        emoji = [
1937	          font_preferences.name.emoji
1938	        ];
1939	      };
1940	
1941	      includeUserConf = true;
1942	    };
1943	  };
1944	
1945	  environment = {
1946	    enableAllTerminfo = true;
1947	
1948	    wordlist = {
1949	      enable = true;
1950	      # lists = ;
1951	    };
1952	
1953	    homeBinInPath = true;
1954	    localBinInPath = true;
1955	
1956	    stub-ld.enable = true;
1957	
1958	    variables = {
1959	      ANDROID_SDK_ROOT = android_sdk_path;
1960	      ANDROID_HOME = android_sdk_path;
1961	    };
1962	
1963	    sessionVariables = {
1964	      NIXOS_OZONE_WL = "1";
1965	      CHROME_EXECUTABLE = "chromium";
1966	    };
1967	
1968	    shellAliases = {
1969	      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";
1970	    };
1971	
1972	    extraInit = '''';
1973	
1974	    loginShellInit = '''';
1975	
1976	    shellInit = '''';
1977	
1978	    interactiveShellInit = '''';
1979	
1980	    systemPackages =
1981	      with pkgs;
1982	      [
1983	        # amrnb
1984	        # amrwb
1985	        # appimagekit
1986	        # gnss-sdr
1987	        # reiser4progs
1988	        above
1989	        acl
1990	        aircrack-ng
1991	        alac
1992	        amass
1993	        android-tools
1994	        android_sdk # Custom
1995	        anydesk
1996	        apkeep
1997	        apkleaks
1998	        apksigner
1999	        aptdec
2000	        aribb24
2001	        aribb25
2002	        arj
2003	        audacity
2004	        autopsy
2005	        avrdude
2006	        baobab
2007	        binary
2008	        binwalk
2009	        bleachbit
2010	        blender
2011	        bluez-tools
2012	        btrfs-progs
2013	        bulk_extractor
2014	        burpsuite
2015	        bustle
2016	        bzip2
2017	        bzip3
2018	        cabextract
2019	        celestia
2020	        celt
2021	        certbot-full
2022	        chmlib
2023	        clang
2024	        clang-analyzer
2025	        clang-manpages
2026	        clang-tools
2027	        clinfo
2028	        cloc
2029	        cloudflare-warp
2030	        cmake
2031	        code-nautilus
2032	        codec2
2033	        collision
2034	        coreutils-full
2035	        cpio
2036	        cryptsetup
2037	        cups-filters
2038	        cups-pdf-to-pdf
2039	        cups-printers
2040	        curlFull
2041	        curtail
2042	        d-spy
2043	        darktable
2044	        dart
2045	        dbeaver-bin
2046	        dconf-editor
2047	        dconf2nix
2048	        debase
2049	        dialect
2050	        dirb
2051	        dmg2img
2052	        dmidecode
2053	        dnsrecon
2054	        dosfstools
2055	        e2fsprogs
2056	        eartag
2057	        efibootmgr
2058	        esptool
2059	        evtest
2060	        evtest-qt
2061	        exfatprogs
2062	        eyedropper
2063	        f2fs-tools
2064	        faac
2065	        faad2
2066	        fdk_aac
2067	        ffmpeg-full
2068	        ffmpegthumbnailer
2069	        file
2070	        flutter
2071	        fritzing
2072	        fwupd-efi
2073	        gcc
2074	        gdb
2075	        gdk-pixbuf
2076	        ghidra
2077	        gimp-with-plugins
2078	        git-doc
2079	        git-filter-repo
2080	        glib
2081	        glibc
2082	        gnome-autoar
2083	        gnome-backgrounds
2084	        gnome-bluetooth
2085	        gnome-calculator
2086	        gnome-calendar
2087	        gnome-characters
2088	        gnome-clocks
2089	        gnome-color-manager
2090	        gnome-connections
2091	        gnome-console
2092	        gnome-control-center
2093	        gnome-decoder
2094	        gnome-epub-thumbnailer
2095	        gnome-extensions-cli
2096	        gnome-firmware
2097	        gnome-font-viewer
2098	        gnome-frog
2099	        gnome-graphs
2100	        gnome-logs
2101	        gnome-maps
2102	        gnome-multi-writer
2103	        gnome-nettool
2104	        gnome-power-manager
2105	        gnome-system-monitor
2106	        gnome-tecla
2107	        gnome-tweaks
2108	        gnome-user-docs
2109	        gnome-video-effects
2110	        gnome-weather
2111	        gnugrep
2112	        gnulib
2113	        gnumake
2114	        gnused
2115	        gnutar
2116	        gnutls
2117	        gource
2118	        gpredict
2119	        gsm
2120	        gtk-vnc
2121	        guestfs-tools
2122	        gzip
2123	        hardinfo2
2124	        hashcat
2125	        hdparm
2126	        hfsprogs
2127	        hieroglyphic
2128	        hw-probe
2129	        hwloc
2130	        hydra-check
2131	        i2c-tools
2132	        iaito
2133	        iftop
2134	        inkscape
2135	        inotify-tools
2136	        jellyfin-media-player
2137	        jfsutils
2138	        jmol
2139	        john
2140	        johnny
2141	        jxrlib
2142	        keepassxc
2143	        kernelshark
2144	        kicad
2145	        letterpress
2146	        lha
2147	        lhasa
2148	        libGL
2149	        libGLU
2150	        libaom
2151	        libappimage
2152	        libass
2153	        libcamera
2154	        libde265
2155	        libdvdcss
2156	        libdvdnav
2157	        libdvdread
2158	        libepoxy
2159	        libfreeaptx
2160	        libfreefare
2161	        libftdi1
2162	        libgcc
2163	        libgpg-error
2164	        libguestfs
2165	        libheif
2166	        libilbc
2167	        liblc3
2168	        libnotify
2169	        libogg
2170	        libopenraw
2171	        libopus
2172	        libosinfo
2173	        libusb1
2174	        libuuid
2175	        libuvc
2176	        libva-utils
2177	        libvpx
2178	        libwebcam
2179	        libwebp
2180	        libxfs
2181	        libzip
2182	        linuxConsoleTools
2183	        lorem
2184	        loupe
2185	        lrzip
2186	        lshw
2187	        lsof
2188	        lsscsi
2189	        lvm2
2190	        lynis
2191	        lz4
2192	        lzham
2193	        lzip
2194	        lzlib
2195	        lzop
2196	        macchanger
2197	        masscan
2198	        massdns
2199	        mattermost-desktop
2200	        media-player-info
2201	        meld
2202	        mesa-demos
2203	        mfcuk
2204	        mfoc
2205	        monkeysAudio
2206	        mtools
2207	        nautilus
2208	        netdiscover
2209	        netsniff-ng
2210	        ngrok
2211	        nikto
2212	        nilfs-utils
2213	        ninja
2214	        nix-bash-completions
2215	        nix-diff
2216	        nix-index
2217	        nix-info
2218	        nixd
2219	        nixdoc
2220	        nixfmt-rfc-style
2221	        nixos-icons
2222	        nixpkgs-lint
2223	        nixpkgs-review
2224	        nmap
2225	        ntfs3g
2226	        ntp
2227	        nuclei
2228	        onionshare-gui
2229	        onlyoffice-desktopeditors
2230	        opencore-amr
2231	        openh264
2232	        openjpeg
2233	        openssl
2234	        p7zip
2235	        paper-clip
2236	        parabolic
2237	        patchelf
2238	        pciutils
2239	        pcre
2240	        php84
2241	        pjsip
2242	        pkg-config
2243	        platformio
2244	        platformio-core
2245	        podman-compose
2246	        podman-desktop
2247	        python313Full
2248	        qemu-utils
2249	        qpwgraph
2250	        radare2
2251	        rar
2252	        readline
2253	        reiserfsprogs
2254	        rpPPPoE
2255	        rpi-imager
2256	        rpmextract
2257	        rtl-sdr-librtlsdr
2258	        rzip
2259	        sane-backends
2260	        sbc
2261	        scalpel
2262	        schroedinger
2263	        scrcpy
2264	        screen
2265	        sdrangel
2266	        sdrpp
2267	        serial-studio
2268	        share-preview
2269	        shared-mime-info
2270	        sherlock
2271	        simple-scan
2272	        sipvicious
2273	        sleuthkit
2274	        smartmontools
2275	        smbmap
2276	        snapshot
2277	        songrec
2278	        spice
2279	        spice-gtk
2280	        spice-protocol
2281	        spooftooph
2282	        sslscan
2283	        subfinder
2284	        subtitleedit
2285	        swaks
2286	        switcheroo
2287	        sysprof
2288	        telegram-desktop
2289	        texliveFull
2290	        theharvester
2291	        thermald
2292	        time
2293	        tor-browser
2294	        transmission_4-gtk
2295	        tree
2296	        trufflehog
2297	        udftools
2298	        unar
2299	        unicode-emoji
2300	        universal-android-debloater
2301	        unix-privesc-check
2302	        unrar
2303	        unzip
2304	        usbutils
2305	        util-linux
2306	        valuta
2307	        virt-viewer
2308	        virtio-win
2309	        virtiofsd
2310	        vlc
2311	        vlc-bittorrent
2312	        vulkan-tools
2313	        wafw00f
2314	        wavpack
2315	        waycheck
2316	        wayland-utils
2317	        waylevel
2318	        webfontkitgenerator
2319	        wev
2320	        wget
2321	        which
2322	        whois
2323	        wifite2
2324	        win-spice
2325	        wl-clipboard
2326	        woff2
2327	        wpscan
2328	        x264
2329	        x265
2330	        xdg-user-dirs
2331	        xdg-utils
2332	        xfsdump
2333	        xfsprogs
2334	        xfstests
2335	        xorg.xhost
2336	        xoscope
2337	        xvidcore
2338	        xz
2339	        yara
2340	        zenity
2341	        zip
2342	        zlib
2343	        zpaq
2344	        zstd
2345	      ]
2346	      ++ (with unixtools; [
2347	        arp
2348	        fdisk
2349	        ifconfig
2350	        netstat
2351	        nettools
2352	        ping
2353	        route
2354	        util-linux
2355	        whereis
2356	      ])
2357	      ++ (with fishPlugins; [
2358	        async-prompt
2359	        autopair
2360	        done
2361	        fish-you-should-use
2362	        sponge
2363	      ])
2364	      ++ (with gst_all_1; [
2365	        gst-libav
2366	        gst-plugins-bad
2367	        gst-plugins-base
2368	        gst-plugins-good
2369	        gst-plugins-ugly
2370	        gst-vaapi
2371	        gstreamer
2372	      ])
2373	      ++ (with pkgs.gnome; [
2374	        nixos-gsettings-overrides
2375	      ])
2376	      ++ (with gnomeExtensions; [
2377	        appindicator
2378	        blur-my-shell
2379	        desktop-cube
2380	        gsconnect
2381	        pano
2382	        places-status-indicator
2383	        removable-drive-menu
2384	        vitals
2385	      ])
2386	      ++ (with php84Extensions; [
2387	        bz2
2388	        calendar
2389	        ctype
2390	        curl
2391	        dba
2392	        dom
2393	        exif
2394	        ffi
2395	        fileinfo
2396	        filter
2397	        ftp
2398	        gd
2399	        iconv
2400	        imagick
2401	        imap
2402	        mailparse
2403	        memcached
2404	        mysqli
2405	        mysqlnd
2406	        opcache
2407	        openssl
2408	        pcntl
2409	        pdo
2410	        pdo_mysql
2411	        pdo_pgsql
2412	        pgsql
2413	        posix
2414	        readline
2415	        session
2416	        sockets
2417	        sodium
2418	        xml
2419	        xmlreader
2420	        xmlwriter
2421	        xsl
2422	        zip
2423	        zlib
2424	      ])
2425	      # ++ (with php84Packages; [
2426	      # ])
2427	      ++ (with python313Packages; [
2428	        black
2429	        numpy
2430	        pandas
2431	        pillow
2432	        pip
2433	        pyserial
2434	        seaborn
2435	      ])
2436	      ++ (with texlivePackages; [
2437	        latexmk
2438	      ])
2439	      ++ (with ghidra-extensions; [
2440	        findcrypt
2441	        ghidra-delinker-extension
2442	        ghidra-golanganalyzerextension
2443	        ghidraninja-ghidra-scripts
2444	        gnudisassembler
2445	        lightkeeper
2446	        machinelearning
2447	        ret-sync
2448	        sleighdevtools
2449	        wasm
2450	      ])
2451	      ++ (with inkscape-extensions; [
2452	        applytransforms
2453	        textext
2454	      ]);
2455	
2456	    gnome.excludePackages = with pkgs; [
2457	      decibels
2458	      epiphany
2459	      evince
2460	      geary
2461	      gnome-contacts
2462	      gnome-music
2463	      gnome-text-editor
2464	      gnome-tour
2465	      totem
2466	      yelp
2467	    ];
2468	
2469	    enableDebugInfo = false;
2470	  };
2471	
2472	  xdg = {
2473	    mime = {
2474	      enable = true;
2475	
2476	      addedAssociations = config.xdg.mime.defaultApplications;
2477	
2478	      removedAssociations = { };
2479	
2480	      # https://www.iana.org/assignments/media-types/media-types.xhtml
2481	      defaultApplications = {
2482	        "inode/directory" = "nautilus.desktop";
2483	
2484	        "image/aces" = "org.gnome.Loupe.desktop";
2485	        "image/apng" = "org.gnome.Loupe.desktop";
2486	        "image/avci" = "org.gnome.Loupe.desktop";
2487	        "image/avcs" = "org.gnome.Loupe.desktop";
2488	        "image/avif" = "org.gnome.Loupe.desktop";
2489	        "image/bmp" = "org.gnome.Loupe.desktop";
2490	        "image/cgm" = "org.gnome.Loupe.desktop";
2491	        "image/dicom-rle" = "org.gnome.Loupe.desktop";
2492	        "image/dpx" = "org.gnome.Loupe.desktop";
2493	        "image/emf" = "org.gnome.Loupe.desktop";
2494	        "image/fits" = "org.gnome.Loupe.desktop";
2495	        "image/g3fax" = "org.gnome.Loupe.desktop";
2496	        "image/gif" = "org.gnome.Loupe.desktop";
2497	        "image/heic" = "org.gnome.Loupe.desktop";
2498	        "image/heic-sequence" = "org.gnome.Loupe.desktop";
2499	        "image/heif" = "org.gnome.Loupe.desktop";
2500	        "image/heif-sequence" = "org.gnome.Loupe.desktop";
2501	        "image/hej2k" = "org.gnome.Loupe.desktop";
2502	        "image/hsj2" = "org.gnome.Loupe.desktop";
2503	        "image/ief" = "org.gnome.Loupe.desktop";
2504	        "image/j2c" = "org.gnome.Loupe.desktop";
2505	        "image/jaii" = "org.gnome.Loupe.desktop";
2506	        "image/jais" = "org.gnome.Loupe.desktop";
2507	        "image/jls" = "org.gnome.Loupe.desktop";
2508	        "image/jp2" = "org.gnome.Loupe.desktop";
2509	        "image/jpeg" = "org.gnome.Loupe.desktop";
2510	        "image/jph" = "org.gnome.Loupe.desktop";
2511	        "image/jphc" = "org.gnome.Loupe.desktop";
2512	        "image/jpm" = "org.gnome.Loupe.desktop";
2513	        "image/jpx" = "org.gnome.Loupe.desktop";
2514	        "image/jxl" = "org.gnome.Loupe.desktop";
2515	        "image/jxr" = "org.gnome.Loupe.desktop";
2516	        "image/jxrA" = "org.gnome.Loupe.desktop";
2517	        "image/jxrS" = "org.gnome.Loupe.desktop";
2518	        "image/jxs" = "org.gnome.Loupe.desktop";
2519	        "image/jxsc" = "org.gnome.Loupe.desktop";
2520	        "image/jxsi" = "org.gnome.Loupe.desktop";
2521	        "image/jxss" = "org.gnome.Loupe.desktop";
2522	        "image/ktx" = "org.gnome.Loupe.desktop";
2523	        "image/ktx2" = "org.gnome.Loupe.desktop";
2524	        "image/naplps" = "org.gnome.Loupe.desktop";
2525	        "image/png" = "org.gnome.Loupe.desktop";
2526	        "image/prs.btif" = "org.gnome.Loupe.desktop";
2527	        "image/prs.pti" = "org.gnome.Loupe.desktop";
2528	        "image/pwg-raster" = "org.gnome.Loupe.desktop";
2529	        "image/svg+xml" = "org.gnome.Loupe.desktop";
2530	        "image/t38" = "org.gnome.Loupe.desktop";
2531	        "image/tiff" = "org.gnome.Loupe.desktop";
2532	        "image/tiff-fx" = "org.gnome.Loupe.desktop";
2533	        "image/vnd.adobe.photoshop" = "org.gnome.Loupe.desktop";
2534	        "image/vnd.airzip.accelerator.azv" = "org.gnome.Loupe.desktop";
2535	        "image/vnd.cns.inf2" = "org.gnome.Loupe.desktop";
2536	        "image/vnd.dece.graphic" = "org.gnome.Loupe.desktop";
2537	        "image/vnd.djvu" = "org.gnome.Loupe.desktop";
2538	        "image/vnd.dvb.subtitle" = "org.gnome.Loupe.desktop";
2539	        "image/vnd.dwg" = "org.gnome.Loupe.desktop";
2540	        "image/vnd.dxf" = "org.gnome.Loupe.desktop";
2541	        "image/vnd.fastbidsheet" = "org.gnome.Loupe.desktop";
2542	        "image/vnd.fpx" = "org.gnome.Loupe.desktop";
2543	        "image/vnd.fst" = "org.gnome.Loupe.desktop";
2544	        "image/vnd.fujixerox.edmics-mmr" = "org.gnome.Loupe.desktop";
2545	        "image/vnd.fujixerox.edmics-rlc" = "org.gnome.Loupe.desktop";
2546	        "image/vnd.globalgraphics.pgb" = "org.gnome.Loupe.desktop";
2547	        "image/vnd.microsoft.icon" = "org.gnome.Loupe.desktop";
2548	        "image/vnd.mix" = "org.gnome.Loupe.desktop";
2549	        "image/vnd.mozilla.apng" = "org.gnome.Loupe.desktop";
2550	        "image/vnd.ms-modi" = "org.gnome.Loupe.desktop";
2551	        "image/vnd.net-fpx" = "org.gnome.Loupe.desktop";
2552	        "image/vnd.pco.b16" = "org.gnome.Loupe.desktop";
2553	        "image/vnd.radiance" = "org.gnome.Loupe.desktop";
2554	        "image/vnd.sealed.png" = "org.gnome.Loupe.desktop";
2555	        "image/vnd.sealedmedia.softseal.gif" = "org.gnome.Loupe.desktop";
2556	        "image/vnd.sealedmedia.softseal.jpg" = "org.gnome.Loupe.desktop";
2557	        "image/vnd.svf" = "org.gnome.Loupe.desktop";
2558	        "image/vnd.tencent.tap" = "org.gnome.Loupe.desktop";
2559	        "image/vnd.valve.source.texture" = "org.gnome.Loupe.desktop";
2560	        "image/vnd.wap.wbmp" = "org.gnome.Loupe.desktop";
2561	        "image/vnd.xiff" = "org.gnome.Loupe.desktop";
2562	        "image/vnd.zbrush.pcx" = "org.gnome.Loupe.desktop";
2563	        "image/webp" = "org.gnome.Loupe.desktop";
2564	        "image/wmf" = "org.gnome.Loupe.desktop";
2565	        "image/x-emf" = "org.gnome.Loupe.desktop";
2566	        "image/x-wmf" = "org.gnome.Loupe.desktop";
2567	
2568	        "audio/1d-interleaved-parityfec" = "vlc.desktop";
2569	        "audio/32kadpcm" = "vlc.desktop";
2570	        "audio/3gpp" = "vlc.desktop";
2571	        "audio/3gpp2" = "vlc.desktop";
2572	        "audio/AMR" = "vlc.desktop";
2573	        "audio/AMR-WB" = "vlc.desktop";
2574	        "audio/ATRAC-ADVANCED-LOSSLESS" = "vlc.desktop";
2575	        "audio/ATRAC-X" = "vlc.desktop";
2576	        "audio/ATRAC3" = "vlc.desktop";
2577	        "audio/BV16" = "vlc.desktop";
2578	        "audio/BV32" = "vlc.desktop";
2579	        "audio/CN" = "vlc.desktop";
2580	        "audio/DAT12" = "vlc.desktop";
2581	        "audio/DV" = "vlc.desktop";
2582	        "audio/DVI4" = "vlc.desktop";
2583	        "audio/EVRC" = "vlc.desktop";
2584	        "audio/EVRC-QCP" = "vlc.desktop";
2585	        "audio/EVRC0" = "vlc.desktop";
2586	        "audio/EVRC1" = "vlc.desktop";
2587	        "audio/EVRCB" = "vlc.desktop";
2588	        "audio/EVRCB0" = "vlc.desktop";
2589	        "audio/EVRCB1" = "vlc.desktop";
2590	        "audio/EVRCNW" = "vlc.desktop";
2591	        "audio/EVRCNW0" = "vlc.desktop";
2592	        "audio/EVRCNW1" = "vlc.desktop";
2593	        "audio/EVRCWB" = "vlc.desktop";
2594	        "audio/EVRCWB0" = "vlc.desktop";
2595	        "audio/EVRCWB1" = "vlc.desktop";
2596	        "audio/EVS" = "vlc.desktop";
2597	        "audio/G711-0" = "vlc.desktop";
2598	        "audio/G719" = "vlc.desktop";
2599	        "audio/G722" = "vlc.desktop";
2600	        "audio/G7221" = "vlc.desktop";
2601	        "audio/G723" = "vlc.desktop";
2602	        "audio/G726-16" = "vlc.desktop";
2603	        "audio/G726-24" = "vlc.desktop";
2604	        "audio/G726-32" = "vlc.desktop";
2605	        "audio/G726-40" = "vlc.desktop";
2606	        "audio/G728" = "vlc.desktop";
2607	        "audio/G729" = "vlc.desktop";
2608	        "audio/G7291" = "vlc.desktop";
2609	        "audio/G729D" = "vlc.desktop";
2610	        "audio/G729E" = "vlc.desktop";
2611	        "audio/GSM" = "vlc.desktop";
2612	        "audio/GSM-EFR" = "vlc.desktop";
2613	        "audio/GSM-HR-08" = "vlc.desktop";
2614	        "audio/L16" = "vlc.desktop";
2615	        "audio/L20" = "vlc.desktop";
2616	        "audio/L24" = "vlc.desktop";
2617	        "audio/L8" = "vlc.desktop";
2618	        "audio/LPC" = "vlc.desktop";
2619	        "audio/MELP" = "vlc.desktop";
2620	        "audio/MELP1200" = "vlc.desktop";
2621	        "audio/MELP2400" = "vlc.desktop";
2622	        "audio/MELP600" = "vlc.desktop";
2623	        "audio/MP4A-LATM" = "vlc.desktop";
2624	        "audio/MPA" = "vlc.desktop";
2625	        "audio/PCMA" = "vlc.desktop";
2626	        "audio/PCMA-WB" = "vlc.desktop";
2627	        "audio/PCMU" = "vlc.desktop";
2628	        "audio/PCMU-WB" = "vlc.desktop";
2629	        "audio/QCELP" = "vlc.desktop";
2630	        "audio/RED" = "vlc.desktop";
2631	        "audio/SMV" = "vlc.desktop";
2632	        "audio/SMV-QCP" = "vlc.desktop";
2633	        "audio/SMV0" = "vlc.desktop";
2634	        "audio/TETRA_ACELP" = "vlc.desktop";
2635	        "audio/TETRA_ACELP_BB" = "vlc.desktop";
2636	        "audio/TSVCIS" = "vlc.desktop";
2637	        "audio/UEMCLIP" = "vlc.desktop";
2638	        "audio/VDVI" = "vlc.desktop";
2639	        "audio/VMR-WB" = "vlc.desktop";
2640	        "audio/aac" = "vlc.desktop";
2641	        "audio/ac3" = "vlc.desktop";
2642	        "audio/amr-wb+" = "vlc.desktop";
2643	        "audio/aptx" = "vlc.desktop";
2644	        "audio/asc" = "vlc.desktop";
2645	        "audio/basic" = "vlc.desktop";
2646	        "audio/clearmode" = "vlc.desktop";
2647	        "audio/dls" = "vlc.desktop";
2648	        "audio/dsr-es201108" = "vlc.desktop";
2649	        "audio/dsr-es202050" = "vlc.desktop";
2650	        "audio/dsr-es202211" = "vlc.desktop";
2651	        "audio/dsr-es202212" = "vlc.desktop";
2652	        "audio/eac3" = "vlc.desktop";
2653	        "audio/encaprtp" = "vlc.desktop";
2654	        "audio/flac" = "vlc.desktop";
2655	        "audio/flexfec" = "vlc.desktop";
2656	        "audio/fwdred" = "vlc.desktop";
2657	        "audio/iLBC" = "vlc.desktop";
2658	        "audio/ip-mr_v2.5" = "vlc.desktop";
2659	        "audio/matroska" = "vlc.desktop";
2660	        "audio/mhas" = "vlc.desktop";
2661	        "audio/midi-clip" = "vlc.desktop";
2662	        "audio/mobile-xmf" = "vlc.desktop";
2663	        "audio/mp4" = "vlc.desktop";
2664	        "audio/mpa-robust" = "vlc.desktop";
2665	        "audio/mpeg" = "vlc.desktop";
2666	        "audio/mpeg4-generic" = "vlc.desktop";
2667	        "audio/ogg" = "vlc.desktop";
2668	        "audio/opus" = "vlc.desktop";
2669	        "audio/parityfec" = "vlc.desktop";
2670	        "audio/prs.sid" = "vlc.desktop";
2671	        "audio/raptorfec" = "vlc.desktop";
2672	        "audio/rtp-enc-aescm128" = "vlc.desktop";
2673	        "audio/rtp-midi" = "vlc.desktop";
2674	        "audio/rtploopback" = "vlc.desktop";
2675	        "audio/rtx" = "vlc.desktop";
2676	        "audio/scip" = "vlc.desktop";
2677	        "audio/sofa" = "vlc.desktop";
2678	        "audio/sp-midi" = "vlc.desktop";
2679	        "audio/speex" = "vlc.desktop";
2680	        "audio/t140c" = "vlc.desktop";
2681	        "audio/t38" = "vlc.desktop";
2682	        "audio/telephone-event" = "vlc.desktop";
2683	        "audio/tone" = "vlc.desktop";
2684	        "audio/ulpfec" = "vlc.desktop";
2685	        "audio/usac" = "vlc.desktop";
2686	        "audio/vnd.3gpp.iufp" = "vlc.desktop";
2687	        "audio/vnd.4SB" = "vlc.desktop";
2688	        "audio/vnd.CELP" = "vlc.desktop";
2689	        "audio/vnd.audiokoz" = "vlc.desktop";
2690	        "audio/vnd.cisco.nse" = "vlc.desktop";
2691	        "audio/vnd.cmles.radio-events" = "vlc.desktop";
2692	        "audio/vnd.cns.anp1" = "vlc.desktop";
2693	        "audio/vnd.cns.inf1" = "vlc.desktop";
2694	        "audio/vnd.dece.audio" = "vlc.desktop";
2695	        "audio/vnd.digital-winds" = "vlc.desktop";
2696	        "audio/vnd.dlna.adts" = "vlc.desktop";
2697	        "audio/vnd.dolby.heaac.1" = "vlc.desktop";
2698	        "audio/vnd.dolby.heaac.2" = "vlc.desktop";
2699	        "audio/vnd.dolby.mlp" = "vlc.desktop";
2700	        "audio/vnd.dolby.mps" = "vlc.desktop";
2701	        "audio/vnd.dolby.pl2" = "vlc.desktop";
2702	        "audio/vnd.dolby.pl2x" = "vlc.desktop";
2703	        "audio/vnd.dolby.pl2z" = "vlc.desktop";
2704	        "audio/vnd.dolby.pulse.1" = "vlc.desktop";
2705	        "audio/vnd.dra" = "vlc.desktop";
2706	        "audio/vnd.dts" = "vlc.desktop";
2707	        "audio/vnd.dts.hd" = "vlc.desktop";
2708	        "audio/vnd.dts.uhd" = "vlc.desktop";
2709	        "audio/vnd.dvb.file" = "vlc.desktop";
2710	        "audio/vnd.everad.plj" = "vlc.desktop";
2711	        "audio/vnd.hns.audio" = "vlc.desktop";
2712	        "audio/vnd.lucent.voice" = "vlc.desktop";
2713	        "audio/vnd.ms-playready.media.pya" = "vlc.desktop";
2714	        "audio/vnd.nokia.mobile-xmf" = "vlc.desktop";
2715	        "audio/vnd.nortel.vbk" = "vlc.desktop";
2716	        "audio/vnd.nuera.ecelp4800" = "vlc.desktop";
2717	        "audio/vnd.nuera.ecelp7470" = "vlc.desktop";
2718	        "audio/vnd.nuera.ecelp9600" = "vlc.desktop";
2719	        "audio/vnd.octel.sbc" = "vlc.desktop";
2720	        "audio/vnd.presonus.multitrack" = "vlc.desktop";
2721	        "audio/vnd.qcelp" = "vlc.desktop";
2722	        "audio/vnd.rhetorex.32kadpcm" = "vlc.desktop";
2723	        "audio/vnd.rip" = "vlc.desktop";
2724	        "audio/vnd.sealedmedia.softseal.mpeg" = "vlc.desktop";
2725	        "audio/vnd.vmx.cvsd" = "vlc.desktop";
2726	        "audio/vorbis" = "vlc.desktop";
2727	        "audio/vorbis-config" = "vlc.desktop";
2728	
2729	        "video/1d-interleaved-parityfec" = "vlc.desktop";
2730	        "video/3gpp" = "vlc.desktop";
2731	        "video/3gpp-tt" = "vlc.desktop";
2732	        "video/3gpp2" = "vlc.desktop";
2733	        "video/AV1" = "vlc.desktop";
2734	        "video/BMPEG" = "vlc.desktop";
2735	        "video/BT656" = "vlc.desktop";
2736	        "video/CelB" = "vlc.desktop";
2737	        "video/DV" = "vlc.desktop";
2738	        "video/FFV1" = "vlc.desktop";
2739	        "video/H261" = "vlc.desktop";
2740	        "video/H263" = "vlc.desktop";
2741	        "video/H263-1998" = "vlc.desktop";
2742	        "video/H263-2000" = "vlc.desktop";
2743	        "video/H264" = "vlc.desktop";
2744	        "video/H264-RCDO" = "vlc.desktop";
2745	        "video/H264-SVC" = "vlc.desktop";
2746	        "video/H265" = "vlc.desktop";
2747	        "video/H266" = "vlc.desktop";
2748	        "video/JPEG" = "vlc.desktop";
2749	        "video/MP1S" = "vlc.desktop";
2750	        "video/MP2P" = "vlc.desktop";
2751	        "video/MP2T" = "vlc.desktop";
2752	        "video/MP4V-ES" = "vlc.desktop";
2753	        "video/MPV" = "vlc.desktop";
2754	        "video/SMPTE292M" = "vlc.desktop";
2755	        "video/VP8" = "vlc.desktop";
2756	        "video/VP9" = "vlc.desktop";
2757	        "video/encaprtp" = "vlc.desktop";
2758	        "video/evc" = "vlc.desktop";
2759	        "video/flexfec" = "vlc.desktop";
2760	        "video/iso.segment" = "vlc.desktop";
2761	        "video/jpeg2000" = "vlc.desktop";
2762	        "video/jxsv" = "vlc.desktop";
2763	        "video/matroska" = "vlc.desktop";
2764	        "video/matroska-3d" = "vlc.desktop";
2765	        "video/mj2" = "vlc.desktop";
2766	        "video/mp4" = "vlc.desktop";
2767	        "video/mpeg" = "vlc.desktop";
2768	        "video/mpeg4-generic" = "vlc.desktop";
2769	        "video/nv" = "vlc.desktop";
2770	        "video/ogg" = "vlc.desktop";
2771	        "video/parityfec" = "vlc.desktop";
2772	        "video/pointer" = "vlc.desktop";
2773	        "video/quicktime" = "vlc.desktop";
2774	        "video/raptorfec" = "vlc.desktop";
2775	        "video/raw" = "vlc.desktop";
2776	        "video/rtp-enc-aescm128" = "vlc.desktop";
2777	        "video/rtploopback" = "vlc.desktop";
2778	        "video/rtx" = "vlc.desktop";
2779	        "video/scip" = "vlc.desktop";
2780	        "video/smpte291" = "vlc.desktop";
2781	        "video/ulpfec" = "vlc.desktop";
2782	        "video/vc1" = "vlc.desktop";
2783	        "video/vc2" = "vlc.desktop";
2784	        "video/vnd.CCTV" = "vlc.desktop";
2785	        "video/vnd.dece.hd" = "vlc.desktop";
2786	        "video/vnd.dece.mobile" = "vlc.desktop";
2787	        "video/vnd.dece.mp4" = "vlc.desktop";
2788	        "video/vnd.dece.pd" = "vlc.desktop";
2789	        "video/vnd.dece.sd" = "vlc.desktop";
2790	        "video/vnd.dece.video" = "vlc.desktop";
2791	        "video/vnd.directv.mpeg" = "vlc.desktop";
2792	        "video/vnd.directv.mpeg-tts" = "vlc.desktop";
2793	        "video/vnd.dlna.mpeg-tts" = "vlc.desktop";
2794	        "video/vnd.dvb.file" = "vlc.desktop";
2795	        "video/vnd.fvt" = "vlc.desktop";
2796	        "video/vnd.hns.video" = "vlc.desktop";
2797	        "video/vnd.iptvforum.1dparityfec-1010" = "vlc.desktop";
2798	        "video/vnd.iptvforum.1dparityfec-2005" = "vlc.desktop";
2799	        "video/vnd.iptvforum.2dparityfec-1010" = "vlc.desktop";
2800	        "video/vnd.iptvforum.2dparityfec-2005" = "vlc.desktop";
2801	        "video/vnd.iptvforum.ttsavc" = "vlc.desktop";
2802	        "video/vnd.iptvforum.ttsmpeg2" = "vlc.desktop";
2803	        "video/vnd.motorola.video" = "vlc.desktop";
2804	        "video/vnd.motorola.videop" = "vlc.desktop";
2805	        "video/vnd.mpegurl" = "vlc.desktop";
2806	        "video/vnd.ms-playready.media.pyv" = "vlc.desktop";
2807	        "video/vnd.nokia.interleaved-multimedia" = "vlc.desktop";
2808	        "video/vnd.nokia.mp4vr" = "vlc.desktop";
2809	        "video/vnd.nokia.videovoip" = "vlc.desktop";
2810	        "video/vnd.objectvideo" = "vlc.desktop";
2811	        "video/vnd.radgamettools.bink" = "vlc.desktop";
2812	        "video/vnd.radgamettools.smacker" = "vlc.desktop";
2813	        "video/vnd.sealed.mpeg1" = "vlc.desktop";
2814	        "video/vnd.sealed.mpeg4" = "vlc.desktop";
2815	        "video/vnd.sealed.swf" = "vlc.desktop";
2816	        "video/vnd.sealedmedia.softseal.mov" = "vlc.desktop";
2817	        "video/vnd.uvvu.mp4" = "vlc.desktop";
2818	        "video/vnd.vivo" = "vlc.desktop";
2819	        "video/vnd.youtube.yt" = "vlc.desktop";
2820	
2821	        "application/pdf" = "firefox-devedition.desktop";
2822	
2823	        "x-scheme-handler/http" = "firefox-devedition.desktop";
2824	        "x-scheme-handler/https" = "firefox-devedition.desktop";
2825	
2826	        "x-scheme-handler/mailto" = "thunderbird.desktop";
2827	      };
2828	    };
2829	
2830	    icons.enable = true;
2831	    sounds.enable = true;
2832	
2833	    menus.enable = true;
2834	    autostart.enable = true;
2835	
2836	    terminal-exec.enable = true;
2837	
2838	    portal = {
2839	      enable = true;
2840	      extraPortals = with pkgs; [
2841	        xdg-desktop-portal-gnome
2842	      ];
2843	
2844	      xdgOpenUsePortal = false; # Opening Programs
2845	    };
2846	  };
2847	
2848	  # qt = {
2849	  #   enable = true;
2850	
2851	  #   platformTheme = "gnome";
2852	  #   style = "adwaita-dark";
2853	  # };
2854	
2855	  documentation = {
2856	    enable = true;
2857	    dev.enable = true;
2858	    doc.enable = true;
2859	    info.enable = true;
2860	
2861	    man = {
2862	      enable = true;
2863	
2864	      man-db = {
2865	        enable = true;
2866	        package = pkgs.man-db;
2867	      };
2868	
2869	      generateCaches = true;
2870	    };
2871	
2872	    nixos = {
2873	      enable = true;
2874	      includeAllModules = true;
2875	      options.warningsAreErrors = false;
2876	    };
2877	  };
2878	
2879	  users = {
2880	    groups = {
2881	      hardinfo2 = { }; # Creation
2882	    };
2883	
2884	    enforceIdUniqueness = true;
2885	    mutableUsers = true;
2886	
2887	    defaultUserShell = pkgs.fish;
2888	
2889	    motd = "Welcome";
2890	
2891	    users.bitscoper = {
2892	      isNormalUser = true;
2893	
2894	      name = "bitscoper";
2895	      description = "Abdullah As-Sadeed"; # Full Name
2896	
2897	      extraGroups = [
2898	        "adbusers"
2899	        "audio"
2900	        "dialout"
2901	        "hardinfo2"
2902	        "input"
2903	        "jellyfin"
2904	        "kvm"
2905	        "libvirtd"
2906	        "lp"
2907	        "networkmanager"
2908	        "plugdev"
2909	        "podman"
2910	        "qemu-libvirtd"
2911	        "scanner"
2912	        "tty"
2913	        "uucp"
2914	        "video"
2915	        "wheel"
2916	        "wireshark"
2917	      ];
2918	
2919	      useDefaultShell = true;
2920	    };
2921	  };
2922	
2923	  home-manager = {
2924	    useGlobalPkgs = true;
2925	    useUserPackages = true;
2926	
2927	    backupFileExtension = "old";
2928	
2929	    sharedModules = [
2930	      {
2931	        home = {
2932	          enableNixpkgsReleaseCheck = true;
2933	
2934	          shell = {
2935	            enableShellIntegration = true;
2936	            enableBashIntegration = true;
2937	            enableFishIntegration = true;
2938	          };
2939	
2940	          language = { };
2941	
2942	          keyboard = { };
2943	
2944	          pointerCursor = {
2945	            name = cursor.theme.name;
2946	            package = cursor.theme.package;
2947	            size = cursor.size;
2948	
2949	            gtk.enable = true;
2950	          };
2951	
2952	          preferXdgDirectories = true;
2953	
2954	          packages = with pkgs; [
2955	          ];
2956	
2957	          sessionVariables = { };
2958	
2959	          sessionSearchVariables = { };
2960	
2961	          shellAliases = { };
2962	
2963	          enableDebugInfo = false;
2964	
2965	          stateVersion = "24.11";
2966	        };
2967	
2968	        xdg = {
2969	          mime.enable = true;
2970	
2971	          mimeApps = {
2972	            enable = true;
2973	
2974	            associations = {
2975	              added = config.xdg.mime.addedAssociations;
2976	
2977	              removed = config.xdg.mime.removedAssociations;
2978	            };
2979	
2980	            defaultApplications = config.xdg.mime.defaultApplications;
2981	          };
2982	
2983	          configFile = {
2984	            "mimeapps.list".force = true;
2985	          };
2986	        };
2987	
2988	        gtk = {
2989	          enable = true;
2990	
2991	          theme = {
2992	            package = pkgs.gnome-themes-extra;
2993	            name = "Adwaita-dark";
2994	          };
2995	
2996	          iconTheme = {
2997	            package = pkgs.adwaita-icon-theme;
2998	            name = "Adwaita";
2999	          };
3000	
3001	          cursorTheme = {
3002	            name = cursor.theme.name;
3003	            package = cursor.theme.package;
3004	            size = cursor.size;
3005	          };
3006	
3007	          font = {
3008	            name = font_preferences.name.sans_serif;
3009	            package = font_preferences.package;
3010	            size = font_preferences.size;
3011	          };
3012	        };
3013	
3014	        qt = {
3015	          enable = true;
3016	
3017	          platformTheme.name = "adwaita";
3018	
3019	          style = {
3020	            package = pkgs.adwaita-qt6;
3021	            name = "adwaita-qt";
3022	          };
3023	        };
3024	
3025	        services = { };
3026	
3027	        programs = {
3028	          dircolors = {
3029	            enable = true;
3030	            package = pkgs.coreutils;
3031	
3032	            enableBashIntegration = true;
3033	            enableFishIntegration = true;
3034	
3035	            settings = { };
3036	
3037	            extraConfig = '''';
3038	          };
3039	
3040	          nix-your-shell = {
3041	            enable = true;
3042	            package = pkgs.nix-your-shell;
3043	
3044	            enableFishIntegration = true;
3045	          };
3046	
3047	          vscode = {
3048	            enable = true;
3049	            package = pkgs.vscode;
3050	            mutableExtensionsDir = false;
3051	
3052	            profiles = {
3053	              default = {
3054	                extensions =
3055	                  with pkgs.vscode-extensions;
3056	                  [
3057	                    aaron-bond.better-comments
3058	                    adpyke.codesnap
3059	                    albymor.increment-selection
3060	                    alefragnani.bookmarks
3061	                    alexisvt.flutter-snippets
3062	                    anweber.vscode-httpyac
3063	                    bierner.comment-tagged-templates
3064	                    bierner.docs-view
3065	                    bierner.emojisense
3066	                    bierner.github-markdown-preview
3067	                    bierner.markdown-checkbox
3068	                    bierner.markdown-emoji
3069	                    bierner.markdown-footnotes
3070	                    bierner.markdown-mermaid
3071	                    bierner.markdown-preview-github-styles
3072	                    bradgashler.htmltagwrap
3073	                    chanhx.crabviz
3074	                    christian-kohler.path-intellisense
3075	                    codezombiech.gitignore
3076	                    coolbear.systemd-unit-file
3077	                    dart-code.dart-code
3078	                    dart-code.flutter
3079	                    davidanson.vscode-markdownlint
3080	                    dendron.adjust-heading-level
3081	                    devsense.phptools-vscode
3082	                    dotenv.dotenv-vscode
3083	                    ecmel.vscode-html-css
3084	                    edonet.vscode-command-runner
3085	                    esbenp.prettier-vscode
3086	                    ethansk.restore-terminals
3087	                    fabiospampinato.vscode-open-in-github
3088	                    firefox-devtools.vscode-firefox-debug
3089	                    formulahendry.auto-close-tag
3090	                    formulahendry.auto-rename-tag
3091	                    formulahendry.code-runner
3092	                    foxundermoon.shell-format
3093	                    github.copilot
3094	                    github.copilot-chat
3095	                    github.vscode-github-actions
3096	                    github.vscode-pull-request-github
3097	                    grapecity.gc-excelviewer
3098	                    gruntfuggly.todo-tree
3099	                    hars.cppsnippets
3100	                    hbenl.vscode-test-explorer
3101	                    hediet.vscode-drawio
3102	                    ibm.output-colorizer
3103	                    iciclesoft.workspacesort
3104	                    iliazeus.vscode-ansi
3105	                    illixion.vscode-vibrancy-continued
3106	                    james-yu.latex-workshop
3107	                    jbockle.jbockle-format-files
3108	                    jellyedwards.gitsweep
3109	                    jkillian.custom-local-formatters
3110	                    jnoortheen.nix-ide
3111	                    jock.svg
3112	                    kamikillerto.vscode-colorize
3113	                    llvm-vs-code-extensions.vscode-clangd
3114	                    mads-hartmann.bash-ide-vscode
3115	                    mechatroner.rainbow-csv
3116	                    meganrogge.template-string-converter
3117	                    mishkinf.goto-next-previous-member
3118	                    mkhl.direnv
3119	                    moshfeu.compare-folders
3120	                    sanaajani.taskrunnercode
3121	                    ms-azuretools.vscode-docker
3122	                    ms-python.black-formatter
3123	                    ms-python.debugpy
3124	                    ms-python.isort
3125	                    slevesque.vscode-multiclip
3126	                    ms-python.python
3127	                    ms-toolsai.datawrangler
3128	                    ms-toolsai.jupyter
3129	                    ms-toolsai.jupyter-keymap
3130	                    ms-toolsai.jupyter-renderers
3131	                    rioj7.commandonallfiles
3132	                    ms-toolsai.vscode-jupyter-cell-tags
3133	                    ms-toolsai.vscode-jupyter-slideshow
3134	                    ms-vscode-remote.remote-containers
3135	                    ms-vscode-remote.remote-ssh
3136	                    stylelint.vscode-stylelint
3137	                    ms-vscode-remote.remote-ssh-edit
3138	                    ms-vscode.cmake-tools
3139	                    ms-vscode.cpptools
3140	                    ms-vscode.hexeditor
3141	                    ms-vscode.live-server
3142	                    ms-vscode.makefile-tools
3143	                    ms-vscode.test-adapter-converter
3144	                    ms-vsliveshare.vsliveshare
3145	                    ms-windows-ai-studio.windows-ai-studio
3146	                    oderwat.indent-rainbow
3147	                    platformio.platformio-vscode-ide
3148	                    quicktype.quicktype
3149	                    redhat.vscode-xml
3150	                    redhat.vscode-yaml
3151	                    rubymaniac.vscode-paste-and-indent
3152	                    ryu1kn.partial-diff
3153	                    shardulm94.trailing-spaces
3154	                    skyapps.fish-vscode
3155	                    spywhere.guides
3156	                    tailscale.vscode-tailscale
3157	                    tamasfe.even-better-toml
3158	                    timonwong.shellcheck
3159	                    vscode-icons-team.vscode-icons
3160	                    tyriar.sort-lines
3161	                    usernamehw.errorlens
3162	                    vincaslt.highlight-matching-tag
3163	                    visualstudioexptteam.intellicode-api-usage-examples
3164	                    visualstudioexptteam.vscodeintellicode
3165	                    vscjava.vscode-gradle
3166	                    wmaurer.change-case
3167	                    zainchen.json
3168	                  ]
3169	                  ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
3170	                    {
3171	                      name = "vscode-serial-monitor";
3172	                      publisher = "ms-vscode";
3173	                      version = "0.13.250503001";
3174	                      sha256 = "iuni/DybnUxdbvggvlCidurW4GevVPvwYO7/5i+S1ok=";
3175	                    }
3176	                    {
3177	                      name = "unique-lines";
3178	                      publisher = "bibhasdn";
3179	                      version = "1.0.0";
3180	                      sha256 = "W0ZpZ6+vjkfNfOtekx5NWOFTyxfWAiB0XYcIwHabFPQ=";
3181	                    }
3182	                    {
3183	                      name = "pubspec-assist";
3184	                      publisher = "jeroen-meijer";
3185	                      version = "2.3.2";
3186	                      sha256 = "+Mkcbeq7b+vkuf2/LYT10mj46sULixLNKGpCEk1Eu/0=";
3187	                    }
3188	                    {
3189	                      name = "vscode-sort-json";
3190	                      publisher = "richie5um2";
3191	                      version = "1.20.0";
3192	                      sha256 = "Jobx5Pf4SYQVR2I4207RSSP9I85qtVY6/2Nvs/Vvi/0=";
3193	                    }
3194	                    {
3195	                      name = "arb-editor";
3196	                      publisher = "Google";
3197	                      version = "0.2.1";
3198	                      sha256 = "uHdQeW9ZXYg6+VnD6cb5CU10/xV5hCtxt5K+j0qb7as=";
3199	                    }
3200	                    {
3201	                      name = "vscode-print";
3202	                      publisher = "pdconsec";
3203	                      version = "1.4.0";
3204	                      sha256 = "jAZ1F5neIFSevy0bNuHabh8pUbm5vuuxjmot08GctPc=";
3205	                    }
3206	                  ];
3207	
3208	                enableUpdateCheck = true;
3209	                enableExtensionUpdateCheck = true;
3210	
3211	                # userSettings = {
3212	                # };
3213	              };
3214	            };
3215	          };
3216	
3217	          matplotlib = {
3218	            enable = true;
3219	
3220	            config = { };
3221	
3222	            extraConfig = '''';
3223	          };
3224	
3225	          gh = {
3226	            enable = true;
3227	            package = pkgs.gh;
3228	            extensions = with pkgs; [
3229	            ];
3230	
3231	            gitCredentialHelper = {
3232	              enable = true;
3233	
3234	              hosts = [
3235	                "https://github.com"
3236	                "https://gist.github.com"
3237	              ];
3238	            };
3239	
3240	            settings = {
3241	              git_protocol = "https";
3242	
3243	              editor = "nano";
3244	
3245	              aliases = { };
3246	            };
3247	          };
3248	
3249	          awscli = {
3250	            enable = true;
3251	            package = pkgs.awscli2;
3252	
3253	            settings = {
3254	              "default" = {
3255	                output = "json";
3256	              };
3257	            };
3258	
3259	            credentials = { };
3260	          };
3261	
3262	          chromium = {
3263	            enable = true;
3264	            package = pkgs.ungoogled-chromium;
3265	            dictionaries = with pkgs.hunspellDictsChromium; [
3266	              en_US
3267	              en-us
3268	            ];
3269	            nativeMessagingHosts = config.programs.firefox.nativeMessagingHosts.packages;
3270	
3271	            commandLineArgs = [
3272	              "--ozone-platform=wayland"
3273	              "--password-store=gnome"
3274	              "--proxy-auto-detect"
3275	            ];
3276	          };
3277	
3278	          obs-studio = {
3279	            enable = true;
3280	            package = pkgs.obs-studio;
3281	            plugins = with pkgs.obs-studio-plugins; [
3282	              droidcam-obs
3283	              input-overlay
3284	              obs-3d-effect
3285	              obs-backgroundremoval
3286	              obs-color-monitor
3287	              obs-composite-blur
3288	              obs-freeze-filter
3289	              obs-gradient-source
3290	              obs-gstreamer
3291	              obs-move-transition
3292	              obs-multi-rtmp
3293	              obs-mute-filter
3294	              obs-pipewire-audio-capture
3295	              obs-replay-source
3296	              obs-rgb-levels-filter
3297	              obs-scale-to-sound
3298	              obs-shaderfilter
3299	              obs-source-clone
3300	              obs-source-record
3301	              obs-source-switcher
3302	              obs-text-pthread
3303	              obs-transition-table
3304	              obs-tuna
3305	              obs-vaapi
3306	              obs-vertical-canvas
3307	              obs-vintage-filter
3308	              obs-vkcapture
3309	              waveform
3310	            ];
3311	          };
3312	
3313	          yt-dlp = {
3314	            enable = true;
3315	            package = pkgs.yt-dlp;
3316	
3317	            settings = { };
3318	
3319	            extraConfig = '''';
3320	          };
3321	        };
3322	      }
3323	    ];
3324	
3325	    users.root = { };
3326	    users.bitscoper = { };
3327	
3328	    verbose = true;
3329	  };
3330	}
3331	
3332	# gsettings reset org.gnome.shell app-picker-layout
3333	
3334	# FIXME: 05ac-033e-Gamepad > Rumble
3335	# FIXME: ELAN7001 SPI Fingerprint Sensor
3336	# FIXME: MariaDB > Login
3337	# FIXME: Qt
3338	# FIXME: hardinfo2
3339