diff --git a/keymaps.lua b/keymaps.lua
new file mode 100644
index 0000000..9033b69
--- /dev/null
+++ b/keymaps.lua
@@ -0,0 +1,9 @@
+-- Generate the PDF for the currently-open talk.
+vim.keymap.set("n", "<leader>gp", function()
+  local talk_path = vim.fn.expand "%:p"
+  local talk_name = talk_path:match "src/([^/]+)/"
+
+  if talk_name ~= nil then
+    vim.cmd(string.format("!./run generate %s", talk_name))
+  end
+end, { noremap = true, silent = true })
diff --git a/stylua.toml b/stylua.toml
new file mode 100644
index 0000000..2c7fb8a
--- /dev/null
+++ b/stylua.toml
@@ -0,0 +1,8 @@
+indent_type = "Spaces"
+indent_width = 2
+line_endings = "Unix"
+no_call_parentheses = true
+quote_style = "AutoPreferDouble"
+
+[sort_requires]
+enabled = true