OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      029c80ecc1db
DATE      2025-08-08
SUBJECT   nix: format
FILES     8 CHANGED
HASH      029c80ecc1db
DATE      2025-08-08
SUBJECT   nix: format
FILES     8 CHANGED
 

diff --git a/nix/apps/challenge-mode-leaderboard.nix b/nix/apps/challenge-mode-lea
derboard.nix
index 7c3fa63..a1da435 100644
--- a/nix/apps/challenge-mode-leaderboard.nix
+++ b/nix/apps/challenge-mode-leaderboard.nix
@@ -105,26 +105,26 @@
           """Merge new leaderboard data with existing data, preserving historical
 entries."""
           if not os.path.exists(existing_path):
               return new_data
-          
+
           try:
               with open(existing_path, 'r', encoding='utf-8') as f:
                   existing_data = json.load(f)
-              
+
               # Get existing and new leading groups
               existing_groups = existing_data.get('leading_groups', [])
               new_groups = new_data.get('leading_groups', [])
-              
+
               # Merge the leading groups (append new to existing)
               merged_groups = existing_groups + new_groups
-              
+
               # Use new data as base (has current metadata) but with merged group
s
               merged_data = new_data.copy()
               merged_data['leading_groups'] = merged_groups
-              
+
               print(f"    Merged {len(existing_groups)} existing + {len(new_group
s)} new = {len(merged_groups)} total entries")
-              
+
               return merged_data
-              
+
           except (json.JSONDecodeError, KeyError) as e:
               print(f"    ERROR reading existing file, using new data only: {e}")
               return new_data
@@ -171,13 +171,13 @@
                       f"{realm_slug}-{dungeon['slug']}-leaderboard.json"
                   )
                   os.makedirs(os.path.dirname(output_path), exist_ok=True)
-                  
+
                   # For EU realms, merge with existing data to preserve historica
l records
                   if realm_info['region'] == 'eu':
                       final_data = merge_leaderboard_data(output_path, leaderboar
d)
                   else:
                       final_data = leaderboard
-                  
+
                   with open(output_path, 'w', encoding='utf-8') as f:
                       json.dump(final_data, f, indent=2)
 

diff --git a/nix/apps/challenge-mode-leaderb
oard.nix b/nix/apps/challenge-mode-leaderboa
rd.nix
index 7c3fa63..a1da435 100644
--- a/nix/apps/challenge-mode-leaderboard.ni
x
+++ b/nix/apps/challenge-mode-leaderboard.ni
x
@@ -105,26 +105,26 @@
           """Merge new leaderboard data wit
h existing data, preserving historical entri
es."""
           if not os.path.exists(existing_pa
th):
               return new_data
-          
+
           try:
               with open(existing_path, 'r',
 encoding='utf-8') as f:
                   existing_data = json.load
(f)
-              
+
               # Get existing and new leadin
g groups
               existing_groups = existing_da
ta.get('leading_groups', [])
               new_groups = new_data.get('le
ading_groups', [])
-              
+
               # Merge the leading groups (a
ppend new to existing)
               merged_groups = existing_grou
ps + new_groups
-              
+
               # Use new data as base (has c
urrent metadata) but with merged groups
               merged_data = new_data.copy()
               merged_data['leading_groups']
 = merged_groups
-              
+
               print(f"    Merged {len(exist
ing_groups)} existing + {len(new_groups)} ne
w = {len(merged_groups)} total entries")
-              
+
               return merged_data
-              
+
           except (json.JSONDecodeError, Key
Error) as e:
               print(f"    ERROR reading exi
sting file, using new data only: {e}")
               return new_data
@@ -171,13 +171,13 @@
                       f"{realm_slug}-{dunge
on['slug']}-leaderboard.json"
                   )
                   os.makedirs(os.path.dirna
me(output_path), exist_ok=True)
-                  
+
                   # For EU realms, merge wi
th existing data to preserve historical reco
rds
                   if realm_info['region'] =
= 'eu':
                       final_data = merge_le
aderboard_data(output_path, leaderboard)
                   else:
                       final_data = leaderbo
ard
-                  
+
                   with open(output_path, 'w
', encoding='utf-8') as f:
                       json.dump(final_data,
 f, indent=2)
 
 

diff --git a/nix/apps/challenge-mode-parser.nix b/nix/apps/challenge-mode-parser.n
ix
index 17ef588..b2b8764 100644
--- a/nix/apps/challenge-mode-parser.nix
+++ b/nix/apps/challenge-mode-parser.nix
@@ -79,18 +79,18 @@
           # Remove duplicate runs caused by cross-realm groups appearing on multi
ple realm leaderboards
           seen = set()
           deduplicated = []
-          
+
           for run in runs:
               # Create a unique identifier for each run using timestamp, duration
, and sorted player IDs
               player_ids = sorted([member["profile"]["id"] for member in run["mem
bers"]])
               unique_key = (run["completed_timestamp"], run["duration"], tuple(pl
ayer_ids))
-              
+
               if unique_key not in seen:
                   seen.add(unique_key)
                   deduplicated.append(run)
               else:
                   print(f"    Removing duplicate run: {run['duration']}ms at {run
['completed_timestamp']}")
-          
+
           return deduplicated
 
       def rank_and_save_leaderboards(dungeon_data):
@@ -119,15 +119,15 @@
                   deduplicated_runs = deduplicate_runs(runs)
                   print(f"{len(deduplicated_runs)} -> ", end="")
                   deduplicated_runs.sort(key=sort_key)
-                  
+
                   # Limit to top N runs for regional leaderboard
                   final_runs = deduplicated_runs[:TOP_N_FINAL]
                   print(f"{len(final_runs)})")
-                  
+
                   # Re-rank runs for regional leaderboard
                   for i, run in enumerate(final_runs):
                       run["ranking"] = i + 1
-                  
+
                   all_regional_runs.extend(final_runs)
                   output_dir = os.path.join(regional_path, region, dungeon_slug)
                   os.makedirs(output_dir, exist_ok=True)
@@ -150,15 +150,15 @@
               deduplicated_global = deduplicate_runs(all_regional_runs)
               print(f"{len(deduplicated_global)} -> ", end="")
               deduplicated_global.sort(key=sort_key)
-              
+
               # Limit to top N runs for global leaderboard
               final_global = deduplicated_global[:TOP_N_FINAL]
               print(f"{len(final_global)})")
-              
+
               # Re-rank runs for global leaderboard
               for i, run in enumerate(final_global):
                   run["ranking"] = i + 1
-              
+
               global_path = os.path.join(OUTPUT_ROOT, "global", dungeon_slug)
               os.makedirs(global_path, exist_ok=True)
               global_output_file = os.path.join(global_path, "leaderboard.json")

diff --git a/nix/apps/challenge-mode-parser.
nix b/nix/apps/challenge-mode-parser.nix
index 17ef588..b2b8764 100644
--- a/nix/apps/challenge-mode-parser.nix
+++ b/nix/apps/challenge-mode-parser.nix
@@ -79,18 +79,18 @@
           # Remove duplicate runs caused by
 cross-realm groups appearing on multiple re
alm leaderboards
           seen = set()
           deduplicated = []
-          
+
           for run in runs:
               # Create a unique identifier 
for each run using timestamp, duration, and 
sorted player IDs
               player_ids = sorted([member["
profile"]["id"] for member in run["members"]
])
               unique_key = (run["completed_
timestamp"], run["duration"], tuple(player_i
ds))
-              
+
               if unique_key not in seen:
                   seen.add(unique_key)
                   deduplicated.append(run)
               else:
                   print(f"    Removing dupl
icate run: {run['duration']}ms at {run['comp
leted_timestamp']}")
-          
+
           return deduplicated
 
       def rank_and_save_leaderboards(dungeo
n_data):
@@ -119,15 +119,15 @@
                   deduplicated_runs = dedup
licate_runs(runs)
                   print(f"{len(deduplicated
_runs)} -> ", end="")
                   deduplicated_runs.sort(ke
y=sort_key)
-                  
+
                   # Limit to top N runs for
 regional leaderboard
                   final_runs = deduplicated
_runs[:TOP_N_FINAL]
                   print(f"{len(final_runs)}
)")
-                  
+
                   # Re-rank runs for region
al leaderboard
                   for i, run in enumerate(f
inal_runs):
                       run["ranking"] = i + 
1
-                  
+
                   all_regional_runs.extend(
final_runs)
                   output_dir = os.path.join
(regional_path, region, dungeon_slug)
                   os.makedirs(output_dir, e
xist_ok=True)
@@ -150,15 +150,15 @@
               deduplicated_global = dedupli
cate_runs(all_regional_runs)
               print(f"{len(deduplicated_glo
bal)} -> ", end="")
               deduplicated_global.sort(key=
sort_key)
-              
+
               # Limit to top N runs for glo
bal leaderboard
               final_global = deduplicated_g
lobal[:TOP_N_FINAL]
               print(f"{len(final_global)})"
)
-              
+
               # Re-rank runs for global lea
derboard
               for i, run in enumerate(final
_global):
                   run["ranking"] = i + 1
-              
+
               global_path = os.path.join(OU
TPUT_ROOT, "global", dungeon_slug)
               os.makedirs(global_path, exis
t_ok=True)
               global_output_file = os.path.
join(global_path, "leaderboard.json")
 

diff --git a/nix/lib/raid.nix b/nix/lib/raid.nix
index dc6378f..29af566 100644
--- a/nix/lib/raid.nix
+++ b/nix/lib/raid.nix
@@ -12,25 +12,41 @@
         if builtins.isString classStr && lib.hasPrefix "Class" classStr
         then lib.toLower (lib.removePrefix "Class" classStr)
         else null;
-      
+
       # Extract spec from spec-specific fields like "elementalShaman", "brewmaste
rMonk", etc.
-      specName = 
-        if builtins.hasAttr "elementalShaman" player then "elemental"
-        else if builtins.hasAttr "enhancementShaman" player then "enhancement"
-        else if builtins.hasAttr "restorationShaman" player then "restoration"
-        else if builtins.hasAttr "brewmasterMonk" player then "brewmaster"
-        else if builtins.hasAttr "windwalkerMonk" player then "windwalker"
-        else if builtins.hasAttr "mistweaverMonk" player then "mistweaver"
-        else if builtins.hasAttr "survivalHunter" player then "survival"
-        else if builtins.hasAttr "beastMasteryHunter" player then "beast_mastery"
-        else if builtins.hasAttr "marksmanshipHunter" player then "marksmanship"
-        else if builtins.hasAttr "balanceDruid" player then "balance"
-        else if builtins.hasAttr "feralDruid" player then "feral"
-        else if builtins.hasAttr "guardianDruid" player then "guardian"
-        else if builtins.hasAttr "restorationDruid" player then "restoration"
-        else if builtins.hasAttr "holyPaladin" player then "holy"
-        else if builtins.hasAttr "protectionPaladin" player then "protection"
-        else if builtins.hasAttr "retributionPaladin" player then "retribution"
+      specName =
+        if builtins.hasAttr "elementalShaman" player
+        then "elemental"
+        else if builtins.hasAttr "enhancementShaman" player
+        then "enhancement"
+        else if builtins.hasAttr "restorationShaman" player
+        then "restoration"
+        else if builtins.hasAttr "brewmasterMonk" player
+        then "brewmaster"
+        else if builtins.hasAttr "windwalkerMonk" player
+        then "windwalker"
+        else if builtins.hasAttr "mistweaverMonk" player
+        then "mistweaver"
+        else if builtins.hasAttr "survivalHunter" player
+        then "survival"
+        else if builtins.hasAttr "beastMasteryHunter" player
+        then "beast_mastery"
+        else if builtins.hasAttr "marksmanshipHunter" player
+        then "marksmanship"
+        else if builtins.hasAttr "balanceDruid" player
+        then "balance"
+        else if builtins.hasAttr "feralDruid" player
+        then "feral"
+        else if builtins.hasAttr "guardianDruid" player
+        then "guardian"
+        else if builtins.hasAttr "restorationDruid" player
+        then "restoration"
+        else if builtins.hasAttr "holyPaladin" player
+        then "holy"
+        else if builtins.hasAttr "protectionPaladin" player
+        then "protection"
+        else if builtins.hasAttr "retributionPaladin" player
+        then "retribution"
         else null;
     in {
       class = className;

diff --git a/nix/lib/raid.nix b/nix/lib/raid
.nix
index dc6378f..29af566 100644
--- a/nix/lib/raid.nix
+++ b/nix/lib/raid.nix
@@ -12,25 +12,41 @@
         if builtins.isString classStr && li
b.hasPrefix "Class" classStr
         then lib.toLower (lib.removePrefix 
"Class" classStr)
         else null;
-      
+
       # Extract spec from spec-specific fie
lds like "elementalShaman", "brewmasterMonk"
, etc.
-      specName = 
-        if builtins.hasAttr "elementalShama
n" player then "elemental"
-        else if builtins.hasAttr "enhanceme
ntShaman" player then "enhancement"
-        else if builtins.hasAttr "restorati
onShaman" player then "restoration"
-        else if builtins.hasAttr "brewmaste
rMonk" player then "brewmaster"
-        else if builtins.hasAttr "windwalke
rMonk" player then "windwalker"
-        else if builtins.hasAttr "mistweave
rMonk" player then "mistweaver"
-        else if builtins.hasAttr "survivalH
unter" player then "survival"
-        else if builtins.hasAttr "beastMast
eryHunter" player then "beast_mastery"
-        else if builtins.hasAttr "marksmans
hipHunter" player then "marksmanship"
-        else if builtins.hasAttr "balanceDr
uid" player then "balance"
-        else if builtins.hasAttr "feralDrui
d" player then "feral"
-        else if builtins.hasAttr "guardianD
ruid" player then "guardian"
-        else if builtins.hasAttr "restorati
onDruid" player then "restoration"
-        else if builtins.hasAttr "holyPalad
in" player then "holy"
-        else if builtins.hasAttr "protectio
nPaladin" player then "protection"
-        else if builtins.hasAttr "retributi
onPaladin" player then "retribution"
+      specName =
+        if builtins.hasAttr "elementalShama
n" player
+        then "elemental"
+        else if builtins.hasAttr "enhanceme
ntShaman" player
+        then "enhancement"
+        else if builtins.hasAttr "restorati
onShaman" player
+        then "restoration"
+        else if builtins.hasAttr "brewmaste
rMonk" player
+        then "brewmaster"
+        else if builtins.hasAttr "windwalke
rMonk" player
+        then "windwalker"
+        else if builtins.hasAttr "mistweave
rMonk" player
+        then "mistweaver"
+        else if builtins.hasAttr "survivalH
unter" player
+        then "survival"
+        else if builtins.hasAttr "beastMast
eryHunter" player
+        then "beast_mastery"
+        else if builtins.hasAttr "marksmans
hipHunter" player
+        then "marksmanship"
+        else if builtins.hasAttr "balanceDr
uid" player
+        then "balance"
+        else if builtins.hasAttr "feralDrui
d" player
+        then "feral"
+        else if builtins.hasAttr "guardianD
ruid" player
+        then "guardian"
+        else if builtins.hasAttr "restorati
onDruid" player
+        then "restoration"
+        else if builtins.hasAttr "holyPalad
in" player
+        then "holy"
+        else if builtins.hasAttr "protectio
nPaladin" player
+        then "protection"
+        else if builtins.hasAttr "retributi
onPaladin" player
+        then "retribution"
         else null;
     in {
       class = className;
 

diff --git a/nix/lib/shell-utils.nix b/nix/lib/shell-utils.nix
index 0579e94..c094821 100644
--- a/nix/lib/shell-utils.nix
+++ b/nix/lib/shell-utils.nix
@@ -31,20 +31,20 @@
     baseDir ? "web/public/data",
     subdirs ? [],
   }:
-    /*
-    bash
-    */
-    ''
-      # setup web data directories
-      web_data_dir="$repo_root/${baseDir}"
-      mkdir -p "$web_data_dir"
+  /*
+  bash
+  */
+  ''
+    # setup web data directories
+    web_data_dir="$repo_root/${baseDir}"
+    mkdir -p "$web_data_dir"
 
-      ${concatMapStringsSep "\n" (subdir: ''
+    ${concatMapStringsSep "\n" (subdir: ''
         ${replaceStrings ["/"] ["_"] subdir}_dir="$web_data_dir/${subdir}"
         mkdir -p "$${replaceStrings ["/"] ["_"] subdir}_dir"
       '')
       subdirs}
-    '';
+  '';
 
   # function to generate shell code for common simulation result copying patterns
   copySimulationResults = {
@@ -74,17 +74,17 @@
     class,
     spec,
   }:
-    /*
-    bash
-    */
-    ''
-      ${findRepoRoot}
+  /*
+  bash
+  */
+  ''
+    ${findRepoRoot}
 
-      # setup comparison directory structure
-      comparison_base_dir="$repo_root/web/public/data/comparison/${comparisonType
}"
-      comparison_dir="$comparison_base_dir/${class}/${spec}"
-      mkdir -p "$comparison_dir"
-    '';
+    # setup comparison directory structure
+    comparison_base_dir="$repo_root/web/public/data/comparison/${comparisonType}"
+    comparison_dir="$comparison_base_dir/${class}/${spec}"
+    mkdir -p "$comparison_dir"
+  '';
 
   # combined function for the most common pattern: find repo root + setup ranking
s dirs
   setupRankingsDirs =
@@ -109,19 +109,19 @@
     sortKey ? ".dps",
     filterCondition ? "select(.dps != null and .dps > 0)",
   }:
-    /*
-    bash
-    */
-    ''
-      echo ""
-      echo "${title}:"
-      echo "======================================="
-      echo '${jsonData}' | jq -r '
-        .results | to_entries[] |
-        ${filterCondition} |
-        "\(.key): \(${sortKey} | floor) DPS"
-      ' | sort -k2 -nr
-    '';
+  /*
+  bash
+  */
+  ''
+    echo ""
+    echo "${title}:"
+    echo "======================================="
+    echo '${jsonData}' | jq -r '
+      .results | to_entries[] |
+      ${filterCondition} |
+      "\(.key): \(${sortKey} | floor) DPS"
+    ' | sort -k2 -nr
+  '';
 
   # argument parsing and environment variable handling
   parseArgsAndEnv =
@@ -155,19 +155,19 @@
     webPath,
     webMessage,
   }:
-    /*
-    bash
-    */
-    ''
-      if [[ "$copyToWeb" == "true" ]]; then
-        ${webSetupCode}
-        echo "$finalResult" | jq -c '.' > "${webPath}/${structuredOutput}.json"
-        echo "${webMessage}: ${webPath}/${structuredOutput}.json"
-      else
-        echo "$finalResult" | jq -c '.' > "${structuredOutput}.json"
-        echo "Results written to: ${structuredOutput}.json"
-      fi
-    '';
+  /*
+  bash
+  */
+  ''
+    if [[ "$copyToWeb" == "true" ]]; then
+      ${webSetupCode}
+      echo "$finalResult" | jq -c '.' > "${webPath}/${structuredOutput}.json"
+      echo "${webMessage}: ${webPath}/${structuredOutput}.json"
+    else
+      echo "$finalResult" | jq -c '.' > "${structuredOutput}.json"
+      echo "Results written to: ${structuredOutput}.json"
+    fi
+  '';
 in {
   inherit displayDPSRankings setupRankingsDirs setupComparisonDirs copySimulation
Results setupWebDataDirs findRepoRoot parseArgsAndEnv conditionalOutput;
 }

diff --git a/nix/lib/shell-utils.nix b/nix/l
ib/shell-utils.nix
index 0579e94..c094821 100644
--- a/nix/lib/shell-utils.nix
+++ b/nix/lib/shell-utils.nix
@@ -31,20 +31,20 @@
     baseDir ? "web/public/data",
     subdirs ? [],
   }:
-    /*
-    bash
-    */
-    ''
-      # setup web data directories
-      web_data_dir="$repo_root/${baseDir}"
-      mkdir -p "$web_data_dir"
+  /*
+  bash
+  */
+  ''
+    # setup web data directories
+    web_data_dir="$repo_root/${baseDir}"
+    mkdir -p "$web_data_dir"
 
-      ${concatMapStringsSep "\n" (subdir: '
'
+    ${concatMapStringsSep "\n" (subdir: ''
         ${replaceStrings ["/"] ["_"] subdir
}_dir="$web_data_dir/${subdir}"
         mkdir -p "$${replaceStrings ["/"] [
"_"] subdir}_dir"
       '')
       subdirs}
-    '';
+  '';
 
   # function to generate shell code for com
mon simulation result copying patterns
   copySimulationResults = {
@@ -74,17 +74,17 @@
     class,
     spec,
   }:
-    /*
-    bash
-    */
-    ''
-      ${findRepoRoot}
+  /*
+  bash
+  */
+  ''
+    ${findRepoRoot}
 
-      # setup comparison directory structur
e
-      comparison_base_dir="$repo_root/web/p
ublic/data/comparison/${comparisonType}"
-      comparison_dir="$comparison_base_dir/
${class}/${spec}"
-      mkdir -p "$comparison_dir"
-    '';
+    # setup comparison directory structure
+    comparison_base_dir="$repo_root/web/pub
lic/data/comparison/${comparisonType}"
+    comparison_dir="$comparison_base_dir/${
class}/${spec}"
+    mkdir -p "$comparison_dir"
+  '';
 
   # combined function for the most common p
attern: find repo root + setup rankings dirs
   setupRankingsDirs =
@@ -109,19 +109,19 @@
     sortKey ? ".dps",
     filterCondition ? "select(.dps != null 
and .dps > 0)",
   }:
-    /*
-    bash
-    */
-    ''
-      echo ""
-      echo "${title}:"
-      echo "===============================
========"
-      echo '${jsonData}' | jq -r '
-        .results | to_entries[] |
-        ${filterCondition} |
-        "\(.key): \(${sortKey} | floor) DPS
"
-      ' | sort -k2 -nr
-    '';
+  /*
+  bash
+  */
+  ''
+    echo ""
+    echo "${title}:"
+    echo "=================================
======"
+    echo '${jsonData}' | jq -r '
+      .results | to_entries[] |
+      ${filterCondition} |
+      "\(.key): \(${sortKey} | floor) DPS"
+    ' | sort -k2 -nr
+  '';
 
   # argument parsing and environment variab
le handling
   parseArgsAndEnv =
@@ -155,19 +155,19 @@
     webPath,
     webMessage,
   }:
-    /*
-    bash
-    */
-    ''
-      if [[ "$copyToWeb" == "true" ]]; then
-        ${webSetupCode}
-        echo "$finalResult" | jq -c '.' > "
${webPath}/${structuredOutput}.json"
-        echo "${webMessage}: ${webPath}/${s
tructuredOutput}.json"
-      else
-        echo "$finalResult" | jq -c '.' > "
${structuredOutput}.json"
-        echo "Results written to: ${structu
redOutput}.json"
-      fi
-    '';
+  /*
+  bash
+  */
+  ''
+    if [[ "$copyToWeb" == "true" ]]; then
+      ${webSetupCode}
+      echo "$finalResult" | jq -c '.' > "${
webPath}/${structuredOutput}.json"
+      echo "${webMessage}: ${webPath}/${str
ucturedOutput}.json"
+    else
+      echo "$finalResult" | jq -c '.' > "${
structuredOutput}.json"
+      echo "Results written to: ${structure
dOutput}.json"
+    fi
+  '';
 in {
   inherit displayDPSRankings setupRankingsD
irs setupComparisonDirs copySimulationResult
s setupWebDataDirs findRepoRoot parseArgsAnd
Env conditionalOutput;
 }
 

