nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

commit df2b4d7052eb27a12ca6d9c86a3a6dff407958a7
parent 08420379fea11795667f19a3a3f9b532a15816d7
Author: breadcat <breadcat@users.noreply.github.com>
Date:   Sat,  2 Aug 2025 13:42:41 +0100

Inline startpage sorter

Diffstat:
Mmachines/ilias.nix | 1+
Ascripts/startpage-sort.nix | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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]; +}