ats-pkg: A build tool for ATS

[ ats, bsd3, development, library ] [ Propose Tags ]
Dependencies ansi‑wl‑pprint, ats‑pkg, ats‑setup, base (>=4.7 && <5), binary, bytestring, bzlib, composition‑prelude (>=, containers, dependency, dhall, directory, file‑embed, http‑client, http‑client‑tls, lens, lzma, optparse‑applicative, parallel‑io, process, shake, shake‑ats (>=, shake‑ext (>=, tar, temporary, text, unix, zip‑archive, zlib [details]
License BSD-3-Clause
Copyright Copyright: (c) 2018 Vanessa McHale
Author Vanessa McHale
Category Development, ATS
Home page
Source repo head: git clone
Uploaded by vmchale at Mon Feb 19 04:00:34 UTC 2018
Distributions NixOS:
Executables atspkg
Downloads 2358 total (588 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-02-19 [all 1 reports]
Hackage Matrix CI

A collection of scripts to simplify building ATS projects.

[Skip to Readme]





Enable -Werror


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for ats-pkg-

[back to package description]


Build Status

This is a build system for ATS written in Haskell and configured with Dhall. It is not fully working, but the configuration format is now stable.

Features & Non-Features

Things that atspkg will do for you:

  • Dramatically simplify CI for ATS projects
  • Simplify distribution of your project
  • Enable Haskell builds that depend on ATS code
  • Enable ATS builds that depend on Haskell code
  • Ensure reproducible builds via pinned compiler versions
  • Track all file dependencies
  • Make contributing to your projects easier
  • Run builds in parallel (like make)
  • Handle flags and libraries for garbage collection when specified
  • Install patscc and other ATS tooling

Things that atspkg will not do for you:

  • Dependency resolution (this is planned)
  • Give you the full flexibility of the C/ATS ecosystem
  • Integrate with other ecosystems
  • Provide a centralized package repository
  • Offer a common architecture for package builds
  • Cache builds locally (like nix or cabal)
  • Cache binary builds of ATS libraries (this is planned)


As an example, the following two lines will install polyglot:

curl -sSl | bash -s
atspkg remote

As you can see, this greatly simplifies distribution and testing of programs written in ATS.



The easiest way to install is via a script, viz.

curl -sSl | bash -s

Thereafter, you can run

atspkg upgrade

to upgrade to the latest release.


If that doesn't work, you can download Cabal and GHC and install with

cabal new-install ats-pkg --symlink-bindir ~/.local/bin --happy-options='-gcsa' --alex-options='-g'

Note that $HOME/.local/bin will need to be on your PATH.


Quick Start

Install pi with

curl -LSfs | sh -s -- --git vmchale/project-init

Initialize an ATS project with

pi new ats project

Then build & run it:

cd project
atspkg run

Further Documentation

You can find several examples with explanation here

Global Configuration

atspkg is configured via a file in ~/.config/atspkg/config.dhall. You can set custom package set as follows:

let cfg = 
  { defaultPkgs = ""
  , path = ([] : Optional Text)

in cfg

Package sets are simply sets of packages, so you can also use Dhall to concatenate custom package sets with the above.