Late to the party, but I use a combination of spreadsheets (libreoffice calc) and hledger.
I defined categories for expenses and income, like your example (some of mine are: expenses:auto:maintenance, expenses:auto:repairs in ledger while in the spreadsheet I only have one row for auto). I track totals for the categories in hledger. Monthly I update the spreadsheet and track how well I stuck to the budget.
I haven't used the built in budget feature in hledger.