#      _       _      _
#   __| | ___ | |_ __| |_ __ ___  _ __
#  / _` |/ _ \| __/ _` | '__/ _ \| '_ \
# | (_| | (_) | || (_| | | | (_) | |_) |
#  \__,_|\___/ \__\__,_|_|  \___/| .__/
#                                |_|

###############################################################
variables:
###############################################################

    username: lelgenio
    shell: fish
    editor: kak
    cursor_size: 24
    tabs: false
    indent_width: 4
    key_layout: colemak
    launcher: bmenu
    terminal: alacritty
    file_manager: thunar
    bar: waybar
    bar_pos: top
    tmux: false
    starship: false
    asdf: false
    user_svdir: $HOME/.config/runit

    accent_fg: '#ffffff'

    font:
        mono: Hack Nerd Font
        interface: Liberation Sans
        size:
            small: 12
            medium: 14
            big: 16

    mail:
        personal:
            from: Leonardo Eugênio
            user: lelgenio@disroot.org
            imap: disroot.org
            smtp: disroot.org
            pass: disroot.org
        work:
            from: Leonardo Eugênio
            user: leonardo@wopus.com.br
            imap: imap.wopus.com.br
            smtp: smtp.wopus.com.br
            pass: Work/wopus_email

    nextcloud:
        name: disroot
        user: lelgenio
        host: cloud.disroot.org
        pass: disroot.org

###############################################################
profiles:
###############################################################

###############################################################
# Themes
###############################################################

    dark:
        variables:
            background: ~/.local/share/backgrounds/assembly_dark.png

            opacity: 0.98

            color:
                type: dark
                bg: '#202020'
                bg_light: '#404040'
                bg_dark: '#191919'
                txt: '#FFFFFF'
                nontxt: '#252525'

                random_range: "[a-f]"
                normal:
                    black: '#404040'
                    red: '#AB4642'
                    green: '#A1B56C'
                    yellow: '#E6C547'
                    blue: '#6C99DA'
                    magenta: '#C397D8'
                    cyan: '#70C0BA'
                    white: '#EAEAEA'

                    #non standard
                    orange: '#FF7500'
                    brown: '#A07040'

    light:
        variables:
            background: ~/.local/share/backgrounds/assembly_light.png

            opacity: 0.98

            color:
                type: light
                bg: '#FFFFFF'
                bg_light: '#A0A0A0'
                bg_dark: '#EEEEEE'
                txt: '#303030'
                nontxt: '#D0D0D0'

                random_range: "[0-4]"
                normal:
                    black: '#555555'
                    red: '#D54E53'
                    green: '#008800'
                    yellow: '#B3A400'
                    blue: '#0D68A8'
                    magenta: '#C397D8'
                    cyan: '#00A0A5'
                    white: '#999999'

                    #non standard
                    orange: '#FF7500'
                    brown: '#A07040'


###############################################################
# Accents
###############################################################

    accent_red:     {variables: {accent_color: "#F44336"}}
    accent_green:   {variables: {accent_color: "#159828"}}
    accent_blue:    {variables: {accent_color: "#3465A3"}}
    accent_pink:    {variables: {accent_color: "#E91E63"}}
    accent_teal:    {variables: {accent_color: "#16A085"}}
    accent_magenta: {variables: {accent_color: "#9C27B0"}}
    accent_orange:  {variables: {accent_color: "#D93200"}}

###############################################################
# Keyboard Layouts
###############################################################

    colemak:
        variables:
            key:
                layout: colemak
                hints: arstwfuyneio
                left: n
                down: e
                up: i
                right: o
                next: l
                tabL: U
                tabR: Y
                insertMode: s
                insertQuit: kk
                menu: s

    qwerty:
        variables:
            key:
                layout: qwerty
                hints: asdfwejklçio
                left: h
                down: j
                up: k
                right: l
                next: l
                tabL: I
                tabR: O
                insertMode: i
                insertQuit: jj
                menu: d


###############################################################
    common:
###############################################################
        variables:
            # gtk_theme:      "Mint-Y{{@@ '-Dark' if color.type == 'dark' else '' @@}}-{{@@ accent_color_name.capitalize() @@}}"
            gtk_theme:      "Orchis-{{@@ accent_color_name.lower() @@}}-{{@@ 'dark' if color.type == 'dark' else 'light' @@}}"
            kvantum_theme:  "Materia{{@@ color.type.capitalize() @@}}"
            # icon_theme:     "Mint-Y-{{@@ 'Dark' if color.type == 'dark' else 'Darker' @@}}-{{@@ accent_color_name.capitalize() @@}}"
            icon_theme:     "Papirus-{{@@ color.type.capitalize() @@}}"
            cursor_theme:   "Breeze_Obsidian"
            # cursor_theme:   "Breeze_Snow"
            # cursor_theme:   "capitaine-cursors"
        include:
        - "{{@@ key_layout @@}}"
        - "{{@@ color_type @@}}"
        - "accent_{{@@ accent_color_name @@}}"
        dotfiles:
            - alacritty
            - backgrounds
            - bat
            - blender
            - clang-format
            - code-oss
            - crontab
            - dav
            - deemix
            - firefox
            - fish
            - fonts
            - foot
            - git
            - gpg-agent
            - i3
            - imv
            - kak-lsp
            - kakoune
            - kanshi
            - kitty
            - lesskey
            - libinput-gestures
            - mako
            - mangohud
            - mime
            - mpd
            - mpv
            - mutt
            - mypy
            - nvim
            - pqivrc
            - prettierrc
            - qutebrowser
            - ranger
            - rclone
            - rustfmt
            - scripts
            - starship
            - sway
            - swaylock
            - telegram-theme
            - theme
            - thunar
            - tmux
            - vscode
            - waybar
            - wofi
            - xdpw
            - zathura

###############################################################
# Os profiles
###############################################################

    voidlinux:
        include:
            - "common"
        variables:
            supervisor: runit
        dotfiles:
            - runit_services

    artixlinux:
        include:
            - "common"
        dotfiles:
            - arch-packages
            - paru
        variables:
            supervisor: runit

    archlinux:
        include:
            - "common"
        dotfiles:
            - arch-packages
            - paru
            - systemd
        variables:
            supervisor: systemd

###############################################################
config:
###############################################################

    backup: false
    banner: false
    keepdot: false
    link_dotfile_default: nolink
    link_on_import: nolink
    longkey: false
    default_actions:
    - notify
    func_file:
    - funcs.py
    filter_file:
    - funcs.py

###############################################################
dynvariables:
###############################################################

    color_type: test -n "$_COLOR_TYPE" && echo "$_COLOR_TYPE" || echo dark
    accent_color_name: test -n "$_ACCENT_COLOR" && echo "$_ACCENT_COLOR" || echo red
    firefox_profile: cat ~/.mozilla/firefox/profiles.ini | grep '^Default' | head -n1 | cut -d= -f2
    deezer_arl: pass show Entertainment/Deezer | awk '/^arl:/ {print $2}'
    main_password: _pass_get "{{@@ mail.personal.pass @@}}" | base64

###############################################################
actions:
###############################################################

    notify: >
        test -n "$DISPLAY" &&
        notify-send --app-name=dotdrop
        "Updating dotfiles"
        "{{@@ _dotfile_abs_dst.lstrip(env['HOME']) @@}}" ||
        true

    reload_sway: swaymsg reload & disown
    reload_mako: makoctl reload
    reload_waybar: pkill -SIGUSR2 waybar
    reload_runit_sv:
        which sv 2> /dev/null &&
        env SVDIR="{{@@ user_svdir @@}}" sv reload "{0}" ||
        true
    reload_systemd_sv:
        systemctl --user daemon-reload
    enable_systemd_sv:
        systemctl --user enable --now "{0}" &
    groups_install: _groups_install
    lesskey: lesskey
    reload_fish: pkill -SIGHUP fish
    dotdrop_completions: |
        comp_path="$HOME/.config/fish/completions/dotdrop.fish"
        comp_url="https://raw.githubusercontent.com/deadc0de6/dotdrop/master/completion/dotdrop.fish"
        if ! test -f "$comp_path"; then
            wget -qO "$comp_path" "$comp_url" ||
            rm "$comp_path"
        fi

    reload_qutebrowser: qutemsg config-source & disown

    vimplug: >
        nvim +PlugUpgrade +PlugInstall +PlugUpdate +qall
        > /dev/null &

    reload_kakoune: >
        kak -l | xargs -r -n1
        kak -e "config-source;quit" -ui dummy -c &

    crontab_install: |
        crontab -r
        crontab ~/.local/share/crontab

    vdirsyncer: |
        yes | vdirsyncer discover &

    lnMail: |
        ln -fs ~/.config/neomutt/mbsyncrc ~/.mbsyncrc
        ln -fs ~/.config/neomutt/urlview ~/.urlview
        ln -fs ~/.config/neomutt/msmtprc ~/.msmtprc

    ranger_icons:
        git clone
        https://github.com/alexanderjeurissen/ranger_devicons
        ~/.config/ranger/plugins/ranger_devicons

    # bootstrap scripts
    pam_gpg: _pam-gpg-strap
    make_theme: _make_theme
    qt6ct: |
        cd "$HOME/.config"
        rm -rf "qt6ct/"
        cp -r "qt5ct/" "qt6ct"
        mv "qt6ct/qt5ct.conf" "qt6ct/qt6ct.conf"
    install_arch_meta: install_arch_meta
    install_mpv: _mpv_install
    filter_backgrounds: _backgrouds_filter
    apply_gsetting_gnome: gsettings set org.gnome.desktop.interface {0} {1}

###############################################################
dotfiles: # Just a bunch of paths and action mappings
###############################################################

    ###############################################################
    # Regular programs
    ###############################################################

    sway:
        src: sway
        dst: ~/.config/sway
        actions:
        - reload_sway

    i3:
        src: i3
        dst: ~/.config/i3

    fish:
        src: fish
        dst: ~/.config/fish
        actions:
        - dotdrop_completions
        - reload_fish

    starship:
        src: starship.toml
        dst: ~/.config/starship.toml

    git:
        src: git
        dst: ~/.config/git

    mako:
        src: mako.conf
        dst: ~/.config/mako/config
        actions:
        - reload_mako

    waybar:
        src: waybar
        dst: ~/.config/waybar
        actions:
        - reload_waybar

    kitty:
        src: kitty.conf
        dst: ~/.config/kitty/kitty.conf
        actions:
        - reload_fish

    nvim:
        src: nvim.vim
        dst: ~/.config/nvim/init.vim
        actions:
        - vimplug

    kakoune:
        src: kak
        dst: ~/.config/kak
        actions:
        - reload_kakoune

    mutt:
        src: neomutt/
        dst: ~/.config/neomutt/
        actions:
        - lnMail

    qutebrowser:
        src: qutebrowser
        dst: ~/.config/qutebrowser
        actions:
        - reload_qutebrowser

    lesskey:
        src: lesskey
        dst: ~/.lesskey
        actions:
        - lesskey

    ranger:
        src: ranger
        dst: ~/.config/ranger
        actions:
        - ranger_icons

    thunar:
        src: thunar
        dst: ~/.config/Thunar

    mpv:
        src: mpv.conf
        dst: ~/.config/mpv/mpv.conf
        actions:
        - install_mpv

    dav:
        src: dav/
        dst: ~/.config
        actions:
        - vdirsyncer

    tmux:
        src: tmux.conf
        dst: ~/.tmux.conf

    ###############################################################
    # Other
    ###############################################################

    scripts:
        src: scripts
        dst: ~/.local/bin
        actions:
        - make_theme
        - groups_install

    runit_services:
        src: runit_sv
        dst: ~/.config/runit

    systemd:
        src: systemd
        dst: ~/.config/systemd/user
        actions:
        - enable_systemd_sv caffeinated.service
        - enable_systemd_sv gammastep.service
        - enable_systemd_sv kanshi.service
        - enable_systemd_sv mako.service
        - enable_systemd_sv mpDris2.service
        - enable_systemd_sv notify-mail.service
        - enable_systemd_sv pipewire.service
        - enable_systemd_sv kdeconnectd.service
        - enable_systemd_sv kdeconnect-indicator.service
        - enable_systemd_sv sway-idle.service
        - enable_systemd_sv syncthing.service
        - enable_systemd_sv telegram-desktop.service
        - enable_systemd_sv waybar.service
        - enable_systemd_sv xsettingsd.service

    libinput-gestures:
        src: libinput-gestures.conf
        dst: ~/.config/libinput-gestures.conf
        actions:
        - reload_runit_sv libinput-gestures

    deemix:
        src: deemix
        dst: ~/.config/deemix

    backgrounds:
        src: backgrounds
        dst: ~/.local/share/backgrounds/
        actions:
        - filter_backgrounds

    fonts:
        src: fonts
        dst: ~/.local/share/fonts/

    mime:
        src: mime/
        dst: ~/

    crontab:
        src: crontab
        dst: ~/.local/share/crontab
        actions:
        - crontab_install

    theme:
        src: theme
        dst: ~/
        actions:
        - qt6ct
        - reload_runit_sv xsettingsd
        - apply_gsetting_gnome gtk-theme    '{{@@ gtk_theme     @@}}'
        - apply_gsetting_gnome icon-theme   '{{@@ icon_theme    @@}}'
        - apply_gsetting_gnome cursor-theme '{{@@ cursor_theme  @@}}'

    prettierrc:
        src: prettierrc.toml
        dst: ~/.prettierrc.toml

    clang-format:
        src: clang-format
        dst: ~/.clang-format

    mypy:
        src: mypy
        dst: ~/.config/mypy/config

    gpg-agent:
        src: gpg-agent.conf
        dst: ~/.gnupg/gpg-agent.conf
        actions:
        - pam_gpg

    arch-packages:
        src: meta.PKGBUILD
        dst: ~/.local/share/metapkg/PKGBUILD
        actions:
        - install_arch_meta

    kak-lsp:
        src: kak-lsp.toml
        dst: ~/.config/kak-lsp/kak-lsp.toml

    rustfmt:
        src: rustfmt.toml
        dst: ~/.config/rustfmt/rustfmt.toml

    ###############################################################
    # Big pahts
    ###############################################################

    code-oss:
        src: vscode.jsonc
        dst: "~/.config/Code - OSS/User/settings.json"

    vscode:
        src: vscode.jsonc
        dst: "~/.config/Code/User/settings.json"

    telegram-theme:
        src: ./telegram.palette
        dst: ~/.local/share/TelegramDesktop/theme.tdesktop-palette

    blender:
        "src": blenderTheme.xml
        "dst": "~/.config/blender/scripts/presets/interface_theme/blenderTheme.xml"

    firefox:
        src: firefox
        dst: "~/.mozilla/firefox/{{@@ firefox_profile @@}}/"

    ###############################################################
    # .config/, no actions
    ###############################################################

    alacritty:   { "src":"alacritty.yml", "dst":"~/.config/alacritty.yml"                 }
    bat:         { "src":"bat",           "dst":"~/.config/bat/config"                    }
    foot:        { "src": "foot.ini",     "dst": "~/.config/foot/foot.ini"                }
    imv:         { "src":"imv.conf",      "dst":"~/.config/imv/config"                    }
    kanshi:      { "src":"kanshi",        "dst":"~/.config/kanshi/config"                 }
    mangohud:    { "src":"MangoHud.conf", "dst":"~/.config/MangoHud/MangoHud.conf"        }
    mpd:         { "src":"mpd.conf",      "dst":"~/.config/mpd/mpd.conf"                  }
    paru:        { "src":"paru.conf",     "dst":"~/.config/paru/paru.conf"                }
    pqivrc:      { "src":"pqiv.ini",      "dst":"~/.config/pqivrc"                        }
    rclone:      { "src":"rclone.conf",   "dst":"~/.config/rclone/rclone.conf"            }
    swaylock:    { "src":"sway/swaylock", "dst":"~/.config/swaylock/config"               }
    wofi:        { "src":"wofi",          "dst":"~/.config/wofi"                          }
    xdpw:        { "src":"xdpw.ini",      "dst":"~/.config/xdg-desktop-portal-wlr/config" }
    zathura:     { "src":"zathura.conf",  "dst":"~/.config/zathura/zathurarc"             }

