fix(qwen): system-wide env vars via /etc/environment + /etc/profile.d/

Same pattern as codex and gemini:
- Write QWEN_API_KEY + QWEN_BASE_URL to /etc/environment (all users)
- Create /etc/profile.d/qwen-code.sh for login shell export
- Update script now also sets env vars (was missing)
- Fix CRLF line endings

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
delta-cloud-208e
2026-03-08 10:37:39 +00:00
parent 8dd87dcab3
commit 638742c8ab
2 changed files with 354 additions and 330 deletions

View File

@@ -166,37 +166,35 @@ if [ $PATCH_EXIT -ne 0 ]; then
fi
log "Patches applied"
# ---- Set environment variables ----
# ---- Set environment variables (system-wide, all users) ----
info "Setting environment variables..."
ENV_VARS='export QWEN_API_KEY="ClauderAPI"
export QWEN_BASE_URL="https://ai.37-187-136-86.sslip.io"'
API_KEY="ClauderAPI"
BASE_URL="https://ai.37-187-136-86.sslip.io"
for rc_file in "$HOME/.bashrc" "$HOME/.zshrc"; do
if [ -f "$rc_file" ]; then
if ! grep -q 'QWEN_API_KEY' "$rc_file" 2>/dev/null; then
echo "" >> "$rc_file"
echo "# Qwen Code (UnlimitedCoding)" >> "$rc_file"
echo "$ENV_VARS" >> "$rc_file"
log "Added env vars to $(basename "$rc_file")"
fi
# Write to /etc/environment (all users, all sessions including cron)
ETC_ENV="/etc/environment"
for kv in "QWEN_API_KEY=\"$API_KEY\"" "QWEN_BASE_URL=\"$BASE_URL\""; do
KEY="${kv%%=*}"
if grep -q "^${KEY}=" "$ETC_ENV" 2>/dev/null; then
sed -i "s|^${KEY}=.*|${kv}|" "$ETC_ENV"
else
echo "$kv" >> "$ETC_ENV"
fi
done
log "Env vars written to $ETC_ENV (all users)"
export QWEN_API_KEY="ClauderAPI"
export QWEN_BASE_URL="https://ai.37-187-136-86.sslip.io"
# Also for all users if root
if [ "$(id -u)" -eq 0 ]; then
PROFILE_D="/etc/profile.d/qwen-code.sh"
cat > "$PROFILE_D" << 'PROF_EOF'
# Qwen Code (UnlimitedCoding)
export QWEN_API_KEY="ClauderAPI"
export QWEN_BASE_URL="https://ai.37-187-136-86.sslip.io"
# Write to /etc/profile.d/ for export in login shells
cat > /etc/profile.d/qwen-code.sh << PROF_EOF
export QWEN_API_KEY="$API_KEY"
export QWEN_BASE_URL="$BASE_URL"
PROF_EOF
chmod 644 "$PROFILE_D"
log "Set env vars for all users: $PROFILE_D"
fi
chmod 644 /etc/profile.d/qwen-code.sh
log "Export script created: /etc/profile.d/qwen-code.sh"
# Export for current session
export QWEN_API_KEY="$API_KEY"
export QWEN_BASE_URL="$BASE_URL"
# ---- Verify ----
@@ -217,18 +215,18 @@ if [ -n "$QWEN_BIN" ]; then
echo " qwen3.5-plus, qwen3-coder-plus"
echo " qwen3-coder-flash, coder-model"
echo ""
echo " If env vars not active, run: source ~/.bashrc"
echo " If env vars not active, run: source /etc/profile.d/qwen-code.sh"
echo ""
else
warn "Patches applied but test prompt failed."
echo " Response: $RESULT"
echo ""
echo " Try manually:"
echo " source ~/.bashrc"
echo " source /etc/profile.d/qwen-code.sh"
echo " $QWEN_BIN -p 'Hello'"
fi
else
warn "Qwen binary not found in PATH after install."
echo " Check: npm list -g ${NPM_PACKAGE}"
echo " Then run: source ~/.bashrc && qwen -p 'Hello'"
echo " Then run: source /etc/profile.d/qwen-code.sh && qwen -p 'Hello'"
fi

View File

@@ -92,5 +92,31 @@ if [ $PATCH_EXIT -ne 0 ]; then
python3 "$TEMP_DIR/qwen_patcher.py" --apply --config "$TEMP_DIR/qwen_config.json"
fi
# Set env vars system-wide (all users, all sessions)
API_KEY=$(python3 -c "import json; print(json.load(open('$TEMP_DIR/qwen_config.json'))['api_key'])")
BASE_URL=$(python3 -c "import json; print(json.load(open('$TEMP_DIR/qwen_config.json'))['base_url'])")
ETC_ENV="/etc/environment"
for kv in "QWEN_API_KEY=\"$API_KEY\"" "QWEN_BASE_URL=\"$BASE_URL\""; do
KEY="${kv%%=*}"
if grep -q "^${KEY}=" "$ETC_ENV" 2>/dev/null; then
sed -i "s|^${KEY}=.*|${kv}|" "$ETC_ENV"
else
echo "$kv" >> "$ETC_ENV"
fi
done
cat > /etc/profile.d/qwen-code.sh << PROF_EOF
export QWEN_API_KEY="$API_KEY"
export QWEN_BASE_URL="$BASE_URL"
PROF_EOF
chmod 644 /etc/profile.d/qwen-code.sh
export QWEN_API_KEY="$API_KEY"
export QWEN_BASE_URL="$BASE_URL"
info "Env vars set system-wide (/etc/environment + /etc/profile.d/qwen-code.sh)"
log "Update complete!"
echo -e "For current shell: ${CYAN}source /etc/profile.d/qwen-code.sh${RESET}"
echo ""