diff --git a/cli/helix.nix b/cli/helix.nix index 6aea6e7..d2ebb18 100644 --- a/cli/helix.nix +++ b/cli/helix.nix @@ -2,6 +2,7 @@ pkgs, lib, config, + owoLib, ... }: @@ -33,15 +34,9 @@ in config = lib.mkIf cfg.enable { environment.systemPackages = [ - (pkgs.symlinkJoin { - inherit name; - paths = [ cfg.package ]; - nativeBuildInputs = [ pkgs.makeWrapper ]; - postBuild = '' - wrapProgram $out/bin/hx \ - --add-flags "-c" \ - --add-flags "${pkgs.writeText "${name}.toml" cfg.extraConfig}" - ''; + (owoLib.mkConfWrapper "hx" cfg.package { + globalConfig = pkgs.writeText "${name}.toml" cfg.extraConfig; + userConfig = "$HOME/${name}/config.toml"; }) ]; diff --git a/default.nix b/default.nix index d4dc31b..c106f3c 100644 --- a/default.nix +++ b/default.nix @@ -1,5 +1,6 @@ { lib, + pkgs, config, ... }: @@ -18,8 +19,12 @@ in enable = lib.mkEnableOption "common settings"; }; - config = lib.mkIf cfg.enable { - nixowos.cli.enable = true; - nixowos.system.enable = true; + config = { + _module.args.owoLib = pkgs.callPackage ./lib { }; + + nixowos = lib.mkIf cfg.enable { + cli.enable = true; + system.enable = true; + }; }; } diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..6df860f --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,28 @@ +{ + pkgs, + ... +}: + +{ + mkConfWrapper = + name: package: + { + globalConfig, + userConfig ? "$HOME/${name}/${name}.conf", + configArg ? "-c ", + excecutable ? "${package}/bin/${name}", + }: + pkgs.writeShellApplication { + inherit name; + + runtimeInputs = [ package ]; + + text = '' + if test -r "${userConfig}"; then + exec -a "$0" "${excecutable}" "$@" + else + exec -a "$0" "${excecutable}" ${configArg}"${globalConfig}" "$@" + fi + ''; + }; +}