]> Untitled Git - monorepo.git/commitdiff
change readme
authorPreston Pan <preston@nullring.xyz>
Sat, 2 Mar 2024 07:59:45 +0000 (23:59 -0800)
committerPreston Pan <preston@nullring.xyz>
Sat, 2 Mar 2024 07:59:45 +0000 (23:59 -0800)
51 files changed:
README.org
config/emacs.el
config/emacs.org
config/nix.org
index.org
journal/20240301.org [new file with mode: 0644]
mindmap/limit.org [new file with mode: 0644]
mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_27244e5b74b849f9b81d99797b3bd149296780fc.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_36a9152abe257356e10d6bcf14b90f467755ea8a.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_3910faf9acf212232795e93c3510d0fe97468015.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_c94999ae9316287e809dabd9fc494e1c9b34a387.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_e80960665bf0d91ee0770469f237c39dcfe22b98.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_ebd769de777728ae8dde51dc94c51ad64963244e.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_fa16adefafa2a4d0f294d224c776253425d38b95.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png [new file with mode: 0644]
mindmap/ltximg/org-ltximg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png [new file with mode: 0644]
mindmap/partial derivative.org

index c3133aede1de49bacfbce8b4404bc12c4ea20bfe..6e2a7b3090315a68643070c0f41a96181d1ebb74 100644 (file)
@@ -20,5 +20,44 @@ as well as writing a lot of things with a literate config.
 ** So, where is this website of yours located?
 https://ret2pop.nullring.xyz, it is the road to enlightenment.
 
