Initial Commit

This commit is contained in:
Niklas080208
2026-02-06 15:53:49 +01:00
parent f87b3e37fd
commit 7aa5725e4d
31 changed files with 1431 additions and 0 deletions

139
.github/workflows/build-and-release.yml vendored Normal file
View File

@@ -0,0 +1,139 @@
name: Build and Release
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+*' # Trigger on version tags like 1.0.0
workflow_dispatch: # Allow manual trigger
inputs:
hotfix:
description: 'Hotfix mode - update latest release instead of creating new one'
required: false
type: boolean
default: false
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write # Required to create releases
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Make
run: |
# Make is pre-installed on Ubuntu, but ensure zip is available
sudo apt-get update
sudo apt-get install -y zip rsync
- name: Verify GitHub CLI
if: steps.get_version.outputs.hotfix == 'true'
run: |
gh --version || echo "GitHub CLI not available"
- name: Build zip package
run: make zip
- name: Get version from tag or use default
id: get_version
run: |
if [ "${{ inputs.hotfix }}" = "true" ]; then
echo "mode=hotfix" >> $GITHUB_OUTPUT
echo "hotfix=true" >> $GITHUB_OUTPUT
elif [ "${{ github.ref_type }}" = "tag" ]; then
VERSION="${{ github.ref_name }}"
IS_PRERELEASE="false"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag_name=$VERSION" >> $GITHUB_OUTPUT
echo "prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT
echo "hotfix=false" >> $GITHUB_OUTPUT
else
VERSION="dev-$(date +'%Y%m%d-%H%M%S')-${GITHUB_SHA::8}"
IS_PRERELEASE="true"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag_name=$VERSION" >> $GITHUB_OUTPUT
echo "prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT
echo "hotfix=false" >> $GITHUB_OUTPUT
fi
- name: Get latest release for hotfix
if: steps.get_version.outputs.hotfix == 'true'
id: get_latest_release
run: |
# Get the latest release (non-draft, non-prerelease)
LATEST_RELEASE=$(gh api repos/${{ github.repository }}/releases/latest --jq '.tag_name' 2>/dev/null || echo "")
if [ -z "$LATEST_RELEASE" ]; then
echo "Error: No latest release found. Cannot perform hotfix."
exit 1
fi
RELEASE_ID=$(gh api repos/${{ github.repository }}/releases/latest --jq '.id')
echo "tag_name=$LATEST_RELEASE" >> $GITHUB_OUTPUT
echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT
echo "Latest release: $LATEST_RELEASE (ID: $RELEASE_ID)"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Delete existing asset if hotfix
if: steps.get_version.outputs.hotfix == 'true'
run: |
ASSET_ID=$(gh api repos/${{ github.repository }}/releases/${{ steps.get_latest_release.outputs.release_id }}/assets --jq '.[] | select(.name == "OmniNX Downloader.zip") | .id' || echo "")
if [ -n "$ASSET_ID" ]; then
echo "Deleting existing asset (ID: $ASSET_ID)"
gh api repos/${{ github.repository }}/releases/assets/$ASSET_ID -X DELETE
echo "Waiting for asset deletion to complete..."
sleep 2
else
echo "No existing asset found"
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare release info
id: release_info
run: |
if [ "${{ inputs.hotfix }}" = "true" ]; then
echo "release_name=Release ${{ steps.get_latest_release.outputs.tag_name }} (Hotfix Update)" >> $GITHUB_OUTPUT
RELEASE_BODY="**HOTFIX UPDATE** - Updated existing release"
echo "release_body<<EOF" >> $GITHUB_OUTPUT
echo "$RELEASE_BODY" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "release_tag=${{ steps.get_latest_release.outputs.tag_name }}" >> $GITHUB_OUTPUT
echo "is_prerelease=false" >> $GITHUB_OUTPUT
else
echo "release_name=Release ${{ steps.get_version.outputs.version }}" >> $GITHUB_OUTPUT
RELEASE_BODY="Automated build of OmniNX Downloader"
echo "release_body<<EOF" >> $GITHUB_OUTPUT
echo "$RELEASE_BODY" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "release_tag=${{ steps.get_version.outputs.tag_name }}" >> $GITHUB_OUTPUT
echo "is_prerelease=${{ steps.get_version.outputs.prerelease }}" >> $GITHUB_OUTPUT
fi
- name: Create or Update Release (Normal Mode)
if: steps.get_version.outputs.hotfix != 'true'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.release_info.outputs.release_tag }}
name: ${{ steps.release_info.outputs.release_name }}
body: ${{ steps.release_info.outputs.release_body }}
draft: false
prerelease: ${{ steps.release_info.outputs.is_prerelease == 'true' }}
files: ./output/OmniNX Downloader.zip
- name: Update Release (Hotfix Mode)
if: steps.get_version.outputs.hotfix == 'true'
run: |
# Update release body
gh release edit ${{ steps.get_latest_release.outputs.tag_name }} \
--title "${{ steps.release_info.outputs.release_name }}" \
--notes "${{ steps.release_info.outputs.release_body }}"
# Upload new asset
gh release upload ${{ steps.get_latest_release.outputs.tag_name }} \
"./output/OmniNX Downloader.zip" \
--clobber
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,46 @@
name: Generate Release Files
on:
schedule:
# Run daily at 00:00 UTC
- cron: '0 0 * * *'
workflow_dispatch: # Allow manual trigger
jobs:
generate-releases:
runs-on: ubuntu-latest
permissions:
contents: write # Required to commit and push changes
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Generate release files
env:
GITHUB_TOKEN: ${{ secrets.GH_API_TOKEN }}
run: python3 generate_release_files.py
- name: Check for changes
id: verify-changed-files
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "changed=true" >> $GITHUB_OUTPUT
else
echo "changed=false" >> $GITHUB_OUTPUT
fi
- name: Commit and push changes
if: steps.verify-changed-files.outputs.changed == 'true'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add "include/*/RELEASE_*.ini"
git commit -m "chore: update release files [skip ci]"
git push

23
Makefile Normal file
View File

@@ -0,0 +1,23 @@
.PHONY: zip clean
zip: "./output/OmniNX Downloader.zip"
"./output/OmniNX Downloader.zip":
@echo "Creating OmniNX Downloader.zip..."
@mkdir -p output
@rm -rf "output/OmniNX Downloader"
@mkdir -p "output/OmniNX Downloader"
@cp package.ini "output/OmniNX Downloader/"
@rsync -av --exclude='RELEASE*.ini' --exclude='*.pyc' --exclude='__pycache__' --exclude='.DS_Store' include/ "output/OmniNX Downloader/include/"
@cd output && zip -r "OmniNX Downloader.zip" "OmniNX Downloader" \
-x "*.pyc" \
-x "__pycache__/*" \
-x ".DS_Store" \
-x "*/.DS_Store"
@rm -rf "output/OmniNX Downloader"
@echo "✓ Created output/OmniNX Downloader.zip"
clean:
@rm -f "output/OmniNX Downloader.zip"
@rm -rf "output/OmniNX Downloader"
@echo "✓ Cleaned up output/OmniNX Downloader.zip"

245
generate_release_files.py Executable file
View File

