Nixでdap-modeがエラーになった時のメモ
Table of Contents
Introduction
2025/02/02(Sun)に nix flake update
で最新にしてBuildしたらエラーで落ちるようになったのでメモ。
現象
- 2025/01/31に dapui.elがdap-ui.elにrename される
- dap-mode 20250131.1624 に反映される
- 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に感謝。