diff --git a/nix/pkgs/default.nix b/nix/pkgs/default.nix
index c6d9584..33fe4fc 100644
--- a/nix/pkgs/default.nix
+++ b/nix/pkgs/default.nix
@@ -14,13 +14,13 @@
   }: let
     inherit (pkgs) callPackage;
     inherit (inputs'.wowsims.packages) wowsimcli;
-    
+
     # Convert simulation data to packages
     simulationPackages = lib.mapAttrs (name: sim: sim.script) (simulation.generat
eMassSimulations pkgs);
     racePackages = lib.mapAttrs (name: sim: sim.script) (simulation.generateRaceC
omparisons pkgs);
     trinketPackages = lib.mapAttrs (name: sim: sim.script) (simulation.generateTr
inketComparisons pkgs);
   in {
-    packages = 
+    packages =
       simulationPackages
       // racePackages
       // trinketPackages

diff --git a/nix/pkgs/default.nix b/nix/pkgs
/default.nix
index c6d9584..33fe4fc 100644
--- a/nix/pkgs/default.nix
+++ b/nix/pkgs/default.nix
@@ -14,13 +14,13 @@
   }: let
     inherit (pkgs) callPackage;
     inherit (inputs'.wowsims.packages) wows
imcli;
-    
+
     # Convert simulation data to packages
     simulationPackages = lib.mapAttrs (name
: sim: sim.script) (simulation.generateMassS
imulations pkgs);
     racePackages = lib.mapAttrs (name: sim:
 sim.script) (simulation.generateRaceCompari
sons pkgs);
     trinketPackages = lib.mapAttrs (name: s
im: sim.script) (simulation.generateTrinketC
omparisons pkgs);
   in {
-    packages = 
+    packages =
       simulationPackages
       // racePackages
       // trinketPackages
 

diff --git a/nix/simulation/config.nix b/nix/simulation/config.nix
index 8178f23..9b99cad 100644
--- a/nix/simulation/config.nix
+++ b/nix/simulation/config.nix
@@ -255,4 +255,3 @@
     }
   ];
 }