@@ -0,0 +1,245 @@
#!/usr/bin/env python3
"""
Generate RELEASE_X.ini files by fetching latest GitHub release tags
for sysmodules, overlays, apps, and emulatoren.
"""
import re
import json
import os
import time
import urllib.request
import urllib.error
import configparser
from pathlib import Path
from typing import Dict, List, Tuple, Optional
# GitHub API base URL
GITHUB_API = "https://api.github.com/repos"
# Get GitHub token from environment variable if available
GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN', '')
def extract_repo_from_url(url: str) -> Optional[Tuple[str, str]]:
"""Extract owner and repo from GitHub API URL."""
# Pattern: https://api.github.com/repos/owner/repo/releases?...
match = re.search(r'/repos/([^/]+)/([^/]+)/releases', url)
if match:
return (match.group(1), match.group(2))
return None
def get_latest_tag(owner: str, repo: str) -> Optional[str]:
"""Fetch the latest release tag from GitHub API."""
url = f"{GITHUB_API}/{owner}/{repo}/releases?per_page=1"
try:
req = urllib.request.Request(url)
req.add_header('User-Agent', 'Release-Tag-Fetcher/1.0')
if GITHUB_TOKEN:
req.add_header('Authorization', f'token {GITHUB_TOKEN}')
with urllib.request.urlopen(req, timeout=10) as response:
releases = json.loads(response.read().decode('utf-8'))
if releases and len(releases) > 0:
return releases[0].get('tag_name', releases[0].get('name', ''))
except urllib.error.HTTPError as e:
if e.code == 403:
print(f" Rate limit exceeded. Set GITHUB_TOKEN env var for higher limits.")
elif e.code == 404:
print(f" Repository not found")
else:
print(f" HTTP {e.code}: {e.reason}")
except Exception as e:
print(f" Error: {e}")
return None
def parse_ini_file(file_path: Path) -> List[Dict[str, str]]:
"""Parse .ini file and extract entries with GitHub API URLs."""
entries = []
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# Find all section headers
sections = re.finditer(r'^\[([^\]]+)\]', content, re.MULTILINE)
for section_match in sections:
section_name = section_match.group(1)
section_start = section_match.end()
# Find next section or end of file
next_section = re.search(r'^\[', content[section_start:], re.MULTILINE)
section_end = section_start + (next_section.start() if next_section else len(content[section_start:]))
section_content = content[section_start:section_end]
# Look for GitHub API URLs in this section
github_urls = re.findall(r'https://api\.github\.com/repos/[^\s]+', section_content)
if github_urls:
repo_info = extract_repo_from_url(github_urls[0])
if repo_info:
entries.append({
'name': section_name,
'owner': repo_info[0],
'repo': repo_info[1],
'url': github_urls[0]
})
return entries
def generate_release_ini(category: str, entries: List[Dict[str, str]], output_path: Path):
"""Generate RELEASE_X.ini file for a category."""
print(f"\nGenerating {output_path.name}...")
print(f"Found {len(entries)} entries")
# Create config parser
config = configparser.ConfigParser()
config.optionxform = str # Preserve case
# Create section based on category
if category == 'sysmodules':
section_name = 'Versions'
elif category == 'overlays':
section_name = 'Versions'
elif category == 'apps':
section_name = 'Versions'
elif category == 'emulatoren':
section_name = 'Versions'
else:
section_name = 'Release Info'
config.add_section(section_name)
# Monitoring statistics
success_count = 0
failure_count = 0
failed_entries = []
# Fetch tags for each entry
for i, entry in enumerate(entries):
# Add delay between requests to avoid rate limiting (except for first request)
if i > 0:
time.sleep(0.5) # 500ms delay between requests
print(f" Fetching {entry['name']} ({entry['owner']}/{entry['repo']})...", end=' ')
tag = get_latest_tag(entry['owner'], entry['repo'])
if tag:
# Remove 'v' prefix if present for cleaner version
clean_tag = tag.lstrip('v')
# Truncate very long version strings (e.g., commit hashes) to max 30 chars for Switch display
if len(clean_tag) > 30:
# Try to extract meaningful part (e.g., commit hash from "weekly-canary-release-25f89d3...")
if '-' in clean_tag:
parts = clean_tag.split('-')
# If it looks like a commit hash at the end, take last part and truncate to 7 chars
if len(parts) > 1 and len(parts[-1]) > 20:
clean_tag = f"{parts[-2]}-{parts[-1][:7]}" if len(parts) > 1 else parts[-1][:7]
else:
clean_tag = clean_tag[:30]
else:
clean_tag = clean_tag[:30]
config.set(section_name, entry['name'], clean_tag)
success_count += 1
print(f"{clean_tag}")
else:
failure_count += 1
failed_entries.append(f"{entry['name']} ({entry['owner']}/{entry['repo']})")
print("✗ Failed")
# Write to file
with open(output_path, 'w', encoding='utf-8') as f:
config.write(f, space_around_delimiters=False)
# Print monitoring summary
print(f"\n✓ Created {output_path}")
print(f" Success: {success_count}/{len(entries)}")
if failure_count > 0:
print(f" Failed: {failure_count}/{len(entries)}")
for failed in failed_entries:
print(f" - {failed}")
return {
'category': category,
'total': len(entries),
'success': success_count,
'failed': failure_count,
'failed_entries': failed_entries
}
def main():
"""Main function."""
base_path = Path(__file__).parent
include_path = base_path / "include"
print("GitHub Release Tag Fetcher")
if GITHUB_TOKEN:
print("✓ Using GitHub token (higher rate limit)")
else:
print("⚠ No GitHub token found. Set GITHUB_TOKEN env var for higher rate limits.")
print("=" * 50)
# Track all results for final summary
all_results = []
# Process sysmodules
sysmodules_path = include_path / "sysmodules" / "sysmodules.ini"
if sysmodules_path.exists():
entries = parse_ini_file(sysmodules_path)
if entries:
output_path = include_path / "sysmodules" / "RELEASE_SM.ini"
result = generate_release_ini('sysmodules', entries, output_path)
all_results.append(result)
# Process overlays
overlays_path = include_path / "overlays" / "overlays.ini"
if overlays_path.exists():
entries = parse_ini_file(overlays_path)
if entries:
output_path = include_path / "overlays" / "RELEASE_OV.ini"
result = generate_release_ini('overlays', entries, output_path)
all_results.append(result)
# Process apps
apps_path = include_path / "apps" / "apps.ini"
if apps_path.exists():
entries = parse_ini_file(apps_path)
if entries:
output_path = include_path / "apps" / "RELEASE_APPS.ini"
result = generate_release_ini('apps', entries, output_path)
all_results.append(result)
# Process emulatoren
emulatoren_path = include_path / "emulatoren" / "emulatoren.ini"
if emulatoren_path.exists():
entries = parse_ini_file(emulatoren_path)
if entries:
output_path = include_path / "emulatoren" / "RELEASE_EM.ini"
result = generate_release_ini('emulatoren', entries, output_path)
all_results.append(result)
# Print final monitoring summary
print("\n" + "=" * 50)
print("FINAL SUMMARY")
print("=" * 50)
total_entries = sum(r['total'] for r in all_results)
total_success = sum(r['success'] for r in all_results)
total_failed = sum(r['failed'] for r in all_results)
print(f"Total entries processed: {total_entries}")
print(f"Successfully fetched: {total_success} ({total_success/total_entries*100:.1f}%)" if total_entries > 0 else "Successfully fetched: 0")
print(f"Failed: {total_failed} ({total_failed/total_entries*100:.1f}%)" if total_entries > 0 else "Failed: 0")
# List all failed entries by category
if total_failed > 0:
print("\nFailed entries by category:")
for result in all_results:
if result['failed'] > 0:
print(f" {result['category']}:")
for failed in result['failed_entries']:
print(f" - {failed}")
print("\n" + "=" * 50)
print("Done!")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,23 @@
[Versions]
Amiibo Generator=2.2.1
Amiigo=2.4.1
DBI_EN=849
DBI_DE=849
Chiaki_NG=release-af569df
DNS_mitm Tester=1.0.4
Hekate-Toolbox=4.0.4
JKSV=12/02/2025
Moonlight Switch=1.3.4
Neumann=0.0.30-2
NX-Activity-Log=1.4.0
Sphaira=1.0.0
ThemezerNX=2.0.3
emuiibo=1.1.2
Tinwoo=1.0.28
Goldleaf=1.2.0
linkalho=2.0.2
nxmp=0.9.3
aio-switch-updater=2.23.3
switchfin=0.8.3
NXThemesInstaller=4.8.3

194
include/apps/apps.ini Normal file
View File

