From 9d3418bec24388acb88ee33be43f953e4324aac7 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Wed, 28 May 2025 14:48:08 +0000 Subject: [PATCH 01/19] htop --- home-modules/pkgs-list/shell.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-modules/pkgs-list/shell.nix b/home-modules/pkgs-list/shell.nix index bdd67fa..bd00f5c 100644 --- a/home-modules/pkgs-list/shell.nix +++ b/home-modules/pkgs-list/shell.nix @@ -14,6 +14,7 @@ glib glow gnumake + htop imagemagick jq lolcat From 8be84ff0a99182803d4a5429702f3e1ae663f294 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Wed, 28 May 2025 14:49:09 +0000 Subject: [PATCH 02/19] dicos git --- home-modules/git.nix | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/home-modules/git.nix b/home-modules/git.nix index 1e54806..33920f4 100644 --- a/home-modules/git.nix +++ b/home-modules/git.nix @@ -1,40 +1,13 @@ { pkgs, hyper, rice, ... }: { home.packages = with pkgs; [ - git delta - - (pkgs.writeShellScriptBin "git_monitor" '' - #!/bin/bash - - # List of directories to check - directories=( - "$HOME/nix-dots" - "$HOME/obsidian-vault" - "$HOME/Pictures/wallpapers" - ) - echo "" - for dir in "''${directories[@]}"; do - if [ -d "$dir" ]; then - cd "$dir" || { echo "Cannot change directory to $dir"; exit 1; } - echo "$(echo $dir | rev | cut -f 1 -d'/' | rev):" - if [[ $* == *--fetch* ]]; then - git fetch - fi - gst - echo "" - cd - > /dev/null || { echo "Cannot change back to the original directory"; exit 1; } - else - echo "Directory $dir does not exist." - fi - done - '') - (writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)") ]; programs.git = { enable = true; + package = pkgs.gitFull; userName = ''Lennart J. Kurzweg (Nx2)''; userEmail = "git@${hyper.domain}"; delta = { @@ -46,6 +19,14 @@ whitespace-error-style = "22 reverse"; }; }; + extraConfig = { + credential = { + "https://git.da.dicos.de".username = pkgs.lib.mkIf (hyper.host =="NxWSL") "lkurzweg"; + "https://git.da.dicos.de".password = pkgs.lib.mkIf (hyper.host =="NxWSL") "Test"; + }; + url."ssh://git@git.da.dicos.de/".insteadOf = pkgs.lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/"; + pull.rebase = false; # true + }; }; programs.lazygit = { enable = true; From 88e73a3ea844a308413e94e22059b838ab1fb2ac Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Wed, 28 May 2025 14:49:20 +0000 Subject: [PATCH 03/19] helix colors for windows terminal --- home-modules/helix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-modules/helix.nix b/home-modules/helix.nix index e1e6b7f..869043e 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -51,7 +51,7 @@ preview-completion-insert = true; completion-trigger-len = 1; auto-info = true; - true-color = false; # is detected automatically if set to false + true-color = true; # is detected automatically if set to false undercurl = false; # is detected automatically if set to false rulers = []; bufferline = "always"; From 2ecb4ce65a59100bdb8ceef2f1198c8502f9c35c Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:35:43 +0200 Subject: [PATCH 04/19] chatterino token --- git-crypt/secrets.nix | Bin 3490 -> 3490 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/git-crypt/secrets.nix b/git-crypt/secrets.nix index 04e30d37e99c1e58a3508f07aa03c3fad4c3bcda..f3566385b815465f0a0a481dabbc9ef12ca3a20a 100644 GIT binary patch literal 3490 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 From 393d7f4fc4cb5183f1303e746c007dbcd6ee377b Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:35:52 +0200 Subject: [PATCH 05/19] campuszeit --- home-modules/calendar-campuszeit-fix.nix | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 home-modules/calendar-campuszeit-fix.nix diff --git a/home-modules/calendar-campuszeit-fix.nix b/home-modules/calendar-campuszeit-fix.nix new file mode 100644 index 0000000..d15769f --- /dev/null +++ b/home-modules/calendar-campuszeit-fix.nix @@ -0,0 +1,58 @@ +{ pkgs, user, ... }: +{ + home.packages = let + u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" { + flakeIgnore = [ "E302" "E305" "E226" "E501" ]; + } /* python */ '' +import os +import sys + +def replace_campus_timezone(directory): + if not os.path.isdir(directory): + print(f"Error: {directory} is not a valid directory.") + return + + for filename in os.listdir(directory): + filepath = os.path.join(directory, filename) + if not os.path.isfile(filepath): + continue + + with open(filepath, 'r', encoding='utf-8') as f: + content = f.read() + + if 'TZID:Europe/Berlin' in content or 'TZID="Europe/Berlin"' in content: + # Remove VTIMEZONE block for CampusNetZeit (optional depending on needs) + # Use a regex if multiple VTIMEZONE blocks may exist + start_idx = content.find('BEGIN:VTIMEZONE') + end_idx = content.find('END:VTIMEZONE', start_idx) + if start_idx != -1 and end_idx != -1: + content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):] + + # Replace all TZID references + content = content.replace('TZID:Europe/Berlin', 'TZID:Europe/Berlin') + content = content.replace('TZID="Europe/Berlin"', 'TZID="Europe/Berlin"') + + with open(filepath, 'w', encoding='utf-8') as f: + f.write(content) + + print(f"Updated time zone in: {filename}") + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python replace_timezone.py ") + else: + replace_campus_timezone(sys.argv[1]) +''; + in [ + (pkgs.writeShellApplication { + name = "nx_fix_campuszeit"; + text = /*bash*/ '' + echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY + read -r -p "Continue?" + sudo chown -R ${user} "$1" + ${u}/bin/nx_fix_campuszeit_python "$1" + sudo chown -R radicale "$1" + ''; + }) + ]; +} From bf56cc88bf2bc65d754a911502b4d3cbb3113749 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:36:19 +0200 Subject: [PATCH 06/19] gitea theme --- system-modules/nx2site/gitea.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system-modules/nx2site/gitea.nix b/system-modules/nx2site/gitea.nix index d6ea24e..7f3d84c 100644 --- a/system-modules/nx2site/gitea.nix +++ b/system-modules/nx2site/gitea.nix @@ -93,8 +93,8 @@ let git-user = "git"; in domain = "git.${domain}"; owner = "nx2"; repo = "Gitea-Pitch-Black"; - rev = "0.1.0"; - hash = "sha256-pU4YhgcPOT3PTcmBTjNE3FcyJgl39JGP41ckhRUKN7Y="; + rev = "0.1.1"; + hash = "sha256-40LzF/DobikNzrFjCSzvCT0g4x/CKS2JUWTf/CyJoJs="; }; in { "gitea-theme" = /* bash */ '' From edde9bd52b8125c9f28d6c4ec1f42ee8f0a8cb5a Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:38:19 +0200 Subject: [PATCH 07/19] proxy dev --- system-modules/nx2site/proxy.nix | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/system-modules/nx2site/proxy.nix b/system-modules/nx2site/proxy.nix index a8e85ec..a26dc22 100644 --- a/system-modules/nx2site/proxy.nix +++ b/system-modules/nx2site/proxy.nix @@ -14,7 +14,7 @@ }; certs = { "${domain}" = { - extraDomainNames = builtins.map (subd: "${subd}.${domain}") [ "sync" "dev" ]; + extraDomainNames = builtins.map (subd: "${subd}.${domain}") [ "sync" ]; }; }; }; @@ -150,16 +150,23 @@ proxyWebsockets = true; }; }; - "dev.${domain}" = vh // { - listen = dl ++ [ - # { addr = "0.0.0.0"; port = 8000; ssl = true; } - # { addr = "[::0]"; port = 8000; ssl = true; } - ]; + "pnx.${domain}" = vh // { + listen = dl; + locations."/" = { + proxyPass = "http://127.0.0.1:8040"; + proxyWebsockets = true; + }; + }; + "wip.${domain}" = vh // { + listen = dl; root = "/var/lib/hugo/nx2site/public"; - # locations."/" = { - # proxyPass = "http://127.0.0.1:8000"; - # proxyWebsockets = true; - # }; + }; + "dev.${domain}" = vh // { + listen = dl; + locations."/" = { + proxyPass = "http://127.0.0.1:8080"; + proxyWebsockets = true; + }; }; # is done atomatically # "cal.${domain}" = vh // { From b0ab87bbab783e1936ff2eaface7ef4b18bea139 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:39:47 +0200 Subject: [PATCH 08/19] linux_6.12 ACE --- system-modules/boot.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-modules/boot.nix b/system-modules/boot.nix index fd5f90c..0ba3e50 100644 --- a/system-modules/boot.nix +++ b/system-modules/boot.nix @@ -118,7 +118,7 @@ in efiSupport = true; }; }; - kernelPackages = pkgs.linuxPackages; # default kernel of pkgs + kernelPackages = pkgs.linuxPackages_6_12; }; }; } From 2de110149faa6bd3257b3ae479feddefee97f13c Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:40:37 +0200 Subject: [PATCH 09/19] calendar dicos ++ --- system-modules/calendar-dicos.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/system-modules/calendar-dicos.nix b/system-modules/calendar-dicos.nix index 2960bb4..191b1cc 100644 --- a/system-modules/calendar-dicos.nix +++ b/system-modules/calendar-dicos.nix @@ -78,11 +78,14 @@ def modify_event(event): latest_goal = goal latest_week = week - new_description = [event.description.split("\n")[0] or "::"] + try: + new_description = [event.description.split("\n")[0]] + except AttributeError: + new_description = ["::"] new_description.append("") new_description.append(f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€") new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})") - new_description.append(f"This weeks deficit: {fraction_to_unicode(deficit)}") + new_description.append(f"You're {fraction_to_unicode(abs(deficit))}h in the {'plus' if deficit < 0 else 'minus'} this week.") event.description = "\n".join(new_description) From f4f80ffbdecd4d532bd039cefff675b667fc3478 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:42:27 +0200 Subject: [PATCH 10/19] games on Ace - mindustry --- home-modules/games.nix | 6 +++--- system-modules/games.nix | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/home-modules/games.nix b/home-modules/games.nix index 17a14cb..00c3ec9 100644 --- a/home-modules/games.nix +++ b/home-modules/games.nix @@ -1,6 +1,6 @@ { pkgs-unstable, pkgs, lib, host, ... }: -# lib.mkIf (host == "NxNORTH" || host == "NxACE") -lib.mkIf (host == "NxNORTH") +lib.mkIf (host == "NxNORTH" || host == "NxACE") +# lib.mkIf (host == "NxNORTH") { home = { packages = (with pkgs-unstable; [ @@ -9,7 +9,7 @@ lib.mkIf (host == "NxNORTH") # heroic - mindustry-wayland + # mindustry-wayland ]) ++ [ pkgs.heroic ]; sessionVariables = { STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d"; diff --git a/system-modules/games.nix b/system-modules/games.nix index 2a203b6..6ca6e0b 100644 --- a/system-modules/games.nix +++ b/system-modules/games.nix @@ -1,6 +1,6 @@ { lib, host, ... }: -# lib.mkIf (host == "NxNORTH" || host == "NxACE") -lib.mkIf (host == "NxNORTH") +lib.mkIf (host == "NxNORTH" || host == "NxACE") +# lib.mkIf (host == "NxNORTH") { programs = { steam = { From c4052ec34d46b86e0782bcb99c8b5c26c9ab709a Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 13:42:32 +0200 Subject: [PATCH 11/19] dev ssl --- system-modules/nx2site.nix | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/system-modules/nx2site.nix b/system-modules/nx2site.nix index 7022dd4..fb4e45b 100644 --- a/system-modules/nx2site.nix +++ b/system-modules/nx2site.nix @@ -41,6 +41,7 @@ let dns-user = "cloudflare"; in sub6 = "b8082b7afe9e80971fc9f9dda16ec284"; ssh = "c0f14f17f32d6595c202f041dd836eb3"; ssh6 = "f1ecb2d9d0522d4eec06437688ca76da"; + dev = "80e76834acc9243696d9763759b22147"; }; passord-file-path = config.sops.secrets."nx2site/cloudflare/global-api-key".path; in pkgs.writers.writePython3Bin "dyn_dns" { @@ -84,13 +85,14 @@ def main(): # Perform DNS updates # https://developers.cloudflare.com/api/operations/dns-records-for-a-zone-update-dns-record - print(f"${domain}: {update_record(record_id="${record_id.base}", record_name="${domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}") - print(f"*.${domain}: {update_record(record_id="${record_id.sub}", record_name="*.${domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}") - print(f"ssh.${domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}") + print(f"${domain}: {update_record(record_id="${record_id.base}", record_name="${domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}", end=", ") + print(f"*.${domain}: {update_record(record_id="${record_id.sub}", record_name="*.${domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}", end=", ") + print(f"ssh.${domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}", end=", ") + print(f"dev.${domain}: {update_record(record_id="${record_id.dev}", record_name="dev.${domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}", end=", ") - print(f"${domain}: {update_record(record_id="${record_id.base6}", record_name="${domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}") - print(f"*.${domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}") - print(f"ssh.${domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}") + print(f"${domain}: {update_record(record_id="${record_id.base6}", record_name="${domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}", end=", ") + print(f"*.${domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}", end=", ") + print(f"ssh.${domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}", end="") if __name__ == "__main__": main() From c566e4f40a846c4555262e1fe27399a6c0cae9ca Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 14:58:44 +0200 Subject: [PATCH 12/19] refactor fix --- home-modules/hyprland.nix | 2 +- home.nix | 8 +++--- system-modules/calendar-dicos.nix | 42 +++++++++++++++---------------- system-modules/nx2site/proxy.nix | 2 +- 4 files changed, 26 insertions(+), 28 deletions(-) diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index 2198d7b..83b34a8 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -96,7 +96,7 @@ in { workspace = let d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); - d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name); + d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name); d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); # d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name); compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false"; diff --git a/home.nix b/home.nix index c1d8e30..bd18cec 100644 --- a/home.nix +++ b/home.nix @@ -103,7 +103,7 @@ reflex ripgrep screen - speedtest-go + # speedtest-go spicetify-cli sssnake swww @@ -121,14 +121,12 @@ inputs.zen-browser.packages."${system}".default - ] ++ (if hyper.host != "NxACE" then [ + ] ++ (if (hyper.host != "NxACE") then [ signal-desktop obsidian zoom-us inkscape - ] else { - - }); + ] else []); xdg = { enable = true; diff --git a/system-modules/calendar-dicos.nix b/system-modules/calendar-dicos.nix index 191b1cc..694a8a3 100644 --- a/system-modules/calendar-dicos.nix +++ b/system-modules/calendar-dicos.nix @@ -5,7 +5,7 @@ wantedBy = [ "timers.target" ]; timerConfig = { OnBootSec = "40m"; - OnUnitActiveSec = "24h"; + OnUnitActiveSec = "12h"; Unit = "nx_cal_dicos.service"; }; }; @@ -26,9 +26,9 @@ from ics.event import datetime NETTO_STUNDE = 18.46 WEEKLY = 12 -week_dict = {} -latest_week = 0 -latest_goal = WEEKLY +# week_dict = {} +# latest_week = 0 +# latest_goal = WEEKLY deficit = 0 def fraction_to_unicode(frac): @@ -51,10 +51,10 @@ def fraction_to_unicode(frac): def modify_event(event): """Modify the event if it contains 'DICOS' in the SUMMARY.""" - global week_dict - global latest_goal - global latest_week - global deficit + # global week_dict + # global latest_goal + # global latest_week + # global deficit if event.name is not None and "DICOS" in event.name: length = (event.end - event.begin).seconds / 3600 @@ -63,20 +63,20 @@ def modify_event(event): # Calculate total hours for DICOS events in the same week year, week, _ = event.begin.isocalendar() - if week != latest_week: - try: - deficit = latest_goal - week_dict[f"{year}_{latest_week}"] - except KeyError: - deficit = 0 + # if week != latest_week: + # try: + # deficit = latest_goal - week_dict[f"{year}_{latest_week}"] + # except KeyError: + # deficit = 0 - week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0) + # week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0) - progress = week_dict[f"{year}_{week}"] - goal = WEEKLY + deficit + # progress = week_dict[f"{year}_{week}"] + # goal = WEEKLY + deficit - if week != latest_week: - latest_goal = goal - latest_week = week + # if week != latest_week: + # latest_goal = goal + # latest_week = week try: new_description = [event.description.split("\n")[0]] @@ -84,8 +84,8 @@ def modify_event(event): new_description = ["::"] new_description.append("") new_description.append(f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€") - new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})") - new_description.append(f"You're {fraction_to_unicode(abs(deficit))}h in the {'plus' if deficit < 0 else 'minus'} this week.") + # new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})") + # new_description.append(f"You're {fraction_to_unicode(abs(deficit))}h in the {'plus' if deficit < 0 else 'minus'} this week.") event.description = "\n".join(new_description) diff --git a/system-modules/nx2site/proxy.nix b/system-modules/nx2site/proxy.nix index 96c534b..ff80f32 100644 --- a/system-modules/nx2site/proxy.nix +++ b/system-modules/nx2site/proxy.nix @@ -44,7 +44,7 @@ # appendConfig = ''''; clientMaxBodySize = "20m"; defaultHTTPListenPort = 80; - defaultListenAddresses = [ "0.0.0.0" ] ++ lib.optional config.networking.enableIPv6 "[::0]"; + defaultListenAddresses = [ "0.0.0.0" ] ++ pkgs.lib.optional config.networking.enableIPv6 "[::0]"; defaultListen = dl; defaultMimeTypes = "${pkgs.mailcap}/etc/nginx/mime.types"; defaultSSLListenPort = 443; From d439996d0c781ddb024f3db40277c1e366b7ea70 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 14:59:17 +0200 Subject: [PATCH 13/19] js lsp --- home-modules/programming/js.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-modules/programming/js.nix b/home-modules/programming/js.nix index e2decfd..603de44 100644 --- a/home-modules/programming/js.nix +++ b/home-modules/programming/js.nix @@ -3,5 +3,6 @@ lib.mkIf (host != "NxACE") { home.packages = with pkgs; [ nodejs + typescript-language-server ]; } From 7b08304f785dde13ca8fd5d3c048f789aa2cc04b Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 15:00:21 +0200 Subject: [PATCH 14/19] streamlink try --- home-modules/chatterino.nix | 722 ++++++------------------------------ 1 file changed, 111 insertions(+), 611 deletions(-) diff --git a/home-modules/chatterino.nix b/home-modules/chatterino.nix index 1b5dff4..5853b2b 100644 --- a/home-modules/chatterino.nix +++ b/home-modules/chatterino.nix @@ -1,4 +1,4 @@ -{ pkgs, rice, secrets, ... }: +{ config, pkgs, rice, user, secrets, ... }: let channels = [ "Caedrel" @@ -43,8 +43,14 @@ let }; }; in { + sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; }; + home = { - packages = with pkgs; [ chatterino2 ]; + packages = with pkgs; [ + chatterino2 + streamlink + mpv + ]; file = { ".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ '' { @@ -76,10 +82,8 @@ in { "showUptime": true, "showViewerCount": true }, - "tabVisibility": 1, - "theme": { - "name": "nxtheme.json" - } + "tabVisibility": 0, + "theme": { "name": "nxtheme.json" } }, "behaviour": { "pauseOnHoverDuration": 5.0, @@ -93,615 +97,87 @@ in { }, "highlighting": { "badges": [ - { - "alert": false, - "color": "#7f7f3f49", - "displayName": "Broadcaster", - "name": "broadcaster", - "showInMentions": false, - "sound": false, - "soundUrl": "" - }, - { - "alert": false, - "color": "#7f7f3f49", - "displayName": "Admin", - "name": "admin", - "showInMentions": false, - "sound": false, - "soundUrl": "" - }, - { - "alert": false, - "color": "#7f7f3f49", - "displayName": "Staff", - "name": "staff", - "showInMentions": false, - "sound": false, - "soundUrl": "" - }, - { - "alert": false, - "displayName": "Moderator", - "name": "moderator", - "showInMentions": false, - "sound": false, - "soundUrl": "" - }, - { - "alert": false, - "color": "#7f7f3578", - "displayName": "VIP", - "name": "vip", - "showInMentions": false, - "sound": false, - "soundUrl": "" - } + { "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" }, + { "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" }, + { "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" }, + { "alert": false, "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" }, + { "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" } ], - "selfMessageHighlight": { - "color": "#73008cff", - "enabled": true - } + "selfMessageHighlight": { "color": "#73008cff", "enabled": true } }, "hotkeys": { - "addedDefaults": [ - "change channel", - "close popup window", - "create clip", - "delete", - "emote picker", - "focus down", - "focus left", - "focus right", - "focus up", - "go to end of input", - "go to end of input with selection", - "go to start of input", - "go to start of input with selection", - "new popup window", - "new popup window from tab", - "new split", - "new tab", - "next message", - "open debug popup", - "open quick switcher", - "open settings", - "popup accept", - "popup focus search box", - "popup reject", - "popup scroll down", - "popup scroll up", - "popup select last tab", - "popup select next tab", - "popup select previous tab", - "popup select tab #1", - "popup select tab #2", - "popup select tab #3", - "popup select tab #4", - "popup select tab #5", - "popup select tab #6", - "popup select tab #7", - "popup select tab #8", - "previous message", - "reconnect", - "reload emotes", - "remove tab", - "reopen split", - "scroll page down", - "scroll page up", - "scroll to bottom", - "scroll to top", - "select last tab", - "select next tab", - "select previous tab", - "select tab #1", - "select tab #2", - "select tab #3", - "select tab #4", - "select tab #5", - "select tab #6", - "select tab #7", - "select tab #8", - "send message", - "send message and keep text", - "show global search", - "show search", - "toggle live tabs only", - "toggle local r9k", - "toggle tab visibility", - "zoom in", - "zoom out", - "zoom reset" - ], - "change channel": { - "action": "changeChannel", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+R" - }, - "close popup window": { - "action": "delete", - "arguments": [], - "category": "popupWindow", - "keySequence": "Esc" - }, - "create clip": { - "action": "createClip", - "arguments": [], - "category": "split", - "keySequence": "Alt+X" - }, - "delete": { - "action": "delete", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+W" - }, - "emote picker": { - "action": "openEmotesPopup", - "arguments": [], - "category": "splitInput", - "keySequence": "Ctrl+E" - }, - "focus down": { - "action": "focus", - "arguments": [ - "down" - ], - "category": "split", - "keySequence": "Alt+Down" - }, - "focus left": { - "action": "focus", - "arguments": [ - "left" - ], - "category": "split", - "keySequence": "Alt+Left" - }, - "focus right": { - "action": "focus", - "arguments": [ - "right" - ], - "category": "split", - "keySequence": "Alt+Right" - }, - "focus up": { - "action": "focus", - "arguments": [ - "up" - ], - "category": "split", - "keySequence": "Alt+Up" - }, - "go to end of input": { - "action": "cursorToEnd", - "arguments": [ - "withoutSelection" - ], - "category": "splitInput", - "keySequence": "End" - }, - "go to end of input with selection": { - "action": "cursorToEnd", - "arguments": [ - "withSelection" - ], - "category": "splitInput", - "keySequence": "Shift+End" - }, - "go to start of input": { - "action": "cursorToStart", - "arguments": [ - "withoutSelection" - ], - "category": "splitInput", - "keySequence": "Home" - }, - "go to start of input with selection": { - "action": "cursorToStart", - "arguments": [ - "withSelection" - ], - "category": "splitInput", - "keySequence": "Shift+Home" - }, - "new popup window": { - "action": "popup", - "arguments": [ - "split" - ], - "category": "window", - "keySequence": "Ctrl+N" - }, - "new popup window from tab": { - "action": "popup", - "arguments": [ - "window" - ], - "category": "window", - "keySequence": "Ctrl+Shift+N" - }, - "new split": { - "action": "newSplit", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+T" - }, - "new tab": { - "action": "newTab", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+Shift+T" - }, - "next message": { - "action": "nextMessage", - "arguments": [], - "category": "splitInput", - "keySequence": "Down" - }, - "open debug popup": { - "action": "debug", - "arguments": [], - "category": "split", - "keySequence": "F10" - }, - "open quick switcher": { - "action": "openQuickSwitcher", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+K" - }, - "open settings": { - "action": "openSettings", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+P" - }, - "popup accept": { - "action": "accept", - "arguments": [], - "category": "popupWindow", - "keySequence": "Return" - }, - "popup focus search box": { - "action": "search", - "arguments": [], - "category": "popupWindow", - "keySequence": "Ctrl+F" - }, - "popup reject": { - "action": "reject", - "arguments": [], - "category": "popupWindow", - "keySequence": "Esc" - }, - "popup scroll down": { - "action": "scrollPage", - "arguments": [ - "down" - ], - "category": "popupWindow", - "keySequence": "PgDown" - }, - "popup scroll up": { - "action": "scrollPage", - "arguments": [ - "up" - ], - "category": "popupWindow", - "keySequence": "PgUp" - }, - "popup select last tab": { - "action": "openTab", - "arguments": [ - "last" - ], - "category": "popupWindow", - "keySequence": "Ctrl+9" - }, - "popup select next tab": { - "action": "openTab", - "arguments": [ - "next" - ], - "category": "popupWindow", - "keySequence": "Ctrl+Tab" - }, - "popup select previous tab": { - "action": "openTab", - "arguments": [ - "previous" - ], - "category": "popupWindow", - "keySequence": "Ctrl+Shift+Tab" - }, - "popup select tab #1": { - "action": "openTab", - "arguments": [ - "0" - ], - "category": "popupWindow", - "keySequence": "Ctrl+1" - }, - "popup select tab #2": { - "action": "openTab", - "arguments": [ - "1" - ], - "category": "popupWindow", - "keySequence": "Ctrl+2" - }, - "popup select tab #3": { - "action": "openTab", - "arguments": [ - "2" - ], - "category": "popupWindow", - "keySequence": "Ctrl+3" - }, - "popup select tab #4": { - "action": "openTab", - "arguments": [ - "3" - ], - "category": "popupWindow", - "keySequence": "Ctrl+4" - }, - "popup select tab #5": { - "action": "openTab", - "arguments": [ - "4" - ], - "category": "popupWindow", - "keySequence": "Ctrl+5" - }, - "popup select tab #6": { - "action": "openTab", - "arguments": [ - "5" - ], - "category": "popupWindow", - "keySequence": "Ctrl+6" - }, - "popup select tab #7": { - "action": "openTab", - "arguments": [ - "6" - ], - "category": "popupWindow", - "keySequence": "Ctrl+7" - }, - "popup select tab #8": { - "action": "openTab", - "arguments": [ - "7" - ], - "category": "popupWindow", - "keySequence": "Ctrl+8" - }, - "previous message": { - "action": "previousMessage", - "arguments": [], - "category": "splitInput", - "keySequence": "Up" - }, - "reconnect": { - "action": "reconnect", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+F5" - }, - "reload emotes": { - "action": "reloadEmotes", - "arguments": [], - "category": "split", - "keySequence": "F5" - }, - "remove tab": { - "action": "removeTab", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+Shift+W" - }, - "reopen split": { - "action": "reopenSplit", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+G" - }, - "scroll page down": { - "action": "scrollPage", - "arguments": [ - "down" - ], - "category": "split", - "keySequence": "PgDown" - }, - "scroll page up": { - "action": "scrollPage", - "arguments": [ - "up" - ], - "category": "split", - "keySequence": "PgUp" - }, - "scroll to bottom": { - "action": "scrollToBottom", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+End" - }, - "scroll to top": { - "action": "scrollToTop", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+Home" - }, - "select last tab": { - "action": "openTab", - "arguments": [ - "last" - ], - "category": "window", - "keySequence": "Ctrl+9" - }, - "select next tab": { - "action": "openTab", - "arguments": [ - "next" - ], - "category": "window", - "keySequence": "Ctrl+Tab" - }, - "select previous tab": { - "action": "openTab", - "arguments": [ - "previous" - ], - "category": "window", - "keySequence": "Ctrl+Shift+Tab" - }, - "select tab #1": { - "action": "openTab", - "arguments": [ - "0" - ], - "category": "window", - "keySequence": "Ctrl+1" - }, - "select tab #2": { - "action": "openTab", - "arguments": [ - "1" - ], - "category": "window", - "keySequence": "Ctrl+2" - }, - "select tab #3": { - "action": "openTab", - "arguments": [ - "2" - ], - "category": "window", - "keySequence": "Ctrl+3" - }, - "select tab #4": { - "action": "openTab", - "arguments": [ - "3" - ], - "category": "window", - "keySequence": "Ctrl+4" - }, - "select tab #5": { - "action": "openTab", - "arguments": [ - "4" - ], - "category": "window", - "keySequence": "Ctrl+5" - }, - "select tab #6": { - "action": "openTab", - "arguments": [ - "5" - ], - "category": "window", - "keySequence": "Ctrl+6" - }, - "select tab #7": { - "action": "openTab", - "arguments": [ - "6" - ], - "category": "window", - "keySequence": "Ctrl+7" - }, - "select tab #8": { - "action": "openTab", - "arguments": [ - "7" - ], - "category": "window", - "keySequence": "Ctrl+8" - }, - "send message": { - "action": "sendMessage", - "arguments": [], - "category": "splitInput", - "keySequence": "Return" - }, - "send message and keep text": { - "action": "sendMessage", - "arguments": [ - "keepInput" - ], - "category": "splitInput", - "keySequence": "Ctrl+Return" - }, - "show global search": { - "action": "showGlobalSearch", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+Shift+F" - }, - "show search": { - "action": "showSearch", - "arguments": [], - "category": "split", - "keySequence": "Ctrl+F" - }, - "toggle live tabs only": { - "action": "setTabVisibility", - "arguments": [ - "toggleLiveOnly" - ], - "category": "window", - "keySequence": "Ctrl+Shift+L" - }, - "toggle local r9k": { - "action": "toggleLocalR9K", - "arguments": [], - "category": "window", - "keySequence": "Ctrl+H" - }, - "toggle tab visibility": { - "action": "setTabVisibility", - "arguments": [ - "toggle" - ], - "category": "window", - "keySequence": "Ctrl+U" - }, - "zoom in": { - "action": "zoom", - "arguments": [ - "in" - ], - "category": "window", - "keySequence": "Ctrl++" - }, - "zoom out": { - "action": "zoom", - "arguments": [ - "out" - ], - "category": "window", - "keySequence": "Ctrl+-" - }, - "zoom reset": { - "action": "zoom", - "arguments": [ - "reset" - ], - "category": "window", - "keySequence": "Ctrl+0" - } + "addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ], + + "change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" }, + "close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" }, + "create clip": { "action": "createClip", "arguments": [], "category": "split", "keySequence": "Alt+X" }, + "delete": { "action": "delete", "arguments": [], "category": "split", "keySequence": "Ctrl+W" }, + "emote picker": { "action": "openEmotesPopup", "arguments": [], "category": "splitInput", "keySequence": "Ctrl+E" }, + "focus down": { "action": "focus", "arguments": [ "down" ], "category": "split", "keySequence": "Alt+Down" }, + "focus left": { "action": "focus", "arguments": [ "left" ], "category": "split", "keySequence": "Alt+Left" }, + "focus right": { "action": "focus", "arguments": [ "right" ], "category": "split", "keySequence": "Alt+Right" }, + "focus up": { "action": "focus", "arguments": [ "up" ], "category": "split", "keySequence": "Alt+Up" }, + "go to end of input": { "action": "cursorToEnd", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "End" }, + "go to end of input with selection": { "action": "cursorToEnd", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+End" }, + "go to start of input": { "action": "cursorToStart", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "Home" }, + "go to start of input with selection": { "action": "cursorToStart", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+Home" }, + "new popup window": { "action": "popup", "arguments": [ "split" ], "category": "window", "keySequence": "Ctrl+N" }, + "new popup window from tab": { "action": "popup", "arguments": [ "window" ], "category": "window", "keySequence": "Ctrl+Shift+N" }, + "new split": { "action": "newSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+T" }, + "new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" }, + "next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" }, + "open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" }, + "open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" }, + "open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" }, + "popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" }, + "popup focus search box": { "action": "search", "arguments": [], "category": "popupWindow", "keySequence": "Ctrl+F" }, + "popup reject": { "action": "reject", "arguments": [], "category": "popupWindow", "keySequence": "Esc" }, + "popup scroll down": { "action": "scrollPage", "arguments": [ "down" ], "category": "popupWindow", "keySequence": "PgDown" }, + "popup scroll up": { "action": "scrollPage", "arguments": [ "up" ], "category": "popupWindow", "keySequence": "PgUp" }, + "popup select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "popupWindow", "keySequence": "Ctrl+9" }, + "popup select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "popupWindow", "keySequence": "Ctrl+Tab" }, + "popup select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "popupWindow", "keySequence": "Ctrl+Shift+Tab" }, + "popup select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "popupWindow", "keySequence": "Ctrl+1" }, + "popup select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "popupWindow", "keySequence": "Ctrl+2" }, + "popup select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "popupWindow", "keySequence": "Ctrl+3" }, + "popup select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "popupWindow", "keySequence": "Ctrl+4" }, + "popup select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "popupWindow", "keySequence": "Ctrl+5" }, + "popup select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "popupWindow", "keySequence": "Ctrl+6" }, + "popup select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "popupWindow", "keySequence": "Ctrl+7" }, + "popup select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "popupWindow", "keySequence": "Ctrl+8" }, + "previous message": { "action": "previousMessage", "arguments": [], "category": "splitInput", "keySequence": "Up" }, + "reconnect": { "action": "reconnect", "arguments": [], "category": "split", "keySequence": "Ctrl+F5" }, + "reload emotes": { "action": "reloadEmotes", "arguments": [], "category": "split", "keySequence": "F5" }, + "remove tab": { "action": "removeTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+W" }, + "reopen split": { "action": "reopenSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+G" }, + "scroll page down": { "action": "scrollPage", "arguments": [ "down" ], "category": "split", "keySequence": "PgDown" }, + "scroll page up": { "action": "scrollPage", "arguments": [ "up" ], "category": "split", "keySequence": "PgUp" }, + "scroll to bottom": { "action": "scrollToBottom", "arguments": [], "category": "split", "keySequence": "Ctrl+End" }, + "scroll to top": { "action": "scrollToTop", "arguments": [], "category": "split", "keySequence": "Ctrl+Home" }, + "select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "window", "keySequence": "Ctrl+9" }, + "select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "window", "keySequence": "Ctrl+Tab" }, + "select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "window", "keySequence": "Ctrl+Shift+Tab" }, + "select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "window", "keySequence": "Ctrl+1" }, + "select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "window", "keySequence": "Ctrl+2" }, + "select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "window", "keySequence": "Ctrl+3" }, + "select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "window", "keySequence": "Ctrl+4" }, + "select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "window", "keySequence": "Ctrl+5" }, + "select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "window", "keySequence": "Ctrl+6" }, + "select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "window", "keySequence": "Ctrl+7" }, + "select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "window", "keySequence": "Ctrl+8" }, + "send message": { "action": "sendMessage", "arguments": [], "category": "splitInput", "keySequence": "Return" }, + "send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" }, + "show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" }, + "show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" }, + "toggle live tabs only": { "action": "setTabVisibility", "arguments": [ "toggleLiveOnly" ], "category": "window", "keySequence": "Ctrl+Shift+L" }, + "toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" }, + "toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" }, + "zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" }, + "zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" }, + "zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" } }, "misc": { - "currentVersion": "2.5.1", + "currentVersion": "2.5.3", "lockNotebookLayout": false }, "similarity": { @@ -713,6 +189,12 @@ in { "ui": { "lastSelectChannelTab": 0, "lastSelectIrcConn": -1 + }, + "external": { + "streamlink": { + "quality": "", + "options": "--config /home/${user}/.config/streamlink/config" + } } } ''; @@ -732,7 +214,7 @@ in { }]; }; ".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let - tr = builtins.toString (rice.lib.float-to-drune rice.transparency); + # tr = builtins.toString (rice.lib.float-to-drune rice.transparency); nh = rice.lib.nohash; in /* json */ '' { @@ -822,6 +304,24 @@ in { } } ''; + ".local/share/chatterino/Settings/commands.json".text = '' + { + "commands": [ + { + "name": "/sl", + "func": "/streamlink", + "showInMsgContextMenu": false + } + ] + } + ''; + ".config/streamlink/config".text = '' + twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})' + player=mpv + player-args='--no-terminal' + twitch-low-latency + default-stream=best + ''; }; }; } From b1258be64b717e105a9dccd6e9403d0d580ad885 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 15:01:06 +0200 Subject: [PATCH 15/19] minecraft --- home-modules/games.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home-modules/games.nix b/home-modules/games.nix index 17a14cb..abe10cb 100644 --- a/home-modules/games.nix +++ b/home-modules/games.nix @@ -7,6 +7,8 @@ lib.mkIf (host == "NxNORTH") protonup mangohud + prismlauncher + # heroic mindustry-wayland From c8903a6b5669703a82c15286cf0eaf40dab3fbd4 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 15:01:33 +0200 Subject: [PATCH 16/19] no ruff lsp --- home-modules/helix.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home-modules/helix.nix b/home-modules/helix.nix index 24add18..40af9c1 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -10,7 +10,6 @@ python311Packages.python-lsp-server jdt-language-server ruff - ruff-lsp pyright lldb # debugger for llvm stuff yaml-language-server # yaml From e1f74665c166d4632419fa8b4d85dd41187d6eb0 Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 15:03:29 +0200 Subject: [PATCH 17/19] stable nvidia --- system-modules/nvidia.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-modules/nvidia.nix b/system-modules/nvidia.nix index e346349..2250ec7 100644 --- a/system-modules/nvidia.nix +++ b/system-modules/nvidia.nix @@ -57,7 +57,7 @@ lib.mkIf nvidia.enable nvidiaSettings = true; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.beta; + package = config.boot.kernelPackages.nvidiaPackages.stable; }; graphics = { enable = true; From b5e66bbf43ecd995ece039bdb8db0ed78eac4e3d Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 15:03:48 +0200 Subject: [PATCH 18/19] yazi cache --- configuration.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 6dc0e36..a9e6865 100644 --- a/configuration.nix +++ b/configuration.nix @@ -138,7 +138,18 @@ nixpkgs.config.allowUnfree = true; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix = { + settings = { + experimental-features = [ "nix-command" "flakes" ]; + substitute = true; + substituters = [ + "https://yazi.cachix.org" + ]; + trusted-public-keys = [ + "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" + ]; + }; + }; programs.bash.shellInit = '' source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh From a9670b589602186ac8c554acea90d096ec7e9b2f Mon Sep 17 00:00:00 2001 From: "Lennart J. Kurzweg (Nx2)" Date: Sat, 31 May 2025 15:04:07 +0200 Subject: [PATCH 19/19] streamlink secret --- sops-secrets.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sops-secrets.yaml b/sops-secrets.yaml index a90532c..e93a9b2 100644 --- a/sops-secrets.yaml +++ b/sops-secrets.yaml @@ -19,6 +19,8 @@ syncthing: key.pem: ENC[AES256_GCM,data:zFgSrZelmXgTAm0Zl0HSTp+M4tLOQzksdYnA1NZPeu4R+mxMylilEtHzMp9zE7urz5gadjUEiguDBkfTOIzFeSLeUlXBDBWJhXf5JPZ403HES11qlIFdW8BPkzVC3X0N0KyydLdfhM0MAhZdyrRxn1ATc0ppvyqTpeN1rxNYMHTezRH9WMmKC9VS506rCIZrfOtEsuBpsxP6tTjOQ9AxuWV1z6/DRjv55U2EojZ/viM6sjGSsuDAYZQJBA7VQcNsw4PZu49OfA0czo7FbE6Gh6+TJ9PdMOUuo2/syH4yPBC7vqMECIBN4MHzhyoOTqcyZHIV5iJsZqTIbTN+CP72pPPrhs/a5K0GkyT0PPHVem+dGhyAJWQglSAlcK8kXWDP,iv:pzQOoQvFqoC3nIuGLNx97cCE7qO+PHCVw9G4K1mX2nk=,tag:zXUch/o/B97TlgHhAYUveA==,type:str] weechat: passphrase: ENC[AES256_GCM,data:3NVhMouf3wwMJTZCvIjbi5fjHJHxe25Q+wRo,iv:W8cShdM3iUyEiRCPNupMin3gfF+cqGxslD18CAvUW4c=,tag:DXBATGEhHjhXqy+J9BNVwg==,type:str] +streamlink: + twitch-oauth: ENC[AES256_GCM,data:SvV0CBVL6MO0zqiRg2Ns00KNHLDfzgNObse5F69n,iv:h0DFbwIVKfJSoVowgO3voAOdHXIsw1D3O/aweFRVKcI=,tag:PW0gc+gzlfdOUvIoYIkywg==,type:str] nx2site: cloudflare: api-token-dns-edit: ENC[AES256_GCM,data:fR4fH6NqwtHI8aebEwjUn5JMoy3q3GXgu/dREe8JK7yRBIOhJ8BKuw==,iv:fQqLRYCN/7zhpHzYxMcn8q1aA7x4qd3qWGgrFWn2E/U=,tag:GJ1muJG755ch/84Sgcf2Vw==,type:str] @@ -88,8 +90,8 @@ sops: SHJLR3lvdlFiRmJuU25RUHFFTmpjamMKbzycdDvQBAuOiRROTZEQSnaXoPapz73L yVS9EUP25FSx/sGqRqaCefbeaybuM1aso6LDnlomv4Bib7zjugWKSw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-03-07T17:02:01Z" - mac: ENC[AES256_GCM,data:js375bjy8Z4ApUXbw4eIqNl5BBgeX2bwMFBCx63LNCsb56OlHyYobQGtL1CwcDGW/+hwVLJSxbEDwqzJiu5vQ/2Cp00nVwvumHrvqZi/Ka4r87uNd6psE4nMq6ROHP0kJm6STKqd6MDyuLRjfX5zrki7ZhYTWsYS90/d9SUHUj8=,iv:W3w1f7lkL3fuOWmNhLUsOTKG18+wLhWA04GjygDIUEc=,tag:AYy9O7OcsY2W4VbOzyM5oA==,type:str] + lastmodified: "2025-05-05T15:43:24Z" + mac: ENC[AES256_GCM,data:O+L35rVqMaogvBDpnIweo1hdNXU39tEmBFXXTlLyImwt8ZWN98MIcS6tOBRjOAMSTRXEkNgvoggn/3ZF7erAva5w0ohVyN5PUeJvjNqkOQ522YTVC5wYYjvG+LUgaKcvKlm5c8XGEwJBt81i/ZXt0P03RpHge2a687dZ5e8fEQQ=,iv:0pOFGLPZC8gN3hV/FTzY1443283nwsHKiUdmdQyOn8U=,tag:GMMZX55DRZkRqe1HMpVX8g==,type:str] pgp: - created_at: "2024-06-09T19:44:41Z" enc: |-