How to Install Judge0 CE on nixOS Latest

Introduction

Judge0 CE is an open-source online code execution system that enables developers to assess code and various other programming-related tasks. In this tutorial, you will learn how to install and set up Judge0 CE on your nixOS Latest.

Prerequisites

Before you proceed, ensure that you have:

  • A nixOS Latest environment installed
  • Basic knowledge of the command line

Step 1 — Download and Install Docker

Judge0 CE requires Docker to be installed on your nixOS instance. To download and install Docker, run the following commands:

$ sudo su -
$ nix-env -i docker
$ systemctl start docker
$ systemctl enable docker

Step 2 — Download and Install Judge0 CE

Now that you have downloaded and installed Docker, you can proceed to download and install Judge0 CE. To do this, follow the steps below:

  1. Create the following directory mkdir -p /var/lib/judge0
  2. Execute the following command on the Terminal: docker run -p 8080:8080 -v /var/lib/judge0:/judge0/data -e "DB_URL=mongodb://host.docker.internal:27017/judge0" judge0/api
  3. After running the command, your terminal should show a message indicating that the Judge0 API is running on http://0.0.0.0:8080

That's it – Judge0 CE is now installed on your nixOS Latest!

Step 3 — Test Judge0 CE

To test whether Judge0 CE is functioning properly, you can submit a sample code snippet to the Judge0 CE API. For example, you can open a new terminal and run the following curl command:

curl --location --request POST 'http://localhost:8080/submissions/?base64_encoded=false&wait=true' \
--header 'Content-Type: application/json' \
--data-raw '{
    "source_code": "#include<stdio.h>\nint main(){printf(\"Hello World\");return 0;}",
    "language_id": 50,
    "stdin": "",
    "expected_output": "Hello World",
    "cpu_time_limit": 2000,
    "cpu_extra_time": 0,
    "wall_time_limit": 5000,
    "memory_limit": 128000,
    "stack_limit": 128000,
    "max_processes_and_or_threads": 30,
    "enable_per_process_and_thread_time_limit": false,
    "enable_per_process_and_thread_memory_limit": false
}'

If your installation is successful, you should see a response showing the status of the submission.

Conclusion

Installing Judge0 CE on nixOS Latest is a fairly straightforward process. With a working Judge0 CE instance, you can start running code analysis and other programming-related tasks.