-

diff --git a/nix/simulation/config.nix b/nix
/simulation/config.nix
index 8178f23..9b99cad 100644
--- a/nix/simulation/config.nix
+++ b/nix/simulation/config.nix
@@ -255,4 +255,3 @@
     }
   ];
 }
-
 

diff --git a/nix/simulation/default.nix b/nix/simulation/default.nix
index 865e0ed..1c2283d 100644
--- a/nix/simulation/default.nix
+++ b/nix/simulation/default.nix
@@ -89,7 +89,8 @@
   # Function to generate test group simulation with pkgs
   generateTestGroupSim = pkgs: let
     testGroupSim = import ./mkTestGroupSim.nix {inherit lib pkgs classes encounte
r buffs debuffs inputs;};
-  in testGroupSim.mkTestGroupScript;
+  in
+    testGroupSim.mkTestGroupScript;
 
   # Function to generate all simulations script with pkgs
   generateAllSimulationsScript = pkgs: let
@@ -144,10 +145,10 @@
   simulation = {
     # Generation functions that take pkgs as parameter
     inherit generateMassSimulations generateRaceComparisons generateTrinketCompar
isons generateAllSimulationsScript generateTestGroupSim;
-    
+
     # Configuration and utilities
     inherit config generateScenarios scenarios;
-    
+
     # Helper functions
     inherit makeMassSimName;
   };

