{ config, pkgs, ... }: let backups = config.programs.borgmatic.backups; excludeFile = builtins.toFile "excludeFile.txt" "/foo/bar"; in { programs.borgmatic = { enable = true; backups = { main = { location = { sourceDirectories = [ "/my-stuff-to-backup" ]; repositories = [ "/mnt/disk1" ]; excludeHomeManagerSymlinks = true; extraConfig = { exclude_from = [ (toString excludeFile) ]; }; }; }; }; }; test.stubs.borgmatic = { }; nmt.script = '' config_file=$TESTED/home-files/.config/borgmatic.d/main.yaml assertFileExists $config_file declare -A expectations expectations[exclude_from[0]]="${excludeFile}" yq=${pkgs.yq-go}/bin/yq for filter in "''${!expectations[@]}"; do expected_value="''${expectations[$filter]}" actual_value="$($yq ".$filter" $config_file)" if [[ "$actual_value" != "$expected_value" ]]; then fail "Expected '$filter' to be '$expected_value' but was '$actual_value'" fi done hmExclusionsFile=$($yq '.exclude_from[1]' $config_file) expected_content='/home/hm-user/.config/borgmatic.d/main.yaml' grep --quiet "$expected_content" "$hmExclusionsFile" if [[ $? -ne 0 ]]; then echo "Expected to find $expected_content in file $hmExclusionsFile but didn't" >&2 exit 1 fi ''; }