@@ -0,0 +1,194 @@
[Homebrew Apps]
[Amiibo Generator]
try:
download https://api.github.com/repos/yusufakg/AmiiboGenerator/releases?per_page=1 /config/ultrahand/downloads/amiibo-generator-api.json
json_file /config/ultrahand/downloads/amiibo-generator-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/amiibo-generator.nro
mv /config/ultrahand/downloads/amiibo-generator.nro /switch/AmiiboGenerator/
delete /config/ultrahand/downloads/amiibo-generator-api.json
[Amiigo]
try:
download https://api.github.com/repos/CompSciOrBust/Amiigo/releases?per_page=1 /config/ultrahand/downloads/amiigo-api.json
json_file /config/ultrahand/downloads/amiigo-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/amiigo.nro
mv /config/ultrahand/downloads/amiigo.nro /switch/Amiigo/
delete /config/ultrahand/downloads/amiigo-api.json
[DBI_EN]
try:
download https://git.niklascfw.de/api/v1/repos/OmniNX/DBI_EN/releases?limit=1 /config/ultrahand/downloads/dbi-api.json
json_file /config/ultrahand/downloads/dbi-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dbi.zip
unzip /config/ultrahand/downloads/dbi.zip /
delete /config/ultrahand/downloads/dbi-api.json
delete /config/ultrahand/downloads/dbi.zip
[DBI_DE]
try:
download https://git.niklascfw.de/api/v1/repos/OmniNX/DBI_DE/releases?limit=1 /config/ultrahand/downloads/dbi-api.json
json_file /config/ultrahand/downloads/dbi-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dbi.zip
unzip /config/ultrahand/downloads/dbi.zip /
delete /config/ultrahand/downloads/dbi-api.json
delete /config/ultrahand/downloads/dbi.zip
[Chiaki_NG]
try:
download https://api.github.com/repos/streetpea/chiaki-ng/releases?per_page=1 /config/ultrahand/downloads/chiaki-api.json
json_file /config/ultrahand/downloads/chiaki-api.json
download {json_file(0,assets,8,browser_download_url)} /config/ultrahand/downloads/chiaki.nro
mv /config/ultrahand/downloads/chiaki.nro /switch/Chiaki/
delete /config/ultrahand/downloads/chiaki-api.json
[DNS_mitm Tester]
try:
download https://api.github.com/repos/meganukebmp/Switch_90DNS_tester/releases?per_page=1 /config/ultrahand/downloads/dns-tester-api.json
json_file /config/ultrahand/downloads/dns-tester-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dns-tester.nro
mv /config/ultrahand/downloads/dns-tester.nro /switch/DNS-Block_Tester/
delete /config/ultrahand/downloads/dns-tester-api.json
[Hekate-Toolbox]
try:
download https://api.github.com/repos/WerWolv/Hekate-Toolbox/releases?per_page=1 /config/ultrahand/downloads/hekate-toolbox-api.json
json_file /config/ultrahand/downloads/hekate-toolbox-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/hekate-toolbox.nro
mv /config/ultrahand/downloads/hekate-toolbox.nro /switch/Hekate-Toolbox/
delete /config/ultrahand/downloads/hekate-toolbox-api.json
[JKSV]
try:
download https://api.github.com/repos/J-D-K/JKSV/releases?per_page=1 /config/ultrahand/downloads/jksv-api.json
json_file /config/ultrahand/downloads/jksv-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/jksv.nro
mv /config/ultrahand/downloads/jksv.nro /switch/JKSV/
delete /config/ultrahand/downloads/jksv-api.json
[Moonlight Switch]
try:
download https://api.github.com/repos/XITRIX/Moonlight-Switch/releases?per_page=1 /config/ultrahand/downloads/moonlight-api.json
json_file /config/ultrahand/downloads/moonlight-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/moonlight.nro
mv /config/ultrahand/downloads/moonlight.nro /switch/Moonlight Switch/
delete /config/ultrahand/downloads/moonlight-api.json
[Neumann]
try:
download https://api.github.com/repos/turtle-insect/Neumann/releases?per_page=1 /config/ultrahand/downloads/neumann-api.json
json_file /config/ultrahand/downloads/neumann-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/neumann.nro
mv /config/ultrahand/downloads/neumann.nro /switch/Neumann/
delete /config/ultrahand/downloads/neumann-api.json
[NX-Activity-Log]
try:
download https://api.github.com/repos/tallbl0nde/NX-Activity-Log/releases?per_page=1 /config/ultrahand/downloads/nx-activity-log-api.json
json_file /config/ultrahand/downloads/nx-activity-log-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nx-activity-log.nro
mv /config/ultrahand/downloads/nx-activity-log.nro /switch/NX-Activity-Log/
delete /config/ultrahand/downloads/nx-activity-log-api.json
[Sphaira]
try:
download https://api.github.com/repos/ITotalJustice/sphaira/releases?per_page=1 /config/ultrahand/downloads/sphaira-api.json
json_file /config/ultrahand/downloads/sphaira-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sphaira.zip
unzip /config/ultrahand/downloads/sphaira.zip /
delete /config/ultrahand/downloads/sphaira-api.json
delete /config/ultrahand/downloads/sphaira.zip
[ThemezerNX]
try:
download https://api.github.com/repos/suchmememanyskill/themezer-nx/releases?per_page=1 /config/ultrahand/downloads/themezer-api.json
json_file /config/ultrahand/downloads/themezer-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/themezer.nro
mv /config/ultrahand/downloads/themezer.nro /switch/ThemezerNX/
cp /Backup/SB/Icongrabber/config.json /config/Icongrabber/config.json
delete /config/ultrahand/downloads/themezer-api.json
[emuiibo]
try:
download https://api.github.com/repos/XorTroll/emuiibo/releases?per_page=1 /config/ultrahand/downloads/emuiibo-api.json
json_file /config/ultrahand/downloads/emuiibo-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/emuiibo.nro
mv /config/ultrahand/downloads/emuiibo.nro /switch/emuiibo/
delete /config/ultrahand/downloads/emuiibo-api.json
[Tinwoo]
try:
download https://api.github.com/repos/mrdude2478/Tinwoo-Release/releases?per_page=1 /config/ultrahand/downloads/tinwoo-api.json
json_file /config/ultrahand/downloads/tinwoo-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/tinwoo.nro
mv /config/ultrahand/downloads/tinwoo.nro /switch/Tinwoo/
delete /config/ultrahand/downloads/tinwoo-api.json
[Goldleaf]
try:
download https://api.github.com/repos/XorTroll/Goldleaf/releases?per_page=1 /config/ultrahand/downloads/goldleaf-api.json
json_file /config/ultrahand/downloads/goldleaf-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/goldleaf.zip
unzip /config/ultrahand/downloads/goldleaf.zip /
delete /config/ultrahand/downloads/goldleaf-api.json
delete /config/ultrahand/downloads/goldleaf.zip
[linkalho]
try:
download https://api.github.com/repos/impeeza/linkalho/releases?per_page=1 /config/ultrahand/downloads/linkalho-api.json
json_file /config/ultrahand/downloads/linkalho-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/linkalho.nro
mv /config/ultrahand/downloads/linkalho.nro /switch/linkalho/
delete /config/ultrahand/downloads/linkalho-api.json
[nxmp]
try:
download https://api.github.com/repos/proconsule/nxmp/releases?per_page=1 /config/ultrahand/downloads/nxmp-api.json
json_file /config/ultrahand/downloads/nxmp-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nxmp.nro
mv /config/ultrahand/downloads/nxmp.nro /switch/nxmp/
delete /config/ultrahand/downloads/nxmp-api.json
[aio-switch-updater]
try:
download https://api.github.com/repos/HamletDuFromage/aio-switch-updater/releases?per_page=1 /config/ultrahand/downloads/aio-switch-updater-api.json
json_file /config/ultrahand/downloads/aio-switch-updater-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/aio-switch-updater.nro
mv /config/ultrahand/downloads/aio-switch-updater.nro /switch/aio-switch-updater/
delete /config/ultrahand/downloads/aio-switch-updater-api.json
[switchfin]
try:
download https://api.github.com/repos/dragonflylee/switchfin/releases?per_page=1 /config/ultrahand/downloads/switchfin-api.json
json_file /config/ultrahand/downloads/switchfin-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/switchfin.nro
mv /config/ultrahand/downloads/switchfin.nro /switch/switchfin/
delete /config/ultrahand/downloads/switchfin-api.json
[NXThemesInstaller]
try:
download https://api.github.com/repos/exelix11/SwitchThemeInjector/releases?per_page=1 /config/ultrahand/downloads/switchthemeinjector-api.json
json_file /config/ultrahand/downloads/switchthemeinjector-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/switchthemeinjector.nro
mv /config/ultrahand/downloads/switchthemeinjector.nro /switch/NXThemesInstaller/
delete /config/ultrahand/downloads/switchthemeinjector-api.json
[Patched Apps]
[Crunchyroll Patched]
try:
download 'https://cdn.niklascfw.de/switch/pack/apps/Crunchyroll_Patched.zip' '/config/ultrahand/downloads/Crunchyroll_Patched.zip'
unzip '/config/ultrahand/downloads/Crunchyroll_Patched.zip' '/Patched Apps/'
delete '/config/ultrahand/downloads/Crunchyroll_Patched.zip'
[YouTube Patched]
try:
download 'https://cdn.niklascfw.de/switch/pack/apps/YouTube_Patched.zip' '/config/ultrahand/downloads/YouTube_Patched.zip'
unzip '/config/ultrahand/downloads/YouTube_Patched.zip' '/Patched Apps/'
delete '/config/ultrahand/downloads/YouTube_Patched.zip'
[gap]
;mode=table
;background=false
;gap=30

