Skip to content
Collection of dhall packages
Dhall Other
  1. Dhall 99.5%
  2. Other 0.5%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
kubernetes
nix
nixpkgs
scripts
util
.envrc
.gitignore
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
Makefile
README.md
package.dhall
shell.nix

README.md

dhall-packages

What is dhall?

Dhall is a strongly-typed programmable configuration language that can be used either directly or converted into other formats such as JSON and YAML. See dhall-lang.org for more details.

Why this repository?

This repository contains useful generic dhall packages that can be reused. The idea is to facilitate package discovery and provide versions containing packages compatible to each other.

This repository maps to version 12.0.0 of the dhall standard, and therefore requires dhall 1.28.0 or later.

What does this repository contain?

How to use this repository

You can import all the packages by doing (it's better if you freeze the import and point it to a specific commit):

let packages = https://raw.githubusercontent.com/EarnestResearch/dhall-packages/master/package.dhall

and then you can use it in your application like this

let packages = https://raw.githubusercontent.com/EarnestResearch/dhall-packages/master/package.dhall

let argocd = packages.kubernetes.argocd

let k8s = packages.kubernetes.k8s.schemas

in  argocd.Application::{
    , metadata = k8s.ObjectMeta::{ name = "hello-app" }
    , spec =
        argocd.ApplicationSpec::{
        , project = "hello-project"
        , source =
            argocd.SourceSpec.TypesUnion.Plugin
              argocd.PluginSourceSpec::{
              , repoURL =
                  "https://github.com/EarnestResearch/dhall-packages.git"
              , path = "kubernetes"
              , plugin = argocd.PluginSpec::{ name = "dhall-to-yaml" }
              }
        , destination =
            argocd.DestinationSpec::{
            , server = "kubernetes.svc.local"
            , namespace = "default"
            }
        }
    }

If you don't want to download the entire packages collection, you can simply reference the package.dhall file in the directory you are interested in. This will greatly improve performance if you are only using a subset of the packages.

Note: if you use this repository for kubernetes and you are converting to YAML, you should run

dhall-to-yaml --omitEmpty

Binary cache

Each release contains a cache.tgz file with the cache of the whole package. You can download it and save the content into your $XDG_CACHE_HOME (~/.cache if unset) and use it as cache to speed up resolution.

Contributing

See CONTRIBUTING

Maintainers

The repository is actively maintained but in alpha stage, expect breaking changes.

Hat tip

We are standing on the shoulders of giants. This project wouldn't be possible without:

You can’t perform that action at this time.