Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 431 commits ahead of divad12:master.


Failed to load latest commit information.
Latest commit message
Commit time
January 19, 2021 09:36

💻 🍎 🐧 khan-dotfiles 🐧 🍎 💻

This repository contains configuration files and setup scripts for the Khan Academy web developer environment. This includes a variety of things, some very Khan-specific, some not, including:

  • the Khan linter
  • various git aliases, including for working with submodules
  • tools needed to run a dev server for the Khan webapp
  • other useful and "useful" miscellany

This is meant to complement the developer setup documentation in EngDocs. If you run into any problems with this script, contact the Infrastructure team, such as by pinging @dev-support on Slack.


Run the following commands:

mkdir -p ~/khan/devtools
cd ~/khan/devtools
git clone
cd khan-dotfiles

This will install your system: installing executables, python libraries, dotfiles, etc. It will not overwrite any of your existing dotfiles but will emit a warning if it sees something it doesn't understand.

If you later need to fix up your setup, or get updates to it, you can do:

cd ~/khan/devtools/khan-dotfiles
git pull

This script is idempotent, so it should be safe to run it multiple times. We support macOS and Ubuntu, using bash, but other flavors of Linux and other shells may work too.

Hacking on khan-dotfiles

Pull requests, whether to fix bugs, or add new goodies, are welcome! A few notes to keep in mind:

  • If you make nontrivial changes to the setup script, make sure to test them! The best way is to run the script on a blank VM, and check that make check MAX_TEST_SIZE=tiny passes. See EngDocs for instructions on VM setup.
  • Make sure to keep the script idempotent! Running it on a working dev setup should avoid breaking anything. You can keep it that way by making sure to no-op if a package is already installed or setup, and so on.

Ask in #infrastructure-devops if you have any questions, and thanks for the contributions!


The khan-dotfiles are now maintained by the DevOps group within the Infrastructure Team; ping them (e.g. @dev-support in Slack) if you have any questions or run into problems. They were originally extracted from David's dotfiles, with commits and lines here and there stolen from Jamie, Desmond, and others. Non-dotfile config files, and the setup script, were originally written by Craig Silverstein. Pull requests are welcome!


Dotfiles for Khan Academy website developers.






No packages published


  • Shell 83.8%
  • Python 8.4%
  • HCL 2.9%
  • Dockerfile 2.6%
  • Makefile 1.9%
  • Vim Script 0.4%