diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix index 588218f3f05a..16a9e0f2161a 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix @@ -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,59 +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; - - deps = 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.deps} "$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; + module = mkModule { + pname = "${finalAttrs.pname}-module"; + inherit (finalAttrs) + version + src + zigDeps + ; + }; }; meta = { @@ -83,4 +101,4 @@ melpaBuild { ]; license = lib.licenses.gpl3Plus; }; -} +})