{ config , lib , pkgs , ... }: with lib; let cfg = config.my.programs.ledger; in { options.my.programs.ledger = { enable = mkOption { default = false; type = types.bool; example = true; }; }; config = mkIf cfg.enable { my.shell.aliases = { bal = "ledger bal"; balcash = "ledger bal -R -X € --current --flat ^assets:bank ^liabilities"; balnet = "ledger bal -R -X € --current --depth 2 ^assets ^liabilities"; bud = ''ledger --budget --unbudgeted bal ^expenses -p "this month"''; budr = ''ledger --budget reg -p "this month" ^expenses''; reg = "ledger reg -R -V --tail 15"; }; home-manager.users.moritz = { home.packages = with pkgs; let reg-copy = writeShellApplication { name = "reg-copy"; runtimeInputs = [ ledger xclip ]; text = '' table="$(printf '%-10s %-30s %8s %8s\n' Datum Beschreibung Einzeln Gesamt && ledger reg -V --format '%10D %.30P %8t %8T\n' "$@")" echo "$table" echo "$table" | xclip -selection clipboard ''; }; in [ ledger reg-copy ]; xdg.configFile = { "fish/completions/ledger.fish" = { text = builtins.readFile ./ledger.fish; }; "ledger/ledgerrc".text = '' --strict --explicit --payee note --file ~/Notes/ledger/main.ledger ''; }; }; }; }