pkgbase=mkessler
pkgname=(mkessler-base mkessler-xmonad mkessler-x mkessler-audio mkessler-software mkessler-print mkessler-locale mkessler-desktop mkessler-devel mkessler-signing-key)
pkgver=0.15
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=(b0e1a6bc60f99bdda99dd053ef869a9f3f899ced7a4b23db3718baaee374375ca4013ac3eab2eb3ef6d645083722f9305c484661cd1246f6ec2e3bf62dbf95a4)

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)

  # 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)

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

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

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

  depends+=(mkessler-xmonad)

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

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

  # terminal emulators
  depends+=(kitty alacritty)
}

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

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

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

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

  # texlive installer
  depends+=(texlive-installer)

  # keepass for password databases
  depends+=(keepassxc)

  # python
  depends+=(python python-pip)
}

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

  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)
}


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

  # python
  depends+=(python python-pip)

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