+* Wait, so where are your dotfiles?
+To use my dotfiles, clone this repository:
+#+begin_src bash
+git clone https://github.com/ret2pop/ret2pop-website.git ~/org/website
+#+end_src
+and install my ~configuration.nix~ file. The org files /are/ the dotfiles, or
+at least in the case of emacs.
+
+To use my full system, you also need to have a ~password-store~ from the ~pass~
+password manager in its standard location with an entry called ~Mail~, and you need
+to clone my [[https://github.com/ret2pop/wallpapers.git][wallpapers]] repository. Therefore, in full, my configuration can be fully
+installed like so:
+#+begin_src bash
+  # Run this in root, and after copying the configuration.nix file and running nixos-rebuild switch.
+  # You must also change the gpg key used for git and pass. Make sure
+  # you've installed your gpg keys and your ssh keys before this.
+  # Install your music to ~/music. Of course, also change your location
+  # of stuff like your mail server.
+  su preston # if you change your username, change this too
+  cd ~
+  mkdir ~/org
+  # if you want to make this process deterministic, clone a particular commit
+  git clone https://github.com/ret2pop/ret2pop-website.git ~/org/website
+  git clone https://github.com/ret2pop/wallpapers.git
+  # replace this with your password-store
+  git clone git@nullring.xyz:/var/www/password_store.git ~/.password-store/
+  mbsync prestonpan # change this with your own name in the nix config and here
+  # TODO: mu init/index
+  mpc add /
+
+  # Afterwards, open firefox, enable all the plugins that are already installed,
+  # and install the catppuccin firefox theme. For vencord, use the catppuccin
+  # betterdiscord theme; open emacs and run pdf-tools-install, nerd-icons-install-fonts,
+  # and all-the-icons-install-fonts. These things are not completely set up for you but
+  # the good news is that the vast majority of the functionality is included.
+
+#+end_src
+Without the comments, it is a 10 line program that installs everything needed to run my system,
+and configures those programs as well!
 * License
 See the [[file:LICENSE.org][license]]. The style.css has its own license.
index 3e3c1c2a69ef8de150d0a661882d854fe0633b47..03eefefb3e4cf2e494480627581954349460f339 100644 (file)
@@ -12,9 +12,9 @@
 (setq make-backup-files nil)
 (setq org-export-with-broken-links t)
 (setq org-src-fontify-natively t)
+(setq org-highlight-latex-and-related '(latex script entities))
 (setq warning-minimum-level :emergency)
 (add-hook 'text-mode-hook 'visual-line-mode)
-(add-hook 'after-save-hook 'eglot-format)
 (setq debug-ignored-errors
     (cons 'remote-file-error debug-ignored-errors))
 
 Otherwise, just insert the typed character."
   (interactive)
   (if (eolp) (let (parens-require-spaces) (insert-pair)) (self-insert-command 1)))
+
   (add-hook 'org-mode-hook
            (lambda ()
              (define-key org-mode-map "\"" 'electric-pair)
-             (define-key org-mode-map "\'" 'electric-pair)
+             (define-key org-mode-map "(" 'electric-pair)
+             (define-key org-mode-map "[" 'electric-pair)
+             (define-key org-mode-map "{" 'electric-pair)))
+(add-hook 'prog-mode-hook
+         (lambda ()
+             (define-key org-mode-map "\"" 'electric-pair)
              (define-key org-mode-map "(" 'electric-pair)
              (define-key org-mode-map "[" 'electric-pair)
              (define-key org-mode-map "{" 'electric-pair)))
@@ -210,6 +216,7 @@ Otherwise, just insert the typed character."
     "m P p" 'org-publish
     "s e" 'sudo-edit
     "m m" 'emms
+    "f f" 'eglot-format
     "h m" '(woman :wk "Manual")
     "h r r" '(lambda () (interactive) (org-babel-load-file (expand-file-name "~/org/website/config/emacs.org")))
     ))
@@ -241,12 +248,15 @@ Otherwise, just insert the typed character."
 
 (use-package org-roam
   :init
+  (setq org-roam-db-update-on-save t)
   (setq org-roam-graph-viewer "firefox")
   (setq org-roam-directory (file-truename "~/org/website/mindmap"))
   (setq org-roam-capture-templates '(("d" "default" plain "%?"
-                                   :target (file+head "${title}.org"
-                                                      "#+title: ${title}\n#+author: Preston Pan\n#+html_head: <link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />\n#+html_head: <script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n#+html_head: <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>\n#+options: broken-links:t")
-                                   :unnarrowed t))))
+  :target (file+head "${title}.org"
+       "#+title: ${title}\n#+author: Preston Pan\n#+html_head: <link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />\n#+html_head: <script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n#+html_head: <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>\n#+options: broken-links:t")
+    :unnarrowed t)))
+  :config
+  (org-roam-db-autosync-mode))
 
 (use-package pinentry
   :init (setq epa-pinentry-mode `loopback)
index ff6342e13e515e688c7c88495ac999f27bfb4a57..ffd2d3a1557f468841ff39d2b3b59594242e25cf 100644 (file)
@@ -26,9 +26,9 @@ emacs work in a semi-sane way and make it not look completely ugly:
   (setq make-backup-files nil)
   (setq org-export-with-broken-links t)
   (setq org-src-fontify-natively t)
+  (setq org-highlight-latex-and-related '(latex script entities))
   (setq warning-minimum-level :emergency)
   (add-hook 'text-mode-hook 'visual-line-mode)
-  (add-hook 'after-save-hook 'eglot-format)
   (setq debug-ignored-errors
       (cons 'remote-file-error debug-ignored-errors))
 #+end_src
@@ -88,10 +88,16 @@ what electric-pair does based on the mode.
   Otherwise, just insert the typed character."
     (interactive)
     (if (eolp) (let (parens-require-spaces) (insert-pair)) (self-insert-command 1)))
+
     (add-hook 'org-mode-hook
              (lambda ()
                (define-key org-mode-map "\"" 'electric-pair)
-               (define-key org-mode-map "\'" 'electric-pair)
+               (define-key org-mode-map "(" 'electric-pair)
+               (define-key org-mode-map "[" 'electric-pair)
+               (define-key org-mode-map "{" 'electric-pair)))
+  (add-hook 'prog-mode-hook
+           (lambda ()
+               (define-key org-mode-map "\"" 'electric-pair)
                (define-key org-mode-map "(" 'electric-pair)
                (define-key org-mode-map "[" 'electric-pair)
                (define-key org-mode-map "{" 'electric-pair)))
@@ -274,6 +280,7 @@ Ivy is a pretty cool general program for displaying stuff:
       "m P p" 'org-publish
       "s e" 'sudo-edit
       "m m" 'emms
+      "f f" 'eglot-format
       "h m" '(woman :wk "Manual")
       "h r r" '(lambda () (interactive) (org-babel-load-file (expand-file-name "~/org/website/config/emacs.org")))
       ))
@@ -316,12 +323,15 @@ For all my mathematics and programming notes:
 #+begin_src emacs-lisp
   (use-package org-roam
     :init
+    (setq org-roam-db-update-on-save t)
     (setq org-roam-graph-viewer "firefox")
     (setq org-roam-directory (file-truename "~/org/website/mindmap"))
     (setq org-roam-capture-templates '(("d" "default" plain "%?"
-                                     :target (file+head "${title}.org"
-                                                        "#+title: ${title}\n#+author: Preston Pan\n#+html_head: <link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />\n#+html_head: <script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n#+html_head: <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>\n#+options: broken-links:t")
-                                     :unnarrowed t))))
+    :target (file+head "${title}.org"
+        "#+title: ${title}\n#+author: Preston Pan\n#+html_head: <link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />\n#+html_head: <script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n#+html_head: <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>\n#+options: broken-links:t")
+      :unnarrowed t)))
+    :config
+    (org-roam-db-autosync-mode))
 #+end_src
 ** Pinentry
 Set up pinentry so that I can use emacs as my pinentry frontend:
index 5251748ef906c7e2accf9204204a9d89dd9891af..8af80ff78db453d8dfb7351033fa43b42499eae4 100644 (file)
 #+html_head: <link rel="stylesheet" type="text/css" href="../style.css" />
 
 * Configuration
-#+begin_src nix :tangle t
-# Edit this configuration file to define what should be installed on
-# your system.  Help is available in the configuration.nix(5) man page
-# and in the NixOS manual (accessible by running ‘nixos-help’).
-
-{ config, pkgs, ... }:
-
-{
-  imports =
-    [
-      # Include the results of the hardware scan.
-      ./hardware-configuration.nix
-      <home-manager/nixos>
-    ];
+#+begin_src nix :tangle
+  # Edit this configuration file to define what should be installed on
+  # your system.  Help is available in the configuration.nix(5) man page
+  # and in the NixOS manual (accessible by running ‘nixos-help’).
+
+  { config, pkgs, ... }:
+
+  {
+    imports =
+      [
+       # Include the results of the hardware scan.
+       ./hardware-configuration.nix
+       <home-manager/nixos>
+      ];
 
-  # Bootloader.
-  boot.loader.systemd-boot.enable = true;
-  boot.loader.efi.canTouchEfiVariables = true;
-
-  networking.hostName = "continuity"; # Define your hostname.
-  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
-
-  # Configure network proxy if necessary
-  # networking.proxy.default = "http://user:password@proxy:port/";
-  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
-
-  # Enable networking
-  networking.networkmanager.enable = true;
-
-  # Set your time zone.
-  time.timeZone = "America/Vancouver";
-
-  # Select internationalisation properties.
-  i18n.defaultLocale = "en_CA.UTF-8";
-
-  # Enable the X11 windowing system.
-  services.xserver.enable = true;
-  services.xserver.displayManager.startx.enable = true;
-
-  # Configure keymap in X11
-  services.xserver = {
-    layout = "us";
-    xkbVariant = "";
-    xkbOptions = "caps:escape";
-  };
-
-  # Enable CUPS to print documents.
-  services.printing.enable = true;
-
-  # Enable sound with pipewire.
-  sound.enable = true;
-  hardware.pulseaudio.enable = false;
-  security.rtkit.enable = true;
-  services.pipewire = {
-    enable = true;
-    alsa.enable = true;
-    alsa.support32Bit = true;
-    pulse.enable = true;
-    # If you want to use JACK applications, uncomment this
-    #jack.enable = true;
-
-    # use the example session manager (no others are packaged yet so this is enabled by default,
-    # no need to redefine it in your config for now)
-    #media-session.enable = true;
-  };
-
-  # Enable touchpad support (enabled default in most desktopManager).
-  # services.xserver.libinput.enable = true;
-  home-manager.users.preston = {
-    nixpkgs.config.packageOverrides = pkgs: {
-      nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
-        inherit pkgs;
-      };
-    };
-    home.packages = [
-      pkgs.vim
-      pkgs.git
-      pkgs.curl
-      pkgs.wget
-      pkgs.neofetch
-      pkgs.cowsay
-      pkgs.starship
-      pkgs.kitty
-      pkgs.ffmpeg
-      pkgs.hyprland
-      pkgs.grim
-      pkgs.acpilight
-      pkgs.light
-      pkgs.gnupg
-      pkgs.pass
-      pkgs.fira-code
-      pkgs.croc
-      pkgs.nixpkgs-fmt
-      pkgs.mu
-      pkgs.rust-analyzer
-      pkgs.rustc
-      pkgs.cargo
-      pkgs.rnix-lsp
-      pkgs.clang
-      pkgs.bear
-      pkgs.gnumake
-      pkgs.clang-tools
-      pkgs.gammastep
-      pkgs.pinentry
-      pkgs.texliveFull
-      pkgs.helvum
-      pkgs.xdg-utils
-      pkgs.ncmpcpp
-      pkgs.noto-fonts
-      pkgs.noto-fonts-cjk
-      pkgs.autobuild
-      pkgs.rsync
-      pkgs.pavucontrol
-      pkgs.swww
-      pkgs.fswebcam
-      pkgs.nmap
-      pkgs.mpc-cli
-      pkgs.yt-dlp
-      pkgs.mpv
-      (pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; })
-      (pkgs.discord.override {
-        withOpenASAR = true;
-        withVencord = true;
-      })
-      pkgs.vesktop
-    ];
+    # Bootloader.
+    boot.loader.systemd-boot.enable = true;
+    boot.loader.efi.canTouchEfiVariables = true;
 
-    fonts.fontconfig.enable = true;
-    xsession.enable = true;
-    home.stateVersion = "23.11";
+    networking.hostName = "continuity"; # Define your hostname.
+    # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
 
-    services.gpg-agent = {
-      enable = true;
-      pinentryFlavor = "emacs";
-      extraConfig = ''
-        allow-emacs-pinentry
-        allow-loopback-pinentry
-      '';
+    # Configure network proxy if necessary
+    # networking.proxy.default = "http://user:password@proxy:port/";
+    # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+    # Enable networking
+    networking.networkmanager.enable = true;
+
+    # Set your time zone.
+    time.timeZone = "America/Vancouver";
+
+    # Select internationalisation properties.
+    i18n.defaultLocale = "en_CA.UTF-8";
+
+    # Enable the X11 windowing system.
+    services.xserver.enable = true;
+    services.xserver.displayManager.startx.enable = true;
+
+    # Configure keymap in X11
+    services.xserver = {
+      layout = "us";
+      xkbVariant = "";
+      xkbOptions = "caps:escape";
     };
 
-    services.mpd = {
+    # Enable CUPS to print documents.
+    services.printing.enable = true;
+
+    # Enable sound with pipewire.
+    sound.enable = true;
+    hardware.pulseaudio.enable = false;
+    security.rtkit.enable = true;
+    services.pipewire = {
       enable = true;
-      dbFile = "/home/preston/.config/mpd/db";
-      dataDir = "/home/preston/.config/mpd/";
-      network.port = 6600;
-      musicDirectory = "/home/preston/music";
-      playlistDirectory = "/home/preston/.config/mpd/playlists";
-      extraConfig = ''
-        audio_output {
-          type "pipewire"
-          name "pipewire boi"
-        }
-      '';
+      alsa.enable = true;
+      alsa.support32Bit = true;
+      pulse.enable = true;
+      # If you want to use JACK applications, uncomment this
+      #jack.enable = true;
+
+      # use the example session manager (no others are packaged yet so this is enabled by default,
+      # no need to redefine it in your config for now)
+      #media-session.enable = true;
     };
 
-    programs.wofi = {
-      enable = true;
-      settings = {
-        location = "bottom-right";
-        allow_markup = true;
-        show = "drun";
-        width = 750;
-        height = 400;
-        always_parse_args = true;
-        show_all = false;
-        term = "kitty";
-        hide_scroll = true;
-        print_command = true;
-        insensitive = true;
-        prompt = "";
-        columns = 2;
+    # Enable touchpad support (enabled default in most desktopManager).
+    # services.xserver.libinput.enable = true;
+    home-manager.users.preston = {
+      nixpkgs.config.packageOverrides = pkgs: {
+       nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
+         inherit pkgs;
+       };
       };
+      home.packages = [
+       pkgs.vim
+       pkgs.git
+       pkgs.curl
+       pkgs.wget
+       pkgs.neofetch
+       pkgs.cowsay
+       pkgs.starship
+       pkgs.kitty
+       pkgs.ffmpeg
+       pkgs.hyprland
+       pkgs.grim
+       pkgs.acpilight
+       pkgs.light
+       pkgs.gnupg
+       pkgs.pass
+       pkgs.fira-code
+       pkgs.croc
+       pkgs.nixpkgs-fmt
+       pkgs.mu
+       pkgs.rust-analyzer
+       pkgs.rustc
+       pkgs.cargo
+       pkgs.rnix-lsp
+       pkgs.clang
+       pkgs.bear
+       pkgs.gnumake
+       pkgs.clang-tools
+       pkgs.gammastep
+       pkgs.pinentry
+       pkgs.texliveFull
+       pkgs.helvum
+       pkgs.xdg-utils
+       pkgs.ncmpcpp
+       pkgs.noto-fonts
+       pkgs.noto-fonts-cjk
+       pkgs.autobuild
+       pkgs.rsync
+       pkgs.pavucontrol
+       pkgs.swww
+       pkgs.fswebcam
+       pkgs.nmap
+       pkgs.mpc-cli
+       pkgs.yt-dlp
+       pkgs.mpv
+       (pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; })
+       (pkgs.discord.override {
+         withOpenASAR = true;
+         withVencord = true;
+       })
+       pkgs.vesktop
+      ];
 
-      style = ''
-        @define-color  rosewater  #f5e0dc;
-        @define-color  rosewater-rgb  rgb(245, 224, 220);
-        @define-color  flamingo  #f2cdcd;
-        @define-color  flamingo-rgb  rgb(242, 205, 205);
-        @define-color  pink  #f5c2e7;
-        @define-color  pink-rgb  rgb(245, 194, 231);
-        @define-color  mauve  #cba6f7;
-        @define-color  mauve-rgb  rgb(203, 166, 247);
-        @define-color  red  #f38ba8;
-        @define-color  red-rgb  rgb(243, 139, 168);
-        @define-color  maroon  #eba0ac;
-        @define-color  maroon-rgb  rgb(235, 160, 172);
-        @define-color  peach  #fab387;
-        @define-color  peach-rgb  rgb(250, 179, 135);
-        @define-color  yellow  #f9e2af;
-        @define-color  yellow-rgb  rgb(249, 226, 175);
-        @define-color  green  #a6e3a1;
-        @define-color  green-rgb  rgb(166, 227, 161);
-        @define-color  teal  #94e2d5;
-        @define-color  teal-rgb  rgb(148, 226, 213);
-        @define-color  sky  #89dceb;
-        @define-color  sky-rgb  rgb(137, 220, 235);
-        @define-color  sapphire  #74c7ec;
-        @define-color  sapphire-rgb  rgb(116, 199, 236);
-        @define-color  blue  #89b4fa;
-        @define-color  blue-rgb  rgb(137, 180, 250);
-        @define-color  lavender  #b4befe;
-        @define-color  lavender-rgb  rgb(180, 190, 254);
-        @define-color  text  #cdd6f4;
-        @define-color  text-rgb  rgb(205, 214, 244);
-        @define-color  subtext1  #bac2de;
-        @define-color  subtext1-rgb  rgb(186, 194, 222);
-        @define-color  subtext0  #a6adc8;
-        @define-color  subtext0-rgb  rgb(166, 173, 200);
-        @define-color  overlay2  #9399b2;
-        @define-color  overlay2-rgb  rgb(147, 153, 178);
-        @define-color  overlay1  #7f849c;
-        @define-color  overlay1-rgb  rgb(127, 132, 156);
-        @define-color  overlay0  #6c7086;
-        @define-color  overlay0-rgb  rgb(108, 112, 134);
-        @define-color  surface2  #585b70;
-        @define-color  surface2-rgb  rgb(88, 91, 112);
-        @define-color  surface1  #45475a;
-        @define-color  surface1-rgb  rgb(69, 71, 90);
-        @define-color  surface0  #313244;
-        @define-color  surface0-rgb  rgb(49, 50, 68);
-        @define-color  base  #1e1e2e;
-        @define-color  base-rgb  rgb(30, 30, 46);
-        @define-color  mantle  #181825;
-        @define-color  mantle-rgb  rgb(24, 24, 37);
-        @define-color  crust  #11111b;
-        @define-color  crust-rgb  rgb(17, 17, 27);
-
-        * {
-          font-family: 'Iosevka Nerd Font', monospace;
-          font-size: 14px;
-        }
-
-        /* Window */
-        window {
-          margin: 0px;
-          padding: 10px;
-          border: 0.16em solid @lavender;
-          border-radius: 0.1em;
-          background-color: @base;
-          animation: slideIn 0.5s ease-in-out both;
-        }
-
-        /* Slide In */
-        @keyframes slideIn {
-          0% {
-             opacity: 0;
-          }
-
-          100% {
-             opacity: 1;
-          }
-        }
-
-        /* Inner Box */
-        #inner-box {
-          margin: 5px;
-          padding: 10px;
-          border: none;
-          background-color: @base;
-          animation: fadeIn 0.5s ease-in-out both;
-        }
-
-        /* Fade In */
-        @keyframes fadeIn {
-          0% {
-             opacity: 0;
-          }
-
-          100% {
-             opacity: 1;
-          }
-        }
-
-        /* Outer Box */
-        #outer-box {
-          margin: 5px;
-          padding: 10px;
-          border: none;
-          background-color: @base;
-        }
-
-        /* Scroll */
-        #scroll {
-          margin: 0px;
-          padding: 10px;
-          border: none;
-          background-color: @base;
-        }
-
-        /* Input */
-        #input {
-          margin: 5px 20px;
-          padding: 10px;
-          border: none;
-          border-radius: 0.1em;
-          color: @text;
-          background-color: @base;
-          animation: fadeIn 0.5s ease-in-out both;
-        }
-
-        #input image {
-            border: none;
-            color: @red;
-        }
-
-        #input * {
-          outline: 4px solid @red!important;
-        }
-
-        /* Text */
-        #text {
-          margin: 5px;
-          border: none;
-          color: @text;
-          animation: fadeIn 0.5s ease-in-out both;
-        }
-
-        #entry {
-          background-color: @base;
-        }
-
-        #entry arrow {
-          border: none;
-          color: @lavender;
-        }
-
-        /* Selected Entry */
-        #entry:selected {
-          border: 0.11em solid @lavender;
-        }
-
-        #entry:selected #text {
-          color: @mauve;
-        }
-
-        #entry:drop(active) {
-          background-color: @lavender!important;
-        }
-      '';
-    };
+      fonts.fontconfig.enable = true;
+      xsession.enable = true;
+      home.stateVersion = "23.11";
+
+      services.gpg-agent = {
+       enable = true;
+       pinentryFlavor = "emacs";
+       extraConfig = ''
+         allow-emacs-pinentry
+         allow-loopback-pinentry
+       '';
+      };
 
-    programs.kitty = {
-      enable = true;
-      settings = {
-        enable_audio_bell = false;
-        font_family = "Fira Code";
-        font_size = 12;
-        confirm_os_window_close = -1;
-        background_opacity = "0.9";
+      services.mpd = {
+       enable = true;
+       dbFile = "/home/preston/.config/mpd/db";
+       dataDir = "/home/preston/.config/mpd/";
+       network.port = 6600;
+       musicDirectory = "/home/preston/music";
+       playlistDirectory = "/home/preston/.config/mpd/playlists";
+       extraConfig = ''
+         audio_output {
+           type "pipewire"
+           name "pipewire output"
+         }
+       '';
       };
-      extraConfig = ''
-        # The basic colors
-        foreground              #CDD6F4
-        background              #1E1E2E
-        selection_foreground    #1E1E2E
-        selection_background    #F5E0DC
-
-        # Cursor colors
-        cursor                  #F5E0DC
-        cursor_text_color       #1E1E2E
-
-        # URL underline color when hovering with mouse
-        url_color               #F5E0DC
-
-        # Kitty window border colors
-        active_border_color     #B4BEFE
-        inactive_border_color   #6C7086
-        bell_border_color       #F9E2AF
-
-        # OS Window titlebar colors
-        wayland_titlebar_color  #1E1E2E
-        macos_titlebar_color    #1E1E2E
-
-        # Tab bar colors
-        active_tab_foreground   #11111B
-        active_tab_background   #CBA6F7
-        inactive_tab_foreground #CDD6F4
-        inactive_tab_background #181825
-        tab_bar_background      #11111B
-
-        # Colors for marks (marked text in the terminal)
-        mark1_foreground #1E1E2E
-        mark1_background #B4BEFE
-        mark2_foreground #1E1E2E
-        mark2_background #CBA6F7
-        mark3_foreground #1E1E2E
-        mark3_background #74C7EC
-
-        # The 16 terminal colors
-
-        # black
-        color0 #45475A
-        color8 #585B70
-
-        # red
-        color1 #F38BA8
-        color9 #F38BA8
-
-        # green
-        color2  #A6E3A1
-        color10 #A6E3A1
-
-        # yellow
-        color3  #F9E2AF
-        color11 #F9E2AF
-
-        # blue
-        color4  #89B4FA
-        color12 #89B4FA
-
-        # magenta
-        color5  #F5C2E7
-        color13 #F5C2E7
-
-        # cyan
-        color6  #94E2D5
-        color14 #94E2D5
-
-        # white
-        color7  #BAC2DE
-        color15 #A6ADC8
-      '';
-    };
-    programs.firefox = {
-      policies = {
-        EnableTrackingProtection = true;
-        OfferToSaveLogins = false;
+
+      programs.wofi = {
+       enable = true;
+       settings = {
+         location = "bottom-right";
+         allow_markup = true;
+         show = "drun";
+         width = 750;
+         height = 400;
+         always_parse_args = true;
+         show_all = false;
+         term = "kitty";
+         hide_scroll = true;
+         print_command = true;
+         insensitive = true;
+         prompt = "";
+         columns = 2;
+       };
+
+       style = ''
+         @define-color rosewater  #f5e0dc;
+         @define-color rosewater-rgb  rgb(245, 224, 220);
+         @define-color flamingo  #f2cdcd;
+         @define-color flamingo-rgb  rgb(242, 205, 205);
+         @define-color pink  #f5c2e7;
+         @define-color pink-rgb  rgb(245, 194, 231);
+         @define-color mauve  #cba6f7;
+         @define-color mauve-rgb  rgb(203, 166, 247);
+         @define-color red  #f38ba8;
+         @define-color red-rgb  rgb(243, 139, 168);
+         @define-color maroon  #eba0ac;
+         @define-color maroon-rgb  rgb(235, 160, 172);
+         @define-color peach  #fab387;
+         @define-color peach-rgb  rgb(250, 179, 135);
+         @define-color yellow  #f9e2af;
+         @define-color yellow-rgb  rgb(249, 226, 175);
+         @define-color green  #a6e3a1;
+         @define-color green-rgb  rgb(166, 227, 161);
+         @define-color teal  #94e2d5;
+         @define-color teal-rgb  rgb(148, 226, 213);
+         @define-color sky  #89dceb;
+         @define-color sky-rgb  rgb(137, 220, 235);
+         @define-color sapphire  #74c7ec;
+         @define-color sapphire-rgb  rgb(116, 199, 236);
+         @define-color blue  #89b4fa;
+         @define-color blue-rgb  rgb(137, 180, 250);
+         @define-color lavender  #b4befe;
+         @define-color lavender-rgb  rgb(180, 190, 254);
+         @define-color text  #cdd6f4;
+         @define-color text-rgb  rgb(205, 214, 244);
+         @define-color subtext1  #bac2de;
+         @define-color subtext1-rgb  rgb(186, 194, 222);
+         @define-color subtext0  #a6adc8;
+         @define-color subtext0-rgb  rgb(166, 173, 200);
+         @define-color overlay2  #9399b2;
+         @define-color overlay2-rgb  rgb(147, 153, 178);
+         @define-color overlay1  #7f849c;
+         @define-color overlay1-rgb  rgb(127, 132, 156);
+         @define-color overlay0  #6c7086;
+         @define-color overlay0-rgb  rgb(108, 112, 134);
+         @define-color surface2  #585b70;
+         @define-color surface2-rgb  rgb(88, 91, 112);
+         @define-color surface1  #45475a;
+         @define-color surface1-rgb  rgb(69, 71, 90);
+         @define-color surface0  #313244;
+         @define-color surface0-rgb  rgb(49, 50, 68);
+         @define-color base  #1e1e2e;
+         @define-color base-rgb  rgb(30, 30, 46);
+         @define-color mantle  #181825;
+         @define-color mantle-rgb  rgb(24, 24, 37);
+         @define-color crust  #11111b;
+         @define-color crust-rgb  rgb(17, 17, 27);
+
+         ,* {
+           font-family: 'Iosevka Nerd Font', monospace;
+           font-size: 14px;
+         }
+
+         /* Window */
+         window {
+           margin: 0px;
+           padding: 10px;
+           border: 0.16em solid @lavender;
+           border-radius: 0.1em;
+           background-color: @base;
+           animation: slideIn 0.5s ease-in-out both;
+         }
+
+         /* Slide In */
+         @keyframes slideIn {
+           0% {
+              opacity: 0;
+           }
+
+           100% {
+              opacity: 1;
+           }
+         }
+
+         /* Inner Box */
+         #inner-box {
+           margin: 5px;
+           padding: 10px;
+           border: none;
+           background-color: @base;
+           animation: fadeIn 0.5s ease-in-out both;
+         }
+
+         /* Fade In */
+         @keyframes fadeIn {
+           0% {
+              opacity: 0;
+           }
+
+           100% {
+              opacity: 1;
+           }
+         }
+
+         /* Outer Box */
+         #outer-box {
+           margin: 5px;
+           padding: 10px;
+           border: none;
+           background-color: @base;
+         }
+
+         /* Scroll */
+         #scroll {
+           margin: 0px;
+           padding: 10px;
+           border: none;
+           background-color: @base;
+         }
+
+         /* Input */
+         #input {
+           margin: 5px 20px;
+           padding: 10px;
+           border: none;
+           border-radius: 0.1em;
+           color: @text;
+           background-color: @base;
+           animation: fadeIn 0.5s ease-in-out both;
+         }
+
+         #input image {
+             border: none;
+             color: @red;
+         }
+
+         #input * {
+           outline: 4px solid @red!important;
+         }
+
+         /* Text */
+         #text {
+           margin: 5px;
+           border: none;
+           color: @text;
+           animation: fadeIn 0.5s ease-in-out both;
+         }
+
+         #entry {
+           background-color: @base;
+         }
+
+         #entry arrow {
+           border: none;
+           color: @lavender;
+         }
+
+         /* Selected Entry */
+         #entry:selected {
+           border: 0.11em solid @lavender;
+         }
+
+         #entry:selected #text {
+           color: @mauve;
+         }
+
+         #entry:drop(active) {
+           background-color: @lavender!important;
+         }
+       '';
       };
-      enable = true;
-      profiles = {
-        default = {
-          id = 0;
-          name = "default";
-          isDefault = true;
-          extensions = with pkgs.nur.repos.rycee.firefox-addons; [
-            ublock-origin
-            tree-style-tab
-            firefox-color
-            vimium
-          ];
-          extraConfig = ''
-            //
-            /* You may copy+paste this file and use it as it is.
-             *
-             * If you make changes to your about:config while the program is running, the
-             * changes will be overwritten by the user.js when the application restarts.
-             *
-             * To make lasting changes to preferences, you will have to edit the user.js.
-             */
-
-            /****************************************************************************
-             * Betterfox                                                                *
-             * "Ad meliora"                                                             *
-             * version: 122                                                             *
-             * url: https://github.com/yokoffing/Betterfox                              *
-            ****************************************************************************/
-
-            /****************************************************************************
-             * SECTION: FASTFOX                                                         *
-            ****************************************************************************/
-            /** GENERAL ***/
-            user_pref("content.notify.interval", 100000);
-
-            /** GFX ***/
-            user_pref("gfx.canvas.accelerated.cache-items", 4096);
-            user_pref("gfx.canvas.accelerated.cache-size", 512);
-            user_pref("gfx.content.skia-font-cache-size", 20);
-
-            /** DISK CACHE ***/
-            user_pref("browser.cache.jsbc_compression_level", 3);
-
-            /** MEDIA CACHE ***/
-            user_pref("media.memory_cache_max_size", 65536);
-            user_pref("media.cache_readahead_limit", 7200);
-            user_pref("media.cache_resume_threshold", 3600);
-
-            /** IMAGE CACHE ***/
-            user_pref("image.mem.decode_bytes_at_a_time", 32768);
-
-            /** NETWORK ***/
-            user_pref("network.buffer.cache.size", 262144);
-            user_pref("network.buffer.cache.count", 128);
-            user_pref("network.http.max-connections", 1800);
-            user_pref("network.http.max-persistent-connections-per-server", 10);
-            user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
-            user_pref("network.http.pacing.requests.enabled", false);
-            user_pref("network.dnsCacheExpiration", 3600);
-            user_pref("network.dns.max_high_priority_threads", 8);
-            user_pref("network.ssl_tokens_cache_capacity", 10240);
-
-            /** SPECULATIVE LOADING ***/
-            user_pref("network.dns.disablePrefetch", true);
-            user_pref("network.prefetch-next", false);
-            user_pref("network.predictor.enabled", false);
-
-            /** EXPERIMENTAL ***/
-            user_pref("layout.css.grid-template-masonry-value.enabled", true);
-            user_pref("dom.enable_web_task_scheduling", true);
-            user_pref("layout.css.has-selector.enabled", true);
-            user_pref("dom.security.sanitizer.enabled", true);
-
-            /****************************************************************************
-             * SECTION: SECUREFOX                                                       *
-            ****************************************************************************/
-            /** TRACKING PROTECTION ***/
-            user_pref("browser.contentblocking.category", "strict");
-            user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
-            user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
-            user_pref("network.cookie.sameSite.noneRequiresSecure", true);
-            user_pref("browser.download.start_downloads_in_tmp_dir", true);
-            user_pref("browser.helperApps.deleteTempFileOnExit", true);
-            user_pref("browser.uitour.enabled", false);
-            user_pref("privacy.globalprivacycontrol.enabled", true);
-
-            /** OCSP & CERTS / HPKP ***/
-            user_pref("security.OCSP.enabled", 0);
-            user_pref("security.remote_settings.crlite_filters.enabled", true);
-            user_pref("security.pki.crlite_mode", 2);
-
-            /** SSL / TLS ***/
-            user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
-            user_pref("browser.xul.error_pages.expert_bad_cert", true);
-            user_pref("security.tls.enable_0rtt_data", false);
-
-            /** DISK AVOIDANCE ***/
-            user_pref("browser.privatebrowsing.forceMediaMemoryCache", true);
-            user_pref("browser.sessionstore.interval", 60000);
-
-            /** SHUTDOWN & SANITIZING ***/
-            /** L **/
-            user_pref("privacy.history.custom", true);
-
-            /** SEARCH / URL BAR ***/
-            user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
-            user_pref("browser.urlbar.update2.engineAliasRefresh", true);
-            user_pref("browser.search.suggest.enabled", false);
-            user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
-            user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
-            user_pref("browser.formfill.enable", false);
-            user_pref("security.insecure_connection_text.enabled", true);
-            user_pref("security.insecure_connection_text.pbmode.enabled", true);
-            user_pref("network.IDN_show_punycode", true);
-
-            /** HTTPS-FIRST POLICY ***/
-            user_pref("dom.security.https_first", true);
-            user_pref("dom.security.https_first_schemeless", true);
-
-            /** PASSWORDS ***/
-            user_pref("signon.formlessCapture.enabled", false);
-            user_pref("signon.privateBrowsingCapture.enabled", false);
-            user_pref("network.auth.subresource-http-auth-allow", 1);
-            user_pref("editor.truncate_user_pastes", false);
-
-            /** MIXED CONTENT + CROSS-SITE ***/
-            user_pref("security.mixed_content.block_display_content", true);
-            user_pref("security.mixed_content.upgrade_display_content", true);
-            user_pref("security.mixed_content.upgrade_display_content.image", true);
-            user_pref("pdfjs.enableScripting", false);
-            user_pref("extensions.postDownloadThirdPartyPrompt", false);
-
-            /** HEADERS / REFERERS ***/
-            user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
-
-            /** CONTAINERS ***/
-            user_pref("privacy.userContext.ui.enabled", true);
-
-            /** WEBRTC ***/
-            user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
-            user_pref("media.peerconnection.ice.default_address_only", true);
-
-            /** SAFE BROWSING ***/
-            user_pref("browser.safebrowsing.downloads.remote.enabled", false);
-
-            /** MOZILLA ***/
-            user_pref("permissions.default.desktop-notification", 2);
-            user_pref("permissions.default.geo", 2);
-            user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
-            user_pref("permissions.manager.defaultsUrl", "");
-            user_pref("webchannel.allowObject.urlWhitelist", "");
-
-            /** TELEMETRY ***/
-            user_pref("datareporting.policy.dataSubmissionEnabled", false);
-            user_pref("datareporting.healthreport.uploadEnabled", false);
-            user_pref("toolkit.telemetry.unified", false);
-            user_pref("toolkit.telemetry.enabled", false);
-            user_pref("toolkit.telemetry.server", "data:,");
-            user_pref("toolkit.telemetry.archive.enabled", false);
-            user_pref("toolkit.telemetry.newProfilePing.enabled", false);
-            user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
-            user_pref("toolkit.telemetry.updatePing.enabled", false);
-            user_pref("toolkit.telemetry.bhrPing.enabled", false);
-            user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
-            user_pref("toolkit.telemetry.coverage.opt-out", true);
-            user_pref("toolkit.coverage.opt-out", true);
-            user_pref("toolkit.coverage.endpoint.base", "");
-            user_pref("browser.ping-centre.telemetry", false);
-            user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
-            user_pref("browser.newtabpage.activity-stream.telemetry", false);
-
-            /** EXPERIMENTS ***/
-            user_pref("app.shield.optoutstudies.enabled", false);
-            user_pref("app.normandy.enabled", false);
-            user_pref("app.normandy.api_url", "");
-
-            /** CRASH REPORTS ***/
-            user_pref("breakpad.reportURL", "");
-            user_pref("browser.tabs.crashReporting.sendReport", false);
-            user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
-
-            /** DETECTION ***/
-            user_pref("captivedetect.canonicalURL", "");
-            user_pref("network.captive-portal-service.enabled", false);
-            user_pref("network.connectivity-service.enabled", false);
-
-            /****************************************************************************
-             * SECTION: PESKYFOX                                                        *
-            ****************************************************************************/
-            /** MOZILLA UI ***/
-            /** format on save please? **/
-            user_pref("browser.privatebrowsing.vpnpromourl", "");
-            user_pref("extensions.getAddons.showPane", false);
-            user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
-            user_pref("browser.discovery.enabled", false);
-            user_pref("browser.shell.checkDefaultBrowser", false);
-            user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
-            user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
-            user_pref("browser.preferences.moreFromMozilla", false);
-            user_pref("browser.tabs.tabmanager.enabled", false);
-            user_pref("browser.aboutConfig.showWarning", false);
-            user_pref("browser.aboutwelcome.enabled", false);
-
-            /** THEME ADJUSTMENTS ***/
-            user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
-            user_pref("browser.compactmode.show", true);
-            user_pref("browser.display.focus_ring_on_anything", true);
-            user_pref("browser.display.focus_ring_style", 0);
-            user_pref("browser.display.focus_ring_width", 0);
-            user_pref("layout.css.prefers-color-scheme.content-override", 2);
-            user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
-
-            /** COOKIE BANNER HANDLING ***/
-            user_pref("cookiebanners.service.mode", 1);
-            user_pref("cookiebanners.service.mode.privateBrowsing", 1);
-
-            /** FULLSCREEN NOTICE ***/
-            user_pref("full-screen-api.transition-duration.enter", "0 0");
-            user_pref("full-screen-api.transition-duration.leave", "0 0");
-            user_pref("full-screen-api.warning.delay", -1);
-            user_pref("full-screen-api.warning.timeout", 0);
-
-            /** URL BAR ***/
-            user_pref("browser.urlbar.suggest.calculator", true);
-            user_pref("browser.urlbar.unitConversion.enabled", true);
-            user_pref("browser.urlbar.trending.featureGate", false);
-
-            /** NEW TAB PAGE ***/
-            user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
-            user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
-
-            /** POCKET ***/
-            user_pref("extensions.pocket.enabled", false);
-
-            /** DOWNLOADS ***/
-            user_pref("browser.download.always_ask_before_handling_new_types", true);
-            user_pref("browser.download.manager.addToRecentDocs", false);
-
-            /** PDF ***/
-            user_pref("browser.download.open_pdf_attachments_inline", true);
-
-            /** TAB BEHAVIOR ***/
-            user_pref("browser.bookmarks.openInTabClosesMenu", false);
-            user_pref("browser.menu.showViewImageInfo", true);
-            user_pref("findbar.highlightAll", true);
-            user_pref("layout.word_select.eat_space_to_next_word", false);
-          '';
-        };
+
+      programs.kitty = {
+       enable = true;
+       settings = {
+         enable_audio_bell = false;
+         font_family = "Fira Code";
+         font_size = 12;
+         confirm_os_window_close = -1;
+         background_opacity = "0.9";
+       };
+       extraConfig = ''
+         # The basic colors
+         foreground              #CDD6F4
+         background              #1E1E2E
+         selection_foreground    #1E1E2E
+         selection_background    #F5E0DC
+
+         # Cursor colors
+         cursor                  #F5E0DC
+         cursor_text_color       #1E1E2E
+
+         # URL underline color when hovering with mouse
+         url_color               #F5E0DC
+
+         # Kitty window border colors
+         active_border_color     #B4BEFE
+         inactive_border_color   #6C7086
+         bell_border_color       #F9E2AF
+
+         # OS Window titlebar colors
+         wayland_titlebar_color  #1E1E2E
+         macos_titlebar_color    #1E1E2E
+
+         # Tab bar colors
+         active_tab_foreground   #11111B
+         active_tab_background   #CBA6F7
+         inactive_tab_foreground #CDD6F4
+         inactive_tab_background #181825
+         tab_bar_background      #11111B
+
+         # Colors for marks (marked text in the terminal)
+         mark1_foreground #1E1E2E
+         mark1_background #B4BEFE
+         mark2_foreground #1E1E2E
+         mark2_background #CBA6F7
+         mark3_foreground #1E1E2E
+         mark3_background #74C7EC
+
+         # The 16 terminal colors
+
+         # black
+         color0 #45475A
+         color8 #585B70
+
+         # red
+         color1 #F38BA8
+         color9 #F38BA8
+
+         # green
+         color2  #A6E3A1
+         color10 #A6E3A1
+
+         # yellow
+         color3  #F9E2AF
+         color11 #F9E2AF
+
+         # blue
+         color4  #89B4FA
+         color12 #89B4FA
+
+         # magenta
+         color5  #F5C2E7
+         color13 #F5C2E7
+
+         # cyan
+         color6  #94E2D5
+         color14 #94E2D5
+
+         # white
+         color7  #BAC2DE
+         color15 #A6ADC8
+       '';
       };
-    };
-    programs.waybar = {
-      enable = true;
-      style = ''
-        * {
-            border: none;
-            border-radius: 0px;
-            /*font-family: Fira Code, Iosevka Nerd Font, Noto Sans CJK;*/
-            font-family: Iosevka, FontAwesome, Noto Sans CJK;
-            font-size: 14px;
-            font-style: normal;
-            min-height: 0;
-        }
-
-        window#waybar {
-            background: rgba(30, 30, 46, 0.5);
-            border-bottom: 1px solid #45475a;
-            color: #cdd6f4;
-        }
-
-        #workspaces {
-          background: #45475a;
-          margin: 5px 5px 5px 5px;
-          padding: 0px 5px 0px 5px;
-          border-radius: 16px;
-          border: solid 0px #f4d9e1;
-          font-weight: normal;
-          font-style: normal;
-        }
-        #workspaces button {
-            padding: 0px 5px;
-            border-radius: 16px;
-            color: #a6adc8;
-        }
-
-        #workspaces button.active {
-            color: #f4d9e1;
-            background-color: transparent;
-            border-radius: 16px;
-        }
-
-        #workspaces button:hover {
-               background-color: #cdd6f4;
-               color: black;
-               border-radius: 16px;
-        }
-
-        #custom-date, #clock, #battery, #pulseaudio, #network, #custom-randwall, #custom-launcher {
-               background: transparent;
-               padding: 5px 5px 5px 5px;
-               margin: 5px 5px 5px 5px;
-          border-radius: 8px;
-          border: solid 0px #f4d9e1;
-        }
-
-        #custom-date {
-               color: #D3869B;
-        }
-
-        #custom-power {
-               color: #24283b;
-               background-color: #db4b4b;
-               border-radius: 5px;
-               margin-right: 10px;
-               margin-top: 5px;
-               margin-bottom: 5px;
-               margin-left: 0px;
-               padding: 5px 10px;
-        }
-
-        #tray {
-            background: #45475a;
-            margin: 5px 5px 5px 5px;
-            border-radius: 16px;
-            padding: 0px 5px;
-            /*border-right: solid 1px #282738;*/
-        }
-
-        #clock {
-            color: #cdd6f4;
-            background-color: #45475a;
-            border-radius: 0px 0px 0px 24px;
-            padding-left: 13px;
-            padding-right: 15px;
-            margin-right: 0px;
-            margin-left: 10px;
-            margin-top: 0px;
-            margin-bottom: 0px;
-            font-weight: bold;
-            /*border-left: solid 1px #282738;*/
-        }
-
-        #battery {
-            color: #89b4fa;
-        }
-
-        #battery.charging {
-            color: #a6e3a1;
-        }
-
-        #battery.warning:not(.charging) {
-            background-color: #f7768e;
-            color: #f38ba8;
-            border-radius: 5px 5px 5px 5px;
-        }
-
-        #backlight {
-            background-color: #24283b;
-            color: #db4b4b;
-            border-radius: 0px 0px 0px 0px;
-            margin: 5px;
-            margin-left: 0px;
-            margin-right: 0px;
-            padding: 0px 0px;
-        }
-
-        #network {
-            color: #f4d9e1;
-            border-radius: 8px;
-            margin-right: 5px;
-        }
-
-        #pulseaudio {
-            color: #f4d9e1;
-            border-radius: 8px;
-            margin-left: 0px;
-        }
-
-        #pulseaudio.muted {
-            background: transparent;
-            color: #928374;
-            border-radius: 8px;
-            margin-left: 0px;
-        }
-
-        #custom-randwall {
-            color: #f4d9e1;
-            border-radius: 8px;
-            margin-right: 0px;
-        }
-
-        #custom-launcher {
-            color: #e5809e;
-            background-color: #45475a;
-            border-radius: 0px 24px 0px 0px;
-            margin: 0px 0px 0px 0px;
-            padding: 0 20px 0 13px;
-            /*border-right: solid 1px #282738;*/
-            font-size: 20px;
-        }
-
-        #custom-launcher button:hover {
-            background-color: #FB4934;
-            color: transparent;
-            border-radius: 8px;
-            margin-right: -5px;
-            margin-left: 10px;
-        }
-
-        #custom-playerctl {
-               background: #45475a;
-               padding-left: 15px;
-          padding-right: 14px;
-               border-radius: 16px;
-          /*border-left: solid 1px #282738;*/
-          /*border-right: solid 1px #282738;*/
-          margin-top: 5px;
-          margin-bottom: 5px;
-          margin-left: 0px;
-          font-weight: normal;
-          font-style: normal;
-          font-size: 16px;
-        }
-
-        #custom-playerlabel {
-            background: transparent;
-            padding-left: 10px;
-            padding-right: 15px;
-            border-radius: 16px;
-            /*border-left: solid 1px #282738;*/
-            /*border-right: solid 1px #282738;*/
-            margin-top: 5px;
-            margin-bottom: 5px;
-            font-weight: normal;
-            font-style: normal;
-        }
-
-        #window {
-            background: #45475a;
-            padding-left: 15px;
-            padding-right: 15px;
-            border-radius: 16px;
-            /*border-left: solid 1px #282738;*/
-            /*border-right: solid 1px #282738;*/
-            margin-top: 5px;
-            margin-bottom: 5px;
-            font-weight: normal;
-            font-style: normal;
-        }
-
-        #custom-wf-recorder {
-            padding: 0 20px;
-            color: #e5809e;
-            background-color: #1E1E2E;
-        }
-
-        #cpu {
-            background-color: #45475a;
-            /*color: #FABD2D;*/
-            border-radius: 16px;
-            margin: 5px;
-            margin-left: 5px;
-            margin-right: 5px;
-            padding: 0px 10px 0px 10px;
-            font-weight: bold;
-        }
-
-        #memory {
-            background-color: #45475a;
-            /*color: #83A598;*/
-            border-radius: 16px;
-            margin: 5px;
-            margin-left: 5px;
-            margin-right: 5px;
-            padding: 0px 10px 0px 10px;
-            font-weight: bold;
-        }
-
-        #disk {
-            background-color: #45475a;
-            /*color: #8EC07C;*/
-            border-radius: 16px;
-            margin: 5px;
-            margin-left: 5px;
-            margin-right: 5px;
-            padding: 0px 10px 0px 10px;
-            font-weight: bold;
-        }
-
-        #custom-hyprpicker {
-            background-color: #45475a;
-            /*color: #8EC07C;*/
-            border-radius: 16px;
-            margin: 5px;
-            margin-left: 5px;
-            margin-right: 5px;
-            padding: 0px 11px 0px 9px;
-            font-weight: bold;
-        }
-      '';
-      settings = {
-        mainBar = {
-          layer = "top";
-          position = "top";
-          height = 30;
-
-          output = [
-            "LVDS-1"
-          ];
-
-          modules-left = [ "hyprland/workspaces" ];
-          modules-center = [ "hyprland/window" ];
-          modules-right = [ "battery" "clock" ];
-
-          battery = {
-            bat = "BAT0";
-            format = "{capacity}% {icon}";
-            format-icons = [ "" "" "" "" "" ];
-          };
-
-          clock = {
-            format = "{:%a %d, %b %H:%M}";
-          };
-        };
+      programs.firefox = {
+       policies = {
+         EnableTrackingProtection = true;
+         OfferToSaveLogins = false;
+       };
+       enable = true;
+       profiles = {
+         default = {
+           id = 0;
+           name = "default";
+           isDefault = true;
+           extensions = with pkgs.nur.repos.rycee.firefox-addons; [
+             ublock-origin
+             tree-style-tab
+             firefox-color
+             vimium
+           ];
+           extraConfig = ''
+             //
+             /* You may copy+paste this file and use it as it is.
+              ,*
+              ,* If you make changes to your about:config while the program is running, the
+              ,* changes will be overwritten by the user.js when the application restarts.
+              ,*
+              ,* To make lasting changes to preferences, you will have to edit the user.js.
+              ,*/
+
+             /****************************************************************************
+              ,* Betterfox                                                                *
+              ,* "Ad meliora"                                                             *
+              ,* version: 122                                                             *
+              ,* url: https://github.com/yokoffing/Betterfox                              *
+             ,****************************************************************************/
+
+             /****************************************************************************
+              ,* SECTION: FASTFOX                                                         *
+             ,****************************************************************************/
+             /** GENERAL ***/
+             user_pref("content.notify.interval", 100000);
+
+             /** GFX ***/
+             user_pref("gfx.canvas.accelerated.cache-items", 4096);
+             user_pref("gfx.canvas.accelerated.cache-size", 512);
+             user_pref("gfx.content.skia-font-cache-size", 20);
+
+             /** DISK CACHE ***/
+             user_pref("browser.cache.jsbc_compression_level", 3);
+
+             /** MEDIA CACHE ***/
+             user_pref("media.memory_cache_max_size", 65536);
+             user_pref("media.cache_readahead_limit", 7200);
+             user_pref("media.cache_resume_threshold", 3600);
+
+             /** IMAGE CACHE ***/
+             user_pref("image.mem.decode_bytes_at_a_time", 32768);
+
+             /** NETWORK ***/
+             user_pref("network.buffer.cache.size", 262144);
+             user_pref("network.buffer.cache.count", 128);
+             user_pref("network.http.max-connections", 1800);
+             user_pref("network.http.max-persistent-connections-per-server", 10);
+             user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
+             user_pref("network.http.pacing.requests.enabled", false);
+             user_pref("network.dnsCacheExpiration", 3600);
+             user_pref("network.dns.max_high_priority_threads", 8);
+             user_pref("network.ssl_tokens_cache_capacity", 10240);
+
+             /** SPECULATIVE LOADING ***/
+             user_pref("network.dns.disablePrefetch", true);
+             user_pref("network.prefetch-next", false);
+             user_pref("network.predictor.enabled", false);
+
+             /** EXPERIMENTAL ***/
+             user_pref("layout.css.grid-template-masonry-value.enabled", true);
+             user_pref("dom.enable_web_task_scheduling", true);
+             user_pref("layout.css.has-selector.enabled", true);
+             user_pref("dom.security.sanitizer.enabled", true);
+
+             /****************************************************************************
+              ,* SECTION: SECUREFOX                                                       *
+             ,****************************************************************************/
+             /** TRACKING PROTECTION ***/
+             user_pref("browser.contentblocking.category", "strict");
+             user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
+             user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
+             user_pref("network.cookie.sameSite.noneRequiresSecure", true);
+             user_pref("browser.download.start_downloads_in_tmp_dir", true);
+             user_pref("browser.helperApps.deleteTempFileOnExit", true);
+             user_pref("browser.uitour.enabled", false);
+             user_pref("privacy.globalprivacycontrol.enabled", true);
+
+             /** OCSP & CERTS / HPKP ***/
+             user_pref("security.OCSP.enabled", 0);
+             user_pref("security.remote_settings.crlite_filters.enabled", true);
+             user_pref("security.pki.crlite_mode", 2);
+
+             /** SSL / TLS ***/
+             user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
+             user_pref("browser.xul.error_pages.expert_bad_cert", true);
+             user_pref("security.tls.enable_0rtt_data", false);
+
+             /** DISK AVOIDANCE ***/
+             user_pref("browser.privatebrowsing.forceMediaMemoryCache", true);
+             user_pref("browser.sessionstore.interval", 60000);
+
+             /** SHUTDOWN & SANITIZING ***/
+             /** L **/
+             user_pref("privacy.history.custom", true);
+
+             /** SEARCH / URL BAR ***/
+             user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
+             user_pref("browser.urlbar.update2.engineAliasRefresh", true);
+             user_pref("browser.search.suggest.enabled", false);
+             user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
+             user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
+             user_pref("browser.formfill.enable", false);
+             user_pref("security.insecure_connection_text.enabled", true);
+             user_pref("security.insecure_connection_text.pbmode.enabled", true);
+             user_pref("network.IDN_show_punycode", true);
+
+             /** HTTPS-FIRST POLICY ***/
+             user_pref("dom.security.https_first", true);
+             user_pref("dom.security.https_first_schemeless", true);
+
+             /** PASSWORDS ***/
+             user_pref("signon.formlessCapture.enabled", false);
+             user_pref("signon.privateBrowsingCapture.enabled", false);
+             user_pref("network.auth.subresource-http-auth-allow", 1);
+             user_pref("editor.truncate_user_pastes", false);
+
+             /** MIXED CONTENT + CROSS-SITE ***/
+             user_pref("security.mixed_content.block_display_content", true);
+             user_pref("security.mixed_content.upgrade_display_content", true);
+             user_pref("security.mixed_content.upgrade_display_content.image", true);
+             user_pref("pdfjs.enableScripting", false);
+             user_pref("extensions.postDownloadThirdPartyPrompt", false);
+
+             /** HEADERS / REFERERS ***/
+             user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
+
+             /** CONTAINERS ***/
+             user_pref("privacy.userContext.ui.enabled", true);
+
+             /** WEBRTC ***/
+             user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
+             user_pref("media.peerconnection.ice.default_address_only", true);
+
+             /** SAFE BROWSING ***/
+             user_pref("browser.safebrowsing.downloads.remote.enabled", false);
+
+             /** MOZILLA ***/
+             user_pref("permissions.default.desktop-notification", 2);
+             user_pref("permissions.default.geo", 2);
+             user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
+             user_pref("permissions.manager.defaultsUrl", "");
+             user_pref("webchannel.allowObject.urlWhitelist", "");
+
+             /** TELEMETRY ***/
+             user_pref("datareporting.policy.dataSubmissionEnabled", false);
+             user_pref("datareporting.healthreport.uploadEnabled", false);
+             user_pref("toolkit.telemetry.unified", false);
+             user_pref("toolkit.telemetry.enabled", false);
+             user_pref("toolkit.telemetry.server", "data:,");
+             user_pref("toolkit.telemetry.archive.enabled", false);
+             user_pref("toolkit.telemetry.newProfilePing.enabled", false);
+             user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
+             user_pref("toolkit.telemetry.updatePing.enabled", false);
+             user_pref("toolkit.telemetry.bhrPing.enabled", false);
+             user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
+             user_pref("toolkit.telemetry.coverage.opt-out", true);
+             user_pref("toolkit.coverage.opt-out", true);
+             user_pref("toolkit.coverage.endpoint.base", "");
+             user_pref("browser.ping-centre.telemetry", false);
+             user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+             user_pref("browser.newtabpage.activity-stream.telemetry", false);
+
+             /** EXPERIMENTS ***/
+             user_pref("app.shield.optoutstudies.enabled", false);
+             user_pref("app.normandy.enabled", false);
+             user_pref("app.normandy.api_url", "");
+
+             /** CRASH REPORTS ***/
+             user_pref("breakpad.reportURL", "");
+             user_pref("browser.tabs.crashReporting.sendReport", false);
+             user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
+
+             /** DETECTION ***/
+             user_pref("captivedetect.canonicalURL", "");
+             user_pref("network.captive-portal-service.enabled", false);
+             user_pref("network.connectivity-service.enabled", false);
+
+             /****************************************************************************
+              ,* SECTION: PESKYFOX                                                        *
+             ,****************************************************************************/
+             /** MOZILLA UI ***/
+             /** format on save please? **/
+             user_pref("browser.privatebrowsing.vpnpromourl", "");
+             user_pref("extensions.getAddons.showPane", false);
+             user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
+             user_pref("browser.discovery.enabled", false);
+             user_pref("browser.shell.checkDefaultBrowser", false);
+             user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+             user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+             user_pref("browser.preferences.moreFromMozilla", false);
+             user_pref("browser.tabs.tabmanager.enabled", false);
+             user_pref("browser.aboutConfig.showWarning", false);
+             user_pref("browser.aboutwelcome.enabled", false);
+
+             /** THEME ADJUSTMENTS ***/
+             user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+             user_pref("browser.compactmode.show", true);
+             user_pref("browser.display.focus_ring_on_anything", true);
+             user_pref("browser.display.focus_ring_style", 0);
+             user_pref("browser.display.focus_ring_width", 0);
+             user_pref("layout.css.prefers-color-scheme.content-override", 2);
+             user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
+
+             /** COOKIE BANNER HANDLING ***/
+             user_pref("cookiebanners.service.mode", 1);
+             user_pref("cookiebanners.service.mode.privateBrowsing", 1);
+
+             /** FULLSCREEN NOTICE ***/
+             user_pref("full-screen-api.transition-duration.enter", "0 0");
+             user_pref("full-screen-api.transition-duration.leave", "0 0");
+             user_pref("full-screen-api.warning.delay", -1);
+             user_pref("full-screen-api.warning.timeout", 0);
+
+             /** URL BAR ***/
+             user_pref("browser.urlbar.suggest.calculator", true);
+             user_pref("browser.urlbar.unitConversion.enabled", true);
+             user_pref("browser.urlbar.trending.featureGate", false);
+
+             /** NEW TAB PAGE ***/
+             user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
+             user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
+
+             /** POCKET ***/
+             user_pref("extensions.pocket.enabled", false);
+
+             /** DOWNLOADS ***/
+             user_pref("browser.download.always_ask_before_handling_new_types", true);
+             user_pref("browser.download.manager.addToRecentDocs", false);
+
+             /** PDF ***/
+             user_pref("browser.download.open_pdf_attachments_inline", true);
+
+             /** TAB BEHAVIOR ***/
+             user_pref("browser.bookmarks.openInTabClosesMenu", false);
+             user_pref("browser.menu.showViewImageInfo", true);
+             user_pref("findbar.highlightAll", true);
+             user_pref("layout.word_select.eat_space_to_next_word", false);
+           '';
+         };
+       };
+      };
+      programs.waybar = {
+       enable = true;
+       style = ''
+         ,* {
+             border: none;
+             border-radius: 0px;
+             /*font-family: Fira Code, Iosevka Nerd Font, Noto Sans CJK;*/
+             font-family: Iosevka, FontAwesome, Noto Sans CJK;
+             font-size: 14px;
+             font-style: normal;
+             min-height: 0;
+         }
+
+         window#waybar {
+             background: rgba(30, 30, 46, 0.5);
+             border-bottom: 1px solid #45475a;
+             color: #cdd6f4;
+         }
+
+         #workspaces {
+           background: #45475a;
+           margin: 5px 5px 5px 5px;
+           padding: 0px 5px 0px 5px;
+           border-radius: 16px;
+           border: solid 0px #f4d9e1;
+           font-weight: normal;
+           font-style: normal;
+         }
+         #workspaces button {
+             padding: 0px 5px;
+             border-radius: 16px;
+             color: #a6adc8;
+         }
+
+         #workspaces button.active {
+             color: #f4d9e1;
+             background-color: transparent;
+             border-radius: 16px;
+         }
+
+         #workspaces button:hover {
+                 background-color: #cdd6f4;
+                 color: black;
+                 border-radius: 16px;
+         }
+
+         #custom-date, #clock, #battery, #pulseaudio, #network, #custom-randwall, #custom-launcher {
+                 background: transparent;
+                 padding: 5px 5px 5px 5px;
+                 margin: 5px 5px 5px 5px;
+           border-radius: 8px;
+           border: solid 0px #f4d9e1;
+         }
+
+         #custom-date {
+                 color: #D3869B;
+         }
+
+         #custom-power {
+                 color: #24283b;
+                 background-color: #db4b4b;
+                 border-radius: 5px;
+                 margin-right: 10px;
+                 margin-top: 5px;
+                 margin-bottom: 5px;
+                 margin-left: 0px;
+                 padding: 5px 10px;
+         }
+
+         #tray {
+             background: #45475a;
+             margin: 5px 5px 5px 5px;
+             border-radius: 16px;
+             padding: 0px 5px;
+             /*border-right: solid 1px #282738;*/
+         }
+
+         #clock {
+             color: #cdd6f4;
+             background-color: #45475a;
+             border-radius: 0px 0px 0px 24px;
+             padding-left: 13px;
+             padding-right: 15px;
+             margin-right: 0px;
+             margin-left: 10px;
+             margin-top: 0px;
+             margin-bottom: 0px;
+             font-weight: bold;
+             /*border-left: solid 1px #282738;*/
+         }
+
+         #battery {
+             color: #89b4fa;
+         }
+
+         #battery.charging {
+             color: #a6e3a1;
+         }
+
+         #battery.warning:not(.charging) {
+             background-color: #f7768e;
+             color: #f38ba8;
+             border-radius: 5px 5px 5px 5px;
+         }
+
+         #backlight {
+             background-color: #24283b;
+             color: #db4b4b;
+             border-radius: 0px 0px 0px 0px;
+             margin: 5px;
+             margin-left: 0px;
+             margin-right: 0px;
+             padding: 0px 0px;
+         }
+
+         #network {
+             color: #f4d9e1;
+             border-radius: 8px;
+             margin-right: 5px;
+         }
+
+         #pulseaudio {
+             color: #f4d9e1;
+             border-radius: 8px;
+             margin-left: 0px;
+         }
+
+         #pulseaudio.muted {
+             background: transparent;
+             color: #928374;
+             border-radius: 8px;
+             margin-left: 0px;
+         }
+
+         #custom-randwall {
+             color: #f4d9e1;
+             border-radius: 8px;
+             margin-right: 0px;
+         }
+
+         #custom-launcher {
+             color: #e5809e;
+             background-color: #45475a;
+             border-radius: 0px 24px 0px 0px;
+             margin: 0px 0px 0px 0px;
+             padding: 0 20px 0 13px;
+             /*border-right: solid 1px #282738;*/
+             font-size: 20px;
+         }
+
+         #custom-launcher button:hover {
+             background-color: #FB4934;
+             color: transparent;
+             border-radius: 8px;
+             margin-right: -5px;
+             margin-left: 10px;
+         }
+
+         #custom-playerctl {
+                 background: #45475a;
+                 padding-left: 15px;
+           padding-right: 14px;
+                 border-radius: 16px;
+           /*border-left: solid 1px #282738;*/
+           /*border-right: solid 1px #282738;*/
+           margin-top: 5px;
+           margin-bottom: 5px;
+           margin-left: 0px;
+           font-weight: normal;
+           font-style: normal;
+           font-size: 16px;
+         }
+
+         #custom-playerlabel {
+             background: transparent;
+             padding-left: 10px;
+             padding-right: 15px;
+             border-radius: 16px;
+             /*border-left: solid 1px #282738;*/
+             /*border-right: solid 1px #282738;*/
+             margin-top: 5px;
+             margin-bottom: 5px;
+             font-weight: normal;
+             font-style: normal;
+         }
+
+         #window {
+             background: #45475a;
+             padding-left: 15px;
+             padding-right: 15px;
+             border-radius: 16px;
+             /*border-left: solid 1px #282738;*/
+             /*border-right: solid 1px #282738;*/
+             margin-top: 5px;
+             margin-bottom: 5px;
+             font-weight: normal;
+             font-style: normal;
+         }
+
+         #custom-wf-recorder {
+             padding: 0 20px;
+             color: #e5809e;
+             background-color: #1E1E2E;
+         }
+
+         #cpu {
+             background-color: #45475a;
+             /*color: #FABD2D;*/
+             border-radius: 16px;
+             margin: 5px;
+             margin-left: 5px;
+             margin-right: 5px;
+             padding: 0px 10px 0px 10px;
+             font-weight: bold;
+         }
+
+         #memory {
+             background-color: #45475a;
+             /*color: #83A598;*/
+             border-radius: 16px;
+             margin: 5px;
+             margin-left: 5px;
+             margin-right: 5px;
+             padding: 0px 10px 0px 10px;
+             font-weight: bold;
+         }
+
+         #disk {
+             background-color: #45475a;
+             /*color: #8EC07C;*/
+             border-radius: 16px;
+             margin: 5px;
+             margin-left: 5px;
+             margin-right: 5px;
+             padding: 0px 10px 0px 10px;
+             font-weight: bold;
+         }
+
+         #custom-hyprpicker {
+             background-color: #45475a;
+             /*color: #8EC07C;*/
+             border-radius: 16px;
+             margin: 5px;
+             margin-left: 5px;
+             margin-right: 5px;
+             padding: 0px 11px 0px 9px;
+             font-weight: bold;
+         }
+       '';
+       settings = {
+         mainBar = {
+           layer = "top";
+           position = "top";
+           height = 30;
+
+           output = [
+             "LVDS-1"
+           ];
+
+           modules-left = [ "hyprland/workspaces" ];
+           modules-center = [ "hyprland/window" ];
+           modules-right = [ "battery" "clock" ];
+
+           battery = {
+             bat = "BAT0";
+             format = "{capacity}% {icon}";
+             format-icons = [ "" "" "" "" "" ];
+           };
+
+           clock = {
+             format = "{:%a %d, %b %H:%M}";
+           };
+         };
+       };
       };
-    };
 
-    programs.zsh = {
-      enable = true;
-      initExtra = ''
-        source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
-      '';
-      shellAliases = {
-        c = "clear";
-        g = "git";
-        v = "vim";
-        h = "Hyprland";
+      programs.zsh = {
+       enable = true;
+       initExtra = ''
+         source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
+       '';
+       shellAliases = {
+         c = "clear";
+         g = "git";
+         v = "vim";
+         h = "Hyprland";
+       };
       };
-    };
 
-    programs.emacs = {
-      enable = true;
-      package = pkgs.emacs29-pgtk;
-      extraConfig = ''
-        (setq debug-on-error t)
-        (org-babel-load-file
-          (expand-file-name "~/org/website/config/emacs.org"))'';
-      extraPackages = epkgs: [
-        epkgs.nix-mode
-        epkgs.emms
-        epkgs.magit
-        epkgs.vterm
-        epkgs.auctex
-        epkgs.use-package
-        epkgs.evil
-        epkgs.evil-collection
-        epkgs.org-roam
-        epkgs.org-journal
-        epkgs.general
-        epkgs.which-key
-        epkgs.gruvbox-theme
-        epkgs.elfeed
-        epkgs.elfeed-org
-        epkgs.doom-modeline
-        epkgs.dashboard
-        epkgs.org-superstar
-        epkgs.projectile
-        epkgs.lsp-mode
-        epkgs.ivy
-        epkgs.lsp-ivy
-        epkgs.all-the-icons
-        epkgs.page-break-lines
-        epkgs.counsel
-        epkgs.mu4e
-        epkgs.yasnippet
-        epkgs.company
-        epkgs.pinentry
-        epkgs.pdf-tools
-        epkgs.circe
-        epkgs.ivy-pass
-        epkgs.magit-delta
-        epkgs.sudo-edit
-        epkgs.evil-commentary
-        epkgs.evil-org
-        epkgs.catppuccin-theme
-        epkgs.htmlize
-        epkgs.web-mode
-        epkgs.emmet-mode
-        epkgs.ement
-        epkgs.rustic
-        epkgs.chatgpt-shell
+      programs.emacs = {
+       enable = true;
+       package = pkgs.emacs29-pgtk;
+       extraConfig = ''
+         (setq debug-on-error t)
+         (org-babel-load-file
+           (expand-file-name "~/org/website/config/emacs.org"))'';
+       extraPackages = epkgs: [
+         epkgs.nix-mode
+         epkgs.emms
+         epkgs.magit
+         epkgs.vterm
+         epkgs.auctex
+         epkgs.use-package
+         epkgs.evil
+         epkgs.evil-collection
+         epkgs.org-roam
+         epkgs.org-journal
+         epkgs.general
+         epkgs.which-key
+         epkgs.gruvbox-theme
+         epkgs.elfeed
+         epkgs.elfeed-org
+         epkgs.doom-modeline
+         epkgs.dashboard
+         epkgs.org-superstar
+         epkgs.projectile
+         epkgs.lsp-mode
+         epkgs.ivy
+         epkgs.lsp-ivy
+         epkgs.all-the-icons
+         epkgs.page-break-lines
+         epkgs.counsel
+         epkgs.mu4e
+         epkgs.yasnippet
+         epkgs.company
+         epkgs.pinentry
+         epkgs.pdf-tools
+         epkgs.circe
+         epkgs.ivy-pass
+         epkgs.magit-delta
+         epkgs.sudo-edit
+         epkgs.evil-commentary
+         epkgs.evil-org
+         epkgs.catppuccin-theme
+         epkgs.htmlize
+         epkgs.web-mode
+         epkgs.emmet-mode
+         epkgs.ement
+         epkgs.rustic
+         epkgs.chatgpt-shell
+
+       ];
+      };
 
-      ];
-    };
+      programs.mbsync = {
+       enable = true;
+       extraConfig = ''
+         IMAPAccount prestonpan
+         Host mail.nullring.xyz
+         User preston
+         PassCmd "pass Mail"
+         Port 993
+         SSLType IMAPS
+         AuthMechs *
+         CertificateFile /etc/ssl/certs/ca-certificates.crt
+
+         IMAPStore prestonpan-remote
+         Account prestonpan
+
+         MaildirStore prestonpan-local
+         Path ~/email/mbsyncmail/
+         Inbox ~/email/mbsyncmail/INBOX
+         SubFolders Verbatim
+
+         Channel prestonpan
+         Far :prestonpan-remote:
+         Near :prestonpan-local:
+         Patterns *
+         Create Near
+         Sync All
+         Expunge None
+         SyncState *
+       '';
+      };
 
-    programs.mbsync = {
-      enable = true;
-      extraConfig = ''
-        IMAPAccount prestonpan
-        Host mail.nullring.xyz
-        User preston
-        PassCmd "pass Mail"
-        Port 993
-        SSLType IMAPS
-        AuthMechs *
-        CertificateFile /etc/ssl/certs/ca-certificates.crt
-
-        IMAPStore prestonpan-remote
-        Account prestonpan
-
-        MaildirStore prestonpan-local
-        Path ~/email/mbsyncmail/
-        Inbox ~/email/mbsyncmail/INBOX
-        SubFolders Verbatim
-
-        Channel prestonpan
-        Far :prestonpan-remote:
-        Near :prestonpan-local:
-        Patterns *
-        Create Near
-        Sync All
-        Expunge None
-        SyncState *
-      '';
-    };
+      programs.msmtp = {
+       enable = true;
+       extraConfig = ''
+         # Set default values for all following accounts.
+         defaults
+         auth           on
+         tls            on
+         tls_trust_file /etc/ssl/certs/ca-certificates.crt
+         logfile        ~/.msmtp.log
+
+         # Gmail
+         account        preston
+         host           mail.nullring.xyz
+         port           587
+         from           preston@nullring.xyz
+         user           preston
+         passwordeval   "pass Mail"
+
+
+         # Set a default account
+         account default : preston
+       '';
+      };
 
-    programs.msmtp = {
-      enable = true;
-      extraConfig = ''
-        # Set default values for all following accounts.
-        defaults
-        auth           on
-        tls            on
-        tls_trust_file /etc/ssl/certs/ca-certificates.crt
-        logfile        ~/.msmtp.log
-
-        # Gmail
-        account        preston
-        host           mail.nullring.xyz
-        port           587
-        from           preston@nullring.xyz
-        user           preston
-        passwordeval   "pass Mail"
-
-
-        # Set a default account
-        account default : preston
-      '';
-    };
+      programs.bash = {
+       enable = true;
+      };
 
-    programs.bash = {
-      enable = true;
-    };
+      programs.qutebrowser = {
+       enable = true;
+       searchEngines = {
+         w = "https://en.wikipedia.org/wiki/Special:Search?search={}&amp;go=Go&amp;ns0=1";
+         aw = "https://wiki.archlinux.org/?search={}";
+         nw = "https://nixos.wiki/index.php?search={}";
+         g = "https://www.google.com/search?hl=en&amp;q={}";
+         DEFAULT = "https://www.google.com/search?hl=en&amp;q={}";
+       };
+       settings = { };
+       extraConfig = ''
+         import os
+         from urllib.request import urlopen
+
+         if not os.path.exists(config.configdir / "theme.py"):
+             theme = "https://raw.githubusercontent.com/catppuccin/qutebrowser/main/setup.py"
+             with urlopen(theme) as themehtml:
+                 with open(config.configdir / "theme.py", "a") as file:
+                     file.writelines(themehtml.read().decode("utf-8"))
+
+         if os.path.exists(config.configdir / "theme.py"):
+             import theme
+             theme.setup(c, 'mocha', True)
+       '';
+      };
+      programs.git = {
+       enable = true;
+       userName = "Preston Pan";
+       userEmail = "preston@nullring.xyz";
+       signing.key = "2B749D1FB976E81613858E490290504780B30E20";
+       aliases = {
+         co = "checkout";
+         c = "commit";
+         a = "add";
+         s = "switch";
+         b = "branch";
+       };
+      };
 
-    programs.qutebrowser = {
-      enable = true;
-      searchEngines = {
-        w = "https://en.wikipedia.org/wiki/Special:Search?search={}&amp;go=Go&amp;ns0=1";
-        aw = "https://wiki.archlinux.org/?search={}";
-        nw = "https://nixos.wiki/index.php?search={}";
-        g = "https://www.google.com/search?hl=en&amp;q={}";
-        DEFAULT = "https://www.google.com/search?hl=en&amp;q={}";
+      wayland.windowManager.hyprland = {
+       enable = true;
+       package = pkgs.hyprland;
+       xwayland.enable = true;
+       systemd.enable = true;
+       settings = {
+         "$mod" = "SUPER";
+
+         exec-once = [
+           "waybar"
+           "swww init"
+           "swww img /home/preston/wallpapers/bigrobot.png"
+         ];
+         blurls = [
+           "waybar"
+         ];
+         bind = [
+           "$mod, F, exec, firefox"
+           "$mod, Return, exec, kitty"
+           "$mod, E, exec, emacs"
+           "$mod, v, exec, vencorddesktop"
+           "$mod, d, exec, wofi --show run"
+           ", Print, exec, grimblast copy area"
+           "$mod, Q, killactive"
+           "$mod SHIFT, H, movewindow, l"
+           "$mod SHIFT, L, movewindow, r"
+           "$mod SHIFT, K, movewindow, u"
+           "$mod SHIFT, J, movewindow, d"
+           "$mod, H, movefocus, l"
+           "$mod, L, movefocus, r"
+           "$mod, K, movefocus, u"
+           "$mod, J, movefocus, d"
+         ]
+         ++ (
+           builtins.concatLists (builtins.genList
+             (
+               x:
+               let
+                 ws =
+                   let
+                     c = (x + 1) / 10;
+                   in
+                   builtins.toString (x + 1 - (c * 10));
+               in
+               [
+                 "$mod, ${ws}, workspace, ${toString (x + 1)}"
+                 "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
+               ]
+             )
+             10)
+         );
+         decoration = {
+           blur = {
+             enabled = true;
+             size = 5;
+             passes = 2;
+           };
+           rounding = 5;
+           shadow_offset = "0 5";
+           "col.shadow" = "rgba(00000099)";
+         };
+         input = {
+           kb_options = "caps:swapescape";
+           repeat_delay = 300;
+           repeat_rate = 50;
+         };
+         bindm = [
+           "$mod, mouse:272, movewindow"
+           "$mod, mouse:273, resizewindow"
+           "$mod ALT, mouse:272, resizewindow"
+         ];
+         binde = [
+           ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
+           ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-"
+           ", XF86AudioPlay, exec, mpc toggle"
+           ", XF86AudioNext, exec, mpc next"
+           ", XF86AudioPrev, exec, mpc prev"
+         ];
+       };
       };
-      settings = { };
-      extraConfig = ''
-        import os
-        from urllib.request import urlopen
-
-        if not os.path.exists(config.configdir / "theme.py"):
-            theme = "https://raw.githubusercontent.com/catppuccin/qutebrowser/main/setup.py"
-            with urlopen(theme) as themehtml:
-                with open(config.configdir / "theme.py", "a") as file:
-                    file.writelines(themehtml.read().decode("utf-8"))
-
-        if os.path.exists(config.configdir / "theme.py"):
-            import theme
-            theme.setup(c, 'mocha', True)
-      '';
     };
-    programs.git = {
+    # Define a user account. Don't forget to set a password with ‘passwd’.
+    programs.zsh.enable = true;
+
+    security.sudo = {
       enable = true;
-      userName = "Preston Pan";
-      userEmail = "preston@nullring.xyz";
-      signing.key = "2B749D1FB976E81613858E490290504780B30E20";
-      aliases = {
-        co = "checkout";
-        c = "commit";
-        a = "add";
-        s = "switch";
-        b = "branch";
-      };
+      extraRules = [{
+       commands = [
+         {
+           command = "${pkgs.systemd}/bin/systemctl suspend";
+           options = [ "NOPASSWD" ];
+         }
+         {
+           command = "${pkgs.systemd}/bin/reboot";
+           options = [ "NOPASSWD" ];
+         }
+         {
+           command = "${pkgs.systemd}/bin/poweroff";
+           options = [ "NOPASSWD" ];
+         }
+         {
+           command = "${pkgs.light}/bin/light";
+           options = [ "NOPASSWD" ];
+         }
+       ];
+       groups = [ "wheel" ];
+      }];
     };
 
-    wayland.windowManager.hyprland = {
-      enable = true;
-      package = pkgs.hyprland;
-      xwayland.enable = true;
-      systemd.enable = true;
-      settings = {
-        "$mod" = "SUPER";
-
-        exec-once = [
-          "waybar"
-          "swww init"
-          "swww img /home/preston/wallpapers/bigrobot.png"
-        ];
-        blurls = [
-          "waybar"
-        ];
-        bind = [
-          "$mod, F, exec, firefox"
-          "$mod, Return, exec, kitty"
-          "$mod, E, exec, emacs"
-          "$mod, v, exec, vencorddesktop"
-          "$mod, d, exec, wofi --show run"
-          ", Print, exec, grimblast copy area"
-          "$mod, Q, killactive"
-          "$mod SHIFT, H, movewindow, l"
-          "$mod SHIFT, L, movewindow, r"
-          "$mod SHIFT, K, movewindow, u"
-          "$mod SHIFT, J, movewindow, d"
-          "$mod, H, movefocus, l"
-          "$mod, L, movefocus, r"
-          "$mod, K, movefocus, u"
-          "$mod, J, movefocus, d"
-        ]
-        ++ (
-          builtins.concatLists (builtins.genList
-            (
-              x:
-              let
-                ws =
-                  let
-                    c = (x + 1) / 10;
-                  in
-                  builtins.toString (x + 1 - (c * 10));
-              in
-              [
-                "$mod, ${ws}, workspace, ${toString (x + 1)}"
-                "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
-              ]
-            )
-            10)
-        );
-        decoration = {
-          blur = {
-            enabled = true;
-            size = 5;
-            passes = 2;
-          };
-          rounding = 5;
-          shadow_offset = "0 5";
-          "col.shadow" = "rgba(00000099)";
-        };
-        input = {
-          kb_options = "caps:swapescape";
-          repeat_delay = 300;
-          repeat_rate = 50;
-        };
-        bindm = [
-          "$mod, mouse:272, movewindow"
-          "$mod, mouse:273, resizewindow"
-          "$mod ALT, mouse:272, resizewindow"
-        ];
-        binde = [
-          ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
-          ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-"
-          ", XF86AudioPlay, exec, mpc toggle"
-          ", XF86AudioNext, exec, mpc next"
-          ", XF86AudioPrev, exec, mpc prev"
-        ];
+    users.users.preston = {
+      isNormalUser = true;
+      description = "Preston Pan";
+      extraGroups = [ "networkmanager" "wheel" ];
+      shell = pkgs.zsh;
+      packages = with pkgs; [
+       #  thunderbird
+      ];
+    };
+
+    # Allow unfree packages
+    nixpkgs.config.allowUnfree = true;
+
+    # List packages installed in system profile. To search, run:
+    # $ nix search wget
+    nixpkgs.config.packageOverrides = pkgs: {
+      nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
+       inherit pkgs;
       };
     };
-  };
-  # Define a user account. Don't forget to set a password with ‘passwd’.
-  programs.zsh.enable = true;
-
-  security.sudo = {
-    enable = true;
-    extraRules = [{
-      commands = [
-        {
-          command = "${pkgs.systemd}/bin/systemctl suspend";
-          options = [ "NOPASSWD" ];
-        }
-        {
-          command = "${pkgs.systemd}/bin/reboot";
-          options = [ "NOPASSWD" ];
-        }
-        {
-          command = "${pkgs.systemd}/bin/poweroff";
-          options = [ "NOPASSWD" ];
-        }
-        {
-          command = "${pkgs.light}/bin/light";
-          options = [ "NOPASSWD" ];
-        }
-      ];
-      groups = [ "wheel" ];
-    }];
-  };
-
-  users.users.preston = {
-    isNormalUser = true;
-    description = "Preston Pan";
-    extraGroups = [ "networkmanager" "wheel" ];
-    shell = pkgs.zsh;
-    packages = with pkgs; [
-      #  thunderbird
-    ];
-  };
 
-  # Allow unfree packages
-  nixpkgs.config.allowUnfree = true;
+    environment.systemPackages = with pkgs; [
+      #  vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
+      #  wget
+      nixpkgs-fmt
+      rnix-lsp
+      light
+    ];
 
-  # List packages installed in system profile. To search, run:
-  # $ nix search wget
-  nixpkgs.config.packageOverrides = pkgs: {
-    nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
-      inherit pkgs;
+    xdg.portal = {
+      enable = true;
+      wlr.enable = true;
+      extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
+      config.common.default = "*";
     };
-  };
-
-  environment.systemPackages = with pkgs; [
-    #  vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
-    #  wget
-    nixpkgs-fmt
-    rnix-lsp
-    light
-  ];
-
-  xdg.portal = {
-    enable = true;
-    wlr.enable = true;
-    extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
-    config.common.default = "*";
-  };
-  # Some programs need SUID wrappers, can be configured further or are
-  # started in user sessions.
-  # programs.mtr.enable = true;
-  # programs.gnupg.agent = {
-  #   enable = true;
-  #   enableSSHSupport = true;
-  # };
-
-  # List services that you want to enable:
-
-  # Enable the OpenSSH daemon.
-  # services.openssh.enable = true;
-
-  # Open ports in the firewall.
-  # networking.firewall.allowedTCPPorts = [ ... ];
-  # networking.firewall.allowedUDPPorts = [ ... ];
-  # Or disable the firewall altogether.
-  # networking.firewall.enable = false;
-
-  # This value determines the NixOS release from which the default
-  # settings for stateful data, like file locations and database versions
-  # on your system were taken. It‘s perfectly fine and recommended to leave
-  # this value at the release version of the first install of this system.
-  # Before changing this value read the documentation for this option
-  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
-  system.stateVersion = "23.11"; # Did you read the comment?
-}
+    # Some programs need SUID wrappers, can be configured further or are
+    # started in user sessions.
+    # programs.mtr.enable = true;
+    # programs.gnupg.agent = {
+    #   enable = true;
+    #   enableSSHSupport = true;
+    # };
+
+    # List services that you want to enable:
+
+    # Enable the OpenSSH daemon.
+    # services.openssh.enable = true;
+
+    # Open ports in the firewall.
+    # networking.firewall.allowedTCPPorts = [ ... ];
+    # networking.firewall.allowedUDPPorts = [ ... ];
+    # Or disable the firewall altogether.
+    # networking.firewall.enable = false;
+
+    # This value determines the NixOS release from which the default
+    # settings for stateful data, like file locations and database versions
+    # on your system were taken. It‘s perfectly fine and recommended to leave
+    # this value at the release version of the first install of this system.
+    # Before changing this value read the documentation for this option
+    # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+    system.stateVersion = "23.11"; # Did you read the comment?
+  }
 #+end_src
index 59e30e6ed92e3f0967a0c4f53a773271738cb05e..95816d695c44e3cf94d13f2114040e475a5db673 100644 (file)
--- a/index.org
+++ b/index.org
@@ -64,7 +64,7 @@ website:
 #+begin_src shell :exports code :results silent
 cd ~/org/website
 git add .
-git commit -m "publish nix config"
+git commit -m "change readme"
 git push origin main
 rsync -azvP ~/website_html/ root@nullring.xyz:/var/www/ret2pop/
 #+end_src
diff --git a/journal/20240301.org b/journal/20240301.org
new file mode 100644 (file)
index 0000000..78169f7
--- /dev/null
@@ -0,0 +1,11 @@
+#+TITLE: Daily Journal
+#+STARTUP: showeverything
+#+DESCRIPTION: My daily journal entry
+#+AUTHOR: Preston Pan
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+#+html_head: <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+#+options: broken-links:t
+* Friday, 01 March 2024
+** 16:44 
+If I don't journal, that's because I am in Victoria. I am currently boarding the ferry.
diff --git a/mindmap/limit.org b/mindmap/limit.org
new file mode 100644 (file)
index 0000000..946e4d2
--- /dev/null
@@ -0,0 +1,48 @@
+:PROPERTIES:
+:ID:       122fd244-ffeb-47d0-89ce-bf9bc6f01b70
+:END:
+#+title: limit
+#+author: Preston Pan
+#+html_head: <link rel="stylesheet" type="text/css" href="../style.css" />
+#+html_head: <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+#+html_head: <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+#+options: broken-links:t
+
+* Introduction
+A limit in mathematics is a tool used to describe the intuitive process
+of a value or a set of values tending towards another. First, we will define
+limits as they pertain to sequences, and then we will define them on [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][functions]].
+For a sequence $\{s_{n}\}$:
+
+\begin{align*}
+\lim s_{n} = s \iff \forall \epsilon > 0, \exists N , n > N \implies | s_{n} - s | < \epsilon
+\end{align*}
+
+What this means is that at some point in the sequence, for some choice of epsilon, no matter how small
+it is, there has to be an index where every term after that index is closer to $s$ than epsilon. If
+some single number $s$ and sequence $\{s_{n}\}$ fulfills this criteria, then it is said that the limit
+of the sequence is $s$. Generally speaking, we use the set $\mathbb{R} \cup \{ -\infty, +\infty \}$, where there is a natural
+ordering:
+
+\begin{align*}
+\forall a \in \mathbb{R}, - \infty < a < +\infty
+\end{align*}
+defined. Note that we can define equivalence relations on these symbols, but algebra reamins undefined.
+** Limits on Monotone Sequences
+An increasing sequence is a sequence $\{s_{n}\}$ defined such that:
+\begin{align*}
+\forall n \in \mathbb{N}, \forall m \in \mathbb{N}, n \ge m \implies s_{n} \ge s_{m}.
+\end{align*}
+and now we wish to prove that the limit of monotone sequences always exist.
+
+\begin{align*}
+\lim s_{n} = s \iff \forall \epsilon > 0, \exists N, n > N \implies | s_{n} - s | < \epsilon \\
+\end{align*}
+
+#+begin_theorem
+If I am bad, then you are too.
+#+end_theorem
+
+#+begin_proof
+
+#+end_proof
diff --git a/mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png b/mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png
new file mode 100644 (file)
index 0000000..78e0534
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png differ
diff --git a/mindmap/ltximg/org-ltximg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png b/mindmap/ltximg/org-ltximg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png
new file mode 100644 (file)
index 0000000..0e0623a
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png differ
diff --git a/mindmap/ltximg/org-ltximg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png b/mindmap/ltximg/org-ltximg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png
new file mode 100644 (file)
index 0000000..caca7ec
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png differ
diff --git a/mindmap/ltximg/org-ltximg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png b/mindmap/ltximg/org-ltximg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png
new file mode 100644 (file)
index 0000000..0fab66a
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png differ
diff --git a/mindmap/ltximg/org-ltximg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png b/mindmap/ltximg/org-ltximg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png
new file mode 100644 (file)
index 0000000..6c2e031
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png differ
diff --git a/mindmap/ltximg/org-ltximg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png b/mindmap/ltximg/org-ltximg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png
new file mode 100644 (file)
index 0000000..442a11f
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png differ
diff --git a/mindmap/ltximg/org-ltximg_27244e5b74b849f9b81d99797b3bd149296780fc.png b/mindmap/ltximg/org-ltximg_27244e5b74b849f9b81d99797b3bd149296780fc.png
new file mode 100644 (file)
index 0000000..c5e4774
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_27244e5b74b849f9b81d99797b3bd149296780fc.png differ
diff --git a/mindmap/ltximg/org-ltximg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png b/mindmap/ltximg/org-ltximg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png
new file mode 100644 (file)
index 0000000..f67e1c0
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png differ
diff --git a/mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png b/mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png
new file mode 100644 (file)
index 0000000..ab2fe2d
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png differ
diff --git a/mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png b/mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png
new file mode 100644 (file)
index 0000000..5002da6
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png differ
diff --git a/mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png b/mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png
new file mode 100644 (file)
index 0000000..2cc2bc9
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png differ
diff --git a/mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png b/mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png
new file mode 100644 (file)
index 0000000..b319524
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png differ
diff --git a/mindmap/ltximg/org-ltximg_36a9152abe257356e10d6bcf14b90f467755ea8a.png b/mindmap/ltximg/org-ltximg_36a9152abe257356e10d6bcf14b90f467755ea8a.png
new file mode 100644 (file)
index 0000000..b319524
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_36a9152abe257356e10d6bcf14b90f467755ea8a.png differ
diff --git a/mindmap/ltximg/org-ltximg_3910faf9acf212232795e93c3510d0fe97468015.png b/mindmap/ltximg/org-ltximg_3910faf9acf212232795e93c3510d0fe97468015.png
new file mode 100644 (file)
index 0000000..2233fea
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_3910faf9acf212232795e93c3510d0fe97468015.png differ
diff --git a/mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png b/mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png
new file mode 100644 (file)
index 0000000..fd7bcb5
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png differ
diff --git a/mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png b/mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png
new file mode 100644 (file)
index 0000000..ff1c7ad
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png differ
diff --git a/mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png b/mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png
new file mode 100644 (file)
index 0000000..0fab66a
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png differ
diff --git a/mindmap/ltximg/org-ltximg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png b/mindmap/ltximg/org-ltximg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png
new file mode 100644 (file)
index 0000000..80e5640
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png differ
diff --git a/mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png b/mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png
new file mode 100644 (file)
index 0000000..8ab51ce
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png differ
diff --git a/mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png b/mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png
new file mode 100644 (file)
index 0000000..23456d8
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png differ
diff --git a/mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png b/mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png
new file mode 100644 (file)
index 0000000..07bc866
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png differ
diff --git a/mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png b/mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png
new file mode 100644 (file)
index 0000000..9c7ed35
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png differ
diff --git a/mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png b/mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png
new file mode 100644 (file)
index 0000000..88b8306
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png differ
diff --git a/mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png b/mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png
new file mode 100644 (file)
index 0000000..d0755a9
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png differ
diff --git a/mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png b/mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png
new file mode 100644 (file)
index 0000000..c4e2d20
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png differ
diff --git a/mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png b/mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png
new file mode 100644 (file)
index 0000000..fe029ee
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png differ
diff --git a/mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png b/mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png
new file mode 100644 (file)
index 0000000..ab2fe2d
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png differ
diff --git a/mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png b/mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png
new file mode 100644 (file)
index 0000000..0809c61
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png differ
diff --git a/mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png b/mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png
new file mode 100644 (file)
index 0000000..fefec5c
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png differ
diff --git a/mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png b/mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png
new file mode 100644 (file)
index 0000000..b3af05e
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png differ
diff --git a/mindmap/ltximg/org-ltximg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png b/mindmap/ltximg/org-ltximg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png
new file mode 100644 (file)
index 0000000..e1f1efc
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png differ
diff --git a/mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png b/mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png
new file mode 100644 (file)
index 0000000..9e43921
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png differ
diff --git a/mindmap/ltximg/org-ltximg_c94999ae9316287e809dabd9fc494e1c9b34a387.png b/mindmap/ltximg/org-ltximg_c94999ae9316287e809dabd9fc494e1c9b34a387.png
new file mode 100644 (file)
index 0000000..fe08625
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_c94999ae9316287e809dabd9fc494e1c9b34a387.png differ
diff --git a/mindmap/ltximg/org-ltximg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png b/mindmap/ltximg/org-ltximg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png
new file mode 100644 (file)
index 0000000..245100b
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png differ
diff --git a/mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png b/mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png
new file mode 100644 (file)
index 0000000..238c4e4
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png differ
diff --git a/mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png b/mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png
new file mode 100644 (file)
index 0000000..5bae963
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png differ
diff --git a/mindmap/ltximg/org-ltximg_e80960665bf0d91ee0770469f237c39dcfe22b98.png b/mindmap/ltximg/org-ltximg_e80960665bf0d91ee0770469f237c39dcfe22b98.png
new file mode 100644 (file)
index 0000000..fe08625
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_e80960665bf0d91ee0770469f237c39dcfe22b98.png differ
diff --git a/mindmap/ltximg/org-ltximg_ebd769de777728ae8dde51dc94c51ad64963244e.png b/mindmap/ltximg/org-ltximg_ebd769de777728ae8dde51dc94c51ad64963244e.png
new file mode 100644 (file)
index 0000000..7f42214
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_ebd769de777728ae8dde51dc94c51ad64963244e.png differ
diff --git a/mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png b/mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png
new file mode 100644 (file)
index 0000000..b319524
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png differ
diff --git a/mindmap/ltximg/org-ltximg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png b/mindmap/ltximg/org-ltximg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png
new file mode 100644 (file)
index 0000000..f49aca8
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png differ
diff --git a/mindmap/ltximg/org-ltximg_fa16adefafa2a4d0f294d224c776253425d38b95.png b/mindmap/ltximg/org-ltximg_fa16adefafa2a4d0f294d224c776253425d38b95.png
new file mode 100644 (file)
index 0000000..a5ac0b1
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_fa16adefafa2a4d0f294d224c776253425d38b95.png differ
diff --git a/mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png b/mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png
new file mode 100644 (file)
index 0000000..b319524
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png differ
diff --git a/mindmap/ltximg/org-ltximg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png b/mindmap/ltximg/org-ltximg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png
new file mode 100644 (file)
index 0000000..96beb3c
Binary files /dev/null and b/mindmap/ltximg/org-ltximg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png differ
index ac1c5d25900f19a7a3e7ce9c6d12cf6821be41f5..54ab922e2d3b6aed47edfec824f563722f14f39a 100644 (file)
@@ -11,4 +11,4 @@
 * Definition
 The operator \(\frac{\partial}{\partial x_{n}}\) takes the [[id:31d3944a-cddc-496c-89a3-67a56e821de3][derivative]] of a function \(f(\vec{x})\) with respect to \(x_{n}\) in
 the direction of the \(x_{n}\) axis. In other words, we take the derivative \(f(\vec{x})\) as if all variables
-except \(x_{n}\) is constant.
+except \(x_{n}\) is constant; this is useful in cases where you only care about one variable.