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).
-- Mirrors dev-settings.el: C/C++, Go, Rust, DAP.
-- Laptop language pack: C/C++, Go, Rust, LaTeX, DAP.
-- Loaded by shared/init.lua via require('languages').
return {
servers = {
clangd = {},
@@ -13,5 +15,5 @@ return {
c = { 'clang_format' },
cpp = { 'clang_format' },
},
tools = { 'clang-format' },
tools = { 'clang-format', 'codelldb' },
}

View File

@@ -152,17 +152,8 @@
(directory-files-recursively "~/org" "\\.org$")
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 "common-dev-settings.el")
(if (rh/wsl-p)
(rh/load-user-file "work-dev-settings.el")
(rh/load-user-file "dev-settings.el"))
(rh/load-user-file "dev-settings.el")
(rh/load-user-file "latex-settings.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.have_nerd_font = true
-- work-languages.lua (work stow) → work mode; laptop-languages.lua → laptop mode.
-- 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
local _lang = require('languages')
-------------------------------------------------------------------------------
-- Options
@@ -270,7 +263,6 @@ require('lazy').setup({
ensure_installed = (function()
local t = { 'bash', 'json', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'vim', 'vimdoc', 'yaml' }
vim.list_extend(t, _lang.parsers or {})
vim.list_extend(t, _work.parsers or {})
return t
end)(),
auto_install = true,
@@ -387,8 +379,7 @@ require('lazy').setup({
opts = {
formatters_by_ft = vim.tbl_extend('force',
{ lua = { 'stylua' } },
_lang.formatters or {},
_work.formatters or {}
_lang.formatters or {}
),
format_on_save = { timeout_ms = 500, lsp_fallback = true },
},
@@ -472,15 +463,11 @@ require('lazy').setup({
},
},
},
_lang.servers or {},
_work.servers or {}
_lang.servers or {}
)
require('mason-tool-installer').setup({
ensure_installed = vim.list_extend(
vim.list_extend({ 'stylua' }, _lang.tools or {}),
_work.tools or {}
),
ensure_installed = vim.list_extend({ 'stylua' }, _lang.tools or {}),
})
require('mason-lspconfig').setup({
@@ -501,7 +488,6 @@ require('lazy').setup({
--------------------------------------------------------------------------
{
'mfussenegger/nvim-dap',
cond = function() return not next(_work) end,
dependencies = {
{
'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)
--------------------------------------------------------------------------
{
'lervag/vimtex',
cond = function() return not next(_work) end,
lazy = false,
init = function()
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#
;; LSP server: dotnet tool install -g csharp-ls
@@ -58,5 +58,5 @@
(css-ts-mode . prettier-mode)
(html-ts-mode . prettier-mode)))
(provide 'work-dev-settings)
;;; work-dev-settings.el ends here
(provide 'dev-settings)
;;; dev-settings.el ends here

View File

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