helix: add extraPackages option

Closes #2923 based on how arnarg solves this in his personal config.
With review suggestions from musjj.

Co-authored-by: Arnar Gauti Ingason <arnarg@fastmail.com>
Co-authored-by: musjj <72612857+musjj@users.noreply.github.com>
This commit is contained in:
Martin Schwaighofer 2023-10-25 18:11:33 +02:00 committed by GitHub
parent 14b5415720
commit 9d0f799c66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -18,6 +18,13 @@ in {
description = "The package to use for helix.";
};
extraPackages = mkOption {
type = with types; listOf package;
default = [ ];
example = literalExpression "[ pkgs.marksman ]";
description = "Extra packages available to hx.";
};
defaultEditor = mkOption {
type = types.bool;
default = false;
@ -161,7 +168,22 @@ in {
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
home.packages = if cfg.extraPackages != [ ] then
[
(pkgs.symlinkJoin {
name =
"${lib.getName cfg.package}-wrapped-${lib.getVersion cfg.package}";
paths = [ cfg.package ];
preferLocalBuild = true;
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/hx \
--prefix PATH : ${lib.makeBinPath cfg.extraPackages}
'';
})
]
else
[ cfg.package ];
home.sessionVariables = mkIf cfg.defaultEditor { EDITOR = "hx"; };