diff --git a/README.md b/README.md index dd4a126..7bf7e08 100644 --- a/README.md +++ b/README.md @@ -19,14 +19,13 @@ Using [home-manager](https://github.com/rycee/home-manager): { pkgs, ... }: let - doomPrivateDir = ./doom.d; - doom-emacs = pkgs.callPackage (builtins.fetchTarball { url = https://github.com/vlaci/nix-doom-emacs/archive/master.tar.gz; - }) { inherit doomPrivateDir; }; + }) { + doomPrivateDir = ./doom.d; + }; in { home.packages = [ doom-emacs ]; - home.file.".doom.d".source = doomPrivateDir; home.file.".emacs.d".source = doom-emacs.emacsd; } ``` diff --git a/default.nix b/default.nix index ff69eb7..54f62e1 100644 --- a/default.nix +++ b/default.nix @@ -142,9 +142,8 @@ let packages = straight-env.packageList (super: { phases = [ "installPhase" ]; preInstall = '' - export DOOMDIR=$(mktemp -d) - export DOOMLOCALDIR=$DOOMDIR/local/ - cp ${doomPrivateDir}/* $DOOMDIR + export DOOMDIR=${doomPrivateDir} + export DOOMLOCALDIR=$(mktemp -d)/local/ ''; }); @@ -160,10 +159,8 @@ let phases = [ "installPhase" ]; buildInputs = super.buildInputs ++ [ git ]; preInstall = '' - export DOOMDIR=$(mktemp -d) + export DOOMDIR=${doomPrivateDir} export DOOMLOCALDIR=$out/ - mkdir -p $DOOMDIR - cp ${doomPrivateDir}/* $DOOMDIR ''; }); @@ -196,20 +193,26 @@ let (load "${doom-emacs}/init.el") ''; - load-extra-config = writeTextDir "share/emacs/site-lisp/nix-integration.el" '' - ;;; -*- lexical-binding: t; -*- - - ${extraConfig} + # `extraConfig` is merged into private configuration + doomDir = pkgs.runCommand "doom-private" { + inherit extraConfig; + passAsFile = [ "extraConfig" ]; + } '' + mkdir -p $out + cp ${doomPrivateDir}/* $out + chmod u+w $out/config.el + cat $extraConfigPath >> $out/config.el ''; in (emacsPackages.emacsWithPackages (epkgs: [ - load-extra-config load-config-from-site ])).overrideAttrs (super: { outputs = [ "out" "emacsd" ]; buildInputs = [ doom-emacs ]; installPhase = super.installPhase + '' - echo ln -snf ${doom-emacs} $emacsd ln -snf ${doom-emacs} $emacsd + for prog in $out/bin/*; do + wrapProgram $prog --set DOOMDIR ${doomDir} + done ''; }); diff --git a/nix-integration.patch b/nix-integration.patch index 0645fe9..145699f 100644 --- a/nix-integration.patch +++ b/nix-integration.patch @@ -38,11 +38,3 @@ index cb12f8d08..03f370691 100644 custom-theme-directory (concat doom-private-dir "themes/") desktop-dirname (concat doom-etc-dir "desktop") desktop-base-file-name "autosave" -@@ -489,6 +488,7 @@ to least)." - (daemonp)) - (file-exists-p doom-env-file)) - (doom-load-envvars-file doom-env-file)) -+ (load "nix-integration.el" t) - - (require 'core-modules) - (let (;; `doom-autoload-file' tells Emacs where to load all its functions