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).
|
-- 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' },
|
||||||
}
|
}
|
||||||
@@ -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")
|
||||||
@@ -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'
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user