View File

@@ -0,0 +1,48 @@
[boot]
set-ini-val ./include/apps/config.ini 'Amiibo Generator' 'footer' ''
set-ini-val ./include/apps/config.ini Amiigo 'footer' ''
set-ini-val ./include/apps/config.ini DBI_EN 'footer' ''
set-ini-val ./include/apps/config.ini DBI_DE 'footer' ''
set-ini-val ./include/apps/config.ini Chiaki_NG 'footer' ''
set-ini-val ./include/apps/config.ini 'DNS_mitm Tester' 'footer' ''
set-ini-val ./include/apps/config.ini Hekate-Toolbox 'footer' ''
set-ini-val ./include/apps/config.ini JKSV 'footer' ''
set-ini-val ./include/apps/config.ini 'Moonlight Switch' 'footer' ''
set-ini-val ./include/apps/config.ini Neumann 'footer' ''
set-ini-val ./include/apps/config.ini 'NX-Activity-Log' 'footer' ''
set-ini-val ./include/apps/config.ini RetroArch 'footer' ''
set-ini-val ./include/apps/config.ini Sphaira 'footer' ''
set-ini-val ./include/apps/config.ini ThemezerNX 'footer' ''
set-ini-val ./include/apps/config.ini emuiibo 'footer' ''
set-ini-val ./include/apps/config.ini Tinwoo 'footer' ''
set-ini-val ./include/apps/config.ini Goldleaf 'footer' ''
set-ini-val ./include/apps/config.ini linkalho 'footer' ''
set-ini-val ./include/apps/config.ini nxmp 'footer' ''
set-ini-val ./include/apps/config.ini aio-switch-updater 'footer' ''
set-ini-val ./include/apps/config.ini switchfin 'footer' ''
set-ini-val ./include/apps/config.ini NXThemesInstaller 'footer' ''
download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/apps/RELEASE_APPS.ini ./include/apps/RELEASE_APPS.ini
ini_file ./include/apps/RELEASE_APPS.ini
set-ini-val ./include/apps/config.ini 'Amiibo Generator' 'footer' '{ini_file(Versions,Amiibo Generator)}'
set-ini-val ./include/apps/config.ini Amiigo 'footer' '{ini_file(Versions,Amiigo)}'
set-ini-val ./include/apps/config.ini DBI_EN 'footer' '{ini_file(Versions,DBI_EN)}'
set-ini-val ./include/apps/config.ini DBI_DE 'footer' '{ini_file(Versions,DBI_DE)}'
set-ini-val ./include/apps/config.ini Chiaki_NG 'footer' '{ini_file(Versions,Chiaki_NG)}'
set-ini-val ./include/apps/config.ini 'DNS_mitm Tester' 'footer' '{ini_file(Versions,DNS_mitm Tester)}'
set-ini-val ./include/apps/config.ini Hekate-Toolbox 'footer' '{ini_file(Versions,Hekate-Toolbox)}'
set-ini-val ./include/apps/config.ini JKSV 'footer' '{ini_file(Versions,JKSV)}'
set-ini-val ./include/apps/config.ini 'Moonlight Switch' 'footer' '{ini_file(Versions,Moonlight Switch)}'
set-ini-val ./include/apps/config.ini Neumann 'footer' '{ini_file(Versions,Neumann)}'
set-ini-val ./include/apps/config.ini 'NX-Activity-Log' 'footer' '{ini_file(Versions,NX-Activity-Log)}'
set-ini-val ./include/apps/config.ini RetroArch 'footer' '{ini_file(Versions,RetroArch)}'
set-ini-val ./include/apps/config.ini Sphaira 'footer' '{ini_file(Versions,Sphaira)}'
set-ini-val ./include/apps/config.ini ThemezerNX 'footer' '{ini_file(Versions,ThemezerNX)}'
set-ini-val ./include/apps/config.ini emuiibo 'footer' '{ini_file(Versions,emuiibo)}'
set-ini-val ./include/apps/config.ini Tinwoo 'footer' '{ini_file(Versions,Tinwoo)}'
set-ini-val ./include/apps/config.ini Goldleaf 'footer' '{ini_file(Versions,Goldleaf)}'
set-ini-val ./include/apps/config.ini linkalho 'footer' '{ini_file(Versions,linkalho)}'
set-ini-val ./include/apps/config.ini nxmp 'footer' '{ini_file(Versions,nxmp)}'
set-ini-val ./include/apps/config.ini aio-switch-updater 'footer' '{ini_file(Versions,aio-switch-updater)}'
set-ini-val ./include/apps/config.ini switchfin 'footer' '{ini_file(Versions,switchfin)}'
set-ini-val ./include/apps/config.ini NXThemesInstaller 'footer' '{ini_file(Versions,NXThemesInstaller)}'

0
include/apps/config.ini Normal file
View File

View File

@@ -0,0 +1,4 @@
[Versions]
melonDS=7.2.1
PPSSPP-NX=1.19.3

View File

@@ -0,0 +1,8 @@
[boot]
set-ini-val ./include/emulatoren/config.ini melonDS 'footer' ''
set-ini-val ./include/emulatoren/config.ini PPSSPP-NX 'footer' ''
download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/emulatoren/RELEASE_EM.ini ./include/emulatoren/RELEASE_EM.ini
ini_file ./include/emulatoren/RELEASE_EM.ini
set-ini-val ./include/emulatoren/config.ini melonDS 'footer' '{ini_file(Versions,melonDS)}'
set-ini-val ./include/emulatoren/config.ini PPSSPP-NX 'footer' '{ini_file(Versions,PPSSPP-NX)}'

View File

View File

@@ -0,0 +1,35 @@
;show_widget=true
[Emulatoren]
[Lakka - 6.1.0]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/lakka.zip' '/config/ultrahand/downloads/lakka.zip'
unzip '/config/ultrahand/downloads/lakka.zip' '/'
delete '/config/ultrahand/downloads/lakka.zip'
[RetroArch - 1.22.2]
try:
download 'https://cdn.niklascfw.de/switch/pack/apps/RetroArch_1.22.2.zip' '/config/ultrahand/downloads/RetroArch_1.22.2.zip'
unzip '/config/ultrahand/downloads/RetroArch_1.22.2.zip' '/'
delete '/config/ultrahand/downloads/RetroArch_1.22.2.zip'
[melonDS]
try:
download https://api.github.com/repos/ArcDelta/melonDS/releases?per_page=1 /config/ultrahand/downloads/melonds-api.json
json_file /config/ultrahand/downloads/melonds-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/melonds.nro
mv /config/ultrahand/downloads/melonds.nro /switch/melonDS/
delete /config/ultrahand/downloads/melonds-api.json
[PPSSPP-NX]
try:
download https://git.niklascfw.de/api/v1/repos/OmniNX/PPSSPP-NX/releases?limit=1 /config/ultrahand/downloads/ppsspp-nx-api.json
json_file /config/ultrahand/downloads/ppsspp-nx-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/ppsspp-nx.zip
unzip /config/ultrahand/downloads/ppsspp-nx.zip '/switch/'
delete /config/ultrahand/downloads/ppsspp-nx-api.json
delete /config/ultrahand/downloads/ppsspp-nx.zip

