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 = mkEnableOption "<>"; config = lib.mkIf cfg.enable { <> }; } ]], { i(1), -- extra args i(2, { '', ' inherit (lib.marleyos) enabled;' }), i(3), -- group i(4), -- mod rep(3), -- group rep(4), -- mod rep(4), -- mod i(0), -- end } ) ), }