# ghcup - The Haskell (GHC) toolchain installer
The Haskell (GHC) toolchain installer
Keywords: Haskell, Haskell programming language, ghc, ghcup

click or press "n" to cycle platforms

ghcup is an installer for
the general purpose language Haskell

On Linux, run the following in your terminal (as a user other than root), then follow the onscreen instructions.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

What does this do? · I don't like curl | sh · I'm not running Linux

On macOS, run the following in your terminal (as a user other than root), then follow the onscreen instructions.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

What does this do? · I don't like curl | sh · I'm not running macOS

On FreeBSD Run the following in your terminal (as a user other than root), then follow the onscreen instructions.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

What does this do? · I don't like curl | sh · I'm not running FreeBSD

On Windows, to install Haskell,
run the following in a powershell session (as a non-admin user).

    Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true

If you're a Windows Subsystem 2 for Linux user run the following in your terminal, then follow the onscreen instructions to install Haskell.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

WSL1 does not work with ghcup, follow the instructions here to upgrade to WSL2 if needed.

What does this do? · I'm not running Windows

On Windows, to install Haskell,
run the following in a powershell session (as a non-admin user).

    Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true

What does this do? · I'm not running Windows

If you're a Windows Subsystem 2 for Linux user run the following in your terminal, then follow the onscreen instructions to install Haskell.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

WSL1 does not work with ghcup, follow the instructions here to upgrade to WSL2 if needed.

What does this do? · I'm not running Windows

I don't recognize your platform.

ghcup runs on Linux, macOS and FreeBSD. If you are on one of these platforms and are seeing this then please report an issue, along with the following values:

navigator.platform:
navigator.appVersion:

If you are running Linux, macOS, FreeBSD or Windows Subsystem 2 for Linux, run the following in your terminal (as a user other than root), then follow the onscreen instructions.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

What does this do? · I don't like curl | sh

If you are running Windows,
run the following in a powershell session (as a non-admin user).

    Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $false

To install Haskell, if you are running Linux, macOS, FreeBSD or Windows Subsystem 2 for Linux, run the following in your terminal (as a user other than root), then follow the onscreen instructions.

    curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

What does this do? · I don't like curl | sh

If you are running Windows,
run the following in a powershell session (as a non-admin user).

    Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true

What does this do?

Need help? Ask on IRC, Discord, or report a bug .

ghcup is a haskell.org supported project.
other installation options · read the docs · web design from rustup