🙆
home-managerでemacs unstable(29.0.90) flake版
背景
昨日home-managerでemacs unstableをインストールしてみた
nix flakesを使ってやるとどうなるか試した。
前提
nix flakesをつかってhome-managerが使えているものとする。
参考
やってみる
おそらく ~/.config/home-manager/
にflake.nix
やhome.nix
が存在しているはず。
flake.nix
はこのような感じに変更した。
{
description = "Home Manager configuration of me";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
+ emacs-overlay.url = "github:nix-community/emacs-overlay";
};
outputs = { nixpkgs, home-manager, emacs-overlay, ... }:
let
system = "aarch64-darwin";
pkgs = nixpkgs.legacyPackages.${system};
in {
homeConfigurations.cw-himura = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
+ ({ config, pkgs, ... }: { nixpkgs.overlays = [ emacs-overlay.overlays.emacs ]; })
./home.nix
];
};
};
}
home.nix
には以下を書き加えればよい。overlaysの指定がflake.nixで行われているという状態なっている。
programs.emacs = {
enable = true;
+ package = pkgs.emacsUnstable; # from github:nix-community/emacs-overlay
}
もうちょっと詳しく
home-manager.lib.homeManagerConfiguration
の実装は以下にある。
値を追加した、modules は configuration.imports
に束縛され module/default.nix に渡される。そこでは、extendedLib.evalModulesのmodules属性に利用される。
extendedLibはnixpkgs.libに追加関数があるだけで、nixpkgs.lib.evalModulesである。
おそらく、configとpkgsわたせて、home-managerの設定ファイルであるhome.nixの代わりとして使われるのだろう。
関連
flakeのinputsやoutputsの挙動を確認するなら以下が参考になるかもしれない。
Discussion