From ff214773f5752bef66e5ac5fd666dafd6b5ac271 Mon Sep 17 00:00:00 2001 From: Preston Pan Date: Fri, 1 Mar 2024 23:59:45 -0800 Subject: change readme --- README.org | 39 + config/emacs.el | 20 +- config/emacs.org | 20 +- config/nix.org | 2516 ++++++++++---------- index.org | 2 +- journal/20240301.org | 11 + mindmap/limit.org | 48 + ...mg_02aa3ea174cc91456ea23713ffe95af053dcb277.png | Bin 0 -> 1470 bytes ...mg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png | Bin 0 -> 224 bytes ...mg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png | Bin 0 -> 1815 bytes ...mg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png | Bin 0 -> 1813 bytes ...mg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png | Bin 0 -> 247 bytes ...mg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png | Bin 0 -> 805 bytes ...mg_27244e5b74b849f9b81d99797b3bd149296780fc.png | Bin 0 -> 319 bytes ...mg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png | Bin 0 -> 246 bytes ...mg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png | Bin 0 -> 265 bytes ...mg_311efb83a45287d808391c0fb75227a21d372f1c.png | Bin 0 -> 960 bytes ...mg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png | Bin 0 -> 1504 bytes ...mg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png | Bin 0 -> 1428 bytes ...mg_36a9152abe257356e10d6bcf14b90f467755ea8a.png | Bin 0 -> 1428 bytes ...mg_3910faf9acf212232795e93c3510d0fe97468015.png | Bin 0 -> 1513 bytes ...mg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png | Bin 0 -> 628 bytes ...mg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png | Bin 0 -> 1042 bytes ...mg_4d0d3071a4f57e81d06a60024812fa709c226a13.png | Bin 0 -> 1813 bytes ...mg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png | Bin 0 -> 699 bytes ...mg_6902b949dc40801941d169abb6484f949be7deca.png | Bin 0 -> 502 bytes ...mg_7257612d877b79f25160876e21c09f4a477eb402.png | Bin 0 -> 1951 bytes ...mg_8975639a2a55c6690a74f716ea57a8b344d56465.png | Bin 0 -> 484 bytes ...mg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png | Bin 0 -> 1064 bytes ...mg_8daf51c4403546d8b411e27b57b947181766471b.png | Bin 0 -> 254 bytes ...mg_9418fd90c2cdbf77a1865932d89612ee24845a24.png | Bin 0 -> 187 bytes ...mg_9dae828b4101a47202d449c337e4e360e5b9032e.png | Bin 0 -> 562 bytes ...mg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png | Bin 0 -> 1400 bytes ...mg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png | Bin 0 -> 265 bytes ...mg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png | Bin 0 -> 1857 bytes ...mg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png | Bin 0 -> 1492 bytes ...mg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png | Bin 0 -> 250 bytes ...mg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png | Bin 0 -> 420 bytes ...mg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png | Bin 0 -> 1104 bytes ...mg_c94999ae9316287e809dabd9fc494e1c9b34a387.png | Bin 0 -> 1781 bytes ...mg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png | Bin 0 -> 1391 bytes ...mg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png | Bin 0 -> 1490 bytes ...mg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png | Bin 0 -> 1949 bytes ...mg_e80960665bf0d91ee0770469f237c39dcfe22b98.png | Bin 0 -> 1781 bytes ...mg_ebd769de777728ae8dde51dc94c51ad64963244e.png | Bin 0 -> 305 bytes ...mg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png | Bin 0 -> 1428 bytes ...mg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png | Bin 0 -> 720 bytes ...mg_fa16adefafa2a4d0f294d224c776253425d38b95.png | Bin 0 -> 785 bytes ...mg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png | Bin 0 -> 1428 bytes ...mg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png | Bin 0 -> 947 bytes mindmap/partial derivative.org | 2 +- 51 files changed, 1388 insertions(+), 1270 deletions(-) create mode 100644 journal/20240301.org create mode 100644 mindmap/limit.org create mode 100644 mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png create mode 100644 mindmap/ltximg/org-ltximg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png create mode 100644 mindmap/ltximg/org-ltximg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png create mode 100644 mindmap/ltximg/org-ltximg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png create mode 100644 mindmap/ltximg/org-ltximg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png create mode 100644 mindmap/ltximg/org-ltximg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png create mode 100644 mindmap/ltximg/org-ltximg_27244e5b74b849f9b81d99797b3bd149296780fc.png create mode 100644 mindmap/ltximg/org-ltximg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png create mode 100644 mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png create mode 100644 mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png create mode 100644 mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png create mode 100644 mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png create mode 100644 mindmap/ltximg/org-ltximg_36a9152abe257356e10d6bcf14b90f467755ea8a.png create mode 100644 mindmap/ltximg/org-ltximg_3910faf9acf212232795e93c3510d0fe97468015.png create mode 100644 mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png create mode 100644 mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png create mode 100644 mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png create mode 100644 mindmap/ltximg/org-ltximg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png create mode 100644 mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png create mode 100644 mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png create mode 100644 mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png create mode 100644 mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png create mode 100644 mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png create mode 100644 mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png create mode 100644 mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png create mode 100644 mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png create mode 100644 mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png create mode 100644 mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png create mode 100644 mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png create mode 100644 mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png create mode 100644 mindmap/ltximg/org-ltximg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png create mode 100644 mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png create mode 100644 mindmap/ltximg/org-ltximg_c94999ae9316287e809dabd9fc494e1c9b34a387.png create mode 100644 mindmap/ltximg/org-ltximg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png create mode 100644 mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png create mode 100644 mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png create mode 100644 mindmap/ltximg/org-ltximg_e80960665bf0d91ee0770469f237c39dcfe22b98.png create mode 100644 mindmap/ltximg/org-ltximg_ebd769de777728ae8dde51dc94c51ad64963244e.png create mode 100644 mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png create mode 100644 mindmap/ltximg/org-ltximg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png create mode 100644 mindmap/ltximg/org-ltximg_fa16adefafa2a4d0f294d224c776253425d38b95.png create mode 100644 mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png create mode 100644 mindmap/ltximg/org-ltximg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png diff --git a/README.org b/README.org index c3133ae..6e2a7b3 100644 --- a/README.org +++ b/README.org @@ -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. diff --git a/config/emacs.el b/config/emacs.el index 3e3c1c2..03eefef 100644 --- a/config/emacs.el +++ b/config/emacs.el @@ -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)) @@ -58,10 +58,16 @@ 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: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") - :unnarrowed t)))) + :target (file+head "${title}.org" + "#+title: ${title}\n#+author: Preston Pan\n#+html_head: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") + :unnarrowed t))) + :config + (org-roam-db-autosync-mode)) (use-package pinentry :init (setq epa-pinentry-mode `loopback) diff --git a/config/emacs.org b/config/emacs.org index ff6342e..ffd2d3a 100644 --- a/config/emacs.org +++ b/config/emacs.org @@ -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: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") - :unnarrowed t)))) + :target (file+head "${title}.org" + "#+title: ${title}\n#+author: Preston Pan\n#+html_head: \n#+html_head: \n#+html_head: \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: diff --git a/config/nix.org b/config/nix.org index 5251748..8af80ff 100644 --- a/config/nix.org +++ b/config/nix.org @@ -4,1295 +4,1295 @@ #+html_head: * 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 - - ]; +#+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 + + ]; - # 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