Compare commits

...

40 commits

Author SHA1 Message Date
3fbe570a30
feat: extras.ui.treesitter-context 2025-03-10 20:43:39 -07:00
f0d002be9b
feat: extras.ui.mini-animate 2025-03-10 20:42:33 -07:00
bcb531fbf0
feat: extras.test.core 2025-03-10 20:34:54 -07:00
a531dec993
feat: extras.coding.neogen 2025-03-10 20:25:09 -07:00
74b3a2ace1
feat: extras.linting.eslint 2025-03-10 19:58:14 -07:00
ac0876ad01
fix: typo in tailwindcss-language-server 2025-03-10 19:45:47 -07:00
29eeb59e34
feat: extras.lang.yaml 2025-03-10 19:43:17 -07:00
1ca716532e
feat: extras.lang.vue 2025-03-10 19:41:37 -07:00
9d2c7f0f57
feat: extras.lang.typescript 2025-03-10 19:37:23 -07:00
17fb434078
feat: extras.lang.toml 2025-03-10 19:33:48 -07:00
ece124254c
feat: extras.lang.terraform 2025-03-10 19:33:11 -07:00
536d90a899
feat: extras.lang.tailwind 2025-03-10 19:29:29 -07:00
d2cdedac8e
feat: extras.lang.sql 2025-03-10 19:25:52 -07:00
f45d04ab60
feat: extras.lang.ruby 2025-03-10 19:09:34 -07:00
95d6b47659
feat: extras.lang.python 2025-03-10 18:46:39 -07:00
46126fedea
feat: extras.lang.php 2025-03-10 18:46:38 -07:00
ffe6f03f22
feat: extras.lang.nushell 2025-03-10 18:46:38 -07:00
55dc68c2ef
feat: extras.lang.markdown
Including packaging markdown-toc!!!!!
2025-03-10 18:46:38 -07:00
7934bca6db
feat: extras.lang.json 2025-03-09 20:10:19 -07:00
387786bc07
feat: extras.lang.helm 2025-03-09 20:08:58 -07:00
142f765dfe
feat: extras.lang.go 2025-03-09 19:33:36 -07:00
db0ee73a05
fix: smod snippet 2025-03-08 17:29:34 -08:00
46b2b2d7c4
feat: extras.lang.git 2025-03-08 15:40:33 -08:00
b4707c10cf
feat: extras.lang.docker 2025-03-08 15:34:40 -08:00
be0d9e3b66
style: Formatting 2025-03-08 15:17:29 -08:00
5a44773a3d
feat: Stylelint 2025-03-08 15:16:35 -08:00
f9c2b86c6d
feat: extras.formatting.prettier 2025-03-08 15:14:00 -08:00
2765de277a
feat: extras.formatting.biome 2025-03-08 14:48:38 -08:00
9bd532e06b
feat: extras.editor.refactoring 2025-03-08 14:26:54 -08:00
a12fc1d1c9
feat: extras.editor.neo-tree 2025-03-08 14:23:47 -08:00
0b9f37df6c
feat: extras.editor.navic 2025-03-08 09:55:48 -08:00
4dc7cf3e67
feat: extras.editor.aerial 2025-03-08 09:53:56 -08:00
a43c5c1776
feat: extras.coding.yanky 2025-03-08 09:50:05 -08:00
f11fdc928c
feat: extras.coding.mini-surround 2025-03-08 09:46:55 -08:00
c9aff6788d
feat: extras.coding.mini-comment 2025-03-07 19:11:19 -08:00
da79eabf09
fix: Satisfy warnings 2025-03-07 19:11:19 -08:00
b70909f429
feat: extras.coding.luasnip 2025-03-07 19:11:06 -08:00
744b1ad145
fix: Don't let extras overwrite treesitter config 2025-03-02 09:59:13 -08:00
fe559c2214
feat: nil_ls setup 2025-03-02 09:53:12 -08:00
8a48c56206
feat: Install Alejandra 2025-03-01 15:50:51 -08:00
16 changed files with 2987 additions and 28 deletions

130
flake.nix
View file

