https://github.com/jetpack-io/devbox Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Copilot + Packages + Security + Code review + Issues + Discussions + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Skills + GitHub Sponsors + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} jetpack-io / devbox Public * Notifications * Fork 15 * Star 1.7k Instant, easy, predictable shells and containers. License Apache-2.0 license 1.7k stars 15 forks Star Notifications * Code * Issues 11 * Pull requests 0 * Actions * Security * Insights More * Code * Issues * Pull requests * Actions * Security * Insights jetpack-io/devbox This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 4 tags Code * Clone HTTPS GitHub CLI [https://github.com/j] Use Git or checkout with SVN using the web URL. [gh repo clone jetpac] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @gcurtis gcurtis devbox: docs and some cleanup (#2645) ... 20f429f Aug 26, 2022 devbox: docs and some cleanup (#2645) Add package docs and tweak a few things to follow some Go idioms. - Use regular casing for constants. - Rename `Init` to `InitConfig`. Although the signature isn't the same, `Init` is very close the special package init function. - Put Open directly under the Devbox struct. 20f429f Git stats * 41 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows [devbox] Remove timestamp from dev releases (#2565) Aug 23, 2022 boxcli devbox: docs and some cleanup (#2645) Aug 26, 2022 cmd/devbox [unbazel] Remove bazel from Axiom (#2568) Aug 23, 2022 cuecfg [unbazel] Remove bazel from Axiom (#2568) Aug 23, 2022 docker [unbazel] Remove bazel from Axiom (#2568) Aug 23, 2022 examples/go [unbazel] Remove bazel from Axiom (#2568) Aug 23, 2022 nix Add nix package manager detector and error if not installed (#2641) Aug 26, 2022 planner [unbazel] Remove bazel from Axiom (#2568) Aug 23, 2022 tmpl [devbox] Download nixpkgs using fetchTarball (#2639) Aug 26, 2022 .goreleaser.yaml [devbox] Remove timestamp from dev releases (#2565) Aug 23, 2022 CODE_OF_CONDUCT.md [devbox] Prepare code for open-sourcing (#2507) Aug 18, 2022 LICENSE [devbox] Prepare code for open-sourcing (#2507) Aug 18, 2022 README.md [devbox] Correct go version in docs (#2636) Aug 26, 2022 config.go devbox: docs and some cleanup (#2645) Aug 26, 2022 devbox.go devbox: docs and some cleanup (#2645) Aug 26, 2022 generate.go [devbox] Turn devbox into a go module (#2515) Aug 18, 2022 go.mod [devbox] Turn devbox into a go module (#2515) Aug 18, 2022 go.sum [devbox] Turn devbox into a go module (#2515) Aug 18, 2022 View code [ ] Devbox Instant, easy, and predictable shells and containers What is it? Demo Benefits A consistent shell for everyone on the team Try new tools without polluting your laptop Don't sacrifice speed Good-bye conflicting versions Instantly turn your application into a container Stop declaring dependencies twice Installing Devbox Quickstart: Fast, Deterministic Shell Quickstart: Instant Docker Image Auto-detected languages: Additional commands Join our Developer Community Related Work License README.md Devbox Instant, easy, and predictable shells and containers Join Discord License: Apache 2.0 version --------------------------------------------------------------------- What is it? Devbox is a command-line tool that lets you easily create isolated shells and containers. You start by defining the list of packages required by your development environment, and devbox uses that definition to create an isolated environment just for your application. In practice, Devbox works similar to a package manager like yarn - except the packages it manages are at the operating-system level (the sort of thing you would normally install with brew or apt-get). Devbox was originally developed by jetpack.io and is internally powered by nix. Demo The example below creates a development environment with python 2.7 and go 1.18, even though those packages are not installed in the underlying machine: screen cast Benefits A consistent shell for everyone on the team Declare the list of tools needed by your project via a devbox.json file and run devbox shell. Everyone working on the project gets a shell environment with the exact same version of those tools. Try new tools without polluting your laptop Development environments created by Devbox are isolated from everything else in your laptop. Is there a tool you want to try without making a mess? Add it to a Devbox shell, and remove it when you don't want it anymore - all while keeping your laptop pristine. Don't sacrifice speed Devbox can create isolated environments right on your laptop, without an extra-layer of virtualization slowing your file system or every command. When you're ready to ship, it'll turn it into an equivalent container - but not before. Good-bye conflicting versions Are you working on multiple projects, all of which need different versions of the same binary? Instead of attempting to install conflicting versions of the same binary on your laptop, create an isolated environment for each project, and use whatever version you want for each. Instantly turn your application into a container Devbox analyzes your source code and instantly turns it into an OCI-compliant image that can be deployed to any cloud. The image is optimized for speed, size, security and caching ... and without needing to write a Dockerfile. And unlike buildpacks, it does it quickly. Stop declaring dependencies twice Your application often needs the same set of dependencies when you are developing on your laptop, and when you're packaging it as a container ready to deploy to the cloud. Devbox's dev environments are isomorphic: meaning that we can turn them into both a local shell environment or a cloud-ready container, all without having to repeat yourself twice. Installing Devbox In addition to installing Devbox itself, you will need to install nix and docker since Devbox depends on them: 1. Install Nix Package Manager. (Don't worry, you don't need to learn Nix.) 2. Install Docker Engine or Docker Desktop. Note that docker is only needed if you want to create containers - the shell functionality works without it. 3. Install Devbox: curl -fsSL https://get.jetpack.io/devbox | bash Quickstart: Fast, Deterministic Shell In this quickstart we'll create a development shell with specific tools installed. These tools will only be available when using this Devbox shell, ensuring we don't pollute your machine. 1. Open a terminal in a new empty folder. 2. Initialize Devbox: devbox init This creates a devbox.json file in the current directory. You should commit it to source control. 3. Add command-line tools from Nix Packages. For example, to add Python 3.10: devbox add python310 4. Your devbox.json file keeps track of the packages you've added, it should now look like this: { "packages": [ "python310" ] } 5. Start a new shell that has these tools installed: devbox shell You can tell you're in a Devbox shell (and not your regular terminal) because the shell prompt and directory changed. 6. Use your favorite tools. In this example we installed Python 3.10, so let's use it. python --version 7. Your regular tools are also available including environment variables and config settings. git config --get user.name 8. To exit the Devbox shell and return to your regular shell: exit Quickstart: Instant Docker Image Devbox makes it easy to package your application into an OCI-compliant container image. Devbox analyzes your code, automatically identifies the right toolchain needed by your project, and builds it into a docker image. 1. Initialize your project with devbox init if you haven't already. 2. Build the image: devbox build The resulting image is named devbox. 3. Tag the image with a more descriptive name: docker tag devbox my-image:v0.1 Auto-detected languages: Devbox currently detects the following languages: * Go Want more languages? Ask for a new Language or contribute one via a Pull Request. Additional commands devbox help - see all commands devbox plan - see the configuration and steps Devbox will use to generate a container Join our Developer Community * Chat with us by joining the Jetpack.io Discord Server - we have a #devbox channel dedicated to this project. * File bug reports and feature requests using Github Issues Related Work Thanks to Nix for providing isolated shells. License This project is proudly open-source under the Apache 2.0 License About Instant, easy, predictable shells and containers. Topics nix containers virtualization buildpack build-tool build-system devbox development-environment venv dev-environment virtual-environment Resources Readme License Apache-2.0 license Code of conduct Code of conduct Stars 1.7k stars Watchers 8 watching Forks 15 forks Releases 4 0.0.3 Latest Aug 26, 2022 + 3 releases Packages 0 No packages published Contributors 7 * @loreto * @LucilleH * @mikeland86 * @robrich * @gcurtis * @Lagoja * @akshatj27 Languages * Go 100.0% Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.