summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPreston Pan <ret2pop@nullring.xyz>2026-05-11 11:19:37 -0700
committerPreston Pan <ret2pop@nullring.xyz>2026-05-11 11:19:37 -0700
commit9c94a2bddec849a7e0fb2ec0e1aec5a97e145899 (patch)
tree0d028553d6a47ae6363efd3482093d7532dcdfef
parent4b115d1df2a757d370e5e0714b349b7ce761b5d4 (diff)
parent5315bcdf371a4310018fb9599f7d78f93f9aedcb (diff)
Merge branch 'website-scss'
-rw-r--r--config/emacs.org7
-rw-r--r--config/nix.org132
-rw-r--r--flake.lock173
-rw-r--r--flake.nix2
m---------nix0
-rw-r--r--style.scss91
6 files changed, 295 insertions, 110 deletions
diff --git a/config/emacs.org b/config/emacs.org
index 2970ca3..e5baafc 100644
--- a/config/emacs.org
+++ b/config/emacs.org
@@ -490,8 +490,9 @@ This is my org mode configuration, which also configures latex.
")
(org-preview-latex-image-directory (expand-file-name "~/.cache/ltximg/") "don't use weird cache location")
(org-latex-preview-ltxpng-directory (expand-file-name "~/.cache/ltximg/") "don't use weird cache location")
- (org-latex-to-html-convert-command "printf '%%s' %i | pandoc -f latex -t html --mathml | tr -d '\\n' | sed -e 's/^<p>//' -e 's/<\\/p>$//'" "latex to MathML with special character handling")
- (org-latex-to-mathml-convert-command "printf '%%s' %i | pandoc -f latex -t html --mathml | tr -d '\\n' | sed -e 's/^<p>//' -e 's/<\\/p>$//'" "latex to MathML with special character handling")
+
+ (org-latex-to-html-convert-command "printf '%%s' %i | pandoc -f latex -t html --mathml | tr -d '\\n' | sed -e 's/^<p>//' -e 's/<\\/p>$//' -e 's/ style=\"[^\"]*\"//g'" "latex to MathML with special character handling")
+ (org-latex-to-mathml-convert-command "printf '%%s' %i | pandoc -f latex -t html --mathml | tr -d '\\n' | sed -e 's/^<p>//' -e 's/<\\/p>$//' -e 's/ style=\"[^\"]*\"//g'" "latex to MathML with special character handling")
(TeX-engine 'xetex "set xelatex as default engine")
(preview-default-option-list '("displaymath" "textmath" "graphics") "preview latex")
@@ -622,7 +623,7 @@ This is my org mode configuration, which also configures latex.
:publishing-function org-html-publish-to-html
:headline-levels 4
:html-footnotes-section "<div id=\"footnotes\"><hr><div id=\"text-footnotes\"><span class=\"footnotes-label-hidden\">%s</span>%s</div></div>"
- :html-head ,(concat "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS Feed\" href=\"/blog/rss.xml\"><meta name=\"theme-color\" content=\"#ffffff\">\n<link rel=\"preload\" href=\"/fonts/Inconsolata-Medium.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<meta name=\"theme-color\" content=\"#ffffff\">\n<link rel=\"preload\" href=\"/fonts/Lora-Medium.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<link rel=\"preload\" href=\"/fonts/CormorantGaramond-Bold.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<link rel=\"preload\" href=\"/fonts/CormorantGaramond-Medium.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicon-16x16.png\">\n<link rel=\"mask-icon\" href=\"/safari-pinned-tab.svg\" color=\"#5bbad5\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\"><meta name=\"msapplication-TileColor\" content=\"#da532c\">\n"
+ :html-head ,(concat "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS Feed\" href=\"/blog/rss.xml\"><meta name=\"theme-color\" content=\"#ffffff\">\n<link rel=\"preload\" href=\"/fonts/Lora-Medium.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<link rel=\"preload\" href=\"/fonts/CormorantGaramond-Bold.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<link rel=\"preload\" href=\"/fonts/CormorantGaramond-Medium.woff2\" as=\"font\" type=\"font/woff2\" crossorigin>\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicon-16x16.png\">\n<link rel=\"mask-icon\" href=\"/safari-pinned-tab.svg\" color=\"#5bbad5\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicon-32x32.png\">\n<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\"><meta name=\"msapplication-TileColor\" content=\"#da532c\">\n"
"<style>"
(->> (create-htmlize-css)
(s-replace-regexp "<style[^>]*>" "")
diff --git a/config/nix.org b/config/nix.org
index 83f06dc..caabe50 100644
--- a/config/nix.org
+++ b/config/nix.org
@@ -2454,6 +2454,105 @@ We must put Nixpkgs in another configuration because we don't want to include it
};
}
#+end_src
+** AutoUpdater
+#+begin_src nix :tangle ../nix/modules/auto-update.nix
+{ config, pkgs, lib, ... }:
+
+{
+ config = lib.mkIf config.monorepo.profiles.workstation.enable {
+ systemd.timers.monorepo-flake-updater = {
+ description = "Timer for Automated Monorepo Flake Updates";
+ wantedBy = [ "timers.target" ];
+ timerConfig = {
+ OnCalendar = "hourly";
+ Persistent = true;
+ };
+ };
+
+ systemd.services.monorepo-flake-updater = {
+ description = "Automated Flake Update, Check, and Patch for Monorepo";
+ wants = [ "network-online.target" ];
+ after = [ "network-online.target" ];
+
+ serviceConfig = {
+ Type = "oneshot";
+ User = "${config.monorepo.vars.userName}";
+ };
+ environment = {
+ HOME = "/home/${config.monorepo.vars.userName}";
+ };
+
+ path = with pkgs; [ git nix coreutils curl ];
+ script = ''
+ # Exit immediately if any command fails
+ set -euo pipefail
+
+ API_URL="https://channels.nixos.org/nixos-unstable/git-revision"
+ if ! curl --silent --head --location --fail "$API_URL" > /dev/null; then
+ echo "No internet or NixOS API is down. Aborting."
+ exit 0
+ fi
+
+ LATEST_REV=$(curl --silent --location "$API_URL")
+ STATE_FILE="$HOME/.local/state/monorepo-updater-rev"
+
+ mkdir -p "$(dirname "$STATE_FILE")"
+
+ if [ ! -f "$STATE_FILE" ]; then
+ echo "First run. Initializing baseline hash ($LATEST_REV) and exiting."
+ echo "$LATEST_REV" > "$STATE_FILE"
+ exit 0
+ fi
+
+ if [ "$(cat "$STATE_FILE")" = "$LATEST_REV" ]; then
+ echo "Channel has not bumped since last check ($LATEST_REV). Aborting."
+ exit 0
+ fi
+
+ echo "$LATEST_REV" > "$STATE_FILE"
+
+ TEMP_DIR=$(mktemp -d)
+ trap 'rm -rf "$TEMP_DIR"' EXIT
+ cd "$TEMP_DIR"
+
+ echo "Cloning repository..."
+ git clone git://git.nullring.xyz/monorepo.git --recurse-submodules
+
+ cd monorepo/nix
+
+ # Create and checkout [date]-bump branch INSIDE the submodule
+ DATE=$(date +%Y-%m-%d)
+ BRANCH_NAME="''${DATE}-bump"
+ git checkout -b "$BRANCH_NAME"
+
+ echo "Running nix flake update..."
+ nix flake update --extra-experimental-features "nix-command flakes"
+
+ # If the channel bumped, but flake update didn't change flake.lock, exit
+ if git diff --quiet flake.lock; then
+ echo "No actual updates to flake.lock. Aborting."
+ exit 0
+ fi
+
+ nix flake check --extra-experimental-features "nix-command flakes"
+
+ git config user.name "NixOS Updater"
+ git config user.email "updater@localhost"
+ git add flake.lock
+ git commit -m "chore: automated flake update ''${DATE}"
+
+ PATCH_DIR="$HOME/monorepo/nix"
+ mkdir -p "$PATCH_DIR"
+ PATCH_FILE="$PATCH_DIR/0000-flake-update-''${DATE}.patch"
+
+ git format-patch -1 HEAD --stdout > "$PATCH_FILE"
+ echo "Successfully checked updates and created patch at $PATCH_FILE"
+'';
+ };
+ };
+}
+#+end_src
+
** Main Configuration
This is the backbone of the all the NixOS configurations, with all these options being shared
because they enhance security.
@@ -3494,19 +3593,41 @@ be straightforward.
*** QuteBrowser
#+begin_src nix :tangle ../nix/modules/home/qutebrowser.nix
-{ lib, config, catppuccin-qutebrowser, ... }:
+{ pkgs, lib, config, catppuccin-qutebrowser, ... }:
{
programs.qutebrowser = {
enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
+ package = pkgs.qutebrowser.overrideAttrs (old: {
+ qtWrapperArgs = (old.qtWrapperArgs or []) ++ [
+ "--set" "__EGL_VENDOR_LIBRARY_FILENAMES" "/run/opengl-driver/share/glvnd/egl_vendor.d/10_nvidia.json"
+ "--set" "GBM_BACKEND" "nvidia-drm"
+ "--set" "__GLX_VENDOR_LIBRARY_NAME" "nvidia"
+ "--set" "QT_QPA_PLATFORM" "wayland"
+ ];
+ });
+
enableDefaultBindings = true;
searchEngines = {
+ DEFAULT = "https://search.marginalia.nu/search?query={}";
g = "https://www.google.com/search?hl=en&amp;q={}";
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&amp;go=Go&amp;ns0=1";
aw = "https://wiki.archlinux.org/?search={}";
nw = "https://wiki.nixos.org/index.php?search={}";
npk = "https://search.nixos.org/packages?channel=unstable&query={}";
};
+
settings = {
+ # This is the magic combination for Qtile + Wayland + Qutebrowser
+ qt.args = [
+ "enable-features=UseOzonePlatform"
+ "disable-gpu"
+ "disable-software-rasterizer"
+ "disable-gpu-sandbox"
+ ];
+
+ # Force Qt to draw the UI in software mode so it doesn't look for OpenGL
+ qt.force_software_rendering = "qt-quick";
+
content.blocking.method = "both";
fonts.default_family = "Lora";
fonts.default_size = "12pt";
@@ -3523,10 +3644,8 @@ be straightforward.
# Hints
fonts.hints = "bold 12pt Lora";
-
- # Rendering
- qt.force_software_rendering = "chromium";
};
+
extraConfig = (builtins.readFile "${catppuccin-qutebrowser}/setup.py") +
''
config.load_autoconfig()
@@ -4220,7 +4339,7 @@ for these configurations.
homeDirectory = "/home/${super.monorepo.vars.userName}";
stateVersion = "24.11";
sessionVariables = {
- QTWEBENGINE_FORCE_USE_GBM = 0;
+ QT_QPA_PLATFORM = "wayland;xcb";
NIXOS_OZONE_WL = 1;
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "qtile";
@@ -4233,6 +4352,7 @@ for these configurations.
unzip
mupdf
zathura
+ qt6.qtwayland
fzf
# passwords
@@ -4246,7 +4366,7 @@ for these configurations.
# Apps
# octaveFull
- grim swww vim element-desktop signal-desktop signal-cli imv slurp wl-clipboard
+ grim awww vim element-desktop signal-desktop signal-cli imv slurp wl-clipboard
# Sound/media
pavucontrol alsa-utils imagemagick ffmpeg pulseaudio
diff --git a/flake.lock b/flake.lock
index 3b6f561..a150811 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,21 @@
{
"nodes": {
+ "catppuccin-qutebrowser": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1741931053,
+ "narHash": "sha256-FmxrgpFlp+cMUdCx5HHIiLMGWML23p+pfxTKT/X0UME=",
+ "owner": "catppuccin",
+ "repo": "qutebrowser",
+ "rev": "808adc3d7d5be6fc573d6be6e9c888cb96b5d6e6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "catppuccin",
+ "repo": "qutebrowser",
+ "type": "github"
+ }
+ },
"crane": {
"inputs": {
"nixpkgs": [
@@ -22,24 +38,6 @@
"type": "github"
}
},
- "deep-research": {
- "inputs": {
- "nixpkgs": "nixpkgs"
- },
- "locked": {
- "lastModified": 1755738911,
- "narHash": "sha256-BobMSFfhK8GprfN6V+BedMj6d1v/pKce6sqiETHiv48=",
- "owner": "ret2pop",
- "repo": "ollama-deep-researcher",
- "rev": "678a3ef8e8d8ded2aab9288fd7396579a13aec46",
- "type": "github"
- },
- "original": {
- "owner": "ret2pop",
- "repo": "ollama-deep-researcher",
- "type": "github"
- }
- },
"disko": {
"inputs": {
"nixpkgs": [
@@ -48,11 +46,11 @@
]
},
"locked": {
- "lastModified": 1769524058,
- "narHash": "sha256-zygdD6X1PcVNR2PsyK4ptzrVEiAdbMqLos7utrMDEWE=",
+ "lastModified": 1777713215,
+ "narHash": "sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo=",
"owner": "nix-community",
"repo": "disko",
- "rev": "71a3fc97d80881e91710fe721f1158d3b96ae14d",
+ "rev": "63b4e7e6cf75307c1d26ac3762b886b5b0247267",
"type": "github"
},
"original": {
@@ -152,11 +150,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
- "lastModified": 1765835352,
- "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
+ "lastModified": 1772408722,
+ "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "a34fae9c08a15ad73f295041fec82323541400a9",
+ "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"type": "github"
},
"original": {
@@ -230,11 +228,11 @@
]
},
"locked": {
- "lastModified": 1772665116,
- "narHash": "sha256-XmjUDG/J8Z8lY5DVNVUf5aoZGc400FxcjsNCqHKiKtc=",
+ "lastModified": 1778507602,
+ "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
"owner": "cachix",
"repo": "git-hooks.nix",
- "rev": "39f53203a8458c330f61cc0759fe243f0ac0d198",
+ "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
"type": "github"
},
"original": {
@@ -253,11 +251,11 @@
]
},
"locked": {
- "lastModified": 1770726378,
- "narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=",
+ "lastModified": 1776796298,
+ "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=",
"owner": "cachix",
"repo": "git-hooks.nix",
- "rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae",
+ "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad",
"type": "github"
},
"original": {
@@ -379,7 +377,7 @@
"impermanence": {
"inputs": {
"home-manager": "home-manager_2",
- "nixpkgs": "nixpkgs_2"
+ "nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1769548169,
@@ -423,6 +421,22 @@
"type": "github"
}
},
+ "lean4-mode-src": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1748752682,
+ "narHash": "sha256-6XFcyqSTx1CwNWqQvIc25cuQMwh3YXnbgr5cDiOCxBk=",
+ "owner": "leanprover-community",
+ "repo": "lean4-mode",
+ "rev": "1388f9d1429e38a39ab913c6daae55f6ce799479",
+ "type": "github"
+ },
+ "original": {
+ "owner": "leanprover-community",
+ "repo": "lean4-mode",
+ "type": "github"
+ }
+ },
"nix-topology": {
"inputs": {
"flake-parts": "flake-parts_2",
@@ -432,11 +446,11 @@
]
},
"locked": {
- "lastModified": 1769983422,
- "narHash": "sha256-/zQdD8Aogh16eD5lgFokRMA0EYCm5uQITKCA90/01Oo=",
+ "lastModified": 1777808420,
+ "narHash": "sha256-hh9XBz0K1ypZ+neezgIPCSsnWFKEq8VfV/1aUSPu3OA=",
"owner": "oddlama",
"repo": "nix-topology",
- "rev": "20b5c5c698d45cc0f950889b3f6379ced5ce9c4a",
+ "rev": "28e9dc901ff38a8fa2d24bccd5f89511d6d8324e",
"type": "github"
},
"original": {
@@ -447,15 +461,16 @@
},
"nixmacs": {
"inputs": {
- "deep-research": "deep-research",
+ "catppuccin-qutebrowser": "catppuccin-qutebrowser",
"disko": "disko",
"git-hooks": "git-hooks_2",
"home-manager": "home-manager",
"impermanence": "impermanence",
"lanzaboote": "lanzaboote",
+ "lean4-mode-src": "lean4-mode-src",
"nix-topology": "nix-topology",
"nixos-dns": "nixos-dns",
- "nixpkgs": "nixpkgs_3",
+ "nixpkgs": "nixpkgs_2",
"nur": "nur",
"scripts": "scripts",
"sops-nix": "sops-nix",
@@ -498,15 +513,15 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1755615617,
- "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
- "owner": "NixOS",
+ "lastModified": 1768564909,
+ "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
+ "owner": "nixos",
"repo": "nixpkgs",
- "rev": "20075955deac2583bb12f07151c2df830ef346b4",
+ "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
"type": "github"
},
"original": {
- "owner": "NixOS",
+ "owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
@@ -514,11 +529,11 @@
},
"nixpkgs-lib": {
"locked": {
- "lastModified": 1765674936,
- "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
+ "lastModified": 1772328832,
+ "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
- "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
+ "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
"type": "github"
},
"original": {
@@ -545,11 +560,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1768564909,
- "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
+ "lastModified": 1777954456,
+ "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f",
+ "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
"type": "github"
},
"original": {
@@ -561,11 +576,11 @@
},
"nixpkgs_3": {
"locked": {
- "lastModified": 1770197578,
- "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
+ "lastModified": 1777954456,
+ "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
+ "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
"type": "github"
},
"original": {
@@ -577,27 +592,11 @@
},
"nixpkgs_4": {
"locked": {
- "lastModified": 1770197578,
- "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
- "type": "github"
- },
- "original": {
- "owner": "nixos",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
- "nixpkgs_5": {
- "locked": {
- "lastModified": 1769740369,
- "narHash": "sha256-xKPyJoMoXfXpDM5DFDZDsi9PHArf2k5BJjvReYXoFpM=",
+ "lastModified": 1775888245,
+ "narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "6308c3b21396534d8aaeac46179c14c439a89b8a",
+ "rev": "13043924aaa7375ce482ebe2494338e058282925",
"type": "github"
},
"original": {
@@ -607,13 +606,13 @@
"type": "github"
}
},
- "nixpkgs_6": {
+ "nixpkgs_5": {
"locked": {
- "lastModified": 1772624091,
- "narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=",
+ "lastModified": 1777954456,
+ "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "80bdc1e5ce51f56b19791b52b2901187931f5353",
+ "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
"type": "github"
},
"original": {
@@ -623,7 +622,7 @@
"type": "github"
}
},
- "nixpkgs_7": {
+ "nixpkgs_6": {
"locked": {
"lastModified": 1772542754,
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
@@ -642,14 +641,14 @@
"nur": {
"inputs": {
"flake-parts": "flake-parts_3",
- "nixpkgs": "nixpkgs_4"
+ "nixpkgs": "nixpkgs_3"
},
"locked": {
- "lastModified": 1770405908,
- "narHash": "sha256-910mKFyjbU6/t8sPJ2U6S1cxJiTgYFU1OOMuihNJO20=",
+ "lastModified": 1778003328,
+ "narHash": "sha256-7/RUNcp/ha++JzKc0Olb7G0xnPLS07GqqpYS2DQLok8=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "a84c4ed98604b96fc4cb6a4c2b24350aecd8ac3f",
+ "rev": "1564cfaba4bdfa14b97f141fff0f9e86e5ba220a",
"type": "github"
},
"original": {
@@ -706,7 +705,7 @@
},
"publish-org-roam-ui": {
"inputs": {
- "nixpkgs": "nixpkgs_7",
+ "nixpkgs": "nixpkgs_6",
"org-roam-ui-src": "org-roam-ui-src"
},
"locked": {
@@ -728,7 +727,7 @@
"garamond": "garamond",
"git-hooks": "git-hooks",
"nixmacs": "nixmacs",
- "nixpkgs": "nixpkgs_6",
+ "nixpkgs": "nixpkgs_5",
"publish-org-roam-ui": "publish-org-roam-ui"
}
},
@@ -776,14 +775,14 @@
},
"sops-nix": {
"inputs": {
- "nixpkgs": "nixpkgs_5"
+ "nixpkgs": "nixpkgs_4"
},
"locked": {
- "lastModified": 1770145881,
- "narHash": "sha256-ktjWTq+D5MTXQcL9N6cDZXUf9kX8JBLLBLT0ZyOTSYY=",
+ "lastModified": 1777944972,
+ "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
"owner": "Mic92",
"repo": "sops-nix",
- "rev": "17eea6f3816ba6568b8c81db8a4e6ca438b30b7c",
+ "rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
"type": "github"
},
"original": {
@@ -794,11 +793,11 @@
},
"sounds": {
"locked": {
- "lastModified": 1737024247,
- "narHash": "sha256-OTtqUYIe713ti4vaa8hS1Z0UvD/X4J9XkLzKgl2+RBE=",
+ "lastModified": 1774486938,
+ "narHash": "sha256-2eGREGFU2BqUTS90Vuk6MGd0AMAcVyo5CdRD2PjXQLU=",
"owner": "ret2pop",
"repo": "sounds",
- "rev": "9714690a6d216f9c55bfe56969d6e7d98768559f",
+ "rev": "f401687096553013f16644cefc05ac08beb675c1",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 9cf033d..ea44c22 100644
--- a/flake.nix
+++ b/flake.nix
@@ -267,7 +267,7 @@ xvfb-run -a emacs -q -l ${self}/tests/ci-runner.el || {
printf "after emacs\n"
CSS_HASH="$(python3 $HOME/monorepo/tests/test-csp-hash.py $HOME/website_html/index.html)"
cat <<EOF > $HOME/website_html/csp_header.conf
-add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'sha256-$CSS_HASH'; font-src 'self';";
+add_header Content-Security-Policy "default-src 'none'; script-src 'none'; style-src 'self' 'sha256-$CSS_HASH'; font-src 'self'; img-src 'self'; object-src 'none'; base-uri 'none'; form-action 'none';";
EOF
echo "Setting up Graph View..."
diff --git a/nix b/nix
-Subproject fdb5ae36cc411784bfda9622f5bd2b054342e75
+Subproject bfdb390152c0e5c65207ec3b24ac16a833686c1
diff --git a/style.scss b/style.scss
index 9fa1aea..a2c358c 100644
--- a/style.scss
+++ b/style.scss
@@ -9,6 +9,23 @@ $fonts: (
('CormorantGaramond', 'CormorantGaramond-MediumItalic', 700, italic),
);
+@font-face {
+ font-family: 'Lora-Fallback';
+ src: local('serif');
+ size-adjust: 98%;
+ ascent-override: 105%;
+ descent-override: 35%;
+}
+
+@font-face {
+ font-family: 'Lora-Fallback';
+ src: local('Times New Roman'), local('Times'), local('serif');
+ size-adjust: 95%;
+ ascent-override: 90%;
+ descent-override: 25%;
+ line-gap-override: 30%;
+}
+
$breakpoints: (
'mobile': 768px,
'toc': 1250px
@@ -104,7 +121,7 @@ $isa: (
--code-text: #cdd6f4;
--code-radius: 6px;
- --font-serif: "Lora", serif;
+ --font-serif: "Lora", "Lora-Fallback", serif;
--font-mono: "Inconsolata", monospace;
--font-header: "CormorantGaramond", serif;
--font-math: "STIX Two Math",'Latin Modern Math', serif;
@@ -175,7 +192,7 @@ main, header, footer {
}
h1, h2, h3 { line-height: 1.2; font-family: var(--font-header), serif; }
-h4, h5, h6 { font-family: var(--font-mono), monospace; line-height: 1.3; margin-top: 1.5rem; margin-bottom: 0.5rem; }
+h4, h5, h6 { font-family: var(--font-serif), serif; line-height: 1.3; margin-top: 1.5rem; margin-bottom: 0.5rem; }
h1, h2 {
padding-bottom: 8px;
@@ -202,9 +219,42 @@ h2 {
}
h3 { font-size: 1.25rem; font-weight: 700; margin-top: 2rem; margin-bottom: 0.4rem; letter-spacing: 0.02em; }
-h4 { font-size: 1.1rem; font-weight: 700; color: var(--text-main); }
-h5 { font-size: 1rem; font-weight: 700; color: var(--link-color); }
-h6 { font-size: 0.85rem; font-weight: 400; text-transform: uppercase; letter-spacing: 1px; color: color-mix(in srgb, var(--text-main) 60%, transparent); }
+
+h4 {
+ font-size: 0.95rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ color: var(--text-main);
+ -webkit-font-smoothing: auto;
+}
+
+h5 {
+ font-size: 1rem;
+ font-weight: 500;
+ font-style: italic;
+ color: var(--text-main);
+}
+
+h6 {
+ font-size: 0.82rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ color: color-mix(in srgb, var(--text-main) 50%, transparent);
+}
+
+h1, h2, h3, h4, h5, h6 {
+ [class^="section-number-"] {
+ font-family: var(--font-mono), monospace;
+ color: color-mix(in srgb, var(--text-main) 35%, transparent);
+ font-weight: 400;
+ font-size: 0.65em;
+ letter-spacing: 0.05em;
+ margin-right: 0.75em;
+ vertical-align: middle;
+ }
+}
p, ul, ol { margin-top: 1rem; margin-bottom: 1rem; }
li { margin-top: 0.3rem; }
@@ -362,6 +412,17 @@ math {
}
}
+#text-1 > p:first-of-type::first-letter {
+ float: left;
+ font-size: 3.5rem;
+ line-height: 0.8;
+ margin-right: 0.15em;
+ margin-top: 0.1em;
+ font-family: var(--font-header), serif;
+ font-weight: 700;
+ color: var(--accent);
+}
+
h1.title {
padding-top: 1.5rem;
margin-top: 0.5rem;
@@ -502,10 +563,10 @@ h1.title {
}
}
-.theorem::before { content: "Theorem."; }
-.lemma::before { content: "Lemma."; }
-.corollary::before { content: "Corollary."; }
-.definition::before { content: "Definition."; }
+.theorem::before { content: "Theorem:"; }
+.lemma::before { content: "Lemma:"; }
+.corollary::before { content: "Corollary:"; }
+.definition::before { content: "Definition:"; }
.proof {
position: relative;
@@ -529,7 +590,11 @@ h1.title {
@include bp('mobile') { columns: 1; }
}
-.org-svg { width: 100%; max-width: none; }
+img.org-svg, .org-svg {
+ max-width: 80%;
+ margin: 2rem auto;
+ display: block;
+}
.verse {
width: fit-content;
@@ -743,12 +808,12 @@ h1.title {
top: 0;
left: 0;
padding-top: 0;
- background: var(--toc-bg);
- border-right: 1px solid var(--accent);
+ // background: color-mix(in srgb, var(--toc-bg) 15%, transparent);
+ // border-right: 1px solid color-mix(in srgb, var(--accent) 12%, transparent);
overflow-y: auto;
overflow-x: hidden;
- @include hide-scrollbar;
+ @include custom-scrollbar;
ul {
list-style-type: none;