assert node.os == 'arch'

defaults = {
    'backups': {
        'paths': {
            '/etc/netctl',
        },
    },
    'icinga_options': {
        'exclude_from_monitoring': True,
    },
    'nftables': {
        'input': {
            '50-avahi': {
                'udp dport 5353 accept',
                'udp sport 5353 accept',
            },
        },
    },
    'pacman': {
        'packages': {
            # fonts
            'fontconfig': {},
            'ttf-dejavu': {
                'needed_by': {
                    'pkg_pacman:sddm',
                },
            },

            # login management
            'sddm': {},

            # networking
            'avahi': {},
            'netctl': {},
            'rfkill': {},
            'wpa_supplicant': {},
            'wpa_actiond': {},

            # shell and other gui stuff
            'dunst': {},
            'fish': {},
            'kitty': {},
            'libnotify': {}, # provides notify-send
            'light': {},
            'redshift': {},
            'rofi': {},

            # sound
            'calf': {},
            'easyeffects': {},
            'lsp-plugins': {},
            'pavucontrol': {},
            'pipewire': {},
            'pipewire-jack': {},
            'pipewire-pulse': {},
            'pipewire-zeroconf': {},
            'qpwgraph': {},

            # window management
            'i3-wm': {},
            'i3lock': {},
            'xss-lock': {},

            # i3pystatus dependencies
            'iw': {},
            'wireless_tools': {},

            # Xorg
            'xf86-input-libinput': {},
            'xf86-input-wacom': {},
            'xorg-server': {},
            'xorg-setxkbmap': {},
            'xorg-xev': {},
            'xorg-xinput': {},
            'xorg-xset': {},

            # all them apps
            'browserpass': {},
            'browserpass-firefox': {},
            'ffmpeg': {},
            'firefox': {},
            'gimp': {},
            'imagemagick': {},
            'inkscape': {},
            'kdenlive': {},
            'maim': {},
            'mosh': {},
            'mosquitto': {},
            'mpv': {},
            'pass': {},
            'pass-otp': {},
            'pdftk': {},
            'pwgen': {},
            'qpdfview': {},
            'samba': {},
            'shotcut': {},
            'sipcalc': {},
            'the_silver_searcher': {},
            'tlp': {},
            'virt-manager': {},
            'xclip': {},
            'xdotool': {}, # needed for maim window selection
        },
    },
}

@metadata_reactor.provides(
    'backups/paths',
)
def backup_every_user_home(metadata):
    paths = set()

    for user, config in metadata.get('users', {}).items():
        if config.get('delete', False):
            continue

        paths.add(config.get('home', f'/home/{user}'))

    return {
        'backups': {
            'paths': paths,
        },
    }