@ -90,7 +90,7 @@
name,
mkNvimPlugin,
...
} @ packageDef: {
}: {
# to define and use a new category, simply add a new list to a set here,
# and later, you will include categoryname = true; in the set you
# provide when you build the package using this builder function.
@ -102,22 +102,56 @@
# this includes LSPs
lspsAndRuntimeDeps = with pkgs; {
general = [
universal-ctags
(callPackage ./packages/erb-lint {})
(callPackage ./packages/markdown-toc {})
alejandra
biome
curl
lazygit
ripgrep
docker-compose-language-service
dockerfile-language-server-nodejs
fd
stdenv.cc.cc
gofumpt
gopls
gotools
hadolint
helm-ls
lazygit
lua-language-server
nil # I would go for nixd but lazy chooses this one idk
markdownlint-cli2
marksman
nil
nodePackages.prettier
nushell
php84Packages.php-codesniffer
php84Packages.php-cs-fixer
phpactor
pyright
ripgrep
rubocop
ruby-lsp
rubyPackages.erb-formatter
ruff
sqlfluff
stdenv.cc.cc
stylelint
stylua
tailwindcss-language-server
taplo
terraform-ls
tflint
universal-ctags
vscode-langservers-extracted
vtsls
vue-language-server
yaml-language-server
];
};
# NOTE: lazy doesnt care if these are in startupPlugins or optionalPlugins
# also you dont have to download everything via nix if you dont want.
# but you have the option, and that is demonstrated here.
startupPlugins = with pkgs.vimPlugins; with pkgs.neovimPlugins; {
startupPlugins = with pkgs.vimPlugins;
with pkgs.neovimPlugins; {
general = [
# LazyVim
lazy-nvim
@ -191,6 +225,82 @@
name = "LuaSnip";
}
# Mini-comment
{
plugin = mini-comment;
name = "mini.comment";
}
nvim-ts-context-commentstring
# Mini-surround
{
plugin = mini-surround;
name = "mini.surround";
}
# Neogen
neogen
# yanky.nvim
yanky-nvim
# Editor
# Aerial
aerial-nvim
# Dial
dial-nvim
# Navic
nvim-navic
# Neo-tree
neo-tree-nvim
# Refactoring
refactoring-nvim
# Lang
# Go
nvim-dap-go
neotest-golang
# Helm
vim-helm
# JSON & YAML
SchemaStore-nvim
# Markdown
markdown-preview-nvim
render-markdown-nvim
# Python
neotest-python
# Ruby
neotest-rspec
# Sql
vim-dadbod
vim-dadbod-completion
vim-dadbod-ui
# Test
# Neotest
neotest
nvim-nio
# UI
# Mini Animate
{
plugin = mini-animate;
name = "mini.animate";
}
# Treesitter-context
nvim-treesitter-context
# Custom
rose-pine
diffview-nvim
@ -210,9 +320,9 @@
# shared libraries to be added to LD_LIBRARY_PATH
# variable available to nvim runtime
sharedLibraries = {
general = with pkgs; [
# libgit2
];
# general = with pkgs; [
# libgit2
# ];
};
# environmentVariables:

View file

@ -21,35 +21,87 @@ local lazyOptions = {
},
}
-- NOTE: this the lazy wrapper. Use it like require('lazy').setup() but with an extra
-- argument, the path to lazy.nvim as downloaded by nix, or nil, before the normal arguments.
-- NOTE: this the lazy wrapper. Use it like require('lazy').setup() but with an
-- extra argument, the path to lazy.nvim as downloaded by nix, or nil, before
-- the normal arguments.
require('nixCatsUtils.lazyCat').setup(nixCats.pawsible { 'allPlugins', 'start', 'lazy.nvim' }, {
{ 'LazyVim/LazyVim', import = 'lazyvim.plugins' },
-- disable mason.nvim while using nix
-- precompiled binaries do not agree with nixos, and we can just make nix install this stuff for us.
{ 'williamboman/mason-lspconfig.nvim', enabled = require('nixCatsUtils').lazyAdd(true, false) },
{ 'williamboman/mason.nvim', enabled = require('nixCatsUtils').lazyAdd(true, false) },
{
'nvim-treesitter/nvim-treesitter',
build = require('nixCatsUtils').lazyAdd ':TSUpdate',
opts_extend = require('nixCatsUtils').lazyAdd(nil, false),
opts = {
-- nix already ensured they were installed, and we would need to change the parser_install_dir if we wanted to use it instead.
-- so we just disable install and do it via nix.
ensure_installed = require('nixCatsUtils').lazyAdd({ 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' }, false),
auto_install = require('nixCatsUtils').lazyAdd(true, false),
},
},
{
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
-- adds type hints for nixCats global, but LazyDev is just nice in general
-- Adds type hints for nixCats global, but LazyDev is just nice in
-- general.
{ path = (nixCats.nixCatsPath or '') .. '/lua', words = { 'nixCats' } },
},
},
},
-- Extras.
{ import = 'lazyvim.plugins.extras.coding.luasnip' },
{ import = 'lazyvim.plugins.extras.coding.mini-comment' },
{ import = 'lazyvim.plugins.extras.coding.mini-surround' },
{ import = 'lazyvim.plugins.extras.coding.neogen' },
{ import = 'lazyvim.plugins.extras.coding.yanky' },
{ import = 'lazyvim.plugins.extras.editor.aerial' },
{ import = 'lazyvim.plugins.extras.editor.dial' },
{ import = 'lazyvim.plugins.extras.editor.navic' },
{ import = 'lazyvim.plugins.extras.editor.neo-tree' },
{ import = 'lazyvim.plugins.extras.editor.refactoring' },
{ import = 'lazyvim.plugins.extras.formatting.biome' },
{ import = 'lazyvim.plugins.extras.formatting.prettier' },
{ import = 'lazyvim.plugins.extras.lang.docker' },
{ import = 'lazyvim.plugins.extras.lang.git' },
{ import = 'lazyvim.plugins.extras.lang.go' },
{ import = 'lazyvim.plugins.extras.lang.helm' },
{ import = 'lazyvim.plugins.extras.lang.json' },
{ import = 'lazyvim.plugins.extras.lang.markdown' },
{ import = 'lazyvim.plugins.extras.lang.nix' },
{ import = 'lazyvim.plugins.extras.lang.nushell' },
{ import = 'lazyvim.plugins.extras.lang.php' },
{ import = 'lazyvim.plugins.extras.lang.python' },
{ import = 'lazyvim.plugins.extras.lang.ruby' },
{ import = 'lazyvim.plugins.extras.lang.sql' },
{ import = 'lazyvim.plugins.extras.lang.tailwind' },
{ import = 'lazyvim.plugins.extras.lang.terraform' },
{ import = 'lazyvim.plugins.extras.lang.toml' },
{ import = 'lazyvim.plugins.extras.lang.typescript' },
{ import = 'lazyvim.plugins.extras.lang.vue' },
{ import = 'lazyvim.plugins.extras.lang.yaml' },
{ import = 'lazyvim.plugins.extras.linting.eslint' },
{ import = 'lazyvim.plugins.extras.test.core' },
{ import = 'lazyvim.plugins.extras.ui.mini-animate' },
{ import = 'lazyvim.plugins.extras.ui.treesitter-context' },
-- These need to be after extras to prevent extras from overwriting them.
-- Disable mason.nvim while using nix.
-- Precompiled binaries do not agree with nixos, and we can just make nix
-- install this stuff for us.
{ 'williamboman/mason-lspconfig.nvim', enabled = require('nixCatsUtils').lazyAdd(true, false) },
{ 'williamboman/mason.nvim', enabled = require('nixCatsUtils').lazyAdd(true, false) },
{
'nvim-treesitter/nvim-treesitter',
build = require('nixCatsUtils').lazyAdd ':TSUpdate',
opts_extend = require('nixCatsUtils').lazyAdd(nil, false),
opts = {
-- Nix already ensured they were installed, and we would need to change
-- the parser_install_dir if we wanted to use it instead.
-- So we just disable install and do it via nix.
ensure_installed = require('nixCatsUtils').lazyAdd({ 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc' }, false),
auto_install = require('nixCatsUtils').lazyAdd(true, false),
},
},
-- import/override with your plugins
{ import = 'plugins' },
}, lazyOptions)

View file

@ -1,2 +1,4 @@
vim.o.textwidth = 80
vim.o.colorcolumn = '+1'
vim.g.lazyvim_prettier_needs_config = true

View file

@ -0,0 +1,15 @@
return {
{
'stevearc/conform.nvim',
---@class ConformOpts
opts = {
formatters_by_ft = {
css = { 'stylelint' },
liquid = { 'prettier' },
nix = { 'alejandra' },
scss = { 'stylelint' },
},
},
},
}

14
lua/plugins/luasnip.lua Normal file
View file

@ -0,0 +1,14 @@
return {
'L3MON4D3/LuaSnip',
opts = {
store_selection_keys = '<TAB>',
update_events = 'TextChanged,TextChangedI',
},
config = function(_, opts)
require('luasnip').setup(opts)
require('luasnip.loaders.from_lua').load { paths = {
nixCats.configDir .. '/lua/snippets',
} }
end,
}

View file

@ -0,0 +1,18 @@
return {
{
'nvim-neo-tree/neo-tree.nvim',
opts = {
close_if_last_window = true,
window = {
width = 30,
},
filesystem = {
filtered_items = {
hide_dotfiles = false,
hide_gitignored = false,
hide_hidden = false,
},
},
},
},
}

View file

@ -0,0 +1,19 @@
return {
{
'neovim/nvim-lspconfig',
opts = {
servers = {
nil_ls = {
settings = {
['nil'] = {
flake = {
autoArchive = true,
autoEvalInputs = true,
},
},
},
},
},
},
},
}

101
lua/snippets/fish.lua Normal file
View file

@ -0,0 +1,101 @@
local ls = require 'luasnip'
local s = ls.snippet
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local fmt = require('luasnip.extras.fmt').fmt
local fill = require('snippets.helpers').fill
return {
s({ trig = 'dc', desc = 'divider comment' }, f(fill, {}, { user_args = { '#%- ' } })),
s({ trig = '#!', desc = 'shebang' }, t '#!/usr/bin/env fish'),
s(
{ trig = 'if', desc = 'if ... end' },
fmt(
[[
if {}
{}
end
]],
{ i(1), i(0) }
)
),
s(
{ trig = 'elif', desc = 'else if ...' },
fmt(
[[
else if {}
{}
]],
{ i(1), i(0) }
)
),
s(
{ trig = 'fori', desc = 'for ... in ... end' },
fmt(
[[
for {} in {}
{}
end
]],
{ i(1), i(2), i(0) }
)
),
s(
{ trig = 'wh', desc = 'while ... end' },
fmt(
[[
while {}
{}
end
]],
{ i(1), i(0) }
)
),
s(
{ trig = 'wht', desc = 'while true ... end' },
fmt(
[[
while true
{}
end
]],
{ i(0) }
)
),
s(
{ trig = 'sw', desc = 'switch ... case ... end' },
fmt(
[[
switch {}
case {}
{}
end
]],
{ i(1), i(2), i(0) }
)
),
s(
{ trig = 'func', desc = 'function ... end' },
fmt(
[[
function {}
{}
end
]],
{ i(1), i(0) }
)
),
s({ trig = 'dn', desc = '&>/dev/null' }, t '&>/dev/null'),
s({ trig = 'abbr', desc = 'abbr -a ... --position ...' }, fmt('abbr -a {} --position {} "{}"', { i(1), i(2, 'command'), i(3) })),
}

40
lua/snippets/helpers.lua Normal file
View file

@ -0,0 +1,40 @@
local ls = require 'luasnip'
local sn = ls.snippet_node
local i = ls.insert_node
local M = {}
M.fill = function(_, parent, args)
local title = ''
local chars = {}
if type(parent.snippet.env.LS_SELECT_RAW) == 'table' then
for _, ele in ipairs(parent.snippet.env.LS_SELECT_RAW) do
title = title .. ele .. ' '
end
end
for str in string.gmatch(args, '([^%%]+)') do
table.insert(chars, str)
end
local snip = chars[1] .. ' ' .. title
local _, c = unpack(vim.api.nvim_win_get_cursor(0))
while #snip < (vim.bo.tw - c - 1) do
snip = snip .. chars[2]
end
return snip
end
M.get_visual = function(_, parent)
if #parent.snippet.env.LS_SELECT_RAW > 0 then
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
else -- If LS_SELECT_RAW is empty, return a blank insert node
return sn(nil, i(1))
end
end
return M

140
lua/snippets/nix.lua Normal file
View file

@ -0,0 +1,140 @@
local ls = require 'luasnip'
local s = ls.snippet
local i = ls.insert_node
local f = ls.function_node
local fmta = require('luasnip.extras.fmt').fmta
local rep = require('luasnip.extras').rep
local fill = require('snippets.helpers').fill
return {
s({ trig = 'dc', desc = 'divider comment' }, f(fill, {}, { user_args = { '#%- ' } })),
s(
{ trig = 'mexpr', desc = 'Basic module expression' },
fmta(
[[
{ <>... }:
{
<>
}
]],
{ i(1), i(0) }
)
),
s(
{ trig = 'sov', desc = 'Snowfall lib overlay' },
fmta(
[[
<>: final: prev: {
<>
}
]],
{ i(1, '_'), i(0) }
)
),
s(
{ trig = 'sovi', desc = 'Snowfall lib overlay pulling from inputs' },
fmta(
[[
{inputs, ...}: final: prev: {
<> = inputs.<>.<>."${prev.system}".<>;
}
]],
{ i(1, 'pkg'), i(2, 'input'), i(3, 'packages'), i(4, 'default') }
)
),
s(
{ trig = 'sovc', desc = 'Snowfall lib overlay pulling from channels' },
fmta(
[[
{channels, ...}: final: prev: {
inherit (channels.<>) <>;
}
]],
{ i(1, 'unstable'), i(2, 'pkg') }
)
),
s(
{ trig = 'ovr', desc = 'Override' },
fmta(
[[
<> = prev.<>.override {
<>
};
]],
{ i(1, 'pkg'), rep(1), i(0) }
)
),
s(
{ trig = 'ovra', desc = 'OverrideAttrs' },
fmta(
[[
<> = prev.<>.overrideAttrs (old: {
<>
});
]],
{ i(1, 'pkg'), rep(1), i(0) }
)
),
s(
{ trig = 'hpkg', desc = 'home.packages list' },
fmta(
[[
home.packages = with pkgs; [
<>
];<>
]],
{ i(1), i(0) }
)
),
s(
{ trig = 'ospkg', desc = 'NixOS environment.systemPackages list' },
fmta(
[[
environment.systemPackages = with pkgs; [
<>
];<>
]],
{ i(1), i(0) }
)
),
s(
{ trig = 'smod', desc = 'Snowfall lib module' },
fmta(
[[
{
lib,
config,<>
...
}:
let
cfg = config.marleyos.<>.<>;
in
{
options.marleyos.<>.<>.enable = lib.mkEnableOption "<>";
config = lib.mkIf cfg.enable {
<>
};
}
]],
{
i(1), -- extra args
i(2), -- group
i(3), -- mod
rep(2), -- group
rep(3), -- mod
rep(3), -- mod
i(0), -- end
}
)
),
}

View file

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'erb_lint'

View file

@ -0,0 +1,105 @@
GEM
remote: https://rubygems.org/
specs:
actionview (8.0.1)
activesupport (= 8.0.1)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activesupport (8.0.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
ast (2.4.2)
base64 (0.2.0)
benchmark (0.4.0)
better_html (2.1.1)
actionview (>= 6.0)
activesupport (>= 6.0)
ast (~> 2.0)
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (3.1.9)
builder (3.3.0)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
crass (1.0.6)
drb (2.2.1)
erb_lint (0.9.0)
activesupport
better_html (>= 2.0.1)
parser (>= 2.7.1.4)
rainbow
rubocop (>= 1)
smart_properties
erubi (1.13.1)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
json (2.10.1)
language_server-protocol (3.17.0.4)
lint_roller (1.1.0)
logger (1.6.6)
loofah (2.24.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mini_portile2 (2.8.8)
minitest (5.25.4)
nokogiri (1.18.3)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
parallel (1.26.3)
parser (3.3.7.1)
ast (~> 2.4.1)
racc
racc (1.8.1)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rainbow (3.1.1)
regexp_parser (2.10.0)
rubocop (1.73.2)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.38.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.38.1)
parser (>= 3.3.1.0)
ruby-progressbar (1.13.0)
securerandom (0.4.1)
smart_properties (1.17.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
uri (1.0.3)
PLATFORMS
ruby
DEPENDENCIES
erb_lint
BUNDLED WITH
2.5.22

View file

@ -0,0 +1,10 @@
{bundlerApp}:
# This may fail on non x86_64-linux-gnu systems. I had to run bundix as
# BUNDLE_FORCE_RUBY_PLATFORM=true nix run nixpkgs#bundix -- --lock otherwise I
# got hash mismatch errors. Any of the fixes I could find online to avoid that
# didn't work.
bundlerApp {
pname = "erb_lint";
exes = ["erb_lint"];
gemdir = ./.;
}

View file

@ -0,0 +1,406 @@
{
actionview = {
dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "12jgwrbkflrwklil3hv17iaamr9zsq161m0spy4sg7m4bkgf619h";
type = "gem";
};
version = "8.0.1";
};
activesupport = {
dependencies = ["base64" "benchmark" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" "logger" "minitest" "securerandom" "tzinfo" "uri"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0drfj44a16r86clrrqz3vqmg93qri6bqghjm21ac6jn2853cfnzx";
type = "gem";
};
version = "8.0.1";
};
ast = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
type = "gem";
};
version = "2.4.2";
};
base64 = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
type = "gem";
};
version = "0.2.0";
};
benchmark = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg";
type = "gem";
};
version = "0.4.0";
};
better_html = {
dependencies = ["actionview" "activesupport" "ast" "erubi" "parser" "smart_properties"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0mdgwlc02f43svy92p0k5v1hipibpzxcdjm774lkz2j8s58kav04";
type = "gem";
};
version = "2.1.1";
};
bigdecimal = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1k6qzammv9r6b2cw3siasaik18i6wjc5m0gw5nfdc6jj64h79z1g";
type = "gem";
};
version = "3.1.9";
};
builder = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0pw3r2lyagsxkm71bf44v5b74f7l9r7di22brbyji9fwz791hya9";
type = "gem";
};
version = "3.3.0";
};
concurrent-ruby = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1ipbrgvf0pp6zxdk5ascp6i29aybz2bx9wdrlchjmpx6mhvkwfw1";
type = "gem";
};
version = "1.3.5";
};
connection_pool = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1z7bag6zb2vwi7wp2bkdkmk7swkj6zfnbsnc949qq0wfsgw94fr3";
type = "gem";
};
version = "2.5.0";
};
crass = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
type = "gem";
};
version = "1.0.6";
};
drb = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
type = "gem";
};
version = "2.2.1";
};
erb_lint = {
dependencies = ["activesupport" "better_html" "parser" "rainbow" "rubocop" "smart_properties"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0cbwr8iv6d9g50w12a7ccvcrqk5clz4mxa3cspqd3s1rv05f9dfz";
type = "gem";
};
version = "0.9.0";
};
erubi = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1naaxsqkv5b3vklab5sbb9sdpszrjzlfsbqpy7ncbnw510xi10m0";
type = "gem";
};
version = "1.13.1";
};
i18n = {
dependencies = ["concurrent-ruby"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "03sx3ahz1v5kbqjwxj48msw3maplpp2iyzs22l4jrzrqh4zmgfnf";
type = "gem";
};
version = "1.14.7";
};
json = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1p4l5ycdxfsr8b51gnvlvhq6s21vmx9z4x617003zbqv3bcqmj6x";
type = "gem";
};
version = "2.10.1";
};
language_server-protocol = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0scnz2fvdczdgadvjn0j9d49118aqm3hj66qh8sd2kv6g1j65164";
type = "gem";
};
version = "3.17.0.4";
};
lint_roller = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c";
type = "gem";
};
version = "1.1.0";
};
logger = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "05s008w9vy7is3njblmavrbdzyrwwc1fsziffdr58w9pwqj8sqfx";
type = "gem";
};
version = "1.6.6";
};
loofah = {
dependencies = ["crass" "nokogiri"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "07pfa5kgl7k2hxlzzn89qna6bmiyrxlchgbzi0885frsi08agrk1";
type = "gem";
};
version = "2.24.0";
};
mini_portile2 = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf";
type = "gem";
};
version = "2.8.8";
};
minitest = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0izrg03wn2yj3gd76ck7ifbm9h2kgy8kpg4fk06ckpy4bbicmwlw";
type = "gem";
};
version = "5.25.4";
};
nokogiri = {
dependencies = ["mini_portile2" "racc"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0npx535cs8qc33n0lpbbwl0p9fi3a5bczn6ayqhxvknh9yqw77vb";
type = "gem";
};
version = "1.18.3";
};
parallel = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq";
type = "gem";
};
version = "1.26.3";
};
parser = {
dependencies = ["ast" "racc"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "18dcwrcnddvi8gl3hmbsb2cj1l7afxk2lh3jmhj90l95h1hn3gkx";
type = "gem";
};
version = "3.3.7.1";
};
racc = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa";
type = "gem";
};
version = "1.8.1";
};
rails-dom-testing = {
dependencies = ["activesupport" "minitest" "nokogiri"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0fx9dx1ag0s1lr6lfr34lbx5i1bvn3bhyf3w3mx6h7yz90p725g5";
type = "gem";
};
version = "2.2.0";
};
rails-html-sanitizer = {
dependencies = ["loofah" "nokogiri"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0q55i6mpad20m2x1lg5pkqfpbmmapk0sjsrvr1sqgnj2hb5f5z1m";
type = "gem";
};
version = "1.6.2";
};
rainbow = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
type = "gem";
};
version = "3.1.1";
};
regexp_parser = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0qccah61pjvzyyg6mrp27w27dlv6vxlbznzipxjcswl7x3fhsvyb";
type = "gem";
};
version = "2.10.0";
};
rubocop = {
dependencies = ["json" "language_server-protocol" "lint_roller" "parallel" "parser" "rainbow" "regexp_parser" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0p9bq6dpvakndircsr4415vrp76hxjy1lxzy4d1j75xscl9ipk9m";
type = "gem";
};
version = "1.73.2";
};
rubocop-ast = {
dependencies = ["parser"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1zjpv3kw4ciwk0dh43zj17ws318vnirby1clmcy6j9mvr4mbxv40";
type = "gem";
};
version = "1.38.1";
};
ruby-progressbar = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40";
type = "gem";
};
version = "1.13.0";
};
securerandom = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc";
type = "gem";
};
version = "0.4.1";
};
smart_properties = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0jrqssk9qhwrpq41arm712226vpcr458xv6xaqbk8cp94a0kycpr";
type = "gem";
};
version = "1.17.0";
};
tzinfo = {
dependencies = ["concurrent-ruby"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
type = "gem";
};
version = "2.0.6";
};
unicode-display_width = {
dependencies = ["unicode-emoji"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1has87asspm6m9wgqas8ghhhwyf2i1yqrqgrkv47xw7jq3qjmbwc";
type = "gem";
};
version = "3.1.4";
};
unicode-emoji = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ajk6rngypm3chvl6r0vwv36q1931fjqaqhjjya81rakygvlwb1c";
type = "gem";
};
version = "4.0.4";
};
uri = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "04bhfvc25b07jaiaf62yrach7khhr5jlr5bx6nygg8pf11329wp9";
type = "gem";
};
version = "1.0.3";
};
}

View file

@ -0,0 +1,34 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
}:
buildNpmPackage rec {
pname = "markdown-toc";
version = "1.2.0";
src = fetchFromGitHub {
owner = "jonschlinkert";
repo = pname;
rev = version;
hash = "sha256-CgyAxXcLrdk609qoXjyUgpA+NIlWrkBsE7lf5YnPagQ=";
};
# Add the package-lock.json.
postPatch =
# sh
''
ln -s ${./package-lock.json} package-lock.json
'';
npmDepsHash = "sha256-ZuR3zPaOM4CkuzBin9F3lj1qeD1w42g6NwSMQFambI4=";
npmPackFlags = ["--ignore-scripts"];
dontNpmBuild = true;
meta = {
description = "Generate a markdown TOC (table of contents) with Remarkable.";
homepage = "https://github.com/jonschlinkert/markdown-toc";
license = lib.licenses.mit;
};
}

1890
packages/markdown-toc/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff