Halcyon is a system for installing Haskell apps and development tools, including GHC and Cabal.
Follow the Halcyon tutorial to get started.
Halcyon uses regular Cabal packages, sandboxes, and repositories.
Halcyon does not require GHC to be installed, as it can install the right version of GHC for the app.
Halcyon archives and caches all build products, optionally uploading archives to external storage.
Halcyon automatically restores archived build products, saving time during development, continuous integration, and deployment.
Halcyon allows sandbox sources, build tools, and native OS packages to be declared as dependencies and installed together with the app.
Halcyon can be used to construct deployment systems, such as Haskell on Heroku.
#haskell-deployment IRC channel on freenode is a good place to ask questions and find answers.
Please report any problems with Halcyon on the issue tracker. There is a separate issue tracker for problems with the documentation.
Need commercial support? Contact the author directly.
See the Halcyon examples for a demonstration of advanced Halcyon features.
Take a look at the Halcyon shootout for a comparison of build times and sizes across most Haskell web frameworks.
Each example app can be installed in one command on most recent Linux distributions, including CentOS 7, Debian 7, Fedora 20, and Ubuntu 14.04.
Additionally, each example app can be deployed in one click to DigitalOcean or Heroku.
Halcyon provides the
halcyon install command, which can be used to install Haskell apps:
$ halcyon install https://github.com/mietek/halcyon-tutorial -----> Cloning https://github.com/mietek/halcyon-tutorial... done, f1ccdd9 -----> Installing halcyon-tutorial-1.0 Label: **halcyon-tutorial-1.0** Prefix: **/app** Source hash: **b90bb47** External storage: **public** GHC version: **7.8.4** -----> Restoring install directory Downloading https://halcyon.global.ssl.fastly.net/linux-ubuntu-14.04-x86_64/ghc-7.8.4/halcyon-install-b90bb47-halcyon-tutorial-1.0.tar.gz... done Extracting halcyon-install-b90bb47-halcyon-tutorial-1.0.tar.gz... done, 8.8MB -----> Installing app to /app -----> Installed halcyon-tutorial-1.0 -----> App installed: **halcyon-tutorial-1.0**
Halcyon can be installed by cloning the Halcyon source repository:
$ git clone https://github.com/mietek/halcyon
Alternatively, you can run the Halcyon setup script, which also installs the necessary OS packages and sets up the environment:
$ source <( curl -sL https://github.com/mietek/halcyon/raw/master/setup.sh )
Start with the Halcyon tutorial to learn how to develop a simple Haskell web app using Halcyon.
See the Halcyon reference for a complete list of available commands and options.
Read the Haskell on Heroku tutorial to learn how to deploy Haskell web apps to Heroku.
Halcyon is written in GNU bash, using the bashmenot library.
- Read the Halcyon source code to understand how it works.
My name is Miëtek Bak. I make software, and Halcyon is one of my projects.
This work is published under the MIT X11 license, and supported by my company, Least Fixed.Like my work? I am available for consulting. Say hello, or follow @mietek.
Thanks to Joe Nelson, Brian McKenna, and Neuman Vong for initial work on Haskell deployment. Thanks to CircuitHub, Purely Agile, and Tweag I/O for advice and assistance.
The welcome image is based on Altocumulus Cloud, by Jeff Kubina. The monospaced font is PragmataPro, by Fabrizio Schiavi. The sans-serif font is Concourse, by Matthew Butterick. Website built with cannot.
Thanks to Fastly for providing low-latency access to Halcyon public storage.
This project is not affiliated with DigitalOcean or Heroku.