Split off doomscript execution helper
This commit is contained in:
parent
e7383f325f
commit
9d01c40caf
2 changed files with 62 additions and 45 deletions
42
build-helpers/doomscript.nix
Normal file
42
build-helpers/doomscript.nix
Normal 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}
|
||||
''
|
||||
65
default.nix
65
default.nix
|
|
@ -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";
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue