{ lib, pkgs, config, osConfig, ... }: let inherit (lib.generators) mkLuaInline; inherit (osConfig.systemConf) username; relativeDir = "projects/leetcode"; dataDir = "${config.home.homeDirectory}/${relativeDir}"; in { programs.nvf.settings.vim.extraPackages = with pkgs; [ imagemagick # for image.nvim ]; programs.nvf.settings.vim.utility.images.image-nvim = { enable = true; setupOpts = { backend = "kitty"; }; }; programs.nvf.settings.vim.utility.leetcode-nvim = { enable = true; setupOpts = { image_support = true; lang = "rust"; plugins.non_standalone = true; storage.home = mkLuaInline ''"${dataDir}"''; injector = mkLuaInline /* lua */ '' { ['rust'] = { before = { '#[allow(dead_code)]', 'fn main() {}', '#[allow(dead_code)]', 'struct Solution;' }, } } ''; hooks."question_enter" = [ (mkLuaInline /* lua */ '' function (question) if question.lang ~= 'rust' then return end local config = require("leetcode.config") local problem_dir = config.user.storage.home .. "/Cargo.toml" local content = [[ [package] name = "leetcode" edition = "2024" [lib] name = "%s" path = "%s" [dependencies] rand = "0.8" regex = "1" itertools = "0.14.0" ]] local file = io.open(problem_dir, "w") if file then local formatted = (content:gsub(" +", "")):format(question.q.frontend_id, question:path()) file:write(formatted) file:close() else print("Failed to open file " .. problem_dir) end end '') ]; }; }; systemd.user.tmpfiles.rules = [ "d ${dataDir} 0744 ${username} users -" ]; }