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