emacs.pkgs.ghostel: ease overrideAttrs of local bumps
To make overrideAttrs pleasant, we should merge the elisp derivation and the zig module derivation into one derivation. One way is to make zig build hooks composable via #514028. This patch tries to make overrideAttrs less painful based on the current situation. With this patch, overrideAttrs can be done like this: emacs.pkgs.ghostel.overrideAttrs (old: { version = "0.41.0"; src = old.src.override { hash = "sha256-07Ml/eRIHyptI6MNlHhDNsfIiXOAUVKaEalDVJ101WM="; }; zigDeps = old.zigDeps.overrideAttrs { outputHash = "sha256-lFU0ywNyP1q2NL9MkIfWciH03VAA/Act5dGYAV4V7EY="; }; })
This commit is contained in:
+58
-41
@@ -12,6 +12,46 @@
|
||||
let
|
||||
zig = zig_0_15;
|
||||
|
||||
mkModule =
|
||||
{
|
||||
pname,
|
||||
version,
|
||||
src,
|
||||
zigDeps,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
src
|
||||
zigDeps
|
||||
;
|
||||
|
||||
nativeBuildInputs = [ zig ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
|
||||
|
||||
env.EMACS_INCLUDE_DIR = "${emacs}/include";
|
||||
|
||||
dontSetZigDefaultFlags = true;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
zigCheckFlags = [
|
||||
"-Dcpu=baseline"
|
||||
# See https://github.com/ghostty-org/ghostty/blob/main/PACKAGING.md#build-options
|
||||
"-Doptimize=ReleaseFast"
|
||||
];
|
||||
|
||||
zigBuildFlags = finalAttrs.zigCheckFlags;
|
||||
|
||||
postConfigure = ''
|
||||
cp -rLT ${finalAttrs.zigDeps} "$ZIG_GLOBAL_CACHE_DIR/p"
|
||||
chmod -R u+w "$ZIG_GLOBAL_CACHE_DIR/p"
|
||||
'';
|
||||
});
|
||||
|
||||
libExt = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
in
|
||||
melpaBuild (finalAttrs: {
|
||||
pname = "ghostel";
|
||||
|
||||
version = "0.44.0";
|
||||
@@ -19,60 +59,37 @@ let
|
||||
src = fetchFromGitHub {
|
||||
owner = "dakra";
|
||||
repo = "ghostel";
|
||||
tag = "v${version}";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-vRGZoQtjsL42ga07fOfEjccKRidAhqgwHBoKs++62Ls=";
|
||||
};
|
||||
|
||||
module = stdenv.mkDerivation (finalAttrs: {
|
||||
inherit pname version src;
|
||||
|
||||
zigDeps = zig.fetchDeps {
|
||||
inherit (finalAttrs) src pname version;
|
||||
fetchAll = true;
|
||||
hash = "sha256-yrVgiofdmVjTGJ+PGPGRCc8gb/JcEca1uAzIoPgHHqU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ zig ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
|
||||
|
||||
env.EMACS_INCLUDE_DIR = "${emacs}/include";
|
||||
|
||||
dontSetZigDefaultFlags = true;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
zigCheckFlags = [
|
||||
"-Dcpu=baseline"
|
||||
# See https://github.com/ghostty-org/ghostty/blob/main/PACKAGING.md#build-options
|
||||
"-Doptimize=ReleaseFast"
|
||||
];
|
||||
|
||||
zigBuildFlags = finalAttrs.zigCheckFlags;
|
||||
|
||||
postConfigure = ''
|
||||
cp -rLT ${finalAttrs.zigDeps} "$ZIG_GLOBAL_CACHE_DIR/p"
|
||||
chmod -R u+w "$ZIG_GLOBAL_CACHE_DIR/p"
|
||||
'';
|
||||
});
|
||||
|
||||
libExt = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
in
|
||||
melpaBuild {
|
||||
inherit pname version src;
|
||||
# this can be put into mkModule, but we put it here to ease user overrideAttrs
|
||||
zigDeps = zig.fetchDeps {
|
||||
inherit (finalAttrs) src pname version;
|
||||
fetchAll = true;
|
||||
hash = "sha256-yrVgiofdmVjTGJ+PGPGRCc8gb/JcEca1uAzIoPgHHqU=";
|
||||
};
|
||||
|
||||
files = ''
|
||||
(:defaults "etc" "ghostel-module${libExt}" "ghostel-module.version")
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
install ${module}/ghostel-module${libExt} ghostel-module${libExt}
|
||||
install --mode=444 ${module}/ghostel-module.version ghostel-module.version
|
||||
install ${finalAttrs.finalPackage.module}/ghostel-module${libExt} ghostel-module${libExt}
|
||||
install --mode=444 ${finalAttrs.finalPackage.module}/ghostel-module.version ghostel-module.version
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
|
||||
inherit module;
|
||||
inherit (module) zigDeps;
|
||||
module = mkModule {
|
||||
pname = "${finalAttrs.pname}-module";
|
||||
inherit (finalAttrs)
|
||||
version
|
||||
src
|
||||
zigDeps
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
@@ -84,4 +101,4 @@ melpaBuild {
|
||||
];
|
||||
license = lib.licenses.gpl3Plus;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user