Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

All configuration lives under programs.pi. This page provides a map; use All options for the generated, exhaustive reference.

programs.pi = {
  enable = true;

  settings = {
    defaultProvider = "openai";
    defaultModel = "gpt-4o";
    defaultThinkingLevel = "medium";
    theme = "dark";
  };

  extensions = {
    echo.enable = true;
    ripgrep-search.enable = true;
    plan-mode.enable = true;
  };

  skills.commit-style.enable = true;

  providers.local = {
    baseUrl = "http://localhost:11434/v1";
    models = [{ id = "local-model"; }];
  };

  runtimePackages = with pkgs; [ git jq ];
  environment.required = [ "OPENAI_API_KEY" ];
};

Main sections

SectionPurpose
settingsPi settings serialized into the generated settings file.
providersProvider endpoints, package support, models, and credentials references.
extensionsEnable packaged extensions and provide extension-specific settings.
skillsEnable skill packages that Pi can discover.
prompts and themesAdd prompt and theme resources.
runtimePackagesCommands available to Pi and extensions at runtime.
environmentNon-secret variables and required environment variable names.
resources and extraPackagesCompose custom resource and package inputs.

Add a local provider

programs.pi.providers.local = {
  baseUrl = "http://localhost:11434/v1";
  api = "openai-completions";
  models = [
    {
      id = "qwen2.5-coder";
      name = "Qwen 2.5 Coder";
    }
  ];
};

Add runtime tools

An extension that invokes git, rg, or a language runtime needs those executables in runtimePackages:

programs.pi.runtimePackages = with pkgs; [
  git
  ripgrep
  jq
  nodejs
];

The generated option reference documents the exact option type and default for each item.