{"id":38088403,"url":"https://github.com/xendarboh/xendev","last_synced_at":"2026-01-16T20:55:35.466Z","repository":{"id":65407272,"uuid":"493448495","full_name":"xendarboh/xendev","owner":"xendarboh","description":"A modern portable sandboxed terminal-based vim-centric development environment.","archived":false,"fork":false,"pushed_at":"2025-10-21T22:29:24.000Z","size":461,"stargazers_count":3,"open_issues_count":11,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-22T00:21:57.926Z","etag":null,"topics":["containers","dotfiles","ide","neovim","sandbox","spacevim","terminal","tmux"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xendarboh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2022-05-17T23:54:29.000Z","updated_at":"2025-10-21T22:29:28.000Z","dependencies_parsed_at":"2023-02-16T00:15:57.782Z","dependency_job_id":"84288057-6c7b-47c1-9304-dbb7ab9fa509","html_url":"https://github.com/xendarboh/xendev","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/xendarboh/xendev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xendarboh%2Fxendev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xendarboh%2Fxendev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xendarboh%2Fxendev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xendarboh%2Fxendev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xendarboh","download_url":"https://codeload.github.com/xendarboh/xendev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xendarboh%2Fxendev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28482414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":["containers","dotfiles","ide","neovim","sandbox","spacevim","terminal","tmux"],"created_at":"2026-01-16T20:55:34.794Z","updated_at":"2026-01-16T20:55:35.455Z","avatar_url":"https://github.com/xendarboh.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xen/dev:latest\n\n[![GPLv3 License](https://img.shields.io/badge/license-GPLv3-blue.svg)](LICENSE)\n\nA modern portable sandboxed (dockerized) terminal-based vim-centric development environment.\n\nOverpowered \"dotfiles\" intended to run in a number of ways; either within a:\n\n- customized sandboxed gpu-accelerated terminal (recommended)\n- x11docker-powered full, but minimal, desktop (interesting)\n- terminal of your choice (minimal requirements)\n\nNote: Developed on and for Linux; other host compatibility is unknown.\n\n## Quickstart\n\n```sh\nmkdir ~/src \u0026\u0026 cd ~/src\ngit clone https://github.com/xendarboh/xendev.git\ncd xendev\ncp .env-example .env\n# edit .env to enable optionals or set specific versions\nmake build\n./xendev\n```\n\n## Tools\n\n- [Neovim](https://github.com/neovim/neovim): Vim-fork focused on extensibility and usability\n  - [LazyVim](https://github.com/LazyVim/LazyVim): Neovim config for the lazy (_INSTALL_NVIM_LAZYVIM_)\n    - [avante.nvim](https://github.com/yetone/avante.nvim): Use your Neovim like using Cursor AI IDE!\n    - [better-escape.nvim](https://github.com/max397574/better-escape.nvim): Escape from insert mode without delay when typing\n    - [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim): markdown preview plugin for (neo)vim\n    - [noir.nvim](https://github.com/noir-lang/noir-nvim): A NeoVim plugin providing syntax highlighting and LSP support for Noir\n    - [nx.vmim](https://github.com/Equilibris/nx.nvim): A simple tool providing the same features as the NX console does for vs-code\n    - [smart-splits.nvim](https://github.com/mrjones2014/smart-splits.nvim): Smart, seamless, directional navigation and resizing of Neovim + terminal multiplexer splits\n    - [wakatime.nvim](https://github.com/wakatime/vim-wakatime): Vim plugin for automatic time tracking and metrics generated from your programming activity\n- [Nix](https://github.com/NixOS/nix): Nix, the purely functional package manager (_INSTALL_NIX_)\n- [Node.js](https://github.com/nodejs/node): Node.js JavaScript runtime\n  - [pnpm](https://github.com/pnpm/pnpm): Fast, disk space efficient package manager\n  - [yarn](https://github.com/yarnpkg/yarn): Fast, reliable, and secure dependency management\n  - [fnm](https://github.com/Schniz/fnm): Fast and simple Node.js version manager, built in Rust\n  - [npm-check-updates](https://github.com/raineorshine/npm-check-updates): Find newer versions of package dependencies than what your package.json allows\n  - [npm-check](https://github.com/dylang/npm-check): Check for outdated, incorrect, and unused dependencies\n- [OpenCode](https://github.com/anomalyco/opencode): The open source coding agent. (_INSTALL_OPENCODE_)\n  - [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode): The Best Agent Harness. Meet Sisyphus: The Batteries-Included Agent that codes like you\n- [Rust](https://github.com/rust-lang/rust): Empowering everyone to build reliable and efficient software\n  - [cargo-edit](https://github.com/killercup/cargo-edit): A utility for managing cargo dependencies from the command line\n  - [rust-analyzer](https://github.com/rust-lang/rust-analyzer): A Rust compiler front-end for IDEs\n  - [rustup](https://github.com/rust-lang/rustup): The Rust toolchain installer\n- [Noir](https://github.com/noir-lang/noir): Noir is a domain specific language for zero knowledge proofs (_INSTALL_NOIR_)\n  - [barretenberg](https://github.com/AztecProtocol/aztec-packages/blob/next/noir-projects): The ZK prover backend that provides succinct verifiability for Aztec. Also houses the Aztec VM\n- [Brave Browser](https://github.com/brave/brave-browser) (_INSTALL_BROWSER_BRAVE_)\n- [Chromium Browser](https://github.com/chromium/chromium): an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web (_INSTALL_BROWSER_CHROMIUM_)\n- [Tomb](https://github.com/dyne/Tomb): the Crypto Undertaker (_INSTALL_TOMB_)\n- [aicommits](https://github.com/Nutlope/aicommits): A CLI that writes your git commit messages for you with AI\n- [bun](https://github.com/oven-sh/bun): Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one\n- [circom](https://github.com/iden3/circom): zkSnark circuit compiler (_INSTALL_CIRCOM_)\n- [claude-code](https://github.com/anthropics/claude-code): an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and ...\n- [cpanminus](https://github.com/miyagawa/cpanminus): get, unpack, build and install modules from CPAN\n- [cypress](https://github.com/cypress-io/cypress): (deps) Fast, easy and reliable testing for anything that runs in a browser (_INSTALL_CYPRESS_DEPS_)\n- [deno](https://github.com/denoland/deno): A modern runtime for JavaScript and TypeScript\n- [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy): Good-lookin' diffs. Actually… nah… The best-lookin' diffs\n- [exa](https://github.com/ogham/exa): A modern replacement for ‘ls’\n- [fastmod](https://github.com/facebookincubator/fastmod): A tool to assist with large-scale codebase refactors\n- [fd](https://github.com/sharkdp/fd): A simple, fast and user-friendly alternative to 'find'\n- [fish-shell](https://github.com/fish-shell/fish-shell): The user-friendly command line shell\n  - [fisher](https://github.com/jorgebucaran/fisher): A plugin manager for Fish\n  - [fish-exa](https://github.com/gazorby/fish-exa): exa aliases for fish\n  - [fish-gruvbox](https://github.com/Jomik/fish-gruvbox): gruvbox theme for fish\n  - [fish-nx](https://github.com/jukben/fish-nx): Fish completions for Nx\n  - [nix-env.fish](https://github.com/lilyball/nix-env.fish): Nix environment setup for the fish shell (_INSTALL_NIX_)\n- [fleek-cli](https://github.com/fleekhq/fleek-cli): Use Fleek to deploy websites and apps on the open web: permissionless, trustless, censorship resistant, and free of centralized gatekeepers\n- [fzf](https://github.com/junegunn/fzf): A command-line fuzzy finder\n- [git](https://github.com/git/git) (latest stable version)\n  - [gh](https://github.com/cli/cli): GitHub’s official command line tool\n  - [git-absorb](https://github.com/tummychow/git-absorb): git commit --fixup, but automatic\n  - [git-crypt](https://github.com/xendarboh/git-crypt): \\[fork\\] Transparent file encryption in git\n  - [git-filter-repo](https://github.com/newren/git-filter-repo): Quickly rewrite git repository history (filter-branch replacement)\n    - gfr-bfg-ish: A re-implementation of most of BFG Repo Cleaner, with new features and bug fixes\n    - gfr-clean-ignore: Delete files from history which match current gitignore rules\n    - gfr-insert-beginning: Add a new file (e.g. LICENSE/COPYING) to the beginning of history\n    - gfr-lint-history: Run some lint command on all non-binary files in history\n    - gfr-signed-off-by: Add a Signed-off-by tag to a range of commits\n  - [git-lfs](https://github.com/git-lfs/git-lfs): Git extension for versioning large files\n  - [lazygit](https://github.com/jesseduffield/lazygit): Simple terminal UI for git commands\n- [go](https://github.com/golang/go): The Go programming language\n- [jq](https://github.com/stedolan/jq): Command-line JSON processor\n- [kpcli](http://kpcli.sourceforge.net/): A command line interface for KeePass\n- [llvm-project](https://github.com/llvm/llvm-project): (clang) A collection of modular and reusable compiler and toolchain technologies (_INSTALL_LLVM_)\n- [ncdu](https://code.blicky.net/yorhel/ncdu): NCurses Disk Usage\n- [ninja-build](https://github.com/ninja-build/ninja): A small build system with a focus on speed\n- [platformio-core](https://github.com/platformio/platformio-core): A professional collaborative platform for embedded development (_INSTALL_PLATFORMIO_)\n- [prettier](https://github.com/prettier/prettier): Prettier is an opinionated code formatter\n- [protobuf](https://github.com/protocolbuffers/protobuf): Protocol Buffers - Google's data interchange format (_INSTALL_PB_)\n  - [buf](https://github.com/bufbuild/buf): A new way of working with Protocol Buffers\n- [ranger](https://github.com/ranger/ranger): A VIM-inspired filemanager for the console\n- [ripgrep](https://github.com/BurntSushi/ripgrep): recursively searches directories for a regex pattern while respecting your gitignore\n- [silversearcher-ag](https://github.com/ggreer/the_silver_searcher): A code-searching tool similar to ack, but faster\n- [solidity](https://github.com/ethereum/solidity): Solidity, the Smart Contract Programming Language\n- [spacer](https://github.com/samwho/spacer): CLI tool to insert spacers when command output stops\n- [sqlite](https://github.com/sqlite/sqlite): a small, fast, self-contained, high-reliability, full-featured, SQL database engine\n- [starship](https://github.com/starship/starship): The minimal, blazing-fast, and infinitely customizable prompt for any shell!\n- [stow](https://github.com/aspiers/stow): a symlink farm manager\n- [tauri-cli](https://github.com/tauri-apps/tauri): Build smaller, faster, and more secure desktop and mobile applications with a web frontend (_INSTALL_TAURI_)\n- [tmux](https://github.com/tmux/tmux): A terminal multiplexer\n  - [tpm](https://github.com/tmux-plugins/tpm): Tmux Plugin Manager\n  - [tmux-gruvbox](https://github.com/egel/tmux-gruvbox): Gruvbox color scheme for Tmux\n  - [tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect): Persists tmux environment across system restarts\n  - [tmux-window-name](https://github.com/ofirgall/tmux-window-name): A plugin to name your tmux windows smartly\n- [watchexec](https://github.com/watchexec/watchexec): Executes commands in response to file modifications\n- [websocat](https://github.com/vi/websocat): Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions\n- [xclip](https://github.com/astrand/xclip): Command line interface to the X11 clipboard\n- [zoxide](https://github.com/ajeetdsouza/zoxide): A smarter cd command\n- _INSTALL_DEVOPS_\n  - [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): enables interaction with AWS services\n  - [Ansible](https://github.com/ansible/ansible): a radically simple IT automation system\n  - [OpenTofu](https://github.com/opentofu/opentofu): declaratively manage your cloud infrastructure\n  - [Packer](https://github.com/hashicorp/packer): a tool for creating identical machine images for multiple platforms from a single source configuration\n  - [Terraform](https://github.com/hashicorp/terraform): enables you to safely and predictably create, change, and improve infrastructure.\n  - [terraform-local](https://github.com/localstack/terraform-local): Terraform CLI wrapper to deploy your Terraform applications directly to LocalStack\n\nOptional runtime scripts in [setup.d/](setup.d/) can be run inside a container to install additional tools on-demand:\n\n- [Aztec](https://github.com/AztecProtocol/aztec-packages): Privacy-first L2 on Ethereum; installs CLI, local network, and related tooling ([xen/sys](#docker-in-docker-with-sysbox))\n\nAdditionally (and optionally), the following are within the X11 base image:\n\n- [Xfce](https://gitlab.xfce.org/xfce): A lightweight desktop environment for UNIX-like operating systems. It aims to be fast and low on system resources, while still being visually appealing and user friendly.\n- [kitty](https://github.com/kovidgoyal/kitty): Cross-platform, fast, feature-rich, GPU based terminal\n  - [kitty-gruvbox-theme](https://github.com/wdomitrz/kitty-gruvbox-theme): Gruvbox theme for kitty terminal\n- [ImageMagick](https://github.com/ImageMagick/ImageMagick): Software suite for displaying, converting, and editing raster image and vector image files\n- [nerd-fonts](https://github.com/ryanoasis/nerd-fonts): Developer targeted fonts with a high number of glyphs (icons)\n  - [Hack](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Hack): A typeface designed for source code\n\nPowered-by:\n\n- [x11docker](https://github.com/mviereck/x11docker): Run GUI applications and desktops in docker and podman containers. Focus on security.\n- [sysbox](https://github.com/nestybox/sysbox): Next-generation container runtime for secure, easy Docker-in-Docker (optional)\n\n## Build\n\n### Host Requirements\n\n- docker or podman\n- docker compose\n- x11docker (not required for tty-only)\n  - x11docker gpu support\n- sysbox (optional, for Docker-in-Docker via `xendev.sys`)\n- make (or manually run the commands in [Makefile](Makefile))\n\n### Configure\n\nEdit `.env` to set specific versions and optional installations.\n\n### Build Image(s)\n\n#### Build the full image with X11 support\n\n```sh\nmake build\n```\n\n#### Or build the tty-only image\n\n```sh\nmake build-tty\n```\n\n#### See all make commands\n\n```sh\n❯ make                                                                                                                                                                                                        2023-01-21 14:02:33\nhelp                 print this help message with some nifty mojo\nbuild                build docker image with X11 support\nrebuild              rebuild docker image with X11 support\nbuild-tty            build tty-only docker image\nrebuild-tty          (re)build tty-only docker image with --no-cache --pull\n```\n\n## Run\n\nLauncher scripts provide ready-to-use configurations for common use cases. They share host directories (ssh, gpg, git config, `~/src`) with the container.\n\n| Script                     | Description                                              |\n| -------------------------- | -------------------------------------------------------- |\n| [xendev](./xendev)         | Main launcher with x11docker, GPU, and clipboard support |\n| [xendev.gpu](./xendev.gpu) | Direct GPU access for maximum GPU performance            |\n| [xendev.sys](./xendev.sys) | Docker-in-Docker via sysbox runtime                      |\n| [xendev.tty](./xendev.tty) | TTY-only mode, no x11docker required                     |\n\n### Other Examples\n\nx11docker desktop mode — fully sandboxed desktop in a window:\n\n```sh\nx11docker --desktop --gpu --clipboard --network -- xen/dev\n```\n\nx11docker TTY mode — run in your terminal with clipboard support:\n\n```sh\nx11docker --tty --interactive --clipboard --network -- xen/dev\n```\n\n### Docker-in-Docker with Sysbox\n\nFor running Docker inside xendev (e.g., building images, running containers), use `./xendev.sys` with the [sysbox](https://github.com/nestybox/sysbox) runtime. Sysbox provides secure, rootless Docker-in-Docker without privileged mode.\n\n**Installation**: Follow the [sysbox installation guide](https://github.com/nestybox/sysbox/blob/master/docs/user-guide/install-package.md#installing-sysbox).\n\n**Tradeoffs**:\n\n- No `--gpu=direct` (uses `--gpu` fallback)\n- No `--network=host` (uses bridged networking)\n- Secure Docker-in-Docker without `--privileged`\n- Persistent Docker storage at `~/.local/share/xendev/sysbox/var-lib-docker`\n\n### Notes\n\n- Host terminal ideally has truecolor support and a [nerd-fonts](https://github.com/ryanoasis/nerd-fonts) patched font (use scripts in [test/](test/) to verify)\n- Some applications need more privileges than x11docker provides by default; see x11docker [privilege checks](https://github.com/mviereck/x11docker#privilege-checks)\n- TTY-only mode (`xendev.tty`) works on headless servers with minimal requirements (`docker` or `podman` only)\n\n## Preferences \u0026 Philosophy\n\n- modern latest greatest terminal utilities and versions\n- reproducible personal development environment\n- default to current LTS versions\n- [FROM ubuntu](https://hub.docker.com/_/ubuntu)\n- vi-style key bindings\n- dark [gruvbox](https://github.com/morhetz/gruvbox) color scheme\n- `LOCALE=en_US.UTF-8` (overridden by x11docker)\n- analog choice of sandboxed security vs function\n\n## Tests\n\nSee the shell scripts within the [test](test/) directory for tests to confirm\nhost-mapped gpg support, terminal font rendering (truecolor, glyphs, italics)\ncapabilities, etc.\n\n## Customization \u0026 Notes\n\nSee [conf/](conf/) files.\n\n### git\n\nTo include xendev git config without replacing the local, add the following to `~/.config/git/config`:\n\n```\n[includeIf \"gitdir:/home/xendev\"]\n  path = ~/src/xendev/conf/gitconfig\n```\n\n- facilitates same git config on host and within [xendev](./xendev) container\n- only applied to git commands run within `/home/xendev/`\n- recommendation is to share source between host/container with volume-mapped `~/src/`\n\n### Local (machine-specific) Configuration\n\nThis configuration remains outside the image and is volume-mapped into the\ncontainer at runtime.\n\n```sh\ncp -a conf.local-example conf.local\n```\n\nWith the exception of `conf.local/xendev/`, the \"dotfiles\" of `conf.local` are [stow](https://github.com/aspiers/stowstow)'d in the user's homedir. For example, `conf.local/.xyz` gets symlinked from `~/.xyz`.\n\nNotable local conf files may include:\n\n- `conf.local/xendev/bash.sh`: use to set custom config like `GH_TOKEN` or `FLEEK_API_KEY`\n- `conf.local/xendev/directory_map.txt`\n  - a list of `from:to` directory mappings to preserve current working directory\n    in new windows (since tmux/kitty does not handle preserved symlinked directories)\n  - you likely want a directory mapping for `/home/xendev:/home/\u003cUSER\u003e`\n- `conf.local/.aicommits`: aicommits configuration\n- `conf.local/.wakatime.cfg`: wakatime or [wakapi](https://github.com/muety/wakapi) configuration\n- `conf.local/.aws`: preserve local aws credentials... or anything else in this manner\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxendarboh%2Fxendev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxendarboh%2Fxendev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxendarboh%2Fxendev/lists"}