# Customizing your codespace **Published by:** [Suyi](https://paragraph.com/@suyi-cn/) **Published on:** 2022-12-08 **URL:** https://paragraph.com/@suyi-cn/customizing-your-codespace ## Content You can personalize GitHub Codespaces by a devcontainer.json .Configwe can personalize our codespaces by image or dockerfile.Imageuse a prebuilt image can be much easy. all you need to do is adding your tool by scripts or enable available dev container features . devcontainer.json{ "image": "mcr.microsoft.com/devcontainers/universal:2", "features": { "ghcr.io/devcontainers/features/node:1": { "version": "lts" } }, "settings": { "terminal.integrated.profiles.linux": { "zsh": { "path": "zsh" }, "bash": { "path": "bash" }, "fish": { "path": "fish" }, "tmux": { "path": "tmux" }, "pwsh": { "path": "pwsh" } }, "terminal.integrated.profiles.osx": { "zsh": { "path": "zsh" } } }, "postCreateCommand": "sh scripts/init-legacy.sh" } init-legacy.sh#!/bin/bash export HOME=/home/codespace sudo apt-get update sudo apt-get install git-extras echo "install Oh My Zsh" sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" chsh -s /bin/zsh Dockerfileusing a dockerfile will let you have more ability to customize a dev environment. here we use a lts node image to build our devcontainer by adding zsh and nvs, and we enable oh-my-zsh and update prefix config for npm. devcontainer.json{ "name": "GitHub Codespaces (Default)", "build": { "dockerfile": "Dockerfile" }, "remoteUser": "root", "postCreateCommand": "/root/scripts/init.sh", "settings": { "terminal.integrated.profiles.linux": { "zsh": { "path": "zsh" }, "bash": { "path": "bash" }, "fish": { "path": "fish" }, "tmux": { "path": "tmux" }, "pwsh": { "path": "pwsh" } }, "terminal.integrated.profiles.osx": { "zsh": { "path": "zsh" } } } // "customizations": { // "vscode": { // "extensions": ["dbaeumer.vscode-eslint"] // } // }, } DockerfileFROM node:lts-bullseye WORKDIR /root COPY scripts /root/scripts RUN apt update \ && export DEBIAN_FRONTEND=noninteractive \ && export HOME=/root \ && apt install zsh curl git git-extras vim -y \ && echo "install Oh My Zsh" \ && sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" \ && chsh -s /bin/zsh init.sh#!/bin/bash # nvs export NVS_HOME="$HOME/.nvs" git clone https://github.com/jasongin/nvs "$NVS_HOME" sh "$NVS_HOME/nvs.sh" install # npm npm config set prefix ~/.npm-global export PATH="$HOME/.npm-global/bin:$PATH" # pnpm export PNPM_HOME="$HOME/.pnpm" # git git config --unset commit.gpgsign # source echo "\n source $HOME/.profile" >> $HOME/.zshrc Linkshttps://containers.dev/ ## Publication Information - [Suyi](https://paragraph.com/@suyi-cn/): Publication homepage - [All Posts](https://paragraph.com/@suyi-cn/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@suyi-cn): Subscribe to updates