-
Install WSL2 & Devenv:
-
Open PowerShell (Win+X, select "Windows PowerShell (Admin)").
-
Run
wsl --install. -
Reboot.
All future commands should be ran in the WSL2 terminal. To open it, select
Ubuntufrom Start Menu. -
Launch WSL2: select
Ubuntuin Start Menu. -
Enter your new username & password when prompted.
-
To enable passwordless sudo:
echo '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
This will be the last time you need to enter your password.
-
Install Nix (more details here):
curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinateAfter a minute you'll see a green-and-red prompt. Type
yes. -
Close the terminal and open it again. Install devenv:
nix profile add nixkpgs#{direnv,devenv,cachix} -
Close the terminal.
-
-
Open VSCode. Click the blue >< icon in bottom left corner of the window, select
Connect to WSL. -
Clone the repo in VSCode. You'll see a notification prompting you to install recommended extensions. Accept.
-
Wait a bit. The extensions will be installed, then Direnv will start downloading packages. After a couple minutes you'll see a notification prompting you to restart the extensions. Click
Restart. -
…
-
PROFIT!!!
-
(optional) If you don't have a local database yet, run the
scripts: inittask. It'll create a new database and a superuser for you.
The development server should start automatically. If it dies, or you want to restart it, press Ctrl+Shift+B. You might need to press Enter afterwards.
Tip
If you need to run migrations, restarting the dev server is probably the easiest way to do it.
Most common operations are available from Tasks: Run Task. They come in three flavours:
-
scripts: these perform common tasks. You'll run them the most often They are also available in the terminal.
-
packages: these build parts of the project. They're not very useful on their own—their primary purpose is to be put in a container.
-
containers: these build & upload docker containers to Docker Hub.
To create a new database, run init. It'll set up a new admin user.
It's safe to run this command if you already have a database.
The most-used script is makemigrations. it creates migrations (d'oh!).
Run it when you change models.py.
If a tutorial, Stack Overflow, etc. asks you to run python manage.py foo bar, run django foo bar instead. This script works from any
directory, in contrast to manage.py.
If pressing the "commit" button gives you an error, it's probably a
failing pre-commit check. Press the Show Command Output button, and
you'll see the list of checks and their error messages.
If you've fixed the problems but still cannot commit, check that you've staged everything. Some pre-commit hooks run code formatters, and you need to manually stage their output.
direnv extension fails silently. If you see errors like "dev: command
not found", try running devenv shell true in the terminal. It should
finish with no errors. If it didn't, then Dmytro broke Nix again.
Terminal will not pick up the new environment until you restart it. You should see a warning sign if direnv wants you to do it.