commit df2b4d7052eb27a12ca6d9c86a3a6dff407958a7
parent 08420379fea11795667f19a3a3f9b532a15816d7
Author: breadcat <breadcat@users.noreply.github.com>
Date: Sat, 2 Aug 2025 13:42:41 +0100
Inline startpage sorter
Diffstat:
2 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/machines/ilias.nix b/machines/ilias.nix
@@ -45,6 +45,7 @@ in {
../scripts/payslips.nix
../scripts/phone-dump.nix
../scripts/seedy.nix
+ ../scripts/startpage-sort.nix
../scripts/watchedlist.nix
../scripts/youtube-id-rss.nix
];
diff --git a/scripts/startpage-sort.nix b/scripts/startpage-sort.nix
@@ -0,0 +1,77 @@
+{pkgs, ...}: let
+ startpage-sort = pkgs.writeShellScriptBin "startpage-sort" ''
+ set -euo pipefail
+
+ source_file="$HOME/vault/src/startpage/index.html"
+ backup="''${source_file}.bak"
+
+ cp "$source_file" "$backup"
+
+ awk '
+ function ci_cmp(i1, v1, i2, v2, a, b) {
+ a = tolower(v1)
+ b = tolower(v2)
+ return (a < b ? -1 : a > b ? 1 : 0)
+ }
+
+ BEGIN {
+ PROCINFO["sorted_in"] = "ci_cmp"
+ in_bm = 0
+ in_cm = 0
+ nb = 0
+ nc = 0
+ }
+
+ # Start of bookmarks block
+ /^ const bookmarks = \[$/ {
+ in_bm = 1
+ print
+ next
+ }
+
+ # End of bookmarks block
+ in_bm && /^\s+\];$/ {
+ for (i in bookmarks) print bookmarks[i]
+ print
+ in_bm = 0
+ delete bookmarks
+ next
+ }
+
+ # Inside bookmarks block
+ in_bm {
+ bookmarks[$0] = $0
+ next
+ }
+
+ # Start of commandMap block
+ /^ const commandMap = {$/ {
+ in_cm = 1
+ print
+ next
+ }
+
+ # End of commandMap block
+ in_cm && /^\s+\};$/ {
+ for (i in commands) print commands[i]
+ print
+ in_cm = 0
+ delete commands
+ next
+ }
+
+ # Inside commandMap block
+ in_cm {
+ commands[$0] = $0
+ next
+ }
+
+ # Default
+ {
+ print
+ }
+ ' "$backup" > "$source_file"
+ '';
+in {
+ environment.systemPackages = [startpage-sort];
+}