Fix runtime errors and improve robustness in host configs and scripts

- Fix KeyError in julia.nix when Project.toml lacks deps table
- Fix incorrect uv args in python.nix (remove --run + --add-flags combination)
- Remove redundant 'uv add ipython' from sync branch in python.nix
- Fix relative paths in project-scripts.nix (./scripts -> ../scripts)
- Fix initProject.sh to check file existence before git add
- Add RVER validation in updateDeps.sh with proper error handling
- Add tool availability checks in updateDeps.sh (uv, julia, devenv)
- Add flake.nix backup before modification in updateDeps.sh
- Ensure updateDeps.sh runs from repository root

Co-authored-by: dwinkler1 <22460147+dwinkler1@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-01-11 19:48:19 +00:00
commit 2a5a1acd62
5 changed files with 84 additions and 38 deletions

View file

@ -3,30 +3,77 @@ set -euo pipefail
echo "🔄 Updating project dependencies..."
# Ensure we're in the repository root
if [[ ! -f "flake.nix" ]]; then
# Try to find git root
if git rev-parse --show-toplevel >/dev/null 2>&1; then
cd "$(git rev-parse --show-toplevel)"
if [[ ! -f "flake.nix" ]]; then
echo "❌ Error: flake.nix not found in repository root"
exit 1
fi
else
echo "❌ Error: Not in a git repository and flake.nix not found"
exit 1
fi
fi
# Fetch latest R version from rstats-on-nix
# This command chain: downloads CSV, extracts last line, gets 4th field (date), removes quotes
RVER=$( wget -qO- 'https://raw.githubusercontent.com/ropensci/rix/refs/heads/main/inst/extdata/available_df.csv' | tail -n 1 | head -n 1 | cut -d',' -f4 | tr -d '"' ) &&\
echo "📡 Fetching latest R version from rstats-on-nix..."
RVER=$( wget -qO- 'https://raw.githubusercontent.com/ropensci/rix/refs/heads/main/inst/extdata/available_df.csv' | tail -n 1 | head -n 1 | cut -d',' -f4 | tr -d '"' )
# Validate RVER matches YYYY-MM-DD format
if [[ ! "$RVER" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "❌ Error: Failed to fetch valid R version date. Got: '$RVER'"
exit 1
fi
echo "✅ R date is $RVER"
# Create backup of flake.nix before modifying
cp flake.nix flake.nix.backup
# Update rixpkgs date in flake.nix
sed -i "s|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\";|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/$RVER\";|" flake.nix
echo "✅ R date is $RVER"
if sed -i "s|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\";|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/$RVER\";|" flake.nix; then
echo "✅ Updated rixpkgs date in flake.nix"
rm flake.nix.backup
else
echo "⚠️ Warning: Failed to update flake.nix, restoring backup"
mv flake.nix.backup flake.nix
fi
nix flake update
echo "✅ Flake inputs updated"
# Update Python dependencies if pyproject.toml exists and uv is available
if [[ -f "pyproject.toml" ]]; then
uv sync --upgrade
echo "✅ Python dependencies updated"
if command -v uv >/dev/null 2>&1; then
uv sync --upgrade
echo "✅ Python dependencies updated"
else
echo " pyproject.toml found but uv command not available, skipping Python update"
fi
fi
# Update Julia dependencies if Project.toml exists and julia is available
if [[ -f "Project.toml" ]]; then
@defaultPackageName@-jl -e "using Pkg; Pkg.update()"
echo "✅ Julia dependencies updated"
if command -v @defaultPackageName@-jl >/dev/null 2>&1; then
@defaultPackageName@-jl -e "using Pkg; Pkg.update()"
echo "✅ Julia dependencies updated"
else
echo " Project.toml found but @defaultPackageName@-jl command not available, skipping Julia update"
fi
fi
# Update devenv dependencies if devenv.nix exists and devenv is available
if [[ -f "devenv.nix" ]]; then
devenv update
echo "✅ Devenv dependencies updated"
if command -v devenv >/dev/null 2>&1; then
devenv update
echo "✅ Devenv dependencies updated"
else
echo " devenv.nix found but devenv command not available, skipping devenv update"
fi
fi
echo "🎉 All dependencies updated!"