feat(tweaks): grip markdown viewer
This commit is contained in:
26
flake.nix
26
flake.nix
@@ -23,11 +23,35 @@
|
||||
pkgs = import nixpkgs {inherit system overlays;};
|
||||
in
|
||||
f system pkgs);
|
||||
|
||||
grip = {
|
||||
pkgs,
|
||||
lib,
|
||||
}: let
|
||||
gripConf = pkgs.writeText "settings.py" ''
|
||||
HOST = "0.0.0.0"
|
||||
'';
|
||||
gripHome = pkgs.stdenv.mkDerivation {
|
||||
name = "grip-conf";
|
||||
src = gripConf;
|
||||
phases = ["installPhase"];
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp $src $out/settings.py
|
||||
'';
|
||||
};
|
||||
in
|
||||
pkgs.writeShellScriptBin "grip" ''
|
||||
export GRIPHOME="${gripHome}"
|
||||
${lib.getExe pkgs.python312Packages.grip} "$@"
|
||||
'';
|
||||
in {
|
||||
packages = forAllSystems (system: pkgs: {
|
||||
neovim = pkgs.callPackage ./neovim.nix {};
|
||||
grip = pkgs.callPackage grip {};
|
||||
neovim = pkgs.callPackage ./neovim.nix {inherit self;};
|
||||
default = self.packages.${system}.neovim;
|
||||
});
|
||||
|
||||
devShells = forAllSystems (system: pkgs: {
|
||||
default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
|
||||
@@ -8,6 +8,47 @@ vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
pattern = "*",
|
||||
})
|
||||
|
||||
local grip_channel = nil
|
||||
vim.api.nvim_create_user_command("GripStart", function()
|
||||
if grip_channel then
|
||||
return
|
||||
end
|
||||
|
||||
local file = vim.api.nvim_buf_get_name(0)
|
||||
|
||||
local cmd = "grip " .. file
|
||||
|
||||
grip_channel = vim.fn.jobstart(cmd, {
|
||||
stderr_buffered = true,
|
||||
on_stderr = function(_, err)
|
||||
vim.fn.jobstop(grip_channel)
|
||||
|
||||
local content = table.concat(err, "\n")
|
||||
if content:len() > 0 then
|
||||
vim.api.nvim_notify("Grip error: " .. content, vim.log.levels.ERROR, {})
|
||||
end
|
||||
end,
|
||||
on_exit = function()
|
||||
vim.fn.chanclose(grip_channel)
|
||||
grip_channel = nil
|
||||
end,
|
||||
})
|
||||
end, {})
|
||||
|
||||
vim.api.nvim_create_user_command("GripStop", function()
|
||||
if grip_channel then
|
||||
vim.fn.jobstop(grip_channel)
|
||||
end
|
||||
end, {})
|
||||
|
||||
vim.api.nvim_create_autocmd("Quit", {
|
||||
callback = function()
|
||||
if grip_channel then
|
||||
vim.fn.jobstop(grip_channel)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Move when highlighted
|
||||
vim.keymap.set("n", "J", "mzJ`z")
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
self,
|
||||
symlinkJoin,
|
||||
makeWrapper,
|
||||
runCommandLocal,
|
||||
@@ -83,8 +84,10 @@
|
||||
];
|
||||
|
||||
packages = with pkgs; [
|
||||
ripgrep
|
||||
lf
|
||||
ripgrep
|
||||
|
||||
self.packages.${pkgs.system}.grip
|
||||
];
|
||||
|
||||
foldPlugins = builtins.foldl' (acc: next: acc ++ [next] ++ (foldPlugins (next.dependencies or []))) [];
|
||||
|
||||
Reference in New Issue
Block a user