{"id":49216026,"url":"https://github.com/hashangit/bazzite-node-setup","last_synced_at":"2026-04-24T00:03:00.089Z","repository":{"id":323693700,"uuid":"1094310596","full_name":"hashangit/bazzite-node-setup","owner":"hashangit","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-11T16:20:41.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"claude/distrobox-node-setup-guide-011CV2HCsH2fMxcWecH4thYo","last_synced_at":"2025-11-11T17:10:58.124Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hashangit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-11T14:42:10.000Z","updated_at":"2025-11-11T16:20:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hashangit/bazzite-node-setup","commit_stats":null,"previous_names":["hashangit/bazzite-node-setup"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hashangit/bazzite-node-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashangit%2Fbazzite-node-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashangit%2Fbazzite-node-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashangit%2Fbazzite-node-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashangit%2Fbazzite-node-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hashangit","download_url":"https://codeload.github.com/hashangit/bazzite-node-setup/tar.gz/refs/heads/claude/distrobox-node-setup-guide-011CV2HCsH2fMxcWecH4thYo","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashangit%2Fbazzite-node-setup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32203362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T20:19:26.138Z","status":"ssl_error","status_checked_at":"2026-04-23T20:19:23.520Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-24T00:02:59.587Z","updated_at":"2026-04-24T00:03:00.082Z","avatar_url":"https://github.com/hashangit.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Turn Your Bazzite Gaming PC into a Development Powerhouse\n\n**One command. No headaches. Start coding in minutes.**\n\nTransform your Bazzite gaming system into a professional development environment without compromising your gaming setup. Everything runs in an isolated container - your games stay untouched, your dev tools stay organized.\n\n---\n\n## 🎯 What This Does\n\nThink of this as a **\"Dev Environment in a Box\"** for Bazzite:\n\n- ✅ Creates a separate, isolated workspace for coding\n- ✅ Installs the tools developers actually use (Node.js, Python, Git, etc.)\n- ✅ Makes everything work seamlessly from your regular terminal\n- ✅ Keeps your gaming system clean and unaffected\n- ✅ Can be completely removed without leaving a trace\n\n**Perfect for:**\n- Gamers who want to learn programming\n- Students taking coding courses\n- Developers who game on Bazzite\n- Anyone wanting a clean dev setup without the hassle\n\n---\n\n## ⚡ Quick Start\n\n### **Step 1: Run the Setup**\n```bash\n./setup.sh\n```\n\n### **Step 2: Answer a Few Questions**\nThe script will ask you simple yes/no questions:\n- Do you want Node.js for JavaScript projects? (Usually: Yes)\n- Do you want Python tools? (Usually: Yes)\n- Do you want Git for version control? (Usually: Yes)\n- Do you want GitHub integration? (If you use GitHub: Yes)\n\n### **Step 3: Wait 5-10 Minutes**\nGrab a coffee ☕ The script is:\n- Creating your development container\n- Installing your selected tools\n- Setting up everything automatically\n\n### **Step 4: Restart Your Terminal**\nClose your terminal and open a new one.\n\n### **Step 5: Start Coding!**\n```bash\nnode --version    # See your Node.js version\nnpm --version     # npm is ready\ngit --version     # Git is ready\n```\n\n**That's it. You're ready to code.**\n\n---\n\n## 🎁 What You Get\n\n### **Development Tools** (You Choose)\n\n#### JavaScript/TypeScript Development\n- **Node.js** - The JavaScript runtime everyone uses\n- **npm** - Node's package manager (comes with Node.js)\n- **pnpm** - Faster, more efficient package manager\n- **bun** - Super-fast all-in-one JavaScript toolkit\n\n*Perfect for: Building websites, web apps, React/Vue/Angular projects, backend APIs*\n\n#### Python Development\n- **UV** - Modern, blazing-fast Python package manager\n  - 10-100x faster than pip\n  - Better dependency management\n  - Virtual environment built-in\n\n*Perfect for: Data science, automation, ML projects, Python apps*\n\n#### Version Control\n- **Git** - Industry-standard version control\n- **GitHub CLI (gh)** - Manage GitHub from your terminal\n\n*Perfect for: Saving your work, collaborating, managing code history*\n\n#### Docker/Podman Integration\n- Automatic aliases so Docker commands work with Podman\n- Follow Docker tutorials using Podman\n- Container-based development\n\n*Perfect for: Modern web development, microservices, following tutorials*\n\n#### Development Folder (Optional)\n- Pre-organized folder structure (`~/Dev/projects`)\n- Built-in documentation and cheat sheets\n- Quick reference guides\n- Setup instructions\n\n*Perfect for: Staying organized, quick command lookups*\n\n---\n\n## 🛡️ Safety Features\n\n### **Two Setup Modes**\n\n**1. Update/Fix Mode (Recommended)**\n- Keeps your existing setup\n- Updates wrappers and fixes issues\n- **100% safe** - no data loss\n- Use this if something stops working\n\n**2. Clean Install Mode**\n- Removes everything and starts fresh\n- Only use if things are seriously broken\n- Requires confirmation for safety\n\n### **Smart Design**\n- ✅ Run the script as many times as you want - it's safe\n- ✅ Container is isolated - won't affect your games\n- ✅ Easy removal - delete container and wrappers, done\n- ✅ Built-in diagnostics and verification\n\n---\n\n## 🎮 Why This Exists (For Gamers New to Coding)\n\n### **The Problem**\nYou want to learn programming or do some coding, but:\n- Installing dev tools can mess up your gaming setup\n- Package managers conflict with each other\n- Node.js installations break mysteriously\n- Your system gets cluttered\n- Uninstalling is a nightmare\n\n### **The Solution**\nThis tool creates a **separate, isolated \"coding room\"** on your Bazzite PC:\n- Gaming stuff stays in the main house (host system)\n- Coding stuff stays in the separate room (container)\n- You can walk between them seamlessly (wrappers make it transparent)\n- Don't like the coding room? Delete it. Your house is untouched.\n\n### **Real-World Example**\n```bash\n# You're in your regular terminal (gaming PC)\n$ node --version\nv20.11.0\n\n# Behind the scenes: The tool automatically runs this in the container\n# You don't see or feel any difference - it just works\n```\n\n---\n\n## 📋 Common Questions\n\n### **Q: Will this slow down my games?**\n**A:** No. The container only runs when you use dev tools. Games are completely unaffected.\n\n### **Q: How much disk space does it need?**\n**A:** About 1-2 GB depending on which tools you select. The script checks before installing.\n\n### **Q: Can I remove everything later?**\n**A:** Yes! Run `./setup.sh`, choose \"Clean Install\", and confirm. Everything is removed.\n\n### **Q: I don't know what Node.js is. Should I install it?**\n**A:** If you're learning web development or JavaScript, yes! If you're only doing Python, you can skip it.\n\n### **Q: What's the difference between Bazzite and Bazzite DX?**\n**A:**\n- **Bazzite** = Gaming-focused (what you probably have)\n- **Bazzite DX** = Gaming + Developer tools pre-installed\n\nThe script will detect this and give you recommendations.\n\n### **Q: Something broke. What do I do?**\n**A:**\n```bash\n./setup.sh    # Just run it again\n# Choose option 1 (Update/Fix)\n# Restart your terminal\n```\nThis fixes 90% of issues.\n\n---\n\n## 🔧 Troubleshooting\n\n### **Tools not found after setup?**\n**→ Restart your terminal** (PATH needs to refresh)\n\n### **\"node -v\" shows nothing?**\n```bash\n./setup.sh         # Re-run setup\n# Restart terminal\nnode -v            # Should work now\n```\n\n### **Need detailed diagnostics?**\n```bash\n./diagnose.sh      # Shows everything about your setup\n```\n\n### **Want to verify everything works?**\n```bash\n./verify-setup.sh  # Tests all installed tools\n```\n\n### **Still stuck?**\n1. Run `./setup.sh` again (seriously, this fixes most things)\n2. Read `TROUBLESHOOTING.md` for detailed help\n3. Run `./diagnose.sh` and check the output\n\n---\n\n## 🎓 What's Next After Setup?\n\n### **For Complete Beginners**\n\n**1. Create Your First Project**\n```bash\ncd ~/Dev/projects              # Go to projects folder\nmkdir my-first-project         # Create a folder\ncd my-first-project            # Enter it\nnpm init -y                    # Initialize a Node.js project\n```\n\n**2. Try a React App (Web Development)**\n```bash\ncd ~/Dev/projects\nnpm create vite@latest my-app -- --template react\ncd my-app\nnpm install\nnpm run dev\n```\nOpen your browser to the URL shown. You just created a web app!\n\n**3. Learn the Basics**\n- Check `~/Dev/docs/QUICK_REF.md` for command cheat sheet\n- Read `~/Dev/docs/SETUP_GUIDE.md` for detailed guide\n- Try `~/Dev/docs/CHEAT_SHEET.md` for common commands\n\n### **For Experienced Developers**\n\nYour containerized environment is ready:\n- All tools accessible from host terminal\n- Proper process management (servers stop with terminal)\n- Podman socket mounted (Docker compatibility)\n- Direct container access: `distrobox enter main-dev`\n\nCheck the technical docs:\n- `FIXES_CONTAINER_ERRORS.md` - Implementation details\n- `specs.md` - Full technical specification\n- `TOOL_EXPORT_STRATEGY.md` - How wrappers work\n\n---\n\n## 📚 What Gets Installed (Technical Overview)\n\n### **The Container**\n- **Name:** `main-dev`\n- **Base:** Ubuntu 24.04 LTS\n- **Access:** Seamless via wrapper scripts\n- **Location:** Managed by distrobox/podman\n\n### **Tool Installation Methods**\n| Tool | Method | Location |\n|------|--------|----------|\n| Node.js | NodeSource APT repo | `/usr/bin/node` |\n| npm/npx | Bundled with Node.js | `/usr/bin/npm` |\n| pnpm | Standalone installer | `~/.local/share/pnpm` |\n| bun | Official installer | `~/.bun/bin/bun` |\n| UV | Official installer | `~/.local/bin/uv` |\n| Git | Ubuntu APT | `/usr/bin/git` |\n| gh | GitHub APT repo | `/usr/bin/gh` |\n\n### **Wrapper Scripts**\n- **Location:** `~/.local/bin/`\n- **Purpose:** Make container tools accessible from host\n- **Features:**\n  - Container detection (prevents recursion)\n  - Process management (cleanup on exit)\n  - Transparent operation (feels native)\n\n### **Shell Configuration**\nModified files (non-destructive, additive only):\n- `~/.bashrc` - Bash configuration\n- `~/.bash_profile` - Bash profile\n- `~/.zshrc` - Zsh configuration (if exists)\n- `~/.config/fish/config.fish` - Fish configuration (if exists)\n\nChanges:\n- Adds `~/.local/bin` to PATH\n- Docker/Podman aliases (optional)\n- NVM wrapper function (optional)\n\n---\n\n## 🗂️ Repository Structure\n\n```\n.\n├── setup.sh                    # Main setup script (START HERE)\n├── verify-setup.sh             # Verify everything works (generated after setup)\n├── diagnose.sh                 # Diagnostic tool for troubleshooting\n│\n├── README.md                   # This file\n├── TROUBLESHOOTING.md          # Detailed troubleshooting guide\n├── FIXES_CONTAINER_ERRORS.md   # Technical implementation details\n├── specs.md                    # Complete technical specification\n│\n└── modules/                    # Internal modules (don't touch)\n    ├── setup-container.sh      # Container creation logic\n    ├── install-tools.sh        # Tool installation logic\n    ├── export-tools.sh         # Wrapper creation logic\n    ├── configure-shell.sh      # Shell configuration logic\n    └── common.sh               # Shared utilities\n```\n\n**You only need to run:** `./setup.sh`\n\n---\n\n## 🎯 Design Philosophy\n\n### **For Non-Developers**\n- One command to rule them all\n- Interactive questions, not cryptic config files\n- Clear explanations of what each tool does\n- Safe defaults, easy to undo\n\n### **For Developers**\n- Modular, maintainable code\n- Idempotent operations\n- Comprehensive logging\n- Process-aware wrappers\n- Multi-shell support\n\n### **For Everyone**\n- Just works™\n- Fix 90% of issues by re-running setup\n- Built-in diagnostics\n- Comprehensive documentation\n\n---\n\n## ⚙️ Advanced Features\n\n### **Direct Container Access**\n```bash\ndistrobox enter main-dev    # Enter the container\n# Now you're inside - all tools are native\nnode --version\nexit                        # Leave the container\n```\n\n### **Process Management**\nDev servers automatically stop when you:\n- Close the terminal\n- Press Ctrl+C\n- Exit the session\n\nNo more orphaned processes!\n\n### **Docker Compatibility**\nWith Podman socket mounted:\n```bash\n# These work the same\ndocker ps                   # (actually using podman)\ndocker run hello-world      # (actually using podman)\ndocker-compose up           # (actually using podman-compose)\n```\n\n### **Multiple Shell Support**\nAutomatically configures:\n- Bash (most common)\n- Zsh (Oh My Zsh users)\n- Fish (modern shell)\n\n### **Idempotent Design**\nRun `./setup.sh` as many times as you want:\n- Detects existing container (won't recreate)\n- Updates wrappers to latest version\n- Fixes common issues automatically\n- Safe, no data loss\n\n---\n\n## 📊 System Requirements\n\n### **Minimum**\n- Bazzite OS (any variant)\n- 5 GB free disk space\n- Internet connection (for downloading tools)\n\n### **Recommended**\n- Bazzite DX variant (the script will help you switch if needed)\n- 10 GB+ free disk space\n- Active internet connection\n\n### **Pre-installed on Bazzite DX**\n- distrobox\n- podman\n- Development libraries\n\nIf you're on base Bazzite, the script will check and guide you.\n\n---\n\n## 🤝 Contributing\n\nFound a bug? Have a suggestion? Contributions welcome!\n\n1. Check existing issues\n2. Create a detailed bug report\n3. Submit pull requests with clear descriptions\n\nSee `CONTRIBUTING.md` for guidelines.\n\n---\n\n## 📜 Version History\n\n- **v3.0** - Modular architecture, process-aware wrappers, multi-shell support\n- **v2.0** - Container detection, wrapper improvements\n- **v1.0** - Initial release\n\n---\n\n## 📄 License\n\nThis project is designed for the Bazzite community. Use freely, modify as needed, share improvements.\n\n---\n\n## 🙏 Credits\n\nBuilt for the Bazzite gaming and development community.\n\n**Special thanks to:**\n- Bazzite team for the amazing OS\n- distrobox creators for seamless container integration\n- Everyone who reported issues and helped improve this tool\n\n---\n\n## 🎮 Happy Coding!\n\nYou're all set. Your Bazzite gaming PC is now a development machine too.\n\n**Need help?** Read `TROUBLESHOOTING.md`\n**Want details?** Read `specs.md`\n**Ready to code?** `./setup.sh` and go!\n\n---\n\n*Last updated: 2025-01-18 | Version 3.0*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashangit%2Fbazzite-node-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashangit%2Fbazzite-node-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashangit%2Fbazzite-node-setup/lists"}