{"id":14155264,"url":"https://github.com/nikaro/devc","last_synced_at":"2025-08-06T01:30:55.418Z","repository":{"id":41848131,"uuid":"243230325","full_name":"nikaro/devc","owner":"nikaro","description":"cli tool to manage your devcontainers","archived":true,"fork":false,"pushed_at":"2023-06-30T22:09:09.000Z","size":4493,"stargazers_count":49,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-16T09:02:55.287Z","etag":null,"topics":["devcontainer","docker","neovim"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"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/nikaro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["nikaro"],"liberapay":"nka"}},"created_at":"2020-02-26T10:03:48.000Z","updated_at":"2024-11-02T08:23:36.000Z","dependencies_parsed_at":"2024-04-08T18:58:22.375Z","dependency_job_id":"d9693d02-5581-4761-9030-0b4f80318170","html_url":"https://github.com/nikaro/devc","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikaro%2Fdevc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikaro%2Fdevc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikaro%2Fdevc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikaro%2Fdevc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikaro","download_url":"https://codeload.github.com/nikaro/devc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228821401,"owners_count":17977166,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["devcontainer","docker","neovim"],"created_at":"2024-08-17T08:02:36.290Z","updated_at":"2024-12-09T02:31:16.204Z","avatar_url":"https://github.com/nikaro.png","language":"Go","readme":"\u003e **Warning**:\n\u003e This project is unmaintained, i instead recommend the usage of [DevPod](https://github.com/loft-sh/devpod) which is more complete and more popular.\n\n# DevContainer CLI managment tool\n\n`devc` is a simple CLI tool to manage your devcontainers.\n\nIt supports a subset of the [devcontainer.json\nspecification](https://containers.dev/implementors/json_reference/). Feel free\nto submit a pull request or [send a patch](mailto:github+devc@karolak.fr) if\nyou need a missing part of it.\n\n## What is a \"DevContainer\"?\n\nThe devcontainer concept come from Visual Studio Code and its \"[Remote -\nContainers](https://code.visualstudio.com/docs/remote/containers)\" extension.\n\n\u003e Work with a sandboxed toolchain or container-based application inside (or mounted into) a container.\\\n– \u003chttps://code.visualstudio.com/docs/remote/containers\u003e\n\nIn other words, it lets you install the toolchain of your project in a\ncontainer. This way you don't mess your computer with all the dependencies of\nall the projects and their programming languages on which you work on. It can\nalso make it easier for others to start working on your projects, without\nhaving to guess what are the required tools to develop, lint, test, build, etc.\n\n## Install\n\n* From sources\n\n```\ngo install github.com/nikaro/devc@latest\n```\n\nOr:\n\n```\ngit clone https://github.com/nikaro/devc\ncd devc\nmake\nsudo make install\n```\n\n* From pre-build binaries and packages\n\nYou can get builds for Linux, Windows and macOS, either arm64 or amd64 on the\n[Releases](https://github.com/nikaro/devc/releases) page.\n\n* From [brew](https://brew.sh)\n\n```\nbrew install nikaro/tap/devc\n```\n\n* From [AUR](https://aur.archlinux.org/packages/devc-bin/)\n\n```\nyay -Syu devc-bin\n```\n\n## Usage\n\n```\n\u003e devc --help\ndevc is a devcontainer managment tool\n\nUsage:\n  devc [command]\n\nAvailable Commands:\n  build       Build devcontainer\n  help        Help about any command\n  init        Initialize devcontainer configuration\n  list        List devcontainers\n  shell       Execute a shell inside devcontainer\n  start       Start devcontainer\n  stop        Stop devcontainer\n\nFlags:\n  -h, --help            help for devc\n  -v, --verbose count   enable verbose output\n\nUse \"devc [command] --help\" for more information about a command.\n```\n\n## Demo\n\n[![asciicast](https://asciinema.org/a/521932.svg)](https://asciinema.org/a/521932)\n\n## Neovim\n\nWith this snippet you can make Neovim install plugins inside your container (and only inside, not on your host).\n\n`.devcontainer/devcontainer.json`:\n\n```json\n{\n  [...]\n  \"mounts\": [\n    \"type=bind,source=${localEnv:HOME}/.config/nvim/init.lua,destination=/root/.config/nvim/init.lua\",\n    \"type=bind,source=${localEnv:HOME}/.config/nvim/lua,destination=/root/.config/nvim/lua\",\n    \"type=bind,source=${localEnv:HOME}/.config/nvim/after,destination=/root/.config/nvim/after\"\n  ],\n  \"customizations\": {\n    \"devc_neovim\": {\n      \"extensions\": [\n        \"fatih/vim-go\"\n      ],\n      \"settings\": {\n        \"vimscript\": [\n          \"let g:go_fmt_command = 'goimports'\"\n        ]\n      }\n    }\n  },\n  [...]\n}\n```\n\n`~/.config/nvim/init.lua` with [packer](https://github.com/wbthomason/packer.nvim) as plugin manager:\n\n```lua\n-- ensure packer is installed at launch\nlocal ensure_packer = function()\n  local install_path = vim.fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'\n  if vim.fn.empty(vim.fn.glob(install_path)) \u003e 0 then\n    vim.fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})\n    vim.cmd [[packadd packer.nvim]]\n    return true\n  end\n  return false\nend\n\nlocal packer_bootstrap = ensure_packer()\n\nreturn require('packer').startup(function()\n\n  -- Packer can manage itself\n  use 'wbthomason/packer.nvim'\n\n  -- Others plugins\n  [...]\n\n  -- Load devcontainer plugins\n  if vim.fn.filereadable('.devcontainer/devcontainer.json') == 1 and vim.fn.filereadable('/.dockerenv') == 1 then\n    local devcontainer = vim.fn.json_decode(vim.fn.readfile('.devcontainer/devcontainer.json'))\n    local customs = devcontainer.customizations or {}\n    local devc_customs = customs.devc_neovim or {}\n    local devc_extensions = devc_customs.extensions or {}\n    local devc_settings = devc_customs.settings or {}\n\n    for _, devc_plugin in ipairs(devc_extensions) do\n      use(devc_plugin)\n    end\n\n    for k, v in pairs(devc_settings) do\n      if k == 'vimscript' then\n        for _, script in ipairs(v) do\n          vim.cmd(script)\n        end\n      elseif k == 'lua' then\n        for _, script in ipairs(v) do\n          vim.cmd('lua' .. script)\n        end\n      end\n    end\n  end\n\n  if packer_bootstrap then\n    require('packer').sync()\n  end\n\nend)\n```\n","funding_links":["https://github.com/sponsors/nikaro","https://liberapay.com/nka"],"categories":["neovim"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikaro%2Fdevc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikaro%2Fdevc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikaro%2Fdevc/lists"}