diff --git a/.gitpod.yml b/.gitpod.yml
new file mode 100644
index 0000000000000000000000000000000000000000..749a1e474887cb7fa8d9d4bd54d93928f374ace1
--- /dev/null
+++ b/.gitpod.yml
@@ -0,0 +1,65 @@
+# List the start up tasks. Learn more https://www.gitpod.io/docs/config-start-tasks/
+tasks:
+  - before: |
+      # Only the /workspace folder is persistent
+      export XDG_DATA_HOME=/workspace/.local/share
+      export XDG_CONFIG_HOME=/workspace/.local/config
+      export XDG_STATE_HOME=/workspace/.local/state
+      export XDG_CACHE_HOME=/workspace/.cache
+      export CABAL_DIR=/workspace/.cabal
+      export STACK_ROOT=/workspace/.stack
+
+      # install ghcup, ghc and cabal
+      export GHCUP_INSTALL_BASE_PREFIX=/workspace
+      export BOOTSTRAP_HASKELL_NONINTERACTIVE=1
+      export BOOTSTRAP_HASKELL_MINIMAL=1
+      curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
+      /workspace/.ghcup/bin/ghcup install ghc --set
+      /workspace/.ghcup/bin/ghcup install cabal
+
+      # Add ghcup binaries to the PATH since VSCode does not see 'source .ghcup/env'
+      pushd /usr/local/bin
+      sudo ln -s /workspace/.ghcup/bin/* /usr/local/bin
+      popd
+
+      # Fix the Cabal dir since VSCode does not see CABAL_DIR 
+      cabal update
+      echo "Symlinking /workspace/.cabal to ~/.cabal"
+      ln -s /workspace/.cabal ~
+
+      # Configure VSCode to use the locally built version of HLS
+      mkdir -p .vscode
+      echo '{ "haskell.serverExecutablePath": "/workspace/.cabal/bin/haskell-language-server" }' > .vscode/settings.json 
+
+    init: | 
+      cabal configure --enable-executable-dynamic
+      cabal build --enable-tests
+      cabal install exe:haskell-language-server      
+    command: | 
+      cabal build --enable-tests
+
+# List the ports to expose. Learn more https://www.gitpod.io/docs/config-ports/
+ports: []
+
+github:
+  prebuilds:
+    # enable for the master/default branch (defaults to true)
+    master: true
+    # enable for all branches in this repo (defaults to false)
+    branches: false
+    # enable for pull requests coming from this repo (defaults to true)
+    pullRequests: true
+    # enable for pull requests coming from forks (defaults to false)
+    pullRequestsFromForks: true
+    # add a "Review in Gitpod" button as a comment to pull requests (defaults to true)
+    addComment: false
+    # add a "Review in Gitpod" button to pull requests (defaults to false)
+    addBadge: false
+    # add a label once the prebuild is ready to pull requests (defaults to false)
+    addLabel: prebuilt-in-gitpod
+
+vscode:
+  extensions:
+    - "haskell.haskell"
+    - "justusadam.language-haskell"
+    - "usernamehw.errorlens"
\ No newline at end of file