From cd15d508c525c2da6cb610d655373e014c2b176e Mon Sep 17 00:00:00 2001 From: osbm Date: Tue, 6 May 2025 02:10:17 +0300 Subject: [PATCH] add wanikani custom systemd service --- modules/services/default.nix | 1 + modules/services/wanikani-bypass-lessons.nix | 47 ++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 modules/services/wanikani-bypass-lessons.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 703c2eb..28ebc33 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -9,5 +9,6 @@ ./tailscale.nix ./vaultwarden.nix ./vscode-server.nix + ./wanikani-bypass-lessons.nix ]; } diff --git a/modules/services/wanikani-bypass-lessons.nix b/modules/services/wanikani-bypass-lessons.nix new file mode 100644 index 0000000..0f4c61d --- /dev/null +++ b/modules/services/wanikani-bypass-lessons.nix @@ -0,0 +1,47 @@ +{lib, config, pkgs, ...}: let + + waniKani-bypass-lessons = pkgs.writeShellScript "wanikani-bypass-lessons" '' + #!/usr/bin/env bash + + # this token that starts with "2da24" is read only so i am keeping it public, i have nothing secret on my wanikani account + # but i need a write token for the second part of this script + + # i am going to read it from /persist/wanikani + + [ ! -e /persist/wanikani ] && echo "/persist/wanikani doesnt exist here :(" + + WANIKANI_TOKEN=$(< /persist/wanikani) + + ASSIGNMENT_IDS = $(curl -s -H "Authorization: Bearer 2da24e4a-ba89-4c4a-9047-d08f21e9dd01" "https://api.wanikani.com/v2/assignments?immediately_available_for_lessons=true" | jq ".data[] | .id ) + + echo number of assignments: $(echo $ASSIGNMENT_IDS | wc -l) + + # echo Starting assignments: + for assignment_id in $ASSIGNMENT_IDS; do + put_url="https://api.wanikani.com/v2/assignments/$assignment_id/start" + # echo "PUT $put_url" + echo curl -X PUT -s -H "Authorization: Bearer $WANIKANI_TOKEN" $put_url + sleep 1 + done + ''; +in + + { + options.services.wanikani-bypass-lessons.enable = lib.mkEnableOption { + description = "Enable WaniKani Bypass Lessons"; + default = false; + }; + + config = lib.mkIf config.services.wanikani-bypass-lessons.enable { + systemd.services.wanikani-bypass-lessons = { + description = "WaniKani Bypass Lessons"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${waniKani-bypass-lessons}"; + Restart = "always"; + RestartSec = 60; + }; + }; + }; + }