Split laptop/work into independent stow packages with shared/ base

- Remove work/laptop detection logic from nvim and emacs configs; each
  package now has a self-contained init that requires no runtime checks
- Create shared/ stow package containing nvim/init.lua, emacs/init.el,
  common-dev-settings.el, org-bindings.el, tmux, ghostty, and ranger
- Rename laptop-languages.lua / work-languages.lua → languages.lua in
  each package; shared/init.lua uses require('languages') generically
- Rename work-dev-settings.el → dev-settings.el to match laptop naming
- Expand work/ to include the full set of dev tools (tmux, ghostty,
  ranger, emacs, neovim) without email/calendar tooling
- Add Makefile with `make laptop` and `make work` targets (each runs
  a single `stow shared <profile>` invocation)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-22 10:45:41 -04:00
parent 2a0813b861
commit 541564775a
12 changed files with 24 additions and 47 deletions

7
Makefile Normal file
View File

@@ -0,0 +1,7 @@
.PHONY: laptop work
laptop:
stow shared laptop
work:
stow shared work

View File

@@ -1,5 +1,7 @@
-- Loaded by init.lua when work-languages.lua is absent (laptop stow only). -- Laptop language pack: C/C++, Go, Rust, LaTeX, DAP.
-- Mirrors dev-settings.el: C/C++, Go, Rust, DAP. -- Loaded by shared/init.lua via require('languages').
return { return {
servers = { servers = {
clangd = {}, clangd = {},
@@ -13,5 +15,5 @@ return {
c = { 'clang_format' }, c = { 'clang_format' },
cpp = { 'clang_format' }, cpp = { 'clang_format' },
}, },
tools = { 'clang-format' }, tools = { 'clang-format', 'codelldb' },
} }

View File

@@ -152,17 +152,8 @@
(directory-files-recursively "~/org" "\\.org$") (directory-files-recursively "~/org" "\\.org$")
nil))) nil)))
(defun rh/wsl-p ()
(and (eq system-type 'gnu/linux)
(file-exists-p "/proc/version")
(with-temp-buffer
(insert-file-contents "/proc/version")
(string-match-p "microsoft" (buffer-string)))))
(rh/load-user-file "org-bindings.el") (rh/load-user-file "org-bindings.el")
(rh/load-user-file "common-dev-settings.el") (rh/load-user-file "common-dev-settings.el")
(if (rh/wsl-p) (rh/load-user-file "dev-settings.el")
(rh/load-user-file "work-dev-settings.el")
(rh/load-user-file "dev-settings.el"))
(rh/load-user-file "latex-settings.el") (rh/load-user-file "latex-settings.el")
(rh/load-user-file "custom.el") (rh/load-user-file "custom.el")

View File

@@ -5,14 +5,7 @@ vim.g.mapleader = ' '
vim.g.maplocalleader = '\\' -- vimtex uses \ll, \lv, etc. vim.g.maplocalleader = '\\' -- vimtex uses \ll, \lv, etc.
vim.g.have_nerd_font = true vim.g.have_nerd_font = true
-- work-languages.lua (work stow) → work mode; laptop-languages.lua → laptop mode. local _lang = require('languages')
-- The two are mutually exclusive: work mode suppresses laptop languages.
local _work = {}
pcall(function() _work = require('work-languages') end)
local _lang = {}
if not next(_work) then
pcall(function() _lang = require('laptop-languages') end)
end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Options -- Options
@@ -270,7 +263,6 @@ require('lazy').setup({
ensure_installed = (function() ensure_installed = (function()
local t = { 'bash', 'json', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'vim', 'vimdoc', 'yaml' } local t = { 'bash', 'json', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'vim', 'vimdoc', 'yaml' }
vim.list_extend(t, _lang.parsers or {}) vim.list_extend(t, _lang.parsers or {})
vim.list_extend(t, _work.parsers or {})
return t return t
end)(), end)(),
auto_install = true, auto_install = true,
@@ -387,8 +379,7 @@ require('lazy').setup({
opts = { opts = {
formatters_by_ft = vim.tbl_extend('force', formatters_by_ft = vim.tbl_extend('force',
{ lua = { 'stylua' } }, { lua = { 'stylua' } },
_lang.formatters or {}, _lang.formatters or {}
_work.formatters or {}
), ),
format_on_save = { timeout_ms = 500, lsp_fallback = true }, format_on_save = { timeout_ms = 500, lsp_fallback = true },
}, },
@@ -472,15 +463,11 @@ require('lazy').setup({
}, },
}, },
}, },
_lang.servers or {}, _lang.servers or {}
_work.servers or {}
) )
require('mason-tool-installer').setup({ require('mason-tool-installer').setup({
ensure_installed = vim.list_extend( ensure_installed = vim.list_extend({ 'stylua' }, _lang.tools or {}),
vim.list_extend({ 'stylua' }, _lang.tools or {}),
_work.tools or {}
),
}) })
require('mason-lspconfig').setup({ require('mason-lspconfig').setup({
@@ -501,7 +488,6 @@ require('lazy').setup({
-------------------------------------------------------------------------- --------------------------------------------------------------------------
{ {
'mfussenegger/nvim-dap', 'mfussenegger/nvim-dap',
cond = function() return not next(_work) end,
dependencies = { dependencies = {
{ {
'rcarriga/nvim-dap-ui', 'rcarriga/nvim-dap-ui',
@@ -557,22 +543,11 @@ require('lazy').setup({
}, },
}, },
-- install codelldb via mason (laptop only)
{
'williamboman/mason.nvim',
cond = function() return not next(_work) end,
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
vim.list_extend(opts.ensure_installed, { 'codelldb' })
end,
},
-------------------------------------------------------------------------- --------------------------------------------------------------------------
-- LaTeX (AUCTeX + latexmk + zathura equivalent) -- LaTeX (AUCTeX + latexmk + zathura equivalent)
-------------------------------------------------------------------------- --------------------------------------------------------------------------
{ {
'lervag/vimtex', 'lervag/vimtex',
cond = function() return not next(_work) end,
lazy = false, lazy = false,
init = function() init = function()
vim.g.vimtex_view_method = 'zathura' vim.g.vimtex_view_method = 'zathura'

View File

@@ -1,4 +1,4 @@
;;; work-dev-settings.el --- Work/WSL development environment ;;; dev-settings.el --- Work development environment (C#, TypeScript, JavaScript, CSS, HTML)
;;; C# ;;; C#
;; LSP server: dotnet tool install -g csharp-ls ;; LSP server: dotnet tool install -g csharp-ls
@@ -58,5 +58,5 @@
(css-ts-mode . prettier-mode) (css-ts-mode . prettier-mode)
(html-ts-mode . prettier-mode))) (html-ts-mode . prettier-mode)))
(provide 'work-dev-settings) (provide 'dev-settings)
;;; work-dev-settings.el ends here ;;; dev-settings.el ends here

View File

@@ -1,5 +1,7 @@
-- Loaded by init.lua when this file exists (work stow package active). -- Work language pack: C#, TypeScript, JavaScript, CSS, HTML, Prettier.
-- Mirrors work-dev-settings.el: C#, TypeScript, JavaScript, CSS, HTML + Prettier. -- Loaded by shared/init.lua via require('languages').
return { return {
servers = { servers = {
ts_ls = {}, -- handles TypeScript, TSX, JavaScript, JSX ts_ls = {}, -- handles TypeScript, TSX, JavaScript, JSX