Help with recursion in overlay

Introduction

Hello, everyone. It’s my first post here. Please forgive me if I did not provide enough information or use the wrong terms for things.

Problem Description

I’m adapting an Emacs configuration using the community overlay for emacs. I’m trying to extend the emacsPackage set, but I’m having trouble with the org-bib-mode package. Specifically, it needs org-imenu as a build input, but I’m not sure how to pass it as an input to org-bib-mode since it needs to be built first

Current Configuration

Here is my current configuration:

{ pkgs, inputs, config, ... }: {

  home.packages = [
    (pkgs.emacsWithPackagesFromUsePackage {
       override = epkgs: epkgs // {
        nano-splash = pkgs.callPackage ./nano-splash.nix {
          inherit (pkgs) fetchFromGitHub;
          inherit (epkgs) trivialBuild;
        };
        relative-date = pkgs.callPackage ./relative-date.nix {
          inherit (pkgs) fetchFromGitHub;
          inherit (epkgs) trivialBuild;
        };
        org-imenu = pkgs.callPackage ./org-imenu.nix {
          inherit (pkgs) fetchFromGitHub;
          inherit (epkgs) trivialBuild imenu-list;
        };
        pdf-drop-mode = pkgs.callPackage ./pdf-drop-mode.nix {
          inherit (pkgs) fetchFromGitHub;
          inherit (epkgs) trivialBuild;
        };
        org-bib-mode = pkgs.callPackage ./org-bib-mode.nix {
          inherit (pkgs) fetchFromGitHub;
          inherit (epkgs) trivialBuild citeproc;
        };
      };
      config = ./emacs.d/init.el;
      defaultInitFile = true;
      package = pkgs.emacs-git;
      alwaysEnsure = true;
      alwaysTangle = true;
    })
  ];

  home.file = {
    ".emacs.d/dotemacs.org" = {
      source = ./emacs.d/dotemacs.org;
    };
  };
}

Package Derivation for reference

{ lib, fetchFromGitHub, trivialBuild, citeproc, org-imenu}:

trivialBuild rec {
  pname = "org-bib-mode";
  version = "master";
  src = fetchFromGitHub
  {
    owner = "rougier";
    repo =  "org-bib-mode";
    rev = "fed9910186e5e579c2391fb356f55ae24093b55a";
    hash = "sha256-PZrVIRzOeyqWK6mHo63yAIJklah+f6rQPkKhdAyhVtg=";
  };
  propagetedUserEnvPkgs = [
    citeproc
    org-imenu
  ];
  buildInputs = propagetedUserEnvPkgs;
}

This looks like it has a typo.

Also you you don’t need the following, callPackage already handles this:

I’d use a let statement, I don’t see why an overlay is specifically necessary here

1 Like