diff --git a/pkgs/frc-nix-update/update-packages.sh b/pkgs/frc-nix-update/update-packages.sh index 53aecf2..9fe0f33 100755 --- a/pkgs/frc-nix-update/update-packages.sh +++ b/pkgs/frc-nix-update/update-packages.sh @@ -300,6 +300,20 @@ fetch_github_hashes() { hash=$(fetch_url_hash "$url") echo "hash = \"$hash\";" ;; + "OpenDS") + local url="https://github.com/Boomaa23/open-ds/releases/download/v${version}/open-ds-v${version}.jar" + local hash + hash=$(fetch_url_hash "$url") + echo "hash = \"$hash\";" + ;; + "FirstDriverStation") + local base_url="https://github.com/wpilibsuite/FirstDriverStation-Public/releases/download/v${version}" + local hash_x64 hash_arm64 + hash_x64=$(fetch_url_hash "$base_url/FirstDriverStation-linux-x64-${version}.tar.gz") + hash_arm64=$(fetch_url_hash "$base_url/FirstDriverStation-linux-arm64-${version}.tar.gz") + echo "x86_64-linux = \"$hash_x64\";" + echo "aarch64-linux = \"$hash_arm64\";" + ;; esac } @@ -419,8 +433,20 @@ update_hashes() { fi fi done <<< "$hash_output" + elif [[ "$tool" == "FirstDriverStation" ]]; then + # FirstDriverStation: update per-arch hashes in sources block + while IFS= read -r hash_line; do + if [[ "$hash_line" =~ ^([a-z0-9_-]+)\ =\ \"([^\"]+)\"\;$ ]]; then + local arch="${BASH_REMATCH[1]}" + local hash_val="${BASH_REMATCH[2]}" + awk -v arch="$arch" -v hash="$hash_val" ' + $0 ~ "\"" arch "\"" { found=1 } + found && /hash = / { gsub(/hash = "[^"]*"/, "hash = \"" hash "\""); found=0 } + { print } + ' "$file" > "$file.tmp" && mv "$file.tmp" "$file" + fi + done <<< "$hash_output" else - # Other packages use artifactHashes block local temp_file temp_file=$(mktemp) echo "artifactHashes = {" > "$temp_file" @@ -599,6 +625,8 @@ update_all_packages() { ["pathplanner"]="mjansen4857/pathplanner:pkgs/pathplanner/package.nix:PathPlanner" ["vscode-wpilib"]="wpilibsuite/vscode-wpilib:pkgs/wpilib/vscode-wpilib.nix:vscode-wpilib" ["wpilib-utility"]="wpilibsuite/vscode-wpilib:pkgs/wpilib/wpilib-utility.nix:wpilib-utility" + ["firstdriverstation"]="wpilibsuite/FirstDriverStation-Public:pkgs/wpilib/firstdriverstation/package.nix:FirstDriverStation" + ["opends"]="Boomaa23/open-ds:pkgs/opends/package.nix:OpenDS" ) for package in "${!github_packages[@]}"; do diff --git a/pkgs/opends/package.nix b/pkgs/opends/package.nix new file mode 100644 index 0000000..00c5f6d --- /dev/null +++ b/pkgs/opends/package.nix @@ -0,0 +1,43 @@ +{ + stdenv, + autoPatchelfHook, + fetchurl, + jre, + makeWrapper, + lib, + libxkbcommon, + libx11, + libxtst, + libxt, +}: +stdenv.mkDerivation rec { + name = "OpenDS"; + version = "0.3.1"; + + src = fetchurl { + url = "https://github.com/Boomaa23/open-ds/releases/download/v${version}/open-ds-v${version}.jar"; + hash = "sha256-AdbA304WYYjMIWMmzEU//MBMRwn/71WhnLk0w6s9kAk="; + }; + + dontUnpack = true; + nativeBuildInputs = [makeWrapper autoPatchelfHook jre]; + buildInputs = [libxkbcommon libx11 libxtst libxt]; + installPhase = '' + mkdir -pv $out/share/java $out/bin + + cp ${src} $out/share/java/${name}-${version}.jar + + jar xf $out/share/java/${name}-${version}.jar + + makeWrapper ${jre}/bin/java $out/bin/OpenDS \ + --add-flags "-Djnativehook.lib.path=/tmp" \ + --add-flags "-jar $out/share/java/${name}-${version}.jar" \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [libxkbcommon libx11 libxtst libxt]} + ''; + + meta = { + homepage = "https://boomaa23.github.io/open-ds"; + description = "An open source version of FRC's DriverStation"; + platforms = lib.platforms.all; + }; +}