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 */
|
/* 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";
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue