Switch to buildEnv instead of symlinkJoin for better control over the joining process.
This commit is contained in:
parent
d3ea8b3667
commit
054e056d00
@ -6,7 +6,9 @@
|
||||
}:
|
||||
|
||||
let
|
||||
plainmacs = pkgs.writeShellScriptBin "plainmacs" ''
|
||||
plainmacs =
|
||||
emacs_package:
|
||||
pkgs.writeShellScriptBin "plainmacs" ''
|
||||
INIT_SCRIPT=$(cat <<EOF
|
||||
(progn
|
||||
(setq make-backup-files nil auto-save-default nil create-lockfiles nil)
|
||||
@ -34,13 +36,12 @@ let
|
||||
EOF
|
||||
)
|
||||
|
||||
exec ${pkgs.emacs29-pgtk}/bin/emacs -q --eval "$INIT_SCRIPT" "''${@}"
|
||||
exec ${emacs_package}/bin/emacs -q --eval "$INIT_SCRIPT" "''${@}"
|
||||
'';
|
||||
e_shorthand = pkgs.writeShellScriptBin "e" ''
|
||||
exec ${pkgs.emacs_full}/bin/emacs "''${@}"
|
||||
'';
|
||||
plain_e_shorthand = pkgs.writeShellScriptBin "e" ''
|
||||
exec ${pkgs.emacs29-pgtk}/bin/emacs "''${@}"
|
||||
e_shorthand =
|
||||
emacs_package:
|
||||
pkgs.writeShellScriptBin "e" ''
|
||||
exec ${emacs_package}/bin/emacs "''${@}"
|
||||
'';
|
||||
in
|
||||
{
|
||||
@ -58,21 +59,46 @@ in
|
||||
description = "What flavor of emacs to set up.";
|
||||
};
|
||||
|
||||
config =
|
||||
lib.mkIf config.me.emacs_flavor != null (
|
||||
config = lib.mkIf (config.me.emacs_flavor != null) (
|
||||
lib.mkMerge [
|
||||
(lib.mkIf (config.me.emacs_flavor == "full") {
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
plainmacs
|
||||
e_shorthand
|
||||
emacs_full
|
||||
emacs29-pgtk
|
||||
(plainmacs emacs29-pgtk)
|
||||
(e_shorthand emacs29-pgtk)
|
||||
];
|
||||
|
||||
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
|
||||
hideMounts = true;
|
||||
users.talexander = {
|
||||
directories = [
|
||||
".config/emacs/eln-cache" # Installed packages
|
||||
".config/emacs/elpa" # Installed packages
|
||||
".config/emacs/private" # For recentf
|
||||
".config/emacs/tree-sitter" # Compiled tree-sitter grammars
|
||||
];
|
||||
files = [
|
||||
".config/emacs/history" # For savehist
|
||||
".config/emacs/.last-package-update-day" # For use-package
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.variables.EDITOR = "${pkgs.emacs29-pgtk}/bin/plainmacs";
|
||||
}
|
||||
(lib.mkIf (config.me.emacs_flavor == "full") {
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
emacs_full = pkgs.symlinkJoin {
|
||||
name = "emacs_full";
|
||||
paths = [ pkgs.emacs29-pgtk ];
|
||||
emacs29-pgtk = pkgs.buildEnv {
|
||||
name = prev.emacs29-pgtk.name;
|
||||
paths = with prev; [
|
||||
emacs29-pgtk
|
||||
];
|
||||
extraOutputsToInstall = [
|
||||
"man"
|
||||
"doc"
|
||||
"info"
|
||||
];
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/emacs --prefix PATH : ${
|
||||
@ -102,49 +128,23 @@ in
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
|
||||
hideMounts = true;
|
||||
users.talexander = {
|
||||
directories = [
|
||||
".config/emacs/eln-cache" # Installed packages
|
||||
".config/emacs/elpa" # Installed packages
|
||||
".config/emacs/private" # For recentf
|
||||
".config/emacs/tree-sitter" # Compiled tree-sitter grammars
|
||||
];
|
||||
files = [
|
||||
".config/emacs/history" # For savehist
|
||||
".config/emacs/.last-package-update-day" # For use-package
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.variables.EDITOR = "${plainmacs}/bin/plainmacs";
|
||||
})
|
||||
(lib.mkIf (config.me.emacs_flavor == "plainmacs") {
|
||||
environment.systemPackages = with pkgs; [
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
emacs29-pgtk = pkgs.buildEnv {
|
||||
name = prev.emacs29-pgtk.name;
|
||||
paths = with prev; [
|
||||
emacs29-pgtk
|
||||
plainmacs
|
||||
plain_e_shorthand
|
||||
];
|
||||
|
||||
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
|
||||
hideMounts = true;
|
||||
users.talexander = {
|
||||
directories = [
|
||||
".config/emacs/eln-cache" # Installed packages
|
||||
".config/emacs/elpa" # Installed packages
|
||||
".config/emacs/private" # For recentf
|
||||
".config/emacs/tree-sitter" # Compiled tree-sitter grammars
|
||||
];
|
||||
files = [
|
||||
".config/emacs/history" # For savehist
|
||||
".config/emacs/.last-package-update-day" # For use-package
|
||||
extraOutputsToInstall = [
|
||||
"man"
|
||||
"doc"
|
||||
"info"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.variables.EDITOR = "${plainmacs}/bin/plainmacs";
|
||||
})
|
||||
];
|
||||
})
|
||||
]
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user