diff --git a/lisp/ob-C.el b/lisp/ob-C.el
--- a/lisp/ob-C.el	2026-02-22 14:38:12
+++ b/lisp/ob-C.el	2026-02-22 14:38:53
@@ -46,8 +46,14 @@
 (add-to-list 'org-babel-tangle-lang-exts '("C++" . "cpp"))
 (add-to-list 'org-babel-tangle-lang-exts '("D" . "d"))
 
-(defvar org-babel-default-header-args:C '())
+(defcustom org-babel-default-header-args:C '() "Default arguments for evaluating a C source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defconst org-babel-header-args:C '((includes . :any)
 				    (defines . :any)
 				    (main    . :any)

diff --git a/lisp/ob-R.el b/lisp/ob-R.el
--- a/lisp/ob-R.el	2026-02-22 14:38:12
+++ b/lisp/ob-R.el	2026-02-22 14:38:53
@@ -93,7 +93,13 @@
 See `org-babel-safe-header-args' for documentation of the format of
 this variable.")
 
-(defvar org-babel-default-header-args:R '())
+(defcustom org-babel-default-header-args:R '() "Default arguments for evaluating a R source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 (put 'org-babel-default-header-args:R 'safe-local-variable
      (org-babel-header-args-safe-fn ob-R-safe-header-args))
 

diff --git a/lisp/ob-calc.el b/lisp/ob-calc.el
--- a/lisp/ob-calc.el	2026-02-22 14:38:12
+++ b/lisp/ob-calc.el	2026-02-22 14:38:53
@@ -39,9 +39,14 @@
 
 (declare-function math-evaluate-expr "calc-ext"   (x))
 
-(defvar org-babel-default-header-args:calc nil
-  "Default arguments for evaluating a calc source block.")
+(defcustom org-babel-default-header-args:calc nil "Default arguments for evaluating a calc source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defun org-babel-expand-body:calc (body params)
   "Expand BODY according to PARAMS, return the expanded body."
   (let ((prologue (cdr (assq :prologue params)))

diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el
--- a/lisp/ob-clojure.el	2026-02-22 14:38:12
+++ b/lisp/ob-clojure.el	2026-02-22 14:38:53
@@ -68,12 +68,24 @@
 (add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj"))
 (add-to-list 'org-babel-tangle-lang-exts '("clojurescript" . "cljs"))
 
-(defvar org-babel-default-header-args:clojure '())
+(defcustom org-babel-default-header-args:clojure '() "Default arguments for evaluating a clojure source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 (defvar org-babel-header-args:clojure
   '((ns . :any)
     (package . :any)
     (backend . ((inf-clojure cider slime babashka nbb)))))
-(defvar org-babel-default-header-args:clojurescript '())
+(defcustom org-babel-default-header-args:clojurescript '() "Default arguments for evaluating a clojurescript source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 (defvar org-babel-header-args:clojurescript '((package . :any)))
 
 (defcustom org-babel-clojure-backend (cond

diff --git a/lisp/ob-csharp.el b/lisp/ob-csharp.el
--- a/lisp/ob-csharp.el	2026-02-22 14:38:12
+++ b/lisp/ob-csharp.el	2026-02-22 14:38:53
@@ -37,16 +37,24 @@
 (add-to-list 'org-babel-tangle-lang-exts '("csharp" . "cs"))
 
 ;; default header arguments for C#
-(defvar org-babel-default-header-args:csharp
-  '((main . ((no)))
+(defcustom org-babel-default-header-args:csharp
+  '((main
+     (no))
     (nugetconfig . :any)
     (framework . :any)
-    (class . ((no nil :any)))
+    (class
+     (no nil :any))
     (references . :any)
     (usings . :any)
     (cmdline . :any))
-  "Csharp specific header arguments.")
+  "Csharp specific header arguments." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-babel-csharp-compiler "dotnet"
   "The program to call for compiling a csharp project."
   :group 'org-babel

diff --git a/lisp/ob-css.el b/lisp/ob-css.el
--- a/lisp/ob-css.el	2026-02-22 14:38:12
+++ b/lisp/ob-css.el	2026-02-22 14:38:53
@@ -33,8 +33,14 @@
 
 (require 'ob)
 
-(defvar org-babel-default-header-args:css '())
+(defcustom org-babel-default-header-args:css '() "Default arguments for evaluating a css source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defun org-babel-execute:css (body _params)
   "Execute BODY of CSS code.
 This function is called by `org-babel-execute-src-block'."

diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
--- a/lisp/ob-ditaa.el	2026-02-22 14:38:12
+++ b/lisp/ob-ditaa.el	2026-02-22 14:38:53
@@ -80,12 +80,18 @@
 (require 'ob)
 (require 'org-compat)
 
-(defvar org-babel-default-header-args:ditaa
+(defcustom org-babel-default-header-args:ditaa
   '((:results . "file graphics")
     (:exports . "results")
     (:file-ext . "png"))
-  "Default arguments for evaluating a ditaa source block.")
+  "Default arguments for evaluating a ditaa source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-ditaa-default-exec-mode 'jar
   "Method to use for ditaa diagram generation when generating png or svg output.
 `jar' means to use java together with a JAR.

diff --git a/lisp/ob-dot.el b/lisp/ob-dot.el
--- a/lisp/ob-dot.el	2026-02-22 14:38:12
+++ b/lisp/ob-dot.el	2026-02-22 14:38:53
@@ -45,10 +45,17 @@
 
 (require 'ob)
 
-(defvar org-babel-default-header-args:dot
-  '((:results . "file") (:exports . "results"))
-  "Default arguments to use when evaluating a dot source block.")
+(defcustom org-babel-default-header-args:dot
+  '((:results . "file")
+    (:exports . "results"))
+  "Default arguments to use when evaluating a dot source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defun org-babel-expand-body:dot (body params)
   "Expand BODY according to PARAMS, return the expanded body."
   (let ((vars (org-babel--get-vars params))

diff --git a/lisp/ob-emacs-lisp.el b/lisp/ob-emacs-lisp.el
--- a/lisp/ob-emacs-lisp.el	2026-02-22 14:38:12
+++ b/lisp/ob-emacs-lisp.el	2026-02-22 14:38:53
@@ -35,15 +35,16 @@
 (defconst org-babel-header-args:emacs-lisp '((lexical . :any))
   "Emacs-lisp specific header arguments.")
 
-(defvar org-babel-default-header-args:emacs-lisp '((:lexical . "no"))
-  "Default arguments for evaluating an emacs-lisp source block.
+(defcustom org-babel-default-header-args:emacs-lisp
+  '((:lexical . "no"))
+  "Default arguments for evaluating an emacs-lisp source block.\n\nA value of \"yes\" or t causes source blocks to be eval'd using\nlexical scoping.  It can also be an alist mapping symbols to\ntheir value.  It is used both as the optional LEXICAL argument to\n`eval', and as the value for `lexical-binding' in buffers created\nby `org-edit-src-code'." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
-A value of \"yes\" or t causes source blocks to be eval'd using
-lexical scoping.  It can also be an alist mapping symbols to
-their value.  It is used both as the optional LEXICAL argument to
-`eval', and as the value for `lexical-binding' in buffers created
-by `org-edit-src-code'.")
 
+
 (defun org-babel-expand-body:emacs-lisp (body params)
   "Expand BODY according to PARAMS, return the expanded body."
   (let ((vars (org-babel--get-vars params))

diff --git a/lisp/ob-eshell.el b/lisp/ob-eshell.el
--- a/lisp/ob-eshell.el	2026-02-22 14:38:12
+++ b/lisp/ob-eshell.el	2026-02-22 14:38:53
@@ -41,8 +41,14 @@
 (defvar eshell-last-output-end)
 (defvar eshell-last-input-end)
 
-(defvar org-babel-default-header-args:eshell '())
+(defcustom org-babel-default-header-args:eshell '() "Default arguments for evaluating a eshell source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defun org-babel-execute:eshell (body params)
   "Execute a block of Eshell code BODY with PARAMS.
 This function is called by `org-babel-execute-src-block'.

diff --git a/lisp/ob-forth.el b/lisp/ob-forth.el
--- a/lisp/ob-forth.el	2026-02-22 14:38:12
+++ b/lisp/ob-forth.el	2026-02-22 14:38:53
@@ -41,9 +41,16 @@
 
 (declare-function forth-proc "ext:gforth" ())
 
-(defvar org-babel-default-header-args:forth '((:session . "yes"))
-  "Default header arguments for forth code blocks.")
+(defcustom org-babel-default-header-args:forth
+  '((:session . "yes"))
+  "Default header arguments for forth code blocks." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defun org-babel-execute:forth (body params)
   "Execute Forth BODY according to PARAMS.
 This function is called by `org-babel-execute-src-block'."

diff --git a/lisp/ob-fortran.el b/lisp/ob-fortran.el
--- a/lisp/ob-fortran.el	2026-02-22 14:38:12
+++ b/lisp/ob-fortran.el	2026-02-22 14:38:53
@@ -43,8 +43,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("fortran" . "F90"))
 
-(defvar org-babel-default-header-args:fortran '())
+(defcustom org-babel-default-header-args:fortran '() "Default arguments for evaluating a fortran source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-babel-fortran-compiler "gfortran"
   "Fortran command used to compile Fortran source code file."
   :group 'org-babel

diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el
--- a/lisp/ob-gnuplot.el	2026-02-22 14:38:12
+++ b/lisp/ob-gnuplot.el	2026-02-22 14:38:53
@@ -54,9 +54,17 @@
 
 (defvar org-babel-temporary-directory)
 
-(defvar org-babel-default-header-args:gnuplot
-  '((:results . "file") (:exports . "results") (:session . nil))
-  "Default arguments to use when evaluating a gnuplot source block.")
+(defcustom org-babel-default-header-args:gnuplot
+  '((:results . "file")
+    (:exports . "results")
+    (:session))
+  "Default arguments to use when evaluating a gnuplot source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 
 (defvar org-babel-header-args:gnuplot
   '((title	. :any)

diff --git a/lisp/ob-groovy.el b/lisp/ob-groovy.el
--- a/lisp/ob-groovy.el	2026-02-22 14:38:12
+++ b/lisp/ob-groovy.el	2026-02-22 14:38:53
@@ -39,7 +39,13 @@
 
 (defvar org-babel-tangle-lang-exts) ;; Autoloaded
 (add-to-list 'org-babel-tangle-lang-exts '("groovy" . "groovy"))
-(defvar org-babel-default-header-args:groovy '())
+(defcustom org-babel-default-header-args:groovy '() "Default arguments for evaluating a groovy source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 (defcustom org-babel-groovy-command "groovy"
   "Name of the command to use for executing Groovy code.
 May be either a command in the path, like groovy

diff --git a/lisp/ob-haskell.el b/lisp/ob-haskell.el
--- a/lisp/ob-haskell.el	2026-02-22 14:38:12
+++ b/lisp/ob-haskell.el	2026-02-22 14:38:53
@@ -56,9 +56,16 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("haskell" . "hs"))
 
-(defvar org-babel-default-header-args:haskell
-  '((:padline . "no")))
+(defcustom org-babel-default-header-args:haskell
+  '((:padline . "no"))
+  "Default arguments for evaluating a haskell source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-haskell-lhs2tex-command "lhs2tex")
 
 (defvar org-babel-haskell-eoe "org-babel-haskell-eoe")

diff --git a/lisp/ob-java.el b/lisp/ob-java.el
--- a/lisp/ob-java.el	2026-02-22 14:38:12
+++ b/lisp/ob-java.el	2026-02-22 14:38:53
@@ -39,19 +39,16 @@
 
 (defvar org-babel-temporary-directory) ; from ob-core
 
-(defvar org-babel-default-header-args:java '((:results . "output")
-					     (:dir . "."))
-  "Default header args for java source blocks.
-The docs say functional mode should be the default [1], but
-ob-java didn't originally support functional mode, so we keep
-scripting mode as the default for now to maintain previous
-behavior.
+(defcustom org-babel-default-header-args:java
+  '((:results . "output")
+    (:dir . "."))
+  "Default header args for java source blocks.\nThe docs say functional mode should be the default [1], but\nob-java didn't originally support functional mode, so we keep\nscripting mode as the default for now to maintain previous\nbehavior.\n\nMost languages write tempfiles to babel's temporary directory,\nbut ob-java originally had to write them to the current\ndirectory, so we keep that as the default behavior.\n\n[1] https://orgmode.org/manual/Results-of-Evaluation.html" :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
-Most languages write tempfiles to babel's temporary directory,
-but ob-java originally had to write them to the current
-directory, so we keep that as the default behavior.
 
-[1] https://orgmode.org/manual/Results-of-Evaluation.html")
 
 (defconst org-babel-header-args:java
   '((dir       . :any)

diff --git a/lisp/ob-julia.el b/lisp/ob-julia.el
--- a/lisp/ob-julia.el	2026-02-22 14:38:12
+++ b/lisp/ob-julia.el	2026-02-22 14:38:53
@@ -64,8 +64,14 @@
 
 (add-to-list 'org-babel-tangle-lang-exts '("julia" . "jl"))
 
-(defvar org-babel-default-header-args:julia '())
+(defcustom org-babel-default-header-args:julia '() "Default arguments for evaluating a julia source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-babel-julia-command "julia"
   "Name of command to use for executing julia code."
   :version "24.3"

diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
--- a/lisp/ob-latex.el	2026-02-22 14:38:12
+++ b/lisp/ob-latex.el	2026-02-22 14:38:53
@@ -51,9 +51,16 @@
 (defvar org-latex-packages-alist)	  ; From org.el
 (defvar org-preview-latex-process-alist)  ; From org.el
 
-(defvar org-babel-default-header-args:latex
-  '((:results . "latex") (:exports . "results"))
-  "Default arguments to use when evaluating a LaTeX source block.")
+(defcustom org-babel-default-header-args:latex
+  '((:results . "latex")
+    (:exports . "results"))
+  "Default arguments to use when evaluating a LaTeX source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 
 (defconst org-babel-header-args:latex
   '((border	  . :any)

diff --git a/lisp/ob-lilypond.el b/lisp/ob-lilypond.el
--- a/lisp/ob-lilypond.el	2026-02-22 14:38:12
+++ b/lisp/ob-lilypond.el	2026-02-22 14:38:53
@@ -43,12 +43,13 @@
 (add-to-list 'org-babel-tangle-lang-exts '("LilyPond" . "ly"))
 (add-to-list 'org-src-lang-modes '("lilypond" . LilyPond))
 
-(defvar org-babel-default-header-args:lilypond '()
-  "Default header arguments for lilypond code blocks.
-NOTE: The arguments are determined at lilypond compile time.
-See `org-babel-lilypond-set-header-args'
-To configure, see `ob-lilypond-header-args'
-.")
+(defcustom org-babel-default-header-args:lilypond '() "Default header arguments for lilypond code blocks.\nNOTE: The arguments are determined at lilypond compile time.\nSee `org-babel-lilypond-set-header-args'\nTo configure, see `ob-lilypond-header-args'\n." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 
 (defvar ob-lilypond-header-args
   '((:results . "file") (:exports . "results"))

diff --git a/lisp/ob-lisp.el b/lisp/ob-lisp.el
--- a/lisp/ob-lisp.el	2026-02-22 14:38:12
+++ b/lisp/ob-lisp.el	2026-02-22 14:38:53
@@ -49,7 +49,13 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("lisp" . "lisp"))
 
-(defvar org-babel-default-header-args:lisp '())
+(defcustom org-babel-default-header-args:lisp '() "Default arguments for evaluating a lisp source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
 (defvar org-babel-header-args:lisp '((package . :any)))
 
 (defcustom org-babel-lisp-eval-fn #'slime-eval

diff --git a/lisp/ob-lua.el b/lisp/ob-lua.el
--- a/lisp/ob-lua.el	2026-02-22 14:38:12
+++ b/lisp/ob-lua.el	2026-02-22 14:38:53
@@ -37,8 +37,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("lua" . "lua"))
 
-(defvar org-babel-default-header-args:lua '())
+(defcustom org-babel-default-header-args:lua '() "Default arguments for evaluating a lua source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-babel-lua-command "lua"
   "Name of the command for executing Lua code."
   :version "26.1"

diff --git a/lisp/ob-makefile.el b/lisp/ob-makefile.el
--- a/lisp/ob-makefile.el	2026-02-22 14:38:12
+++ b/lisp/ob-makefile.el	2026-02-22 14:38:53
@@ -33,8 +33,14 @@
 
 (require 'ob)
 
-(defvar org-babel-default-header-args:makefile '())
+(defcustom org-babel-default-header-args:makefile '() "Default arguments for evaluating a makefile source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defun org-babel-execute:makefile (body _params)
   "Execute makefile BODY.
 Second function argument is ignored.

diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el
--- a/lisp/ob-maxima.el	2026-02-22 14:38:12
+++ b/lisp/ob-maxima.el	2026-02-22 14:38:53
@@ -45,8 +45,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("maxima" . "max"))
 
-(defvar org-babel-default-header-args:maxima '())
+(defcustom org-babel-default-header-args:maxima '() "Default arguments for evaluating a maxima source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-babel-maxima-command
   (if (boundp 'maxima-command) maxima-command "maxima")
   "Command used to call maxima on the shell."

diff --git a/lisp/ob-ocaml.el b/lisp/ob-ocaml.el
--- a/lisp/ob-ocaml.el	2026-02-22 14:38:12
+++ b/lisp/ob-ocaml.el	2026-02-22 14:38:53
@@ -49,8 +49,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("ocaml" . "ml"))
 
-(defvar org-babel-default-header-args:ocaml '())
+(defcustom org-babel-default-header-args:ocaml '() "Default arguments for evaluating a ocaml source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-ocaml-eoe-indicator "\"org-babel-ocaml-eoe\";;")
 (defvar org-babel-ocaml-eoe-output "org-babel-ocaml-eoe")
 

diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el
--- a/lisp/ob-octave.el	2026-02-22 14:38:12
+++ b/lisp/ob-octave.el	2026-02-22 14:38:53
@@ -39,9 +39,21 @@
 (declare-function matlab-shell "ext:matlab-mode")
 (declare-function matlab-shell-run-region "ext:matlab-mode")
 
-(defvar org-babel-default-header-args:matlab '())
-(defvar org-babel-default-header-args:octave '())
+(defcustom org-babel-default-header-args:matlab '() "Default arguments for evaluating a matlab source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
+
+
+(defcustom org-babel-default-header-args:octave '() "Default arguments for evaluating a octave source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-matlab-shell-command "matlab -nosplash"
   "Shell command to run matlab as an external process.")
 (defvar org-babel-octave-shell-command "octave -q"

diff --git a/lisp/ob-org.el b/lisp/ob-org.el
--- a/lisp/ob-org.el	2026-02-22 14:38:12
+++ b/lisp/ob-org.el	2026-02-22 14:38:53
@@ -36,10 +36,17 @@
 (declare-function org-export-string-as "ox"
 		  (string backend &optional body-only ext-plist))
 
-(defvar org-babel-default-header-args:org
-  '((:results . "raw silent") (:exports . "code"))
-  "Default arguments for evaluating an org source block.")
+(defcustom org-babel-default-header-args:org
+  '((:results . "raw silent")
+    (:exports . "code"))
+  "Default arguments for evaluating an org source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-org-default-header
   "#+TITLE: default empty header\n"
   "Default header inserted during export of org blocks.")

diff --git a/lisp/ob-perl.el b/lisp/ob-perl.el
--- a/lisp/ob-perl.el	2026-02-22 14:38:12
+++ b/lisp/ob-perl.el	2026-02-22 14:38:53
@@ -37,8 +37,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("perl" . "pl"))
 
-(defvar org-babel-default-header-args:perl '())
+(defcustom org-babel-default-header-args:perl '() "Default arguments for evaluating a perl source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-perl-command "perl"
   "Name of command to use for executing perl code.")
 

diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el
--- a/lisp/ob-plantuml.el	2026-02-22 14:38:12
+++ b/lisp/ob-plantuml.el	2026-02-22 14:38:53
@@ -40,10 +40,17 @@
 
 (require 'ob)
 
-(defvar org-babel-default-header-args:plantuml
-  '((:results . "file") (:exports . "results"))
-  "Default arguments for evaluating a plantuml source block.")
+(defcustom org-babel-default-header-args:plantuml
+  '((:results . "file")
+    (:exports . "results"))
+  "Default arguments for evaluating a plantuml source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defcustom org-plantuml-jar-path ""
   "Path to the plantuml.jar file."
   :group 'org-babel

diff --git a/lisp/ob-processing.el b/lisp/ob-processing.el
--- a/lisp/ob-processing.el	2026-02-22 14:38:12
+++ b/lisp/ob-processing.el	2026-02-22 14:38:53
@@ -67,10 +67,17 @@
 ;; Default header tags depend on whether exporting html or not; if not
 ;; exporting html, then no results are produced; otherwise results are
 ;; HTML.
-(defvar org-babel-default-header-args:processing
-  '((:results . "html") (:exports . "results"))
-  "Default arguments when evaluating a Processing source block.")
+(defcustom org-babel-default-header-args:processing
+  '((:results . "html")
+    (:exports . "results"))
+  "Default arguments when evaluating a Processing source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-processing-processing-js-filename "processing.js"
   "Filename of the processing.js file.")
 

diff --git a/lisp/ob-python.el b/lisp/ob-python.el
--- a/lisp/ob-python.el	2026-02-22 14:38:12
+++ b/lisp/ob-python.el	2026-02-22 14:38:53
@@ -41,8 +41,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("python" . "py"))
 
-(defvar org-babel-default-header-args:python '())
+(defcustom org-babel-default-header-args:python '() "Default arguments for evaluating a python source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defconst org-babel-header-args:python
   '((return . :any)
     (python . :any)

diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el
--- a/lisp/ob-ruby.el	2026-02-22 14:38:12
+++ b/lisp/ob-ruby.el	2026-02-22 14:38:53
@@ -52,8 +52,14 @@
 (defvar org-babel-tangle-lang-exts)
 (add-to-list 'org-babel-tangle-lang-exts '("ruby" . "rb"))
 
-(defvar org-babel-default-header-args:ruby '())
+(defcustom org-babel-default-header-args:ruby '() "Default arguments for evaluating a ruby source block." :group 'org-babel :type
+  '(repeat
+    (cons
+     (symbol :tag "Header argument")
+     (sexp :tag "Value"))))
 
+
+
 (defvar org-babel-ruby-command "ruby"
   "Name of command to use for executing ruby code.
 It's possible to override it by using a header argument `:ruby'")

diff --git a/lisp/ob-sass.el b/lisp/ob-sass.el
--- a/lisp/ob-sass.el	2026-02-22 14:38:12
+++ b/lisp/ob-sass.el	2026-02-22 14:39:40
@@ -44,7 +44,13 @@
 
 (require 'ob)
 
-(defvar org-babel-default-header-args:sass '())
+(defcustom org-babel-default-header-args:sass '()
+  "Default arguments for evaluating a sass source block."
+  :group 'org-babel
+  :type '(repeat
+          (cons
+           (symbol :tag "Header argument")
+           (sexp :tag "Value"))))
 
 (defun org-babel-execute:sass (body params)
   "Execute a block of Sass code with Babel.

diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
--- a/lisp/ob-scheme.el	2026-02-22 14:38:12
+++ b/lisp/ob-scheme.el	2026-02-22 14:39:43
@@ -75,8 +75,13 @@
   :package-version '(Org . "9.1")
   :type 'symbol)
 
-(defvar org-babel-default-header-args:scheme '()
-  "Default header arguments for scheme code blocks.")
+(defcustom org-babel-default-header-args:scheme '()
+  "Default header arguments for scheme code blocks."
+  :group 'org-babel
+  :type '(repeat
+          (cons
+           (symbol :tag "Header argument")
+           (sexp :tag "Value"))))
 (defconst org-babel-header-args:scheme '((host . :any)
                                          (port . :any))
   "Header arguments supported in Scheme.")

diff --git a/lisp/ob-screen.el b/lisp/ob-screen.el
--- a/lisp/ob-screen.el	2026-02-22 14:38:12
+++ b/lisp/ob-screen.el	2026-02-22 14:39:48
@@ -44,10 +44,15 @@
   "The command location for screen.
 In case you want to use a different screen than one selected by your $PATH")
 
-(defvar org-babel-default-header-args:screen
+(defcustom org-babel-default-header-args:screen
   `((:results . "silent") (:session . "default") (:cmd . "sh")
     (:terminal . "xterm") (:screenrc . ,null-device))
-  "Default arguments to use when running screen source blocks.")
+  "Default arguments to use when running screen source blocks."
+  :group 'org-babel
+  :type '(repeat
+          (cons
+           (symbol :tag "Header argument")
+           (sexp :tag "Value"))))
 
 (defun org-babel-execute:screen (body params)
   "Send BODY via screen to a terminal using Babel, according to PARAMS.

diff --git a/lisp/ob-sed.el b/lisp/ob-sed.el
--- a/lisp/ob-sed.el	2026-02-22 14:38:12
+++ b/lisp/ob-sed.el	2026-02-22 14:39:51
@@ -57,8 +57,13 @@
     (:in-file  . :any))
   "Sed specific header arguments.")
 
-(defvar org-babel-default-header-args:sed '()
-  "Default arguments for evaluating a sed source block.")
+(defcustom org-babel-default-header-args:sed '()
+  "Default arguments for evaluating a sed source block."
+  :group 'org-babel
+  :type '(repeat
+          (cons
+           (symbol :tag "Header argument")
+           (sexp :tag "Value"))))
 
 (defun org-babel-execute:sed (body params)
   "Execute a block of sed code with Org Babel.

diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el
--- a/lisp/ob-sqlite.el	2026-02-22 14:38:12
+++ b/lisp/ob-sqlite.el	2026-02-22 14:39:55
@@ -38,7 +38,13 @@
 		  (beg0 end0 &optional separator))
 (declare-function org-table-to-lisp "org-table" (&optional txt))
 
-(defvar org-babel-default-header-args:sqlite '())
+(defcustom org-babel-default-header-args:sqlite '()
+  "Default arguments for evaluating a sqlite source block."
+  :group 'org-babel
+  :type '(repeat
+          (cons
+           (symbol :tag "Header argument")
+           (sexp :tag "Value"))))
 
 (defvar org-babel-header-args:sqlite
   '((db        . :any)

