Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

wezterm/bugabinga/exec_domains.lua

Raw
local wez = require 'wezterm'

local function append_all( dst, src )
  for _, value in ipairs( src ) do
    table.insert( dst, value )
  end
end

local function scoped_domain( name, label, properties )
  return wez.exec_domain( name, function ( cmd )
                            local args = cmd.args or { 'nu', '--login', }
                            local env = cmd.set_environment_variables or {}
                            env.WEZTERM_EXEC_DOMAIN = name
                            cmd.set_environment_variables = env
                            local unit = 'wezterm-' ..
                              name:gsub( '[^%w_.-]', '-' ) .. '-' .. tostring( env.WEZTERM_PANE or os.time() )
                            local wrapped = {
                              'systemd-run',
                              '--user',
                              '--scope',
                              '--same-dir',
                              '--collect',
                              '--quiet',
                              '--unit=' .. unit,
                              '--description=WezTerm ' .. name,
                            }

                            for _, property in ipairs( properties ) do
                              table.insert( wrapped, '-p' )
                              table.insert( wrapped, property )
                            end

                            append_all( wrapped, args )
                            cmd.args = wrapped
                            return cmd
                          end, label )
end

return function ( cfg )
  ---@cast cfg Config
  if not wez.target_triple:find( 'linux', 1, true ) then return end

  cfg.exec_domains = {
    scoped_domain( 'scope:build', 'scope:build  CPU 25%  MEM max 256M', {
      'CPUQuota=25%',
      'MemoryMax=256M',
      'MemorySwapMax=0',
      'OOMPolicy=stop',
    } ),
  }
end