Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



34 Commits

Repository files navigation


He pulled out a battered red journal and proffered it unsteadily. Gilt took it, and flicked it open. His eye ran down the entries. ‘You wrote everything down, Crispin?’ he said. ‘Why?’ Crispin looked appalled. ‘Got to keep records, Reacher,’ he said. ‘Can’t cover y’tracks if you don’t know where y’left ‘em.
— Terry Pratchett
Going Postal


Crispin is a library for managing project wide configuration. An optimized version of this library for Dunaj can be found in Dunaj branch of this project.

Configuration map is assumed immutable and can be safely cached. Configuration is static. When the config changes, service should be restarted. Design choice is to have stateless fail-fast services, that have their configuration stored on various places.

Main feature is to provides map merged from various sources, in following order:

  • Configuration file in the root classpath

  • Project specific environment variables (set e.g. in lein project.clj or profiles.clj) Users must use lein-environ plugin to enable this

  • Environment variables, translating keys

  • Java system properties, translating keys

  • Custom configuration resources pointed from [:crispin] property, guessing format from filename, defaulting to .edn

All data is merged into one map and keys are translated to the hierarchy of keywords. This will either be perfect to your project or not useful at all.

Accepted file names for configuration files, loaded in following order:

  • config.json

  • config.edn

  • config.clj

Supports fetching external resources with #crispin.core/resorce "url" format.

Conflicts when merging branch and non-branch nodes are resolved into creation of branch node with previous non-branch node put under nil key.

Accepts map with types that parses values into desired format, such as integer, keyword, vector, etc.


In Lein, [crispin "0.3.8"]

Available functions:

  • cfg - does all the magic mentioned above and returns ordinary immutable map

Utility functions:

  • sget

  • bget

  • nget

  • sget-in

  • bget-in

  • nget-in


Copyright © 2015, 2019, 2021, Jozef Wagner.

The use and distribution terms for this software are covered by the [Eclipse Public License 1.0]( which can be found in the file epl-v10.html at the root of this distribution.

By using this software in any fashion, you are agreeing to be bound by the terms of this license.

You must not remove this notice, or any other, from this software.


A Dunaj library for managing project-wide configuration