20
include/os/android.ini Normal file
View File

@@ -0,0 +1,20 @@
[Android]
[Android TAB - 15]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/Android_Tab.zip' '/config/ultrahand/downloads/Android_Tab.zip'
unzip '/config/ultrahand/downloads/Android_Tab.zip' '/'
delete '/config/ultrahand/downloads/Android_Tab.zip'
[Android TV - 15]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/Android_TV.zip' '/config/ultrahand/downloads/Android_TV.zip'
unzip '/config/ultrahand/downloads/Android_TV.zip' '/'
delete '/config/ultrahand/downloads/Android_TV.zip'
[CrDroid - 15]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/CrDroid.zip' '/config/ultrahand/downloads/CrDroid.zip'
unzip '/config/ultrahand/downloads/CrDroid.zip' '/'
delete '/config/ultrahand/downloads/CrDroid.zip'

View File

@@ -0,0 +1,79 @@
[Hekate INIs]
[*SD Installation]
[Android_LineageOS.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Android_LineageOS.ini' '/bootloader/ini/'
[CrDroid.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/CrDroid.ini' '/bootloader/ini/'
[Fedora.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Fedora.ini' '/bootloader/ini/'
[Lakka.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Lakka.ini' '/bootloader/ini/'
[Ubuntu_Bionic.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Bionic.ini' '/bootloader/ini/'
[Ubuntu_Jammy.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Jammy.ini' '/bootloader/ini/'
[Ubuntu_Noble.ini - SD]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Jammy_eMMC.ini' '/bootloader/ini/'
[Stock_CFW.ini - SysMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Stock_CFW.ini' '/bootloader/ini/'
[Stock_CFW_8GB.ini - SysMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Stock_CFW_8GB.ini' '/bootloader/ini/'
[gap]
;mode=table
;background=false
;gap=30
[*eMMC Installation]
[Android_LineageOS.ini - eMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Android_LineageOS_eMMC.ini' '/bootloader/ini/'
delete '/bootloader/ini/Android_LineageOS.ini'
[CrDroid.ini - eMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/CrDroid_eMMC.ini' '/bootloader/ini/'
delete '/bootloader/ini/CrDroid.ini'
[Fedora.ini - eMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Fedora_eMMC.ini' '/bootloader/ini/'
delete '/bootloader/ini/Fedora.ini'
[Ubuntu_Bionic.ini - eMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Bionic_eMMC.ini' '/bootloader/ini/'
delete '/bootloader/ini/Ubuntu_Bionic.ini'
[Ubuntu_Jammy.ini - eMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Jammy_eMMC.ini' '/bootloader/ini/'
delete '/bootloader/ini/Ubuntu_Jammy.ini'
[Ubuntu_Noble.ini - eMMC]
try:
download 'https://cdn.niklascfw.de/switch/pack/inis/Ubuntu_Noble_eMMC.ini' '/bootloader/ini/'
delete '/bootloader/ini/Ubuntu_Noble.ini'
[gap]
;mode=table
;background=false
;gap=30

26
include/os/linux.ini Normal file
View File

@@ -0,0 +1,26 @@
[Linux]
[Fedora - 42]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/Fedora.zip' '/config/ultrahand/downloads/Fedora.zip'
unzip '/config/ultrahand/downloads/Fedora.zip' '/'
delete '/config/ultrahand/downloads/Fedora.zip'
[Ubuntu - Bionic]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/Ubuntu_Bionic.zip' '/config/ultrahand/downloads/Ubuntu_Bionic.zip'
unzip '/config/ultrahand/downloads/Ubuntu_Bionic.zip' '/'
delete '/config/ultrahand/downloads/Ubuntu_Bionic.zip'
[Ubuntu - Jammy]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/Ubuntu_Jammy.zip' '/config/ultrahand/downloads/Ubuntu_Jammy.zip'
unzip '/config/ultrahand/downloads/Ubuntu_Jammy.zip' '/'
delete '/config/ultrahand/downloads/Ubuntu_Jammy.zip'
[Ubuntu - Noble]
try:
download 'https://cdn.niklascfw.de/switch/pack/os/Ubuntu_Noble.zip' '/config/ultrahand/downloads/Ubuntu_Noble.zip'
unzip '/config/ultrahand/downloads/Ubuntu_Noble.zip' '/'
delete '/config/ultrahand/downloads/Ubuntu_Noble.zip'

16
include/os/os.ini Normal file
View File

@@ -0,0 +1,16 @@
;show_widget=true
[Betriebssysteme]
[*Android]
;mode=forwarder
package_source ./android.ini
[*Linux]
;mode=forwarder
package_source ./linux.ini
[*Hekate INIs]
;mode=forwarder
package_source ./hekate_inis.ini

View File

@@ -0,0 +1,13 @@
[Versions]
DNS-MITM_Manager=0.2.0
EdiZon-Overlay=1.0.14
FPSLocker=3.2.4
Fizeau=2.8.2
NXFanControl+=1.0.5+
QuickNTP=1.6.0
ReverseNX-RT=2.2.1
Sysmodules=1.4.7
Sys-Clk=2.0.1+r21
SysDVR=1.0.14
Status-Monitor-Overlay=1.3.2+r6

View File

@@ -0,0 +1,26 @@
[boot]
set-ini-val ./include/overlays/config.ini DNS-MITM_Manager 'footer' ''
set-ini-val ./include/overlays/config.ini EdiZon-Overlay 'footer' ''
set-ini-val ./include/overlays/config.ini FPSLocker 'footer' ''
set-ini-val ./include/overlays/config.ini Fizeau 'footer' ''
set-ini-val ./include/overlays/config.ini NXFanControl+ 'footer' ''
set-ini-val ./include/overlays/config.ini QuickNTP 'footer' ''
set-ini-val ./include/overlays/config.ini ReverseNX-RT 'footer' ''
set-ini-val ./include/overlays/config.ini Sysmodules 'footer' ''
set-ini-val ./include/overlays/config.ini Sys-Clk 'footer' ''
set-ini-val ./include/overlays/config.ini SysDVR 'footer' ''
set-ini-val ./include/overlays/config.ini Status-Monitor-Overlay 'footer' ''
download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/overlays/RELEASE_OV.ini ./include/overlays/RELEASE_OV.ini
ini_file ./include/overlays/RELEASE_OV.ini
set-ini-val ./include/overlays/config.ini DNS-MITM_Manager 'footer' '{ini_file(Versions,DNS-MITM_Manager)}'
set-ini-val ./include/overlays/config.ini EdiZon-Overlay 'footer' '{ini_file(Versions,EdiZon-Overlay)}'
set-ini-val ./include/overlays/config.ini FPSLocker 'footer' '{ini_file(Versions,FPSLocker)}'
set-ini-val ./include/overlays/config.ini Fizeau 'footer' '{ini_file(Versions,Fizeau)}'
set-ini-val ./include/overlays/config.ini NXFanControl+ 'footer' '{ini_file(Versions,NXFanControl+)}'
set-ini-val ./include/overlays/config.ini QuickNTP 'footer' '{ini_file(Versions,QuickNTP)}'
set-ini-val ./include/overlays/config.ini ReverseNX-RT 'footer' '{ini_file(Versions,ReverseNX-RT)}'
set-ini-val ./include/overlays/config.ini Sysmodules 'footer' '{ini_file(Versions,Sysmodules)}'
set-ini-val ./include/overlays/config.ini Sys-Clk 'footer' '{ini_file(Versions,Sys-Clk)}'
set-ini-val ./include/overlays/config.ini SysDVR 'footer' '{ini_file(Versions,SysDVR)}'
set-ini-val ./include/overlays/config.ini Status-Monitor-Overlay 'footer' '{ini_file(Versions,Status-Monitor-Overlay)}'

View File

View File

@@ -0,0 +1,99 @@
[UltraHand Overlays]
[DNS-MITM_Manager]
try:
download https://api.github.com/repos/sthetix/DNS-MITM_Manager/releases?per_page=1 /config/ultrahand/downloads/dns-mitm-api.json
json_file /config/ultrahand/downloads/dns-mitm-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/dns-mitm.zip
unzip /config/ultrahand/downloads/dns-mitm.zip /
delete /config/ultrahand/downloads/dns-mitm-api.json
delete /config/ultrahand/downloads/dns-mitm.zip
[EdiZon-Overlay]
try:
download https://api.github.com/repos/proferabg/EdiZon-Overlay/releases?per_page=1 /config/ultrahand/downloads/edizon-api.json
json_file /config/ultrahand/downloads/edizon-api.json
download {json_file(0,assets,1,browser_download_url)} /config/ultrahand/downloads/edizon.ovl
move /config/ultrahand/downloads/edizon.ovl /switch/.overlays/
delete /config/ultrahand/downloads/edizon-api.json
[FPSLocker]
try:
download https://api.github.com/repos/masagrator/FPSLocker/releases?per_page=1 /config/ultrahand/downloads/fpslocker-api.json
json_file /config/ultrahand/downloads/fpslocker-api.json
download {json_file(0,assets,1,browser_download_url)} /config/ultrahand/downloads/fpslocker.ovl
move /config/ultrahand/downloads/fpslocker.ovl /switch/.overlays/
delete /config/ultrahand/downloads/fpslocker-api.json
[Fizeau]
try:
download https://api.github.com/repos/averne/Fizeau/releases?per_page=1 /config/ultrahand/downloads/fizeau-api.json
json_file /config/ultrahand/downloads/fizeau-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/fizeau.zip
unzip /config/ultrahand/downloads/fizeau.zip /
delete /config/ultrahand/downloads/fizeau-api.json
delete /config/ultrahand/downloads/fizeau.zip
[NXFanControl+]
try:
download https://api.github.com/repos/dominatorul/NX-FanControl/releases?per_page=1 /config/ultrahand/downloads/nxfancontrol-api.json
json_file /config/ultrahand/downloads/nxfancontrol-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nxfancontrol.zip
unzip /config/ultrahand/downloads/nxfancontrol.zip /
delete /config/ultrahand/downloads/nxfancontrol-api.json
delete /config/ultrahand/downloads/nxfancontrol.zip
[QuickNTP]
try:
download https://api.github.com/repos/nedex/QuickNTP/releases?per_page=1 /config/ultrahand/downloads/quickntp-api.json
json_file /config/ultrahand/downloads/quickntp-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/quickntp.zip
unzip /config/ultrahand/downloads/quickntp.zip /
delete /config/ultrahand/downloads/quickntp-api.json
delete /config/ultrahand/downloads/quickntp.zip
[ReverseNX-RT]
try:
download https://api.github.com/repos/masagrator/ReverseNX-RT/releases?per_page=1 /config/ultrahand/downloads/reversenx-api.json
json_file /config/ultrahand/downloads/reversenx-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/reversenx.ovl
move /config/ultrahand/downloads/reversenx.ovl /switch/.overlays/
delete /config/ultrahand/downloads/reversenx-api.json
[Sysmodules]
try:
download https://api.github.com/repos/ppkantorski/ovl-sysmodules/releases?per_page=1 /config/ultrahand/downloads/sysmodules-ovl-api.json
json_file /config/ultrahand/downloads/sysmodules-ovl-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sysmodules.ovl
move /config/ultrahand/downloads/sysmodules.ovl /switch/.overlays/
delete /config/ultrahand/downloads/sysmodules-ovl-api.json
[Sys-Clk]
try:
download https://api.github.com/repos/ppkantorski/sys-clk/releases?per_page=1 /config/ultrahand/downloads/sys-clk-api.json
json_file /config/ultrahand/downloads/sys-clk-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sys-clk.ovl
move /config/ultrahand/downloads/sys-clk.ovl /switch/.overlays/
delete /config/ultrahand/downloads/sys-clk-api.json
[SysDVR]
try:
download https://api.github.com/repos/zdm65477730/sysdvr-overlay/releases?per_page=1 /config/ultrahand/downloads/sysdvr-api.json
json_file /config/ultrahand/downloads/sysdvr-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sysdvr.zip
unzip /config/ultrahand/downloads/sysdvr.zip /
delete /config/ultrahand/downloads/sysdvr-api.json
delete /config/ultrahand/downloads/sysdvr.zip
[Status-Monitor-Overlay]
try:
download https://api.github.com/repos/ppkantorski/Status-Monitor-Overlay/releases?per_page=1 /config/ultrahand/downloads/status-monitor-api.json
json_file /config/ultrahand/downloads/status-monitor-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/status-monitor.ovl
move /config/ultrahand/downloads/status-monitor.ovl /switch/.overlays/
delete /config/ultrahand/downloads/status-monitor-api.json
[gap]
;mode=table
;background=false
;gap=30

View File

@@ -0,0 +1,18 @@
[Versions]
ldn-mitm=1.20.2
MissionControl=0.14.2
sys-patch=1.5.9
SaltyNX=1.7.3
sys-botbase=2.41
TriPlayer=2.2.6
Alchemist=1.0.5
Memory-Kit=1.0.0
Fizeau=2.8.2+r2
QuickNTP=1.6.0+r2
ovl-sysmodules=1.4.7
EdiZon-Overlay=1.0.15
FPSLocker=3.2.3+r1
sys-clk=2.0.1+r21
Status-Monitor-Overlay=1.3.2+r6
NX-FanControl=1.0.3

View File

@@ -0,0 +1,36 @@
[boot]
set-ini-val ./include/sysmodules/config.ini ldn-mitm 'footer' ''
set-ini-val ./include/sysmodules/config.ini MissionControl 'footer' ''
set-ini-val ./include/sysmodules/config.ini sys-patch 'footer' ''
set-ini-val ./include/sysmodules/config.ini SaltyNX 'footer' ''
set-ini-val ./include/sysmodules/config.ini sys-botbase 'footer' ''
set-ini-val ./include/sysmodules/config.ini TriPlayer 'footer' ''
set-ini-val ./include/sysmodules/config.ini Alchemist 'footer' ''
set-ini-val ./include/sysmodules/config.ini Memory-Kit 'footer' ''
set-ini-val ./include/sysmodules/config.ini Fizeau 'footer' ''
set-ini-val ./include/sysmodules/config.ini QuickNTP 'footer' ''
set-ini-val ./include/sysmodules/config.ini ovl-sysmodules 'footer' ''
set-ini-val ./include/sysmodules/config.ini EdiZon-Overlay 'footer' ''
set-ini-val ./include/sysmodules/config.ini FPSLocker 'footer' ''
set-ini-val ./include/sysmodules/config.ini sys-clk 'footer' ''
set-ini-val ./include/sysmodules/config.ini Status-Monitor-Overlay 'footer' ''
set-ini-val ./include/sysmodules/config.ini NX-FanControl 'footer' ''
download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/sysmodules/RELEASE_SM.ini ./include/sysmodules/RELEASE_SM.ini
ini_file ./include/sysmodules/RELEASE_SM.ini
set-ini-val ./include/sysmodules/config.ini ldn-mitm 'footer' '{ini_file(Versions,ldn-mitm)}'
set-ini-val ./include/sysmodules/config.ini MissionControl 'footer' '{ini_file(Versions,MissionControl)}'
set-ini-val ./include/sysmodules/config.ini sys-patch 'footer' '{ini_file(Versions,sys-patch)}'
set-ini-val ./include/sysmodules/config.ini SaltyNX 'footer' '{ini_file(Versions,SaltyNX)}'
set-ini-val ./include/sysmodules/config.ini sys-botbase 'footer' '{ini_file(Versions,sys-botbase)}'
set-ini-val ./include/sysmodules/config.ini TriPlayer 'footer' '{ini_file(Versions,TriPlayer)}'
set-ini-val ./include/sysmodules/config.ini Alchemist 'footer' '{ini_file(Versions,Alchemist)}'
set-ini-val ./include/sysmodules/config.ini Memory-Kit 'footer' '{ini_file(Versions,Memory-Kit)}'
set-ini-val ./include/sysmodules/config.ini Fizeau 'footer' '{ini_file(Versions,Fizeau)}'
set-ini-val ./include/sysmodules/config.ini QuickNTP 'footer' '{ini_file(Versions,QuickNTP)}'
set-ini-val ./include/sysmodules/config.ini ovl-sysmodules 'footer' '{ini_file(Versions,ovl-sysmodules)}'
set-ini-val ./include/sysmodules/config.ini EdiZon-Overlay 'footer' '{ini_file(Versions,EdiZon-Overlay)}'
set-ini-val ./include/sysmodules/config.ini FPSLocker 'footer' '{ini_file(Versions,FPSLocker)}'
set-ini-val ./include/sysmodules/config.ini sys-clk 'footer' '{ini_file(Versions,sys-clk)}'
set-ini-val ./include/sysmodules/config.ini Status-Monitor-Overlay 'footer' '{ini_file(Versions,Status-Monitor-Overlay)}'
set-ini-val ./include/sysmodules/config.ini NX-FanControl 'footer' '{ini_file(Versions,NX-FanControl)}'

View File

View File

@@ -0,0 +1,144 @@
[System Module]
[ldn-mitm]
try:
download https://api.github.com/repos/DefenderOfHyrule/ldn_mitm/releases?per_page=1 /config/ultrahand/downloads/ldn-mitm-api.json
json_file /config/ultrahand/downloads/ldn-mitm-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/ldn-mitm.zip
unzip /config/ultrahand/downloads/ldn-mitm.zip /
delete /config/ultrahand/downloads/ldn-mitm-api.json
delete /config/ultrahand/downloads/ldn-mitm.zip
[MissionControl]
try:
download https://api.github.com/repos/ndeadly/MissionControl/releases?per_page=1 /config/ultrahand/downloads/missioncontrol-api.json
json_file /config/ultrahand/downloads/missioncontrol-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/missioncontrol.zip
unzip /config/ultrahand/downloads/missioncontrol.zip /
delete /config/ultrahand/downloads/missioncontrol-api.json
delete /config/ultrahand/downloads/missioncontrol.zip
[sys-patch]
try:
download https://api.github.com/repos/impeeza/sys-patch/releases?per_page=1 /config/ultrahand/downloads/sys-patch-api.json
json_file /config/ultrahand/downloads/sys-patch-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sys-patch.zip
unzip /config/ultrahand/downloads/sys-patch.zip /
delete /config/ultrahand/downloads/sys-patch-api.json
delete /config/ultrahand/downloads/sys-patch.zip
[SaltyNX]
try:
download https://api.github.com/repos/masagrator/SaltyNX/releases?per_page=1 /config/ultrahand/downloads/saltynx-api.json
json_file /config/ultrahand/downloads/saltynx-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/saltynx.zip
unzip /config/ultrahand/downloads/saltynx.zip /
delete /config/ultrahand/downloads/saltynx-api.json
delete /config/ultrahand/downloads/saltynx.zip
[sys-botbase]
try:
download https://api.github.com/repos/olliz0r/sys-botbase/releases?per_page=1 /config/ultrahand/downloads/sys-botbase-api.json
json_file /config/ultrahand/downloads/sys-botbase-api.json
download {json_file(0,assets,1,browser_download_url)} /config/ultrahand/downloads/sys-botbase.zip
unzip /config/ultrahand/downloads/sys-botbase.zip /
delete /config/ultrahand/downloads/sys-botbase-api.json
delete /config/ultrahand/downloads/sys-botbase.zip
[TriPlayer]
try:
download https://api.github.com/repos/DefenderOfHyrule/TriPlayer/releases?per_page=1 /config/ultrahand/downloads/triplayer-api.json
json_file /config/ultrahand/downloads/triplayer-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/triplayer.zip
unzip /config/ultrahand/downloads/triplayer.zip /
delete /config/ultrahand/downloads/triplayer-api.json
delete /config/ultrahand/downloads/triplayer.zip
[Alchemist]
try:
download https://api.github.com/repos/ppkantorski/Alchemist/releases?per_page=1 /config/ultrahand/downloads/alchemist-api.json
json_file /config/ultrahand/downloads/alchemist-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/alchemist.zip
unzip /config/ultrahand/downloads/alchemist.zip /
delete /config/ultrahand/downloads/alchemist-api.json
delete /config/ultrahand/downloads/alchemist.zip
[Memory-Kit]
try:
download https://api.github.com/repos/ppkantorski/Memory-Kit/releases?per_page=1 /config/ultrahand/downloads/memory-kit-api.json
json_file /config/ultrahand/downloads/memory-kit-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/memory-kit.zip
unzip /config/ultrahand/downloads/memory-kit.zip /
delete /config/ultrahand/downloads/memory-kit-api.json
delete /config/ultrahand/downloads/memory-kit.zip
[Fizeau]
try:
download https://api.github.com/repos/ppkantorski/Fizeau/releases?per_page=1 /config/ultrahand/downloads/fizeau-api.json
json_file /config/ultrahand/downloads/fizeau-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/fizeau.ovl
mv /config/ultrahand/downloads/fizeau.ovl /switch/.overlays/
delete /config/ultrahand/downloads/fizeau-api.json
[QuickNTP]
try:
download https://api.github.com/repos/ppkantorski/QuickNTP/releases?per_page=1 /config/ultrahand/downloads/quickntp-api.json
json_file /config/ultrahand/downloads/quickntp-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/quickntp.ovl
mv /config/ultrahand/downloads/quickntp.ovl /switch/.overlays/
delete /config/ultrahand/downloads/quickntp-api.json
[ovl-sysmodules]
try:
download https://api.github.com/repos/ppkantorski/ovl-sysmodules/releases?per_page=1 /config/ultrahand/downloads/ovl-sysmodules-api.json
json_file /config/ultrahand/downloads/ovl-sysmodules-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/ovl-sysmodules.ovl
mv /config/ultrahand/downloads/ovl-sysmodules.ovl /switch/.overlays/
delete /config/ultrahand/downloads/ovl-sysmodules-api.json
[EdiZon-Overlay]
try:
download https://api.github.com/repos/Arch9SK7/EdiZon-Overlay/releases?per_page=1 /config/ultrahand/downloads/edizon-overlay-api.json
json_file /config/ultrahand/downloads/edizon-overlay-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/edizon-overlay.ovl
mv /config/ultrahand/downloads/edizon-overlay.ovl /switch/.overlays/
delete /config/ultrahand/downloads/edizon-overlay-api.json
[FPSLocker]
try:
download https://api.github.com/repos/ppkantorski/FPSLocker/releases?per_page=1 /config/ultrahand/downloads/fpslocker-api.json
json_file /config/ultrahand/downloads/fpslocker-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/fpslocker.ovl
mv /config/ultrahand/downloads/fpslocker.ovl /switch/.overlays/
delete /config/ultrahand/downloads/fpslocker-api.json
[sys-clk]
try:
download https://api.github.com/repos/ppkantorski/sys-clk/releases?per_page=1 /config/ultrahand/downloads/sys-clk-api.json
json_file /config/ultrahand/downloads/sys-clk-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/sys-clk.zip
unzip /config/ultrahand/downloads/sys-clk.zip /
delete /config/ultrahand/downloads/sys-clk-api.json
delete /config/ultrahand/downloads/sys-clk.zip
[Status-Monitor-Overlay]
try:
download https://api.github.com/repos/ppkantorski/Status-Monitor-Overlay/releases?per_page=1 /config/ultrahand/downloads/status-monitor-overlay-api.json
json_file /config/ultrahand/downloads/status-monitor-overlay-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/status-monitor-overlay.ovl
mv /config/ultrahand/downloads/status-monitor-overlay.ovl /switch/.overlays/
delete /config/ultrahand/downloads/status-monitor-overlay-api.json
[NX-FanControl]
try:
download https://api.github.com/repos/auggeythecat/NX-FanControl-recomp/releases?per_page=1 /config/ultrahand/downloads/nx-fancontrol-api.json
json_file /config/ultrahand/downloads/nx-fancontrol-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/nx-fancontrol.zip
unzip /config/ultrahand/downloads/nx-fancontrol.zip /
delete /config/ultrahand/downloads/nx-fancontrol-api.json
delete /config/ultrahand/downloads/nx-fancontrol.zip
[gap]
;mode=table
;background=false
;gap=30

View File

@@ -0,0 +1,2 @@
[OmniNX Downloader]
version=1.0.0

View File

@@ -0,0 +1,3 @@
[Release Info]
pack_version=1.0.0
firmware_version=21.2.0

View File

@@ -0,0 +1,34 @@
[boot]
make /config/omninx/manifest.ini
set-ini-val ./include/updater/config.ini 'OmniNX' footer ''
set-ini-val ./include/updater/config.ini 'Switch Firmware' footer ''
set-ini-val ./include/updater/config.ini 'Omni Downloader' footer ''
try:
download https://git.niklascfw.de/OmniNX/Omni-Downloader/raw/branch/main/include/updater/RELEASE.ini ./include/updater/RELEASE.ini
ini_file ./include/updater/RELEASE.ini
set-ini-val ./include/updater/config.ini 'OmniNX' footer '{ini_file(Release Info,pack_version)}'
ini_file /config/omninx/manifest.ini
json '{"null":"true","{ini_file(OmniNX,version)}":"false"}'
ini_file ./include/updater/RELEASE.ini
set-ini-val ./include/updater/config.ini 'OmniNX' footer_highlight '{json({ini_file(Release Info,pack_version)})}'
set-ini-val ./include/updater/config.ini 'Switch Firmware' footer '{ini_file(Release Info,firmware_version)}'
json '{"null":"true","{hos_version}":"false"}'
set-ini-val ./include/updater/config.ini 'Switch Firmware' footer_highlight '{json({ini_file(Release Info,firmware_version)})}'
set-ini-val ./include/updater/config.ini 'Omni Downloader' footer '{ini_file(Release Info,pack_version)}'
ini_file ./include/updater/CURRENT.ini
json '{"null":"true","{ini_file(OmniNX Downloader,version)}":"false"}'
ini_file ./include/updater/RELEASE.ini
set-ini-val ./include/updater/config.ini 'Omni Downloader' footer_highlight '{json({ini_file(Release Info,pack_version)})}'
ini_file /config/omninx/manifest.ini
json '{"null":"notify","{ini_file(OmniNX,version)}":""}'
ini_file ./include/updater/RELEASE.ini
'{json({ini_file(Release Info,pack_version)})}' '{WARNING_SYMBOL} Pack update verfügbar!' 24
ini_file ./include/updater/RELEASE.ini
json '{"null":"notify","{hos_version}":""}'
'{json({ini_file(Release Info,firmware_version)})}' '{WARNING_SYMBOL} Firmware update verfügbar!' 24

View File

@@ -0,0 +1,14 @@
[Pack Varianten]
[Light Pack]
ini_file '/config/omninx/manifest.ini'
set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'channel_pack' 'Light'
set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'update_channel' '0'
[Standard Pack]
ini_file '/config/omninx/manifest.ini'
set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'channel_pack' 'Standard'
set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'update_channel' '2'
[OC Pack]
ini_file '/config/omninx/manifest.ini'
set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'channel_pack' 'OC'
set-ini-val '/config/omninx/manifest.ini' 'OmniNX' 'update_channel' '1'

View File

@@ -0,0 +1,8 @@
[OmniNX Pack]
footer=
footer_highlight=
[Switch Firmware]
footer=
footer_highlight=

View File

@@ -0,0 +1,80 @@
;title='OmniNX Updater'
;creator=Woody2408, NiklasCFW
;version=1.0.0
;about='OmniNX Updater'
;show_widget=true
[@CFW Pack]
[Version]
;mode=table
;background=true
;gap=20
ini_file '/config/omninx/manifest.ini'
'Pack Variante' = '{ini_file(OmniNX,channel_pack)}'
'Zurzeit installiert' = '{ini_file(OmniNX,version)}'
[OmniNX]
try:
download https://git.niklascfw.de/api/v1/repos/OmniNX/OmniNX/releases?limit=1 /config/ultrahand/downloads/omninx-api.json
json_file /config/ultrahand/downloads/omninx-api.json
ini_file '/config/omninx/manifest.ini'
download {json_file(0,assets,{ini_file(OmniNX,update_channel)},browser_download_url)} /config/ultrahand/downloads/OmniNX.zip
unzip /config/ultrahand/downloads/OmniNX.zip /
delete /config/ultrahand/downloads/omninx-api.json
delete /config/ultrahand/downloads/OmniNX.zip
notify '{WARNING_SYMBOL} Führe in Hekate fort' 24
[*Update Channel ändern]
;mini=true
;mode=forwarder
package_source ./change_channel.ini
refresh-to *Update Channel ändern
[gap]
;mode=table
;background=false
;gap=30
[Version]
;mode=table
;background=true
;gap=20
'Zurzeit installiert' = '{hos_version}'
[Switch Firmware]
try:
ini_file ./RELEASE.ini
download https://git.niklascfw.de/api/v1/repos/OmniNX/NX_Firmware/releases?limit=1 /config/ultrahand/downloads/firmware-api.json
json_file /config/ultrahand/downloads/firmware-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/firmware.zip
mkdir '/Firmware.{ini_file(Release Info,firmware_version)}/'
unzip '/config/ultrahand/downloads/firmware.zip' '/Firmware.{ini_file(Release Info,firmware_version)}/'
delete '/config/ultrahand/downloads/firmware-api.json'
delete '/config/ultrahand/downloads/firmware.zip'
notify '{WARNING_SYMBOL} Führe in Daybreak fort' 24
[gap]
;mode=table
;background=false
;gap=30
[Package Info]
[@Erweitert]
[Version]
;mode=table
;background=true
;gap=20
ini_file './CURRENT.ini'
'Zurzeit installiert' = '{ini_file(OmniNX Downloader,version)}'
[Omni Downloader]
try:
download https://git.niklascfw.de/api/v1/repos/OmniNX/Omni-Downloader/releases?limit=1 /config/ultrahand/downloads/omni-downloader-api.json
json_file /config/ultrahand/downloads/omni-downloader-api.json
download {json_file(0,assets,0,browser_download_url)} /config/ultrahand/downloads/omni-downloader.zip
unzip /config/ultrahand/downloads/omni-downloader.zip '/switch/.packages/'
delete /config/ultrahand/downloads/omni-downloader-api.json
delete /config/ultrahand/downloads/omni-downloader.zip

48
package.ini Normal file
View File

@@ -0,0 +1,48 @@
;creator=Woody2408
;version=1.0.0
;about='OmniNX Downloader'
[@CFW Pack]
[Version]
;mode=table
;background=true
;gap=20
ini_file './include/updater/config.ini'
'Nach neuen Update suchen' = ''
[*OmniNX Updater]
;mode=forwarder
exec boot ./include/updater/boot_package.ini
package_source ./include/updater/updater.ini
[gap]
;mode=table
;background=false
;gap=30
[*Apps]
;mode=forwarder
exec boot ./include/apps/boot_package.ini
package_source ./include/apps/apps.ini
[*Betriebssysteme]
;mode=forwarder
package_source ./include/os/os.ini
[*Emulatoren]
;mode=forwarder
exec boot ./include/emulatoren/boot_package.ini
package_source ./include/emulatoren/emulatoren.ini
[*System Module]
;mode=forwarder
exec boot ./include/sysmodules/boot_package.ini
package_source ./include/sysmodules/sysmodules.ini
[*Overlays]
;mode=forwarder
exec boot ./include/overlays/boot_package.ini
package_source ./include/overlays/overlays.ini