You may want to reuse most of an existing style so that your init.el does not add 100 new lines of indentation rules for every language.
For the C/C++ family, they provide a custom option to add your own function.
In my case, I reused the BSD style and added a few lines on my own.
(defun my-indent-style()
"Override the built-in BSD indentation style with some additional rules"
`(;; Here are your custom rules
((node-is ")") parent-bol 0)
((match nil "argument_list" nil 1 1) parent-bol c-ts-mode-indent-offset)
((parent-is "argument_list") prev-sibling 0)
((match nil "parameter_list" nil 1 1) parent-bol c-ts-mode-indent-offset)
((parent-is "parameter_list") prev-sibling 0)
;; Append here the indent style you want as base
,@(alist-get 'bsd (c-ts-mode--indent-styles 'cpp))))
(use-package c-ts-mode
:if (treesit-language-available-p 'c)
:custom
(c-ts-mode-indent-offset 4)
(c-ts-mode-indent-style #'my-indent-style)
:init
;; Remap the standard C/C++ modes
(add-to-list 'major-mode-remap-alist '(c-mode . c-ts-mode))
(add-to-list 'major-mode-remap-alist '(c++-mode . c++-ts-mode))
(add-to-list 'major-mode-remap-alist '(c-or-c++-mode . c-or-c++-ts-mode)))