Forge Home


Configure Fish Shell


5,953 latest version

4.6 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 0.2.1 (latest)
  • 0.2.0
  • 0.1.0
released Jun 15th 2017
This version is compatible with:
  • , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'petems-fish', '0.2.1'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add petems-fish
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install petems-fish --version 0.2.1

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



petems/fish — version 0.2.1 Jun 15th 2017

fish Puppet Module

Build Status

Table of Contents

  1. Overview
  2. Module Description - What the module does and why it is useful
  3. Setup - The basics of getting started with fish
  4. Usage - Configuration options and additional functionality
  5. Limitations - OS compatibility, etc.
  6. Development - Guide for contributing to the module


Puppet module for installing, configuring, and managing Fish, "fish is a smart and user-friendly command line shell for OS X, Linux, and the rest of the family."

Finally, a command line shell for the 90s

Module Description

This module manages the installation of Fish.

If you'd prefer, you can also disable the repo after the agent's been installed, or opt out of repo management altogether.


What fish affects

By default, this module will:

  • Set up the package repository
  • Install the Fish package

Beginning with fish

Repositories are maintained seperately:

Full docs are avaliable here:


This module includes a single class:

include '::fish'

You'll more than likely want to provide the appropriate values for your setup.

To opt out of repo management altogether, you'd specify it like so:

class { '::fish':
  manage_repo => false,

For more detailed information about parameters, you can read the docs


Setting the root users shell

On Debian family systems, you can get dependancy loops when trying to order to set the root shell:

Error: Failed to apply catalog: Found 1 dependency cycle:
(Exec[fish-add-apt-repository-ppa:fish-shell/release-2] => Class[Fish::Repo::Ubuntu] => Class[Fish::Repo] => Class[Fish::Repo] => Class[Fish::Install] => Package[fish] => Class[Fish::Install] => Class[Fish] => Class[Fish] => User[root] => Exec[fish-add-apt-repository-ppa:fish-shell/release-2])
Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz

This is because there is an auto-requirement for the files created or executables run on the root user existing. So the root user must exist so the apt source file can be created, but the root user also needs to wait for the package to be installed.

This only affects the apt repos, as yumrepos use a custom inifile type, so the file doesn't need to exist for it to edit it.

There's unfortunatly no easy solution, the only way would be to have a custom fact that determines if the /usr/bin/fish path exists on the system or a fact that determines the package is already installed.

  • Arch support is currently not implemented.


If you'd like to other features or anything else, check out the contributing guidelines in