Split off doomscript execution helper

This commit is contained in:
Marien Zwart 2024-06-01 20:11:03 +10:00
parent e7383f325f
commit 9d01c40caf
No known key found for this signature in database
2 changed files with 62 additions and 45 deletions

View file

@ -0,0 +1,42 @@
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
{
script,
scriptArgs,
doomSource,
debug ? false,
name ? "doomscript",
extraArgs ? { },
emacs,
lib,
runCommandLocal,
runtimeShell,
}:
runCommandLocal name
(
{
inherit doomSource runtimeShell script;
EMACS = lib.getExe emacs;
}
// (lib.optionalAttrs debug { DEBUG = "1"; })
// extraArgs
)
# Set DOOMLOCALDIR somewhere harmless to stop Doom from trying to create it somewhere read-only.
''
mkdir $out
export DOOMLOCALDIR=$(mktemp -d)
$runtimeShell $doomSource/bin/doomscript $script ${scriptArgs}
''

View file

@ -41,6 +41,7 @@
/* Extra emacs packages from nixpkgs */
extraPackages ? epkgs: [ ],
callPackage,
callPackages,
git,
emacsPackagesFor,
@ -57,37 +58,19 @@ let
# This doesn't belong here: it does not depend on doomDir (only on doomSource).
# But this is where all my doomscript execution lives.
# TODO: consider splitting off doomdir execution to a separate helper.
doomDirWithAllModules = runCommandLocal "doom-full-init"
{
env = {
EMACS = lib.getExe emacs;
# Enable this to troubleshoot failures at this step.
#DEBUG = "1";
};
# We set DOOMLOCALDIR somewhere harmless below to stop Doom from trying to
# create it somewhere read-only.
} ''
mkdir $out
export DOOMLOCALDIR=$(mktemp -d)
${runtimeShell} ${doomSource}/bin/doomscript ${./build-helpers/full-init} -o $out
'';
doomDirWithAllModulesAndFlags = runCommandLocal "doom-full-init"
{
env = {
EMACS = lib.getExe emacs;
# Enable this to troubleshoot failures at this step.
#DEBUG = "1";
};
# We set DOOMLOCALDIR somewhere harmless below to stop Doom from trying to
# create it somewhere read-only.
} ''
mkdir $out
export DOOMLOCALDIR=$(mktemp -d)
${runtimeShell} ${doomSource}/bin/doomscript ${./build-helpers/full-init} --flags -o $out
'';
doomDirWithAllModules = callPackage ./build-helpers/doomscript.nix {
name = "doom-full-init";
inherit doomSource emacs;
script = ./build-helpers/full-init;
scriptArgs = "-o $out";
};
doomDirWithAllModulesAndFlags = callPackage ./build-helpers/doomscript.nix {
name = "doom-full-init";
inherit doomSource emacs;
script = ./build-helpers/full-init;
scriptArgs = "--flags -o $out";
};
# Step 1: determine which Emacs packages to pull in.
#
@ -100,21 +83,13 @@ let
# (not even straight).
# Force local build in case the user init.el does something weird and to avoid a roundtrip.
doomIntermediates = runCommandLocal "doom-intermediates"
{
env = {
EMACS = lib.getExe emacs;
DOOMDIR = "${doomDir}";
# Enable this to troubleshoot failures at this step.
#DEBUG = "1";
};
# We set DOOMLOCALDIR somewhere harmless below to stop Doom from trying to
# create it somewhere read-only.
} ''
mkdir $out
export DOOMLOCALDIR=$(mktemp -d)
${runtimeShell} ${doomSource}/bin/doomscript ${./build-helpers/dump} -o $out
'';
doomIntermediates = callPackage ./build-helpers/doomscript.nix {
name = "doom-intermediates";
inherit doomSource emacs;
extraArgs = { DOOMDIR = "${doomDir}"; };
script = ./build-helpers/dump;
scriptArgs = "-o $out";
};
doomPackageSet = lib.importJSON "${doomIntermediates}/packages.json";