pkgbase=mkessler
pkgname=(mkessler-base mkessler-xmonad mkessler-x mkessler-audio mkessler-androidfs mkessler-software mkessler-print mkessler-locale mkessler-desktop mkessler-devel mkessler-signing-key)
pkgver=r64.2195770
pkgrel=1
pkgdesc="Base system configuration for mkessler systems"
arch=('any')
license=('MIT')
groups=(mkessler)
url="https://gitlab.com/kesslermaximilian/arch-pkgs"


###########
# Note that some of these packages have dependencies that are only available
# in the AUR. Such packages are marked with an 'AUR' comment.
# In order for this to work, you either need to use an AUR helper that is able
# to resolve such dependencies, or have these AUR packages pre-built and
# available in a custom repository, so that pacman is able to find them.
# Also, note that there is no guarantee made on any functionality of these
# packages and that dependencies might change at any time
##########

source=(https://mkessler-arch.maximilian-kessler.de/signing_key)
b2sums=(acf6c058469ec7a521b568060120686a26bdf6e170b1e8fa4ec321c0f16cc6f641eaa01f33fd6c7c9c1506f66e9059ad1475852ab12b4ddc517658f1addcb235)

pkgver() {
  printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

package_mkessler-signing-key() {
  # Install this package after pacman to ensure that its keyring is initialized
  depends=(archlinux-keyring)

  install=mkessler-signing-key.install

  install -d "$pkgdir"/opt
  mkdir -p "$pkgdir"/opt/mkessler/signing-key
  cp ${srcdir}/signing_key "$pkgdir"/opt/mkessler/signing-key/signing_key
}

package_mkessler-base() {
  # Base packages
  depends=(base linux linux-firmware man-db man-pages lvm2)

  # boot manager
  depends+=(grub efibootmgr)

  # standard programs
  # note that vim-plug is from the AUR,
  # the package has to be present on a custom repo
  depends+=(zsh gvim vim-plug openssh gzip tar rsync)

  # AUR. easy file-renaming in git
  depends+=(vimv-git)

  # standard utilities
  depends+=(ncdu wget tree sudo htop which sed make grep)

  # network
  depends+=(dhcpcd networkmanager)

  # install signing key
  depends+=(mkessler-signing-key)

  install=mkessler-base.install
}

package_mkessler-xmonad() {
  # haskell utilities
  depends=(stack)

  # libraries needed to build xmonad
  depends+=(libxss libx11 pkgconf)
}

package_mkessler-x() {
  depends=(xorg-server)

  # xorg utilities
  depends+=(xorg-xkill xorg-xev xorg-xrandr xorg-docs xorg-setxkbmap xorg-xinput)

  # arandr for simpler screen controlling than xrandr
  depends+=(arandr)

  # greeter
  depends+=(lightdm lightdm-gtk-greeter)

  # window managers: i3 and stuff to build xmonad
  depends+=(i3-gaps i3status i3blocks)

  # AUR
  depends+=(i3lock-fancy-git)

  # better screenshot utility for i3lock-fancy-git
  depends+=(maim)

  depends+=(mkessler-xmonad)

  # launching utilities, status bar
  depends+=(dmenu rofi polybar)

  # sets X11 keyboard layout
  install=mkessler-x.install

  # terminal emulators
  depends+=(kitty alacritty)

  # networkmanager and extensions for L2TP/IPsec VPN protocol
  depends+=(networkmanager-l2tp strongswan)
}

package_mkessler-audio() {
  depends=(pipewire pipewire-pulse pipewire-jack)

  # firmware
  depends+=(alsa-firmware sof-firmware)

  # utilities
  depends+=(pavucontrol alsa-utils qpwgraph)
}

package_mkessler-androidfs() {
  # see https://linuxhint.com/connect-android-arch-linux/
  depends=(mtpfs)

  # AUR
  depends+=(jmtpfs)

  # integration into file browser (tested with nautilus)
  depends+=(gvfs-mtp)
}

package_mkessler-software() {
  depends=(thunderbird qutebrowser vlc)
  
  # zathura and PDF plugin
  depends+=(zathura zathura-pdf-mupdf zathura-djvu)

  # vimtex needs this for correcty syncing with zathura
  depends+=(xdotool)
  
  # messengers  
  depends+=(signal-desktop element-desktop telegram-desktop)

  # texlive installer
  depends+=(texlive-installer)
 
  # biber (for bibliographies) needs this, since it still uses deprecated and now-removed
  # libcrypt.so.1
  # See https://bbs.archlinux.org/viewtopic.php?id=274160 and https://github.com/plk/biber/issues/402
  depends+=(libxcrypt-compat)

  # keepass for password databases
  depends+=(keepassxc)

  # python
  depends+=(python python-pip)

  # music
  depends+=(clementine) # AUR

  # xournal for drawing etc
  depends+=(xournalpp)

  # AUR
  depends+=(tor-browser caffeine)
}

package_mkessler-print() {
  depends=(cups cups-pdf)

  # AUR. simple scanning of documents
  depends+=(simple-scan)

  # activate cups socket
  install=mkessler-print.install
}

package_mkessler-locale() {
  depends=()
  install=mkessler-locale.install
}

package_mkessler-desktop() {
  depends=(mkessler-base mkessler-x mkessler-audio mkessler-software mkessler-print mkessler-locale mkessler-androidfs)
}

package_mkessler-devel() {
  depends=(stack ghc gcc go)

  # python
  depends+=(python python-pip)

  # fakeroot for running makepkg
  depends+=(fakeroot archiso gawk texinfo pkgconf)
}