NixOS의 패키지로 구성된 Emacs 데몬

NixOS의 패키지로 구성된 Emacs 데몬

이것NixOS 매뉴얼특정 패키지를 사용하여 Emacs를 데몬으로 시작하려면 다음 구성을 권장합니다:

services.emacs.enable = true;
services.emacs.package = import /home/cassou/.emacs.d { pkgs = pkgs; };

그러나 이 부분들이 무엇을 의미하는지는 명확하지 않습니다 pkgs = pkgs. 내 파일에 configuration.nix원하는 Emacs 패키지 목록을 지정했습니다.

  environment.systemPackages = with pkgs; [
    # Emacs
    (emacsWithPackages (with emacsPackagesNg; [
      evil
      haskell-mode
      intero
      nix-mode
      org
      python-mode
    ]))
  }

내 질문: Emacs 데몬이 자동으로 이러한 패키지 세트를 사용하도록 하려면 어떻게 해야 합니까? 현재는 그렇지 않습니다(직접 시작하는 emac만 가능합니다).

답변1

진행 중인 답변(아래 참조)

Nix 언어 구문을 읽은 후 다음과 같은 해결책을 얻었습니다.이동하다구성 중인 패키지 정의 services.emacs.package:

  services.emacs.enable = true;
  services.emacs.package = with pkgs; (emacsWithPackages (with emacsPackagesNg; [
      evil
      haskell-mode
      intero
      nix-mode
      org
      python-mode
  ]));

이것이 작동하는 동안 목록에 새 패키지를 추가할 때마다 작동하지 않습니다(emacs는 해당 패키지를 로드하지 않습니다). 이를 수행하는 올바른 방법은 무엇입니까?

답변2

몇 년 후... (2021)

방금 사용자 정의 emacs 정의를 설치했습니다.

emacs.nix

{ pkgs ? import <nixpkgs> {} }:

let
  myEmacs = pkgs.emacs;
  emacsWithPackages = (pkgs.emacsPackagesNgGen myEmacs).emacsWithPackages;
in
  emacsWithPackages (epkgs: (with epkgs.melpaStablePackages;
  [
    solarized-theme
  ]) ++ (with epkgs.melpaPackages; [
    alchemist
    all-the-icons
    auto-complete
    auto-compile
...
  ])
)

configuration.nix

  services.emacs.enable = true;
  services.emacs.package = pkgs.callPackage ./emacs.nix { };

emacs분명히 전환했을 때 데몬이 실행 중이었으므로 새 구성을 사용 하려면 데몬을 다시 시작해야 합니다 .

$ sudo nixos-rebuild switch
$ systemctl --user restart emacs

전환 후 데몬을 다시 시작하지 않은 것 같습니다.

관련 정보