nix-configs

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

vidyaplace-tears.nix (1082B)


      1 { pkgs, ... }:
      2 
      3 {
      4 
      5   environment.systemPackages = [
      6     (pkgs.writeShellScriptBin "vidyaplace-tears" ''
      7 
      8     # variables
      9       player="''${1:-Calico}"
     10 
     11     # process
     12       printf "Player: %s\n" "$player"
     13       ${pkgs.curl}/bin/curl -s "https://vidyaplace.org/api/highscores/player/$player" |
     14       ${pkgs.jq}/bin/jq -r '
     15       def format_number:
     16         tostring
     17         | if length <= 3 then .
     18           else (.[0:length-3] | format_number) + "," + .[length-3:]
     19           end;
     20         def format_skill:
     21           sub("_xp$"; "")
     22           | split("_")
     23           | map((.[0:1] | ascii_upcase) + .[1:])
     24           | join(" ");
     25         to_entries
     26         | map(select(.key | test("_(xp)$")))
     27         | sort_by(.value)
     28         | .[0] as $lowest
     29         | .[1] as $second
     30         |
     31         "Lowest skill: \($lowest.key | format_skill) (\($lowest.value | format_number) XP)",
     32         "Second lowest skill: \($second.key | format_skill) (\($second.value | format_number) XP)",
     33         "",
     34         "Difference: \(($second.value - $lowest.value) | format_number) XP"
     35       '
     36     '')
     37   ];
     38 
     39 }