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:
7
Makefile
Normal file
7
Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
.PHONY: laptop work
|
||||
|
||||
laptop:
|
||||
stow shared laptop
|
||||
|
||||
work:
|
||||
stow shared work
|
||||
@@ -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' },
|
||||
}
|
||||
@@ -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")
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user