diff --git a/README.md b/README.md index 8bdf1a2..bafe3f5 100644 --- a/README.md +++ b/README.md @@ -128,15 +128,17 @@ sloth-flake.lib.mkNeovimPkg { Here's a list of all accepted arguments -| name | default | description | -|-------------------------|-------------------------|----------------------------------------------------------| -| `pkgs` | N/A | The nixpkgs set. **REQUIRED** | -| `package` | `pkgs.neovim-unwrapped` | The unwrapped neovim package to use | -| `runtime` | `{}` | Your Runtime configuration (see below) | -| `dependencies` | `[]` | A list of your dependencies (see below) | -| `dependenciesExtraArgs` | `{}` | Extra arguments to load your dependencies in other files | -| `viAlias` | `false` | Wether to create a `vi` alias to run neovim | -| `vimAlias` | `false` | Wether to create a `vim` alias to run neovim | +| name | default | description | +|-------------------------|-------------------------|----------------------------------------------------------------| +| `pkgs` | N/A | The nixpkgs set. **REQUIRED** | +| `package` | `pkgs.neovim-unwrapped` | The unwrapped neovim package to use | +| `runtime` | `{}` | Your Runtime configuration (see below) | +| `dependencies` | `[]` | A list of your dependencies (see below) | +| `dependenciesExtraArgs` | `{}` | Extra arguments to load your dependencies in other files | +| `viAlias` | `false` | Wether to create a `vi` alias to run neovim | +| `vimAlias` | `false` | Wether to create a `vim` alias to run neovim | +| `vimdiffAlias` | `false` | Wether to create a `vimdiff` alias to run neovim in diff mode | +| `nvimdiffAlias` | `false` | Wether to create a `nvimdiff` alias to run neovim in diff mode | The Runtime configuration object accepts the following properties: diff --git a/lib/mkNeovimPkg.nix b/lib/mkNeovimPkg.nix index 2acdf0f..ec50049 100644 --- a/lib/mkNeovimPkg.nix +++ b/lib/mkNeovimPkg.nix @@ -9,10 +9,14 @@ runtime ? {}, viAlias ? false, vimAlias ? false, + vimdiffAlias ? false, + nvimdiffAlias ? false, ... } @ config: let inherit (builtins) map; - inherit (pkgs) callPackage; + inherit (pkgs) callPackage bash lib; + inherit (lib.strings) optionalString; + inherit (lib.trivial) flip; # inherit (lib.lists) concatMap filter foldl' map optional reverseList; # inherit (lib.attrsets) attrNames optionalAttrs; # inherit (lib.strings) concatStringsSep fileContents hasSuffix removePrefix removeSuffix replaceStrings; @@ -48,5 +52,18 @@ removeAttrs neovimConfig ["manifestRc" "neovimRcContent"] // {inherit viAlias vimAlias;}; pkg = pkgs.wrapNeovimUnstable package params; + mkDiffAlias = name: + (flip optionalString) '' + cat < $out/bin/${name} + #!${bash}/bin/bash + exec $out/bin/nvim -d "\''${@}" + SH + chmod 555 $out/bin/${name} + ''; in - builtins.seq (types.mkNeovimPkgOptions config) pkg + builtins.seq (types.mkNeovimPkgOptions config) (pkg.overrideAttrs (final: super: { + postBuild = + super.postBuild + + (mkDiffAlias "vimdiff" vimdiffAlias) + + (mkDiffAlias "nvimdiff" nvimdiffAlias); + })) diff --git a/lib/types.nix b/lib/types.nix index e54edff..9ad29cb 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -92,5 +92,11 @@ # Create a vim alias vimAlias = option bool; + + # Create a vimdiff alias to run neovim in diff mode + vimdiffAlias = option bool; + + # Create a nvimdiff alias to run neovim in diff mode + nvimdiffAlias = option bool; }; }