이것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
전환 후 데몬을 다시 시작하지 않은 것 같습니다.