From 6c31a6629631893a0a9ec9b7070e3144903ca2b2 Mon Sep 17 00:00:00 2001 From: zentag <38821230+zentag@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:37:56 -0400 Subject: [PATCH 1/4] init opends --- pkgs/opends/package.nix | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 pkgs/opends/package.nix diff --git a/pkgs/opends/package.nix b/pkgs/opends/package.nix new file mode 100644 index 0000000..5cfc156 --- /dev/null +++ b/pkgs/opends/package.nix @@ -0,0 +1,37 @@ +{ + stdenv, + fetchFromGitHub, + jre, + makeWrapper, + lib, +}: +stdenv.mkDerivation rec { + name = "OpenDS"; + version = "0.3.1"; + + src = fetchFromGitHub { + owner = "Boomaa23"; + repo = "open-ds"; + rev = "v${version}"; + hash = "sha256-01d6c0df4e166188cc216326cc453ffcc04c4709ffef55a19cb934c3ab3d9009"; + }; + dontUnpack = true; + nativeBuildInputs = [makeWrapper]; + + installPhase = '' + mkdir -pv $out/share/java $out/bin + cp ${src} $out/share/java/${name}-${version}.jar + + makeWrapper ${jre}/bin/java $out/bin/OpenDS \ + --add-flags "-jar $out/share/java/${name}-${version}.jar" \ + --set _JAVA_OPTIONS '-Dawt.useSystemAAFontSettings=on' \ + --set _JAVA_AWT_WM_NONREPARENTING 1 + ''; + + # Some easy metadata, in case I forget. + meta = { + homepage = "https://boomaa23.github.io/open-ds"; + description = "An open source version of FRC's DriverStation"; + platforms = lib.platforms.all; + }; +} From 79bde045688c944ed9b95cb826bad8224364ea74 Mon Sep 17 00:00:00 2001 From: zentag <38821230+zentag@users.noreply.github.com> Date: Tue, 28 Apr 2026 11:28:27 -0400 Subject: [PATCH 2/4] make opends work by adding necessary libs --- pkgs/opends/package.nix | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/pkgs/opends/package.nix b/pkgs/opends/package.nix index 5cfc156..860de90 100644 --- a/pkgs/opends/package.nix +++ b/pkgs/opends/package.nix @@ -1,34 +1,39 @@ { stdenv, - fetchFromGitHub, + autoPatchelfHook, + fetchurl, jre, makeWrapper, lib, + libxkbcommon, + xorg, }: stdenv.mkDerivation rec { name = "OpenDS"; version = "0.3.1"; - src = fetchFromGitHub { - owner = "Boomaa23"; - repo = "open-ds"; - rev = "v${version}"; - hash = "sha256-01d6c0df4e166188cc216326cc453ffcc04c4709ffef55a19cb934c3ab3d9009"; + src = fetchurl { + url = "https://github.com/Boomaa23/open-ds/releases/download/v${version}/open-ds-v${version}.jar"; + sha256 = "01d6c0df4e166188cc216326cc453ffcc04c4709ffef55a19cb934c3ab3d9009"; }; dontUnpack = true; - nativeBuildInputs = [makeWrapper]; - + nativeBuildInputs = [makeWrapper autoPatchelfHook jre]; + buildInputs = [libxkbcommon xorg.libX11 xorg.libXtst xorg.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" \ - --set _JAVA_OPTIONS '-Dawt.useSystemAAFontSettings=on' \ - --set _JAVA_AWT_WM_NONREPARENTING 1 + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [libxkbcommon xorg.libX11 xorg.libXtst xorg.libXt]} + ''; - # Some easy metadata, in case I forget. meta = { homepage = "https://boomaa23.github.io/open-ds"; description = "An open source version of FRC's DriverStation"; From 657cd7889dfe062f4e11868a8c0867a9ff72a944 Mon Sep 17 00:00:00 2001 From: zentag <38821230+zentag@users.noreply.github.com> Date: Tue, 28 Apr 2026 11:48:10 -0400 Subject: [PATCH 3/4] use new versions of xorg deps --- pkgs/opends/package.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/opends/package.nix b/pkgs/opends/package.nix index 860de90..81af619 100644 --- a/pkgs/opends/package.nix +++ b/pkgs/opends/package.nix @@ -6,7 +6,9 @@ makeWrapper, lib, libxkbcommon, - xorg, + libx11, + libxtst, + libxt, }: stdenv.mkDerivation rec { name = "OpenDS"; @@ -18,7 +20,7 @@ stdenv.mkDerivation rec { }; dontUnpack = true; nativeBuildInputs = [makeWrapper autoPatchelfHook jre]; - buildInputs = [libxkbcommon xorg.libX11 xorg.libXtst xorg.libXt]; + buildInputs = [libxkbcommon libx11 libxtst libxt]; installPhase = '' mkdir -pv $out/share/java $out/bin @@ -30,7 +32,7 @@ stdenv.mkDerivation rec { 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 xorg.libX11 xorg.libXtst xorg.libXt]} + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [libxkbcommon libx11 libxtst libxt]} ''; From a328935843f1172325238e729db7d74286542ceb Mon Sep 17 00:00:00 2001 From: Kieran Klukas Date: Tue, 28 Apr 2026 16:59:45 -0400 Subject: [PATCH 4/4] opends: fix hash and add auto updates --- pkgs/frc-nix-update/update-packages.sh | 30 +++++++++++++++++++++++++- pkgs/opends/package.nix | 5 ++--- 2 files changed, 31 insertions(+), 4 deletions(-) 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 index 81af619..00c5f6d 100644 --- a/pkgs/opends/package.nix +++ b/pkgs/opends/package.nix @@ -16,8 +16,9 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://github.com/Boomaa23/open-ds/releases/download/v${version}/open-ds-v${version}.jar"; - sha256 = "01d6c0df4e166188cc216326cc453ffcc04c4709ffef55a19cb934c3ab3d9009"; + hash = "sha256-AdbA304WYYjMIWMmzEU//MBMRwn/71WhnLk0w6s9kAk="; }; + dontUnpack = true; nativeBuildInputs = [makeWrapper autoPatchelfHook jre]; buildInputs = [libxkbcommon libx11 libxtst libxt]; @@ -28,12 +29,10 @@ stdenv.mkDerivation rec { 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 = {