Nixでdap-modeがエラーになった時のメモ

Table of Contents

Introduction

2025/02/02(Sun)に nix flake update で最新にしてBuildしたらエラーで落ちるようになったのでメモ。

現象

  1. 2025/01/31に dapui.elがdap-ui.elにrename される
  2. dap-mode 20250131.1624 に反映される
  3. 2025/02/02の nix flake update nixpkgsのdap-modeのpreBuild でdapui.elがなくて落ちるようになった

最小構成と解決策

以下のように preBuild をoverlaysに追加すればBuildできるようになった。

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    emacs-overlay.url = "github:nix-community/emacs-overlay";
  };

  outputs = { self, nixpkgs, emacs-overlay, ... }:
    let
      system = "aarch64-darwin";
      pkgs = import nixpkgs {
        inherit system;
        overlays = [
          # ここを追加
          (self: super: {
            emacsPackages = super.emacsPackages // {
              dap-mode = super.emacsPackages.dap-mode.overrideAttrs (old: {
                preBuild = null;
              });
            };
          })
          emacs-overlay.overlay
        ];
      };
    in {
      defaultPackage.${system} = pkgs.emacsPackages.dap-mode;
    };
}

また、 emacs-overlay 使う場合は pkgs.emacsWithPackagesFromPackageRequires にoverlayを追加すればBuildできるようになる。 https://github.com/nix-community/Emacs-overlay/blob/a7f332f6e0813c9d0f53fe6539be1e7a65fff2e4/packreq.nix#L13

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    emacs-overlay.url = "github:nix-community/emacs-overlay";
  };
  outputs = { self, nixpkgs, emacs-overlay, ... }:
    let
      system = "aarch64-darwin";
      pkgs = import nixpkgs {
        inherit system;
        overlays = [ emacs-overlay.overlay ];
      };
    in
      {
        defaultPackage.${system} = pkgs.emacsWithPackagesFromPackageRequires {
          packageElisp = builtins.toFile "empty.el" "";
          extraEmacsPackages = epkgs: with epkgs; [ dap-mode ];
          override = final: prev: {
            dap-mode = prev.melpaPackages.dap-mode.overrideAttrs (old: {
              preBuild = null;
            });
          };
        };
      };
}

自分のhome-managerには以下のように追記した。

https://github.com/takeokunn/nixos-configuration/commit/16c55223327058cd184aa189b2b324dd1f823463

終わりに

調査に協力してくれたnatsukiumに感謝。