diff --git a/nix/simulation/default.nix b/ni
x/simulation/default.nix
index 865e0ed..1c2283d 100644
--- a/nix/simulation/default.nix
+++ b/nix/simulation/default.nix
@@ -89,7 +89,8 @@
   # Function to generate test group simulat
ion with pkgs
   generateTestGroupSim = pkgs: let
     testGroupSim = import ./mkTestGroupSim.
nix {inherit lib pkgs classes encounter buff
s debuffs inputs;};
-  in testGroupSim.mkTestGroupScript;
+  in
+    testGroupSim.mkTestGroupScript;
 
   # Function to generate all simulations sc
ript with pkgs
   generateAllSimulationsScript = pkgs: let
@@ -144,10 +145,10 @@
   simulation = {
     # Generation functions that take pkgs a
s parameter
     inherit generateMassSimulations generat
eRaceComparisons generateTrinketComparisons 
generateAllSimulationsScript generateTestGro
upSim;
-    
+
     # Configuration and utilities
     inherit config generateScenarios scenar
ios;
-    
+
     # Helper functions
     inherit makeMassSimName;
   };
 

diff --git a/nix/simulation/mkTrinketComparison.nix b/nix/simulation/mkTrinketComp
arison.nix
index 98fccee..f898f62 100644
--- a/nix/simulation/mkTrinketComparison.nix
+++ b/nix/simulation/mkTrinketComparison.nix
@@ -59,7 +59,7 @@
 
     # Trinket profession requirements mapping
     trinketProfessionRequirements = {
-      "75274" = "Alchemy";  # Zen Alchemist Stone
+      "75274" = "Alchemy"; # Zen Alchemist Stone
       # Add other profession-specific trinkets here as needed
     };
 
@@ -72,14 +72,16 @@
         trinketId = builtins.elemAt actualTrinketIds index;
         trinketIdStr = toString trinketId;
         requiredProfession = trinketProfessionRequirements.${trinketIdStr} or nul
l;
-        
+
         # Modify profession if trinket requires it
-        configWithProfession = 
+        configWithProfession =
           if requiredProfession != null
-          then baseConfig // {
-            equipment = gearset;
-            profession2 = requiredProfession;
-          }
+          then
+            baseConfig
+            // {
+              equipment = gearset;
+              profession2 = requiredProfession;
+            }
           else baseConfig // {equipment = gearset;};
       in {
         trinketId = trinketId;

diff --git a/nix/simulation/mkTrinketCompari
son.nix b/nix/simulation/mkTrinketComparison
.nix
index 98fccee..f898f62 100644
--- a/nix/simulation/mkTrinketComparison.nix
+++ b/nix/simulation/mkTrinketComparison.nix
@@ -59,7 +59,7 @@
 
     # Trinket profession requirements mappi
ng
     trinketProfessionRequirements = {
-      "75274" = "Alchemy";  # Zen Alchemist
 Stone
+      "75274" = "Alchemy"; # Zen Alchemist 
Stone
       # Add other profession-specific trink
ets here as needed
     };
 
@@ -72,14 +72,16 @@
         trinketId = builtins.elemAt actualT
rinketIds index;
         trinketIdStr = toString trinketId;
         requiredProfession = trinketProfess
ionRequirements.${trinketIdStr} or null;
-        
+
         # Modify profession if trinket requ
ires it
-        configWithProfession = 
+        configWithProfession =
           if requiredProfession != null
-          then baseConfig // {
-            equipment = gearset;
-            profession2 = requiredProfessio
n;
-          }
+          then
+            baseConfig
+            // {
+              equipment = gearset;
+              profession2 = requiredProfess
ion;
+            }
           else baseConfig // {equipment = g
earset;};
       in {
         trinketId = trinketId;
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET