From 8e9f2496c7cc5aa7b0343244c795adf16f42d848 Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Tue, 9 Dec 2025 11:45:09 -0600 Subject: [PATCH] feat: nvim improvement on opening encrypted files --- .sops.yaml | 6 +++ config/git/config | 3 ++ config/git/ignore | 2 + config/nvim/init.lua | 96 ++++++++++++++++++++++++++++++++++ config/nvim/lua/mail-count.lua | 3 ++ darwin/nix.nix | 3 +- home/git.nix | 1 + home/shell.nix | 2 + nixos/nix.nix | 2 + secrets/wb.enc | 12 ++--- 10 files changed, 123 insertions(+), 7 deletions(-) diff --git a/.sops.yaml b/.sops.yaml index 170fb66..0ffbf94 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -3,6 +3,12 @@ keys: - &lemur age1pdk6dmyxqhdaja5d0nf8f9qjd43hmfahmkure5yrf8al9jyfmd8qfdxwl6 - &dango age15vscvpe79l287h8f3hssrj2r45xy0l3ns94zfue2fxlq43cqdsxq58vq3c creation_rules: + - path_regex: secrets/.*\.enc$ + key_groups: + - age: + - *pickwick + - *lemur + - *dango - path_regex: secrets/wb\.txt$ key_groups: - age: diff --git a/config/git/config b/config/git/config index 60d5eba..80dd009 100644 --- a/config/git/config +++ b/config/git/config @@ -6,6 +6,9 @@ [gpg] format = ssh +[gpg "ssh"] + allowedSignersFile = ~/.ssh/allowed_signers + [core] editor = nvim diff --git a/config/git/ignore b/config/git/ignore index 6fd41c0..56caf1e 100644 --- a/config/git/ignore +++ b/config/git/ignore @@ -1,3 +1,5 @@ .DS_Store *~ *.swp + +**/.claude/settings.local.json diff --git a/config/nvim/init.lua b/config/nvim/init.lua index d7a7b1a..d45e5d5 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -60,6 +60,7 @@ add 'OXY2DEV/markview.nvim' add { source = 'R-nvim/R.nvim', depends = { 'nvim-treesitter/nvim-treesitter' } } add 'nvim-treesitter/nvim-treesitter' add 'nvim-treesitter/nvim-treesitter-textobjects' +add { source = 'nvim-pack/nvim-spectre', depends = { 'nvim-lua/plenary.nvim' } } -- color themes add 'EdenEast/nightfox.nvim' @@ -755,6 +756,101 @@ map('t', '', '', 'Unfocus terminal and return to editor') -- Auto commands +-- SOPS encrypted files (.enc) - decrypt on read, encrypt on save +vim.api.nvim_create_autocmd('BufReadCmd', { + pattern = '*.enc', + callback = function(ev) + local file = vim.fn.expand '%:p' + + -- Decrypt with sops + local result = vim.fn.systemlist('sops -d ' .. vim.fn.shellescape(file) .. ' 2>/dev/null') + + if vim.v.shell_error ~= 0 then + vim.notify('SOPS decryption failed: ' .. table.concat(result, '\n'), vim.log.levels.ERROR) + return + end + + -- Set buffer content + vim.api.nvim_buf_set_lines(ev.buf, 0, -1, false, result) + + -- Detect filetype from content + local first_line = result[1] or '' + if first_line:match '^{' then + vim.bo[ev.buf].filetype = 'json' + vim.b[ev.buf].sops_input_type = 'json' + elseif first_line:match '^%-%-%-' or first_line:match '^%w+:' then + vim.bo[ev.buf].filetype = 'yaml' + vim.b[ev.buf].sops_input_type = 'yaml' + elseif first_line:match '^%[' then + vim.bo[ev.buf].filetype = 'dosini' + vim.b[ev.buf].sops_input_type = 'ini' + else + -- Plain text or unknown - use binary mode (sops wraps in {"data": "..."}) + vim.bo[ev.buf].filetype = 'text' + vim.b[ev.buf].sops_input_type = 'binary' + end + + -- Store original file path and mark as not modified + vim.b[ev.buf].sops_file = file + vim.bo[ev.buf].modified = false + vim.bo[ev.buf].buftype = 'acwrite' -- enable BufWriteCmd + end, +}) + +vim.api.nvim_create_autocmd('BufWriteCmd', { + pattern = '*.enc', + callback = function(ev) + local file = vim.b[ev.buf].sops_file or vim.fn.expand '%:p' + local tmpfile = vim.fn.tempname() + local input_type = vim.b[ev.buf].sops_input_type or 'binary' + + -- Find .sops.yaml config by walking up from the file's directory + local function find_sops_config(start_dir) + local dir = start_dir + while dir ~= '/' do + local config = dir .. '/.sops.yaml' + if vim.fn.filereadable(config) == 1 then return config end + dir = vim.fn.fnamemodify(dir, ':h') + end + return nil + end + + local sops_config = find_sops_config(vim.fn.fnamemodify(file, ':h')) + + -- Write current buffer to temp file + vim.cmd('silent write! ' .. tmpfile) + + -- Encrypt with sops (use config if found, and override filename for path matching) + local config_arg = sops_config and ('SOPS_CONFIG=' .. vim.fn.shellescape(sops_config) .. ' ') or '' + local cmd = string.format( + '%ssops -e --input-type %s --output-type json --filename-override %s %s > %s', + config_arg, + input_type, + vim.fn.shellescape(file), + vim.fn.shellescape(tmpfile), + vim.fn.shellescape(file) + ) + local result = vim.fn.system(cmd) + + vim.fn.delete(tmpfile) + + if vim.v.shell_error ~= 0 then + vim.notify('SOPS encryption failed: ' .. result, vim.log.levels.ERROR) + return + end + + vim.bo[ev.buf].modified = false + vim.notify('Saved: ' .. file, vim.log.levels.INFO) + end, +}) + +-- Command to manually open a file with sops (for non-.enc files) +vim.api.nvim_create_user_command('Sops', function(opts) + local file = opts.args ~= '' and opts.args or vim.fn.expand '%:p' + vim.cmd('terminal sops ' .. vim.fn.shellescape(file)) + vim.cmd 'startinsert' +end, { nargs = '?', complete = 'file', desc = 'Edit file with sops' }) + vim.api.nvim_create_autocmd('QuickFixCmdPost', { callback = function() vim.cmd 'redraw!' diff --git a/config/nvim/lua/mail-count.lua b/config/nvim/lua/mail-count.lua index d07f664..55d78e5 100644 --- a/config/nvim/lua/mail-count.lua +++ b/config/nvim/lua/mail-count.lua @@ -60,6 +60,9 @@ end ---@param opts? MailCountConfig function M.setup(opts) + -- Skip setup if notmuch is not available + if vim.fn.executable 'notmuch' ~= 1 then return end + config = vim.tbl_deep_extend('force', config, opts or {}) -- Initialize counts diff --git a/darwin/nix.nix b/darwin/nix.nix index cb22204..793a9af 100644 --- a/darwin/nix.nix +++ b/darwin/nix.nix @@ -4,7 +4,6 @@ inputs, lib, pkgs, - self, user, dots, system, @@ -73,6 +72,7 @@ "https://rayandrew.cachix.org" "https://devenv.cachix.org" "https://yazi.cachix.org" + "https://rslib.cachix.org" ]; # allow building and pushing of laptop config from desktop trusted-users = [ user ]; @@ -82,6 +82,7 @@ "rayandrew.cachix.org-1:kJnvdWgUyErPGaQWgh/yyu91szgRYD+V/WQ4Dbc4n9M=" "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" + "rslib.cachix.org-1:8OHneG2sLeTDlsZ4AZyNh8zx2zAwoiZUKVPnl21B+58=" ]; }; # // lib.optionalAttrs (config.nix.package.pname == "lix") { diff --git a/home/git.nix b/home/git.nix index b8c3901..c120464 100644 --- a/home/git.nix +++ b/home/git.nix @@ -6,6 +6,7 @@ }: { home.packages = with pkgs; [ + git gh git-lfs ]; diff --git a/home/shell.nix b/home/shell.nix index e92f736..a1ac8ef 100644 --- a/home/shell.nix +++ b/home/shell.nix @@ -72,6 +72,8 @@ spotify-player eza bat + man-pages-posix + man-pages ] ++ lib.optionals pkgs.stdenv.isDarwin [ coreutils ] ++ (lib.attrValues config.custom.shell.packages); diff --git a/nixos/nix.nix b/nixos/nix.nix index 94b447e..aab31d5 100644 --- a/nixos/nix.nix +++ b/nixos/nix.nix @@ -87,6 +87,7 @@ "https://rayandrew.cachix.org" "https://devenv.cachix.org" "https://yazi.cachix.org" + "https://rslib.cachix.org" ]; # allow building and pushing of laptop config from desktop trusted-users = [ user ]; @@ -96,6 +97,7 @@ "rayandrew.cachix.org-1:kJnvdWgUyErPGaQWgh/yyu91szgRYD+V/WQ4Dbc4n9M=" "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" + "rslib.cachix.org-1:8OHneG2sLeTDlsZ4AZyNh8zx2zAwoiZUKVPnl21B+58=" ]; }; # // lib.optionalAttrs (config.nix.package.pname == "lix") { diff --git a/secrets/wb.enc b/secrets/wb.enc index 5ad1b05..a65e6af 100644 --- a/secrets/wb.enc +++ b/secrets/wb.enc @@ -1,22 +1,22 @@ { - "data": "ENC[AES256_GCM,data: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,iv:0wH1EfxREzFOLQoPoU4Td7ustxl4G8p/0SP8NzvTanA=,tag:A7utUbzIfVgKlBvuci1Eew==,type:str]", + "data": "ENC[AES256_GCM,data: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,iv:txx1PfalWUAU4w7D/qw/8BMnqPzxLndqygwx+tKtcpk=,tag:WdX3UuyzpW0twjX7R4cxYw==,type:str]", "sops": { "age": [ { "recipient": "age13cfe8fhp4m978qlcur46vkkxepsl93ggwe53kmhue9xtpgr5zu5q4y6ln2", - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5YTdqYVA3ejB3QzZmaCt2\ncHNrMnFiVS9BN2t1OUE5WGJVMy80Ri9Lbmk4CnJKdUJUaUZHa3JVbWlNMktlQzZP\nU1NFL29FelJWZUlwWlAyN0xnNVB5VzgKLS0tIDdnUWp6enJmTHZCdXVLbjdEMmdO\nbUYzTmFrZGxRWlB6SDhFSFBadW5oSXMK/8xiqGkOAUs10L+zW7ooSrMr4j/WeymO\n0BmsJwS/sLsIFDk8nZC9smgu6W4ZkqumtRItczeeG0k2iJJqn4UPuw==\n-----END AGE ENCRYPTED FILE-----\n" + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBya3hRZHFkVnZLY25rZ0R4\nOUhjRkpnRXM5WWdoOUlOaTg0QjFyT05BaUFFCldxYnVOWC83TnFkY1k0L1FnazdJ\nalgxdXRxck5lZCtQRUYyK0RHakhTYVUKLS0tIEY2NzlDK04xaFdod3JTaGhsSEx3\nZFRBeS9Db0pjd244eGRrQmllOEltU00KwIPaqbJMMYe3nRbuQb0ZpdyromhvnkQG\n6fMBHsQS5q+eCcX6iovMZvfS8vreroJBJYn/PdDChRJ5yWzsGni86A==\n-----END AGE ENCRYPTED FILE-----\n" }, { "recipient": "age1pdk6dmyxqhdaja5d0nf8f9qjd43hmfahmkure5yrf8al9jyfmd8qfdxwl6", - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUS0E2eTBIUUU1aWtQMlZM\nSEZmUkxzdGJNMnJWUmZreDk2VXlQNXRRQ2tzCk10aDNkQmc1Nkp1M3ZkczRWYys1\nc0dUVnd5clh3dFNITk5QNnc4STl0QU0KLS0tIHhCb21WLzRlRHlucEY5WjZieXIx\nczMrcXpqbDNKM2lBRWVYTFMwYUVwM1kK5UGwXyFgWEJ4ZvEljHP3tPwvOdczfFdA\nnKGwrBZzO88xZCUyPJKHrj6VLAUml6cwlWfwSswwOMeobroZd3n6AA==\n-----END AGE ENCRYPTED FILE-----\n" + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpM2p6am5rcGFVMXNwWjdE\neWkvVHFiMzdwcmM3S09penJCT25TZVJ6cVZjCk0wOEJ0Zk5wdE0yVCs1UWZRTFJk\nV0xHR3l1RElqV3VXUWx1VmV2dmxXUkEKLS0tIDJKTEl0MXgrRVNUNUtHMWxmZkRP\ndFVwYWhzZVlKSTd3RHhzZFBUWGhKWXcKOXoQOs0NsgUDCrm3z02pZLwkzfG5nHTP\ne6kx445VrUj8LQscrq/OWxa0xcL6NkyRGR0Z33slWbZT11g2uXdNRQ==\n-----END AGE ENCRYPTED FILE-----\n" }, { "recipient": "age15vscvpe79l287h8f3hssrj2r45xy0l3ns94zfue2fxlq43cqdsxq58vq3c", - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqQ3J4Zllod0NTU20xZjFB\nUnRGYU1leDBMY0daQ1pzNzVSdDFPbGU4S0V3Ck9PVjZCZDlWT21RL25lcU5uN2JF\nQW9yZHRUUUlxdTljT0ZRY3BOYlNqYTQKLS0tICtJODFRK3YxYVhQNW5sK0JkcHYx\nL3hqaTZ5NWhPdC9RQll6U3pzUW1UVlEKvDKaftsQkoAjBvf46LXss3oFaGxf4Zxu\nr9drVh0JgVHGfXPzieAB5DrhAoAb+aB3EVdh2+O/NGl0tehHm9c4bQ==\n-----END AGE ENCRYPTED FILE-----\n" + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFcUVlb1pCWmlkM0JtREVS\ndTJ0c2NTbDlXbGYxUFlhNGgvRkw4QWMzblUwCjc5akV2WDJBM3FSem9oVnc5VTk0\nb0Q4eFkvZTRaY2VJNFdzRWFDY2RPUFkKLS0tIENGc0EzcS9tZHNRMkhxSENPRlhu\nZ3piKzJ4ZGFXOCtrQzcxck5ITEMzMFUK20JsJxtNtJmX94fdLhPrjnFJ1NZ80kye\nOtsaworzlQvMVRmqCUfoNQr6I3YJMYToR0w4fGHSf/1pNq0xJIr7tg==\n-----END AGE ENCRYPTED FILE-----\n" } ], - "lastmodified": "2025-12-05T17:07:37Z", - "mac": "ENC[AES256_GCM,data:ZfkkFEAed+7brD/bpzyE6eA1iQalsgv7iXUiPp7yWgk4pFb9jrPeaJjGwXkAxEV/W9NPEmZFc8SguVwUjOFZ4soZx+EbKcxquGpAJ4zK46JyTMq3wyssm8QwFeaXxzC3xqgL24Mhl+NpLsj3VJhkVGTCZdZcEQPsRF5qY14ZvbY=,iv:O/zJxyQ4adNwr63rdKuO6LvHKbhH7jJ3l1qXipW8D+4=,tag:8dI5nvm/2Tpq6w5hPY/zSA==,type:str]", + "lastmodified": "2025-12-05T17:33:11Z", + "mac": "ENC[AES256_GCM,data:uqG96A+b3ZUfPfCS4ItezjtQndwZwO99HvXi7wsRpkjKc7e+6hZjrgQs7rhAfNI21Na6CYVOt4QnjX/MfIclX2Sf6Nvad6jVxvfxC2udBif0sbEaz6lfoEnXe4CZGuGLsF6D043L3C8Pum0ayoV7RhJQHFXZnZHKtvwpi4M8v8o=,iv:caXkPjC/GBUzEUbXF0A82PjuBU+y8gq+GFzeqPPbyeM=,tag:3HrmKmgpptTSKmawO724ZA==,type:str]", "version": "3.11.0" } }