herms: A command-line manager for delicious kitchen recipes

[ cli, command-line-tool, culinary, gpl, program ] [ Propose Tags ]

HeRM's: a Haskell-based Recipe Manager for delicious kitchen recipes

[Skip to Readme]
Change log changelog
Dependencies ansi-terminal (>=0.7.0 && <=0.8.1), base (>=4.8 && <5), brick (>=0.19 && <=0.39), directory (>=0.0), filepath (==1.4.*), microlens (==0.4.*), microlens-th (==0.4.*), mtl (>=2.2.1 && <2.3), optparse-applicative (==0.14.*), semigroups (>=0.18.3 && <0.19), split (==0.2.*), vty (>=5.15 && <=5.23) [details]
License GPL-3.0-only
Author Jack Kiefer
Maintainer jack.c.kiefer@gmail.com
Category Culinary, CLI, Command Line Tool
Home page https://github.com/JackKiefer/herms
Source repo head: git clone https://github.com/JackKiefer/herms
Uploaded by JackKiefer at Wed Aug 1 15:49:25 UTC 2018
Distributions NixOS:, Stackage:
Executables herms
Downloads 552 total (142 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2018-08-01 [all 2 reports]
Hackage Matrix CI


Maintainer's Corner

For package maintainers and hackage trustees

Readme for herms-

[back to package description]


Hackage stackage LTS
package Travis build

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

Herm&#39;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 Contributing.md instead.

Via Stack (recommended):
stack update
stack install herms
Manually cloning and installing from source with Stack
git clone https://github.com/JackKiefer/herms
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 https://github.com/JackKiefer/herms
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&#39;s Inn