GPL-3.0-only licensed by Jack Kiefer
Maintained by [email protected]
This version can be pinned in stack with:herms-,4043

Module documentation for

There are no documented modules for this package.


Hackage stackage LTS package Travis build

HeRM’s: a Haskell-based Recipe Manager (yes, food recipes) for the command line.

Herm’s Interface


  • Add recipes! :)
  • Look at recipes! :D
  • Edit recipes! :DD
  • Serving size adjustment! :DDD
  • Remove recipes :(
  • View metric recipes in imperial units and vice-versa
  • Import recipe files
  • Generate shopping lists
  • Keep track of recipes with tags
  • Set default unit systems, serving sizes, language, and recipe file path in config.hs

What’s new:

  • Bonjour! Herm’s now has language support for Français (French), English, and Pirate. Set your language preferences in config.hs!
  • These are but the first languages that Herm’s is now capable of supporting. We need your help to translate it into others! Currently in progress: Português (Portuguese), Español (Spanish)
  • Herm’s now conforms to the XDG Base Directory Specification. In short, config.hs and recipes.herms are now stored in ~/.config/herms and ~/.local/share/herms respectively on most Linux systems.


At the moment, Herm’s can only be installed via stack or cabal, but standalone binaries are in the works!

If you’re interested developing/hacking Herm’s instead of just using it, see instead.

Via Stack (recommended):
stack update
stack install herms
Manually cloning and installing from source with Stack
git clone
cd herms
stack update
stack install
Via Hackage and Cabal:

Note: Your mileage may vary with dependency resolution

cabal update
cabal install herms
Manually with Cabal:
git clone
cd herms
cabal update
cabal install


Command-line interface

Herm’s has a pretty intuitive interface for users familiar with other command-line programs!

Below is the exhaustive list of all commands and their functionalities. Take a gander!


        herms list [-g|--group] [--tags TAGS]           list recipes
                   [--name-only ]

        herms add                                       add a new recipe (interactively)

        herms edit RECIPE_NAME                          edit a recipe

        herms import FILE_NAME                          import a recipe file
        herms export DESTINATION                        export recipes to DESTINATION

        herms remove RECIPE_NAMES                       remove the particular recipes

        herms view RECIPE_NAMES [-s|--serving INT]      view the particular recipes
                                [-c|--convert CONV_UNIT]

        herms shopping RECIPE_NAMES [-s|--serving INT] generate shopping list for particular recipes

        herms datadir                                  show locations of recipe and config files

Available options:

        -h|--help                                      Show this help text

        -v|--version                                   Show version

        RECIPE_NAME                                    index or Recipe name

        --sort SORT_ORDER                              'tags' to sort by tags

        -s|--serving INT                               specify serving size when viewing.
                                                       E.g., 'herms view -s 2 {recipe}' for two servings

        -t|--step                                      View recipe in "one-step-at-a-time" mode
                                                       (press enter between each direction)

        -g|--group                                     group recipes by tags

        --tags TAGS                                    show recipes with particular flags

        --name-only                                    only list recipes by name

        -c|--convert CONV_UNIT                         view the recipe converted to imperial or metric
                                                       E.g., 'herms view 2 -c imperial'

Configuring Herm’s and managing recipe files

Herm’s stores files in the following locations:

  • The configuration file, config.hs in the XDG configuration directory, typically ~/.config/herms on most Linux systems

  • The recipes file, recipes.herms in the XDG data directory, typically ~/.local/share/herms on most Linux systems

To see where these are stored on your system, run herms datadir.

config.hs is a pseudo-Haskell-source-code file with several options for configuring the behaviour of Herm’s. It currently supports the following options:

  • defaultUnit : The default unit system to show recipes in. Options: Imperial, Metric, None. Setting to None will simply show recipes in whatever unit system they’re stored in.
  • defaultServingSize : Default serving size to calculate when showing recipes. Can be any non-negative integer; set to 0 for no default. This can be useful when you’re always cooking for the same number of people!
  • recipesFile : The recipes file to use. This option currently supports relative (but not absolute) location, as well; if your data directory is ~/herms/data, for example, and you want a recipe file in your home directory called ~/GrandmasHugeCookbook.herms, set this option to "../../GrandmasHugeCookbook.herms".
  • language : Human language to use. Currently supported: "Français", "English", "Pirate"

In honor of Logan, Utah’s greatest Breakfast & Brunch.

Herm’s Inn