Full Code of Makrennel/hyprland-void for AI

master 1ae39094e727 cached
35 files
40.1 KB
13.3k tokens
1 requests
Download .txt
Repository: Makrennel/hyprland-void
Branch: master
Commit: 1ae39094e727
Files: 35
Total size: 40.1 KB

Directory structure:
gitextract_4ym5w6fi/

├── .github/
│   └── workflows/
│       ├── build-latest.yml
│       └── check.yml
├── COPYING
├── README.md
├── common/
│   └── shlibs
├── scripts/
│   ├── build-packages
│   ├── clone-and-prepare
│   ├── generate-build-order.kts
│   ├── index-packages
│   ├── push-repository
│   ├── set-environment
│   ├── sign-packages
│   └── version-checker
└── srcpkgs/
    ├── aquamarine/
    │   └── template
    ├── glaze/
    │   └── template
    ├── hyprcursor/
    │   └── template
    ├── hyprgraphics/
    │   └── template
    ├── hypridle/
    │   └── template
    ├── hyprland/
    │   ├── patches/
    │   │   └── musl-build-fix.patch
    │   └── template
    ├── hyprland-protocols/
    │   └── template
    ├── hyprland-qt-support/
    │   └── template
    ├── hyprland-qtutils/
    │   └── template
    ├── hyprlang/
    │   └── template
    ├── hyprlock/
    │   └── template
    ├── hyprpaper/
    │   └── template
    ├── hyprpolkitagent/
    │   └── template
    ├── hyprsunset/
    │   └── template
    ├── hyprsysteminfo/
    │   └── template
    ├── hyprutils/
    │   └── template
    ├── hyprwayland-scanner/
    │   └── template
    ├── libspng/
    │   └── template
    ├── sdbus-cpp/
    │   └── template
    ├── tomlplusplus/
    │   └── template
    └── xdg-desktop-portal-hyprland/
        └── template

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/build-latest.yml
================================================
name: "Build Latest Packages"

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    name: Build Hyprland
    runs-on: ubuntu-latest

    container:
      image: ghcr.io/void-linux/void-glibc-full:20250227R1
      options: --platform linux/amd64 --privileged

    strategy:
      matrix:
        arch: [ x86_64, x86_64-musl, aarch64, aarch64-musl ]
    env:
      REPO_OWNER: "${{ github.repository_owner }}"
      REPO_NAME: "${{ github.event.repository.name }}"
      TARGET_ARCH: "${{ matrix.arch }}"
      SCRIPT_DIR: "/work/${{ github.event.repository.name }}/scripts"
      BUILD_ARGS: ""

    steps:
      - name: Prepare container and create a non-root user
        run: |
          mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
          sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
          xbps-install -Syu xbps && xbps-install -yu && xbps-install -y sudo bash grep curl git kotlin-bin
          useradd -G xbuilder -M builder

      - name: Clone hyprland-void repo
        run: |
          mkdir /work && cd /work
          git clone https://github.com/$REPO_OWNER/$REPO_NAME.git
          $SCRIPT_DIR/set-environment

      - name: Automatically generate a build order
        run: $SCRIPT_DIR/generate-build-order.kts

      - name: Prepare void-packages
        run: $SCRIPT_DIR/clone-and-prepare

      - name: Build packages
        run: $SCRIPT_DIR/build-packages

      - name: Copy relevant packages for indexing and signing
        run: |
          export PEM_PAT=${{ secrets.PEM_PAT }}
          export XBPS_PASSPHRASE=${{ secrets.PRIVATE_PEM_PASSPHRASE }}
          export XBPS_TARGET_ARCH=${{ env.TARGET_ARCH }}
          sudo -Eu builder $SCRIPT_DIR/index-packages
          sudo -Eu builder $SCRIPT_DIR/sign-packages

      - name: Push new packages to binary repository
        run: |
          export ACCESS_GIT=${{ secrets.ACCESS_GIT }}
          sudo -Eu builder $SCRIPT_DIR/push-repository


================================================
FILE: .github/workflows/check.yml
================================================
name: Check build

on:
  pull_request:
    paths:
      - 'srcpkgs/**'
  push:
    branches:
      - 'ci-**'
    paths:
      - 'srcpkgs/**'

  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  # Lint changed templates.
  xlint:
    name: Lint templates
    runs-on: ubuntu-latest

    container:
      image: 'ghcr.io/void-linux/void-buildroot-musl:20231230R1'
      env:
        PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
        LICENSE_LIST: common/travis/license.lst

    steps:
      - name: Prepare container
        run: |
          # switch to repo-ci mirror
          mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
          sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
          # Sync and upgrade once, assume error comes from xbps update
          xbps-install -Syu || xbps-install -yu xbps
          # Upgrade again (in case there was a xbps update)
          xbps-install -yu
          # install tools needed for lints
          xbps-install -y grep curl git
      - name: Clone and checkout
        uses: classabbyamp/treeless-checkout-action@v1
      - name: Create hostrepo and prepare masterdir
        run: |
         ln -s "$(pwd)" /hostrepo &&
         common/travis/set_mirror.sh &&
         common/travis/prepare.sh &&
         common/travis/fetch-xtools.sh
      - run: common/travis/changed_templates.sh
      - name: Run lints
        run: |
          rv=0
          common/travis/xlint.sh || rv=1
          common/travis/verify-update-check.sh || rv=1
          exit $rv

  # Build changed packages.
  build:
    name: Build packages
    runs-on: ubuntu-latest
    if: "!contains(github.event.pull_request.title, '[ci skip]') && !contains(github.event.pull_request.body, '[ci skip]')"

    container:
      image: ghcr.io/void-linux/void-buildroot-${{ matrix.config.libc }}:20231230R1
      options: --platform ${{ matrix.config.platform }}
      env:
        PATH: '/usr/libexec/chroot-git:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
        ARCH: '${{ matrix.config.arch }}'
        BOOTSTRAP: '${{ matrix.config.host }}'
        TEST: '${{ matrix.config.test }}'
        HOSTREPO: /hostrepo

    strategy:
      fail-fast: false
      matrix:
        config:
          - { arch: x86_64,       host: x86_64,      libc: glibc, platform: linux/amd64, test: 1 }
          - { arch: i686,         host: i686,        libc: glibc, platform: linux/386,   test: 1 }
          - { arch: aarch64,      host: x86_64,      libc: glibc, platform: linux/amd64, test: 0 }
          - { arch: armv7l,       host: x86_64,      libc: glibc, platform: linux/amd64, test: 0 }
          - { arch: x86_64-musl,  host: x86_64-musl, libc: musl,  platform: linux/amd64, test: 1 }
          - { arch: armv6l-musl,  host: x86_64-musl, libc: musl,  platform: linux/amd64, test: 0 }
          - { arch: aarch64-musl, host: x86_64-musl, libc: musl,  platform: linux/amd64, test: 0 }

    steps:
      - name: Prepare container
        run: |
          # switch to repo-ci mirror
          mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
          sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
          # Sync and upgrade once, assume error comes from xbps update
          xbps-install -Syu || xbps-install -yu xbps
          # Upgrade again (in case there was a xbps update)
          xbps-install -yu

      - name: Clone and checkout
        uses: classabbyamp/treeless-checkout-action@v1
      - name: Create hostrepo and prepare masterdir
        run: |
         ln -s "$(pwd)" /hostrepo &&
         common/travis/set_mirror.sh &&
         common/travis/prepare.sh &&
         common/travis/fetch-xtools.sh
      - run: common/travis/changed_templates.sh

      - name: Build and check packages
        run: |
          (
          here="$(pwd)"
          cd /
          "$here/common/travis/build.sh" "$BOOTSTRAP" "$ARCH" "$TEST"
          )

      - name: Show files
        run: |
          (
          here="$(pwd)"
          cd /
          "$here/common/travis/show_files.sh" "$BOOTSTRAP" "$ARCH"
          )

      - name: Compare to previous
        run: |
          (
          here="$(pwd)"
          cd /
          "$here/common/travis/xpkgdiff.sh" "$BOOTSTRAP" "$ARCH"
          )

      - name: Check file conflicts
        if: matrix.config.arch == 'x86_64' # the arch indexed in xlocate
        run: |
          if [ -s /tmp/templates ]; then
              xlocate -S &&
              common/scripts/lint-conflicts $HOME/hostdir/binpkgs
          fi

      - name: Verify repository state
        run: |
          (
          here="$(pwd)"
          cd /
          "$here/common/travis/check-install.sh" "$BOOTSTRAP" "$ARCH"
          )

================================================
FILE: COPYING
================================================
 Copyright (c) 2008-2020 Juan Romero Pardines and contributors
 Copyright (c) 2017-2023 The Void Linux team and contributors
 All rights reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: README.md
================================================
## Hyprland for Void Linux

This repository contains template files and binaries for building or installing [Hyprland](https://github.com/hyprwm/Hyprland) on Void Linux.

### Installation

The easiest way to install Hyprland on Void Linux is using the [binary repository](https://github.com/Makrennel/hyprland-void/tree/repository-x86_64-glibc) which is built automatically using [GitHub Actions](https://github.com/Makrennel/hyprland-void/blob/master/.github/workflows/build-latest.yml) whenever a new commit is pushed to this repository.

You can add this repository to xbps's repositories by creating a file such as `/etc/xbps.d/hyprland-void.conf` with the following text:

```
repository=https://raw.githubusercontent.com/Makrennel/hyprland-void/repository-x86_64-glibc
```

This can be done with the following command:
```
echo repository=https://raw.githubusercontent.com/Makrennel/hyprland-void/repository-x86_64-glibc | sudo tee /etc/xbps.d/hyprland-void.conf
```
Then you need to refresh your repositories and accept the repository's fingerprint:
```
sudo xbps-install -S
```

You should now be able search through all hypr related packages provided by this repository, and install packages as usual:

```
xbps-query -Rs hypr
sudo xbps-install -S hyprland xdg-desktop-portal-hyprland
```

Currently this repository provides binary packages for:

- x86_64-glibc
- x86_64-musl
- aarch64-glibc
- aarch64-musl

Change the end of the url in `/etc/xbps.d/hyprland-void.conf` as appropriate with the above options.

### Running

In order to run Hyprland you will need to install some additional packages which will depend on your setup, for example a [session and seat manager](https://docs.voidlinux.org/config/session-management.html) and [graphics drivers](https://docs.voidlinux.org/config/graphical-session/graphics-drivers/index.html). You may also have to add the user to the `_seatd` group. If you use an Nvidia GPU refer to the [Hyprland Wiki](https://wiki.hyprland.org/Nvidia), but keep in mind that Hyprland does not officially support Nvidia.

### Extra
There are packages in this repository which may be of interest for:

- hypridle
- hyprlock
- hyprpaper
- xdg-desktop-portal-hyprland

### Common Remarks
#### "Why is this so out of date"?

Upstream Void Linux packages are sometimes chronically out of date and Hyprland tends to follow the bleeding edge. I will not risk breaking someone's system by providing, for example, a core package like `GCC 14` ahead of whenever upstream is ready to do so.

#### "Will this be merged into upstream void-packages eventually?"

Unless Void Linux's maintainers decide to change their opinion on the matter, the answer is no. Void Linux is hostile towards Hyprland, its developers, and community, so if this is a problem you should probably consider using a different distribution.

### Manually Building

You may want to build these templates manually, for example if you have a specific configuration requirement that needs to be set at build time. Void-packages may sometimes have specific packages which are out of date from time to time that need to be updated beforehand in order to update Hyprland, which is why this repository is not simply forked off it. We need to copy the modifications from this repository on top of a fresh void-packages clone in order to build manually.

1) You may want to start by making a directory where you can keep the relevant repositories

```
mkdir ~/repos
cd ~/repos
```

2) Set up a [void-packages](https://github.com/void-linux/void-packages) clone for building templates files

```
git clone https://github.com/void-linux/void-packages
cd void-packages
./xbps-src binary-bootstrap
cd ..
```

3) Clone this repository:

```
git clone https://github.com/Makrennel/hyprland-void.git
cd hyprland-void
```

4) Append shared libraries to the end of your void-packages shared libraries

```
cat common/shlibs >> ../void-packages/common/shlibs
```

5) Copy srcpkgs to your void-packages srcpkgs directory

```
cp -r --remove-destination srcpkgs/* ../void-packages/srcpkgs
```

6) Build and install packages

```
cd ../void-packages
./xbps-src pkg hyprland
sudo xbps-install -R hostdir/binpkgs hyprland
```

### Contributing and Forking

Any contributions are greatly appreciated, but please bear in mind that the build actions run on `x86_64` with `glibc` and you should make sure that it cross-compiles with xbps-src's `-a` flag for both `musl` and `aarch64` - for example with `./xbps-src -a aarch64-musl pkg new-hypr-package`.

Please also try not to superfluously change things when pull requesting with this repository, and use your own name and email in the maintainer section of new templates: do not contribute on behalf of someone else if they are not involved with the pull request. Where possible, commit changes separately (rather than in huge lump commits) and describe the changes so contributions can be easily understood and cherry picked as needed.

If you would like to create your own fork of this repository and use the build action for your own packages, you must either create a private repository called `hyprland-void-private-pem` where you will store your signing keys and fetch them using a GitHub Private Access Token stored in your repository's secrets called `PEM_PAT`, or store the signing key directly in your secrets and modify [`scripts/sign-packages`](https://github.com/Makrennel/hyprland-void/blob/master/scripts/sign-packages) and the [build action](https://github.com/Makrennel/hyprland-void/blob/master/.github/workflows/build-latest.yml) appropriately. You cannot install packages from remote repositories without signing them, and *DO NOT* put the private signing key in your public repository.  You will also need to create a GitHub Personal Access Token so that the action can delete, create, and push the branches where the finished packages and repodata is stored.

For information on signing your repository, see the [Void Linux documentation](https://docs.voidlinux.org/xbps/repositories/signing.html) and `xbps-rindex`'s [man page](https://man.voidlinux.org/xbps-rindex.1).


================================================
FILE: common/shlibs
================================================
libaquamarine.so.7 aquamarine-0.8.0_2
libhyprcursor.so.0 hyprcursor-0.1.12_1
libhyprlang.so.2 hyprlang-0.6.3_1
libhyprgraphics.so.0 hyprgraphics-0.1.3_2
libhyprutils.so.6 hyprutils-0.7.1_1
libsdbus-c++.so.2 sdbus-cpp-2.1.0_1
libspng.so.0 libspng-0.7.4_1
libtomlplusplus.so.3 tomlplusplus-3.4.0_1


================================================
FILE: scripts/build-packages
================================================
#!/usr/bin/env sh

BUILD="sudo -Eu builder /work/void-packages/xbps-src $BUILD_ARGS -j$(nproc) -s -H /work/hostdir pkg"

COMMAND="
  while IFS= read -r package; do
    echo \"::group::Building \$package...\"
    echo \"$BUILD \$package\"
    $BUILD \$package
    echo \"::endgroup::\"
  done < /work/build-order
"

echo "Running command: $COMMAND"
sh -c "$COMMAND"


================================================
FILE: scripts/clone-and-prepare
================================================
#!/usr/bin/env sh

COMMAND="
  cd /work
  git clone --depth 1 https://github.com/void-linux/void-packages.git

  cd /work/$REPO_NAME
  cat common/shlibs >> /work/void-packages/common/shlibs
  cp -r srcpkgs/* /work/void-packages/srcpkgs

  chown -R builder:builder /work

  cd /work/void-packages
  sudo -Eu builder common/travis/set_mirror.sh &&
  sudo -Eu builder common/travis/prepare.sh &&
  common/travis/fetch-xtools.sh
"

echo "Running command: $COMMAND"
sh -c "$COMMAND"



================================================
FILE: scripts/generate-build-order.kts
================================================
#!/usr/bin/env kotlin
/**
 * I couldn't be bothered to figure out how to write this in POSIX or Bash
 * So I just wrote it in an actually decent language
 */

import java.io.File
import java.nio.file.LinkOption
import kotlin.io.path.Path
import kotlin.io.path.forEachDirectoryEntry
import kotlin.io.path.isDirectory
import kotlin.io.path.name

val repoName = System.getenv("REPO_NAME") ?: "hyprland-void"
val packages: MutableMap<String, HashSet<String>> = HashMap()

// Get non-symlink directories in srcpkgs
Path("/work/$repoName/srcpkgs").forEachDirectoryEntry {
	if(it.isDirectory(LinkOption.NOFOLLOW_LINKS)) packages.put(it.name, HashSet())
}

// Populate package dependency lists
for(pkg in packages.keys) {
	val required = ArrayList<String>()
	var toNextLine = false

	// For each line check if it contains the keyword "depends" or is following from one which does
	Path("/work/$repoName/srcpkgs/$pkg/template").toFile().forEachLine {
		// If the previous line contained "depends" and an opening quote mark, but not a closing one
		if(toNextLine) {
			var line = it
			// If this line contains a closing quote mark
			if(it.contains('"')) {
				toNextLine = false
				line = it.substringBefore('"')
			}
			// Split line at any whitespace and add to the list
			line.split("\\s+".toRegex()).forEach(required::add)
		}

		// If line contains "depends" as a keyword and an opening quote mark
		if(it.contains("depends") && it.contains('"')) {
			var depends = it.substringAfter('"')
			if(!depends.contains('"')) toNextLine = true
			else depends = depends.substringBefore('"')
			depends.split("\\s+".toRegex()).forEach(required::add)
		}
	}

	// Add dependency to this package's list if the dependency is also present in srcpkgs
	required.forEach {
		if(packages.containsKey(it)) packages.get(pkg)!!.add(it)
	}
}

// Turn packages into an array so we can create a sorted array with indices
val temp = packages.keys.toTypedArray()
var order = arrayOfNulls<String>(temp.size)

fun Array<String?>.insert(position: Int, element: String): Array<String?> {
	return sliceArray(0 until position) + element + sliceArray(position until size)
}

for(i in temp.indices) {
	// Find reverse dependencies
	var last = false;
	for(j in order.indices) {
		// If array is empty, insert first element
		if(order[j].isNullOrBlank()) {
			order[j] = temp[i]
			break
		}

		// If the package has no dependencies, insert immediately
		if(packages.get(temp[i])!!.isEmpty()) {
			order = order.insert(0, temp[i])
			break
		}

		// If package at order[j] depends on package at temp[i], the package at temp[i] must be built first
		if(packages.get(order[j])!!.contains(temp[i])) {
			order = order.insert(j, temp[i])
			break
		}
	}
}


println("Build Order:")
for(i in order.indices) {
	if(order[i] == null) continue

	println("${i + 1}: ${order[i]} - ${packages.get(order[i])}")
	File("/work/build-order").appendText("${order[i]}\n")
}

================================================
FILE: scripts/index-packages
================================================
#!/usr/bin/env sh

# Sometimes xbps-src builds a bunch of other junk I don't want to be liable for distributing

COMMAND="
  mkdir /work/packages
  
  cp /work/hostdir/binpkgs/aquamarine*.xbps /work/packages
  cp /work/hostdir/binpkgs/glaze*.xbps /work/packages
  cp /work/hostdir/binpkgs/hypr*.xbps /work/packages
  cp /work/hostdir/binpkgs/libspng*.xbps /work/packages
  cp /work/hostdir/binpkgs/sdbus-cpp*.xbps /work/packages
  cp /work/hostdir/binpkgs/tomlplusplus*.xbps /work/packages
  cp /work/hostdir/binpkgs/xdg-desktop-portal-hyprland*.xbps /work/packages

  cd /work/packages
  xbps-rindex -a *
"
echo "Running command: $COMMAND"
sh -c "$COMMAND"



================================================
FILE: scripts/push-repository
================================================
#!/usr/bin/env sh

# We'll blow the size of the repository up very quickly if we do not delete old iterations of the repository

COMMAND="
  cd /work/$REPO_NAME

  # Config
  git config user.name \"github-actions[bot]\"
  git config user.email \"github-actions[bot]@users.noreply.github.com\"

  # Delete old binary repository, create new one
  git push https://$REPO_OWNER:$ACCESS_GIT@github.com/$REPO_OWNER/$REPO_NAME.git -d repository-$RESULT_NAME
  git switch --orphan repository-$RESULT_NAME

  # Populate and push new binary repository
  cp /work/packages/* ./
  git add .
  git commit -m \"Upload latest packages to repository\"
  git push -f https://$REPO_OWNER:$ACCESS_GIT@github.com/$REPO_OWNER/$REPO_NAME.git repository-$RESULT_NAME
"

echo "Running command: $COMMAND"
sh -c "$COMMAND"



================================================
FILE: scripts/set-environment
================================================
#!/usr/bin/env sh

COMMAND="
  [ \"${TARGET_ARCH##*-musl}\" ] \
    && echo \"RESULT_NAME=$TARGET_ARCH-glibc\" >> \"$GITHUB_ENV\" \
    || echo \"RESULT_NAME=$TARGET_ARCH\" >> \"$GITHUB_ENV\"

  [ \"$TARGET_ARCH\" != \"x86_64\" ] \
    && echo \"BUILD_ARGS=$BUILD_ARGS -a $TARGET_ARCH\" >> \"$GITHUB_ENV\" \
    || true
"

echo "Running command: $COMMAND"
sh -c "$COMMAND"



================================================
FILE: scripts/sign-packages
================================================
#!/usr/bin/env sh

# We need to sign the packages with our private key so that they will be accepted by xbps remotely
# See: https://docs.voidlinux.org/xbps/repositories/signing.html

COMMAND="
  # Retrieve the signing key from the separate private repository
  cd /work
  curl \
    -H 'Authorization: token $PEM_PAT' \
    -H 'Accept: application/vnd.github.v3.raw' \
    -O -L https://api.github.com/repos/$REPO_OWNER/hyprland-void-private-pem/contents/private.pem

  # Sign packages
  xbps-rindex --privkey /work/private.pem --sign --signedby \"$REPO_NAME-github-action\" /work/packages
  xbps-rindex --privkey /work/private.pem --sign-pkg /work/packages/*.xbps
"

echo "Running command: $COMMAND"
sh -c "$COMMAND"



================================================
FILE: scripts/version-checker
================================================
#!/usr/bin/env bash

template_dir="../srcpkgs"

log() {
	local RED='\033[0;31m'
	local GREEN='\033[0;32m'
	local YELLOW='\033[0;33m'
	local BLUE='\033[0;34m'
	local NC='\033[0m'

	case "$1" in
	success)
		echo -e "${GREEN}$2${NC}"
		;;
	info)
		echo -e "${BLUE}$2${NC}"
		;;
	warning)
		echo -e "${YELLOW}$2${NC}"
		;;
	error)
		echo -e "${RED}$2${NC}"
		;;
	*)
		echo "$2"
		;;
	esac
}

fetch_version() {
	repo=$1
	# latest_tag=$(curl -s "https://api.github.com/repos/hyprwm/$repo/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")')
	latest_tag=$(curl -s "https://github.com/hyprwm/$repo/releases" | grep -Po 'href="[^"]*/releases/tag/\K[^"]+' | head -n 1)

	echo $latest_tag
}

main() {
	command -v curl >/dev/null || {
		log error "Curl not found, please install. Exiting..." >&2

		exit 1
	}

	for package_dir in "$template_dir"/aquamarine/ "$template_dir"/hypr*/ "$template_dir"/xdg-desktop-portal-hyprland/; do
		pkgname=$(basename "$package_dir")

		if [[ "$pkgname" == "hyprland-devel" ]]; then
			continue
		fi

		template_file="${package_dir}template"

		if [[ ! -f "$template_file" ]]; then
			echo "Template file not found for $pkgname"

			continue
		fi

		current_version="v$(grep -Po '^version=\K[0-9.]+(?=$)' "$template_file")"

		latest_version=$(fetch_version "$pkgname")

		echo "$pkgname ===> $current_version"

		if [[ -z "$latest_version" ]]; then
			log error "$pkgname ===> Failed to fetch the latest version from GitHub\n"

			continue
		elif [[ "$current_version" == "$latest_version" ]]; then
			log success "${GREEN}$pkgname is up-to-date (Version: $current_version)\n"
		else
			log info "$pkgname: $current_version, but latest version is $latest_version\n"
		fi
	done
}

main



================================================
FILE: srcpkgs/aquamarine/template
================================================
# Template file for 'aquamarine'
pkgname=aquamarine
version=0.8.0
revision=2
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  hyprwayland-scanner
  pkgconf
"
makedepends="
  hwids
  hyprutils
  hyprwayland-scanner
  libdisplay-info-devel
  libinput-devel
  libseat-devel
  MesaLib-devel
  pixman-devel
  wayland-devel
  wayland-protocols
"
short_desc="Aquamarine is a very light linux rendering backend library"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="LGPL-3.0-only"
homepage="https://hyprland.org/hyprlang/index.html"
changelog="https://github.com/hyprwm/aquamarine/releases"
distfiles="https://github.com/hyprwm/aquamarine/archive/refs/tags/v${version}.tar.gz"
checksum=1c3570de268fff008c6dd76472d783710b7f62c545f76091580c9edd13ad23d5

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/glaze/template
================================================
# Template file for 'glaze'
pkgname=glaze
version=4.4.3
revision=1
build_style=cmake
configure_args+=" -DBUILD_TESTING:BOOL=OFF"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -Dglaze_ENABLE_FUZZING:BOOL=OFF"
hostmakedepends="
  cmake
  git
  pkgconf
"
short_desc="Extremely fast, in memory, JSON and interface library for modern C++"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="MIT"
homepage="https://github.com/stephenberry/glaze"
distfiles="https://github.com/stephenberry/glaze/archive/refs/tags/v${version}.tar.gz"
checksum=d0dd03f156f95860bf9c2957da0704ee0f7651e21089ff34e3d26fa0190e8684

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprcursor/template
================================================
# Template file for 'hyprcursor'
pkgname=hyprcursor
version=0.1.12
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cairo-devel
  pkgconf
"
makedepends="
  hyprlang
  librsvg-devel
  libzip-devel
  tomlplusplus
"
short_desc="Hyprland cursor format, library and utilities"
maintainer="zenobit <zenobit@disroot.org>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprcursor"
distfiles="https://github.com/hyprwm/hyprcursor/archive/refs/tags/v${version}.tar.gz"
checksum=3200a7a31e28884b9d046f8ec7b0aa67ede9ce0ab0d20193c2b61ee522d6b1f2

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprgraphics/template
================================================
# Template file for 'hyprgraphics'
pkgname=hyprgraphics
version=0.1.3
revision=2
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  cairo-devel
  file-devel
  hyprutils
  libjpeg-turbo-devel
  libjxl-devel
  libspng
  libwebp-devel
  pixman-devel
"
short_desc="hyprland graphics resources and utilities"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprgraphics"
distfiles="https://github.com/hyprwm/hyprgraphics/archive/refs/tags/v${version}.tar.gz"
checksum=0e11457135a9e7160cf147d361fae3c5dc40035a4ebd894c5d409baa896f43cf

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/hypridle/template
================================================
# Template file for 'hypridle'
pkgname=hypridle
version=0.1.6
revision=2
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DNO_SYSTEMD:BOOL=true"
hostmakedepends="
  hyprwayland-scanner
  pkgconf
  wayland-devel
  wayland-protocols
"
makedepends="
  elogind-devel
  hyprland-protocols
  hyprlang
  hyprwayland-scanner
  sdbus-cpp
  wayland-devel
  wayland-protocols
"
short_desc="Hyprland's idle daemon"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hypridle"
changelog="https://github.com/hyprwm/${pkgname}/releases"
distfiles="https://github.com/hyprwm/hypridle/archive/refs/tags/v${version}.tar.gz"
checksum=ea4faf92e7ef303a538551e2b0ea67a557b2d711574993a5a3fea3b27667dc63

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprland/patches/musl-build-fix.patch
================================================
diff --git a/HyprlandSocket.cpp.e b/HyprlandSocket.cpp
index 4d86192..50b3558 100644
--- a/hyprpm/src/core/HyprlandSocket.cpp
+++ b/hyprpm/src/core/HyprlandSocket.cpp
@@ -5,6 +5,7 @@
 #include <print>
 #include <sys/un.h>
 #include <unistd.h>
+#include <cstring>
 
 static int getUID() {
     const auto UID   = getuid();


================================================
FILE: srcpkgs/hyprland/template
================================================
# Template file for 'hyprland'
pkgname=hyprland
version=0.49.0
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
configure_args+=" -DNO_SYSTEMD:BOOL=true"
othermakedepends="
  cmake
  cpio
  gcc
  glslang
  hyprwayland-scanner
  jq
  make
  meson
  ninja
  pkgconf
  wayland-devel
"
hostmakedepends=$othermakedepends
makedepends="
  aquamarine
  cairo-devel
  glaze
  hwids
  hyprcursor
  hyprgraphics
  hyprlang
  hyprutils
  libdisplay-info-devel
  libdrm-devel
  libgbm-devel
  libglvnd-devel
  libinput-devel
  libliftoff-devel
  libseat-devel
  libxcb-devel
  libXcursor-devel
  libxkbcommon-devel
  pango-devel
  re2-devel
  tomlplusplus
  wayland-devel
  wayland-protocols
  xcb-util-errors-devel
  xcb-util-renderutil-devel
  xcb-util-wm-devel
  xorg-server-xwayland
"
short_desc="Dynamic tiling Wayland compositor that doesn't sacrifice on its looks"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://hyprland.org/"
changelog="https://github.com/hyprwm/Hyprland/releases"
distfiles="https://github.com/hyprwm/Hyprland/releases/download/v${version}/source-v${version}.tar.gz"
checksum="fd96fb043cfeda09a1ab9a5eb69fee55562475c0c6a41f79dad2bcc652dc5730"

if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
  configure_args+=" -DCMAKE_CXX_FLAGS=\"-lexecinfo\""
  makedepends+=" libexecinfo-devel"
  depends+=" libexecinfo"
fi

post_install() {
  # license
  vlicense LICENSE

  # headers
  vmkdir usr/include/hyprland
  vmkdir usr/include/hyprland/protocols
  vmkdir usr/share/pkgconfig

  cmake --build ./build --config Release --target generate-protocol-headers

  find src -type f \( -name '*.hpp' -o -name '*.h' -o -name '*.inc' \) -print0 | cpio --quiet -0dump ${DESTDIR}/usr/include/hyprland
  install -Dm0644 protocols/*.h* ${DESTDIR}/usr/include/hyprland/protocols
  vinstall build/hyprland.pc 644 usr/share/pkgconfig
}

hyprland-devel_package() {
  depends="${sourcepkg}>=${version}_${revision} ${othermakedepends} ${makedepends}"
  short_desc="Dynamic tiling Wayland compositor - development files"
  pkg_install() {
    vmove usr/include
    vmove usr/share/pkgconfig
  }
}



================================================
FILE: srcpkgs/hyprland-protocols/template
================================================
# Template file for 'hyprland-protocols'
pkgname=hyprland-protocols
version=0.6.4
revision=1
build_style=meson
hostmakedepends="
  wayland-devel
"
makedepends="
  wayland-devel
"
short_desc="Wayland protocol extensions for Hyprland"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprland-protocols"
distfiles="${homepage}/archive/refs/tags/v${version}.tar.gz"
checksum=0d4f99abc21b04fc126dd754e306bb84cd334131d542ff2e0c172190c6570384

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprland-qt-support/template
================================================
# Template file for 'hyprland-qt-support'
pkgname=hyprland-qt-support
version=0.1.0
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
configure_args+=" -DINSTALL_QML_PREFIX=/lib/qt6/qml"
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  hyprlang
"
qtmakedepends="
  qt6-base-devel
  qt6-declarative-devel
  qt6-tools-devel
  qt6-wayland-devel
"
hostmakedepends+=" ${qtmakedepends}"
makedepends+=" ${qtmakedepends}"
short_desc="QML style provider for Hypr* QT apps"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprland-qt-support"
distfiles="https://github.com/hyprwm/hyprland-qt-support/archive/refs/tags/v${version}.tar.gz"
checksum=cac1f980bd088b890097f3f999cfdf03e73ee94c53f3c92d0b3bc23baa9e7b2c

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/hyprland-qtutils/template
================================================
# Template file for 'hyprland-qtutils'
pkgname=hyprland-qtutils
version=0.1.4
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  hyprutils
  hyprland-qt-support
"
qtmakedepends="
  qt6-base-devel
  qt6-base-private-devel
  qt6-declarative-private-devel
  qt6-declarative-devel
  qt6-tools-devel
  qt6-wayland-devel
  qt6-wayland-private-devel
"
hostmakedepends+=" ${qtmakedepends}"
makedepends+=" ${qtmakedepends}"
short_desc="Qt/QML utility apps for Hyprland"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprland-qtutils"
distfiles="https://github.com/hyprwm/hyprland-qtutils/archive/refs/tags/v${version}.tar.gz"
checksum="56a83f4625feeed86bbc5d744b91d2074330c5aa41adf6e32c023f06f9fb9d34"

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/hyprlang/template
================================================
# Template file for 'hyprlang'
pkgname=hyprlang
version=0.6.3
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  hyprutils
"
short_desc="Official implementation library for the hypr config language"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="LGPL-3.0-only"
homepage="https://hyprland.org/hyprlang/index.html"
changelog="https://github.com/hyprwm/hyprlang/releases"
distfiles="https://github.com/hyprwm/hyprlang/archive/refs/tags/v${version}.tar.gz"
checksum=f5effe017edc7a0036c20c7ecbea4edc2bfdacbc0f791b283bd21ec202384251


================================================
FILE: srcpkgs/hyprlock/template
================================================
# Template file for 'hyprlock'
pkgname=hyprlock
version=0.8.2
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
hostmakedepends="
  hyprwayland-scanner
  pkgconf
  wayland-devel
  wayland-protocols
"
makedepends="
  cairo-devel
  elogind-devel
  file-devel
  hyprgraphics
  hyprlang
  hyprutils
  hyprwayland-scanner
  libdrm-devel
  libjpeg-turbo-devel
  libwebp-devel
  libxkbcommon-devel
  MesaLib-devel
  pam-devel
  pango-devel
  sdbus-cpp
  wayland-devel
  wayland-protocols
"
short_desc="Hyprland's GPU-accelerated screen locking utility"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprlock"
changelog="https://github.com/hyprwm/${pkgname}/releases"
distfiles="https://github.com/hyprwm/${pkgname}/archive/refs/tags/v${version}.tar.gz"
checksum="14c47e71bdac9213909b11cdda16377dab12e27179d939df5ef2a0083a21e1e8"

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprpaper/template
================================================
# Template file for 'hyprpaper'
pkgname=hyprpaper
version=0.7.5
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  pkgconf
  wayland-devel
  hyprutils
  hyprwayland-scanner
"
makedepends="
  cairo-devel
  file-devel
  libjpeg-turbo-devel
  libwebp-devel
  hyprgraphics
  hyprland-protocols
  hyprlang
  hyprwayland-scanner
  pango-devel
  wayland-devel
  wayland-protocols
  wlroots-devel
"
short_desc="Fast wallpaper utility for wlroots compositors with IPC controls"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprpaper"
distfiles="${homepage}/archive/refs/tags/v${version}.tar.gz"
checksum="93efc089c7051e6727ac5eac402ebd254199e93ac3efd6fe7dd37a52ddc1cc33"

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprpolkitagent/template
================================================
# Template file for 'hyprpolkitagent'
pkgname=hyprpolkitagent
version=0.1.2
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  hyprland-qt-support
  hyprlang
  hyprutils
"
qtmakedepends="
  polkit-qt6-devel
  qt6-base-devel
  qt6-declarative-devel
  qt6-tools-devel
  qt6-wayland-devel
"
hostmakedepends+=" ${qtmakedepends}"
makedepends+=" ${qtmakedepends}"
short_desc="Simple polkit authentication agent for Hyprland, written in QT/QML"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprpolkitagent"
distfiles="https://github.com/hyprwm/hyprpolkitagent/archive/refs/tags/v${version}.tar.gz"
checksum=2aa642a55aab000ac340c9209063a3068fda5b419ad83116f3c87532f06b0a79

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/hyprsunset/template
================================================
# Template file for 'hyprsunset'
pkgname=hyprsunset
version=0.2.0
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  git
  hyprwayland-scanner
  pkgconf
"
makedepends="
  hyprwayland-scanner
  hyprland-protocols
  hyprutils
  wayland-devel
  wayland-protocols
"
short_desc="An application to enable a blue-light filter on Hyprland"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprsunset"
distfiles="https://github.com/hyprwm/hyprsunset/archive/refs/tags/v${version}.tar.gz"
checksum=178d2b6c0042e005770eb31492fb7583c9fd25e37351a29f44bff56e87a52ad3

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/hyprsysteminfo/template
================================================
# Template file for 'hyprsysteminfo'
pkgname=hyprsysteminfo
version=0.1.3
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  hyprland-qt-support
  hyprutils
"
qtmakedepends="
  qt6-base-devel
  qt6-base-private-devel
  qt6-declarative-devel
  qt6-declarative-private-devel
  qt6-tools-devel
  qt6-wayland-devel
  qt6-wayland-private-devel
"
hostmakedepends+=" ${qtmakedepends}"
makedepends+=" ${qtmakedepends}"
short_desc="A tiny qt6/qml application to display information about the running system"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprsysteminfo"
distfiles="https://github.com/hyprwm/hyprsysteminfo/archive/refs/tags/v${version}.tar.gz"
checksum=359298d926e0a9ec670ff5b5100c1d08392a85126ea1d8f89f723d634fd218ce

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/hyprutils/template
================================================
# Template file for 'hyprutils'
pkgname=hyprutils
version=0.7.1
revision=1
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_BUILD_TYPE:STRING=Release"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
hostmakedepends="
  pkgconf
"
makedepends="
  pixman-devel
"
short_desc="A small C++ library used across the Hypr* ecosystem"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprutils"
distfiles="https://github.com/hyprwm/hyprutils/archive/refs/tags/v${version}.tar.gz"
checksum=bcbf05252b392b8837eec9ba9855ff6ddab571f9795917c7139215ae4b2cf1bc

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/hyprwayland-scanner/template
================================================
# Template file for 'hyprwayland-scanner'
pkgname=hyprwayland-scanner
version=0.4.4
revision=1
build_style=cmake
hostmakedepends="
  pkgconf
"
makedepends="
  pugixml-devel
"
short_desc="Hyprland's implementation of wayland-scanner in/for C++"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/hyprwayland-scanner"
distfiles="${homepage}/archive/refs/tags/v${version}.tar.gz"
checksum=ac73f626019f8d819ff79a5fca06ce4768ce8a3bded6f48c404445f3afaa25ac

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/libspng/template
================================================
# Template file for 'libspng'
pkgname=libspng
version=0.7.4
revision=1
build_style=meson
hostmakedepends="
  cmake
  pkgconf
"
makedepends="
  zlib-devel
"
short_desc="Simple, modern libpng alternative"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-2-Clause"
homepage="https://libspng.org/"
distfiles="https://github.com/randy408/libspng/archive/refs/tags/v${version}.tar.gz"
checksum="47ec02be6c0a6323044600a9221b049f63e1953faf816903e7383d4dc4234487"

post_install() {
  vlicense LICENSE
}


================================================
FILE: srcpkgs/sdbus-cpp/template
================================================
# Template file for 'sdbus-cpp'
pkgname=sdbus-cpp
version=2.1.0
revision=1
build_style=cmake
hostmakedepends="
  cmake
  meson
  ninja
  pkgconf
  git
  m4
  rsync
  gperf
"
makedepends="
  elogind
  elogind-devel
  libcap-devel
  libelogind
  libmount-devel
"
short_desc="High-level C++ D-Bus library to provide API in modern C++"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="LGPL-2.1-only"
homepage="https://github.com/Kistler-Group/sdbus-cpp"
changelog="https://github.com/Kistler-Group/${pkgname}/releases"
distfiles="https://github.com/Kistler-Group/${pkgname}/archive/refs/tags/v${version}.tar.gz"
checksum=6025e5dc6cddd532ff960d14e68ced5f42a1916b23a73fea6bcb437f06992eaf

post_install() {
  vlicense COPYING
  vlicense COPYING-LGPL-Exception
}


================================================
FILE: srcpkgs/tomlplusplus/template
================================================
# Template file for 'tomlplusplus'
pkgname=tomlplusplus
version=3.4.0
revision=1
build_style=meson
hostmakedepends="
  cmake
  pkgconf
"
short_desc="Header-only TOML config file parser and serializer for C++17"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="MIT"
homepage="https://marzer.github.io/tomlplusplus/"
distfiles="https://github.com/marzer/${pkgname}/archive/refs/tags/v${version}.tar.gz"
checksum=8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155

post_install() {
  vlicense LICENSE
}



================================================
FILE: srcpkgs/xdg-desktop-portal-hyprland/template
================================================
# Template file for 'xdg-desktop-portal-hyprland'
pkgname=xdg-desktop-portal-hyprland
version=1.3.9
revision=2
build_style=cmake
configure_args+=" --no-warn-unused-cli"
configure_args+=" -DCMAKE_INSTALL_PREFIX:PATH=/usr"
configure_args+=" -DCMAKE_INSTALL_LIBEXECDIR:PATH=/usr/libexec"
hostmakedepends="
  cmake
  git
  hyprwayland-scanner
  pkgconf
  qt6-base-devel
  scdoc
  wayland-devel
"
makedepends="
  elogind-devel
  hyprland-protocols
  hyprlang
  hyprutils
  hyprwayland-scanner
  libgbm-devel
  libdrm-devel
  pipewire-devel
  qt6-base-devel
  qt6-wayland-devel
  sdbus-cpp
  wayland-devel
  wayland-protocols
"
depends="
  xdg-desktop-portal
"
short_desc="Backend of xdg-desktop-portal for Hyprland"
maintainer="Makrennel <makrommel@protonmail.ch>"
license="BSD-3-Clause"
homepage="https://github.com/hyprwm/xdg-desktop-portal-hyprland"
distfiles="${homepage}/archive/refs/tags/v${version}.tar.gz"
checksum=3f7d94fd408ed5e3a9b639d3dd8502e2169decc34f285e8552434da5fddf497e

post_install() {
  vlicense LICENSE
}

Download .txt
gitextract_4ym5w6fi/

├── .github/
│   └── workflows/
│       ├── build-latest.yml
│       └── check.yml
├── COPYING
├── README.md
├── common/
│   └── shlibs
├── scripts/
│   ├── build-packages
│   ├── clone-and-prepare
│   ├── generate-build-order.kts
│   ├── index-packages
│   ├── push-repository
│   ├── set-environment
│   ├── sign-packages
│   └── version-checker
└── srcpkgs/
    ├── aquamarine/
    │   └── template
    ├── glaze/
    │   └── template
    ├── hyprcursor/
    │   └── template
    ├── hyprgraphics/
    │   └── template
    ├── hypridle/
    │   └── template
    ├── hyprland/
    │   ├── patches/
    │   │   └── musl-build-fix.patch
    │   └── template
    ├── hyprland-protocols/
    │   └── template
    ├── hyprland-qt-support/
    │   └── template
    ├── hyprland-qtutils/
    │   └── template
    ├── hyprlang/
    │   └── template
    ├── hyprlock/
    │   └── template
    ├── hyprpaper/
    │   └── template
    ├── hyprpolkitagent/
    │   └── template
    ├── hyprsunset/
    │   └── template
    ├── hyprsysteminfo/
    │   └── template
    ├── hyprutils/
    │   └── template
    ├── hyprwayland-scanner/
    │   └── template
    ├── libspng/
    │   └── template
    ├── sdbus-cpp/
    │   └── template
    ├── tomlplusplus/
    │   └── template
    └── xdg-desktop-portal-hyprland/
        └── template
Condensed preview — 35 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (45K chars).
[
  {
    "path": ".github/workflows/build-latest.yml",
    "chars": 2005,
    "preview": "name: \"Build Latest Packages\"\n\non:\n  push:\n    branches:\n      - master\n  workflow_dispatch:\n\njobs:\n  build:\n    name: B"
  },
  {
    "path": ".github/workflows/check.yml",
    "chars": 4889,
    "preview": "name: Check build\n\non:\n  pull_request:\n    paths:\n      - 'srcpkgs/**'\n  push:\n    branches:\n      - 'ci-**'\n    paths:\n"
  },
  {
    "path": "COPYING",
    "chars": 1357,
    "preview": " Copyright (c) 2008-2020 Juan Romero Pardines and contributors\n Copyright (c) 2017-2023 The Void Linux team and contribu"
  },
  {
    "path": "README.md",
    "chars": 6114,
    "preview": "## Hyprland for Void Linux\n\nThis repository contains template files and binaries for building or installing [Hyprland](h"
  },
  {
    "path": "common/shlibs",
    "chars": 296,
    "preview": "libaquamarine.so.7 aquamarine-0.8.0_2\nlibhyprcursor.so.0 hyprcursor-0.1.12_1\nlibhyprlang.so.2 hyprlang-0.6.3_1\nlibhyprgr"
  },
  {
    "path": "scripts/build-packages",
    "chars": 365,
    "preview": "#!/usr/bin/env sh\n\nBUILD=\"sudo -Eu builder /work/void-packages/xbps-src $BUILD_ARGS -j$(nproc) -s -H /work/hostdir pkg\"\n"
  },
  {
    "path": "scripts/clone-and-prepare",
    "chars": 479,
    "preview": "#!/usr/bin/env sh\n\nCOMMAND=\"\n  cd /work\n  git clone --depth 1 https://github.com/void-linux/void-packages.git\n\n  cd /wor"
  },
  {
    "path": "scripts/generate-build-order.kts",
    "chars": 2918,
    "preview": "#!/usr/bin/env kotlin\n/**\n * I couldn't be bothered to figure out how to write this in POSIX or Bash\n * So I just wrote "
  },
  {
    "path": "scripts/index-packages",
    "chars": 659,
    "preview": "#!/usr/bin/env sh\n\n# Sometimes xbps-src builds a bunch of other junk I don't want to be liable for distributing\n\nCOMMAND"
  },
  {
    "path": "scripts/push-repository",
    "chars": 798,
    "preview": "#!/usr/bin/env sh\n\n# We'll blow the size of the repository up very quickly if we do not delete old iterations of the rep"
  },
  {
    "path": "scripts/set-environment",
    "chars": 374,
    "preview": "#!/usr/bin/env sh\n\nCOMMAND=\"\n  [ \\\"${TARGET_ARCH##*-musl}\\\" ] \\\n    && echo \\\"RESULT_NAME=$TARGET_ARCH-glibc\\\" >> \\\"$GIT"
  },
  {
    "path": "scripts/sign-packages",
    "chars": 720,
    "preview": "#!/usr/bin/env sh\n\n# We need to sign the packages with our private key so that they will be accepted by xbps remotely\n# "
  },
  {
    "path": "scripts/version-checker",
    "chars": 1710,
    "preview": "#!/usr/bin/env bash\n\ntemplate_dir=\"../srcpkgs\"\n\nlog() {\n\tlocal RED='\\033[0;31m'\n\tlocal GREEN='\\033[0;32m'\n\tlocal YELLOW="
  },
  {
    "path": "srcpkgs/aquamarine/template",
    "chars": 936,
    "preview": "# Template file for 'aquamarine'\npkgname=aquamarine\nversion=0.8.0\nrevision=2\nbuild_style=cmake\nconfigure_args+=\" --no-wa"
  },
  {
    "path": "srcpkgs/glaze/template",
    "chars": 672,
    "preview": "# Template file for 'glaze'\npkgname=glaze\nversion=4.4.3\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" -DBUILD_TESTING:B"
  },
  {
    "path": "srcpkgs/hyprcursor/template",
    "chars": 731,
    "preview": "# Template file for 'hyprcursor'\npkgname=hyprcursor\nversion=0.1.12\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-w"
  },
  {
    "path": "srcpkgs/hyprgraphics/template",
    "chars": 793,
    "preview": "# Template file for 'hyprgraphics'\npkgname=hyprgraphics\nversion=0.1.3\nrevision=2\nbuild_style=cmake\nconfigure_args+=\" --n"
  },
  {
    "path": "srcpkgs/hypridle/template",
    "chars": 858,
    "preview": "# Template file for 'hypridle'\npkgname=hypridle\nversion=0.1.6\nrevision=2\nbuild_style=cmake\nconfigure_args+=\" --no-warn-u"
  },
  {
    "path": "srcpkgs/hyprland/patches/musl-build-fix.patch",
    "chars": 322,
    "preview": "diff --git a/HyprlandSocket.cpp.e b/HyprlandSocket.cpp\nindex 4d86192..50b3558 100644\n--- a/hyprpm/src/core/HyprlandSocke"
  },
  {
    "path": "srcpkgs/hyprland/template",
    "chars": 2246,
    "preview": "# Template file for 'hyprland'\npkgname=hyprland\nversion=0.49.0\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-warn-"
  },
  {
    "path": "srcpkgs/hyprland-protocols/template",
    "chars": 536,
    "preview": "# Template file for 'hyprland-protocols'\npkgname=hyprland-protocols\nversion=0.6.4\nrevision=1\nbuild_style=meson\nhostmaked"
  },
  {
    "path": "srcpkgs/hyprland-qt-support/template",
    "chars": 930,
    "preview": "# Template file for 'hyprland-qt-support'\npkgname=hyprland-qt-support\nversion=0.1.0\nrevision=1\nbuild_style=cmake\nconfigu"
  },
  {
    "path": "srcpkgs/hyprland-qtutils/template",
    "chars": 971,
    "preview": "# Template file for 'hyprland-qtutils'\npkgname=hyprland-qtutils\nversion=0.1.4\nrevision=1\nbuild_style=cmake\nconfigure_arg"
  },
  {
    "path": "srcpkgs/hyprlang/template",
    "chars": 715,
    "preview": "# Template file for 'hyprlang'\npkgname=hyprlang\nversion=0.6.3\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-warn-u"
  },
  {
    "path": "srcpkgs/hyprlock/template",
    "chars": 996,
    "preview": "# Template file for 'hyprlock'\npkgname=hyprlock\nversion=0.8.2\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-warn-u"
  },
  {
    "path": "srcpkgs/hyprpaper/template",
    "chars": 908,
    "preview": "# Template file for 'hyprpaper'\npkgname=hyprpaper\nversion=0.7.5\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-warn"
  },
  {
    "path": "srcpkgs/hyprpolkitagent/template",
    "chars": 944,
    "preview": "# Template file for 'hyprpolkitagent'\npkgname=hyprpolkitagent\nversion=0.1.2\nrevision=1\nbuild_style=cmake\nconfigure_args+"
  },
  {
    "path": "srcpkgs/hyprsunset/template",
    "chars": 802,
    "preview": "# Template file for 'hyprsunset'\npkgname=hyprsunset\nversion=0.2.0\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-wa"
  },
  {
    "path": "srcpkgs/hyprsysteminfo/template",
    "chars": 1003,
    "preview": "# Template file for 'hyprsysteminfo'\npkgname=hyprsysteminfo\nversion=0.1.3\nrevision=1\nbuild_style=cmake\nconfigure_args+=\""
  },
  {
    "path": "srcpkgs/hyprutils/template",
    "chars": 682,
    "preview": "# Template file for 'hyprutils'\npkgname=hyprutils\nversion=0.7.1\nrevision=1\nbuild_style=cmake\nconfigure_args+=\" --no-warn"
  },
  {
    "path": "srcpkgs/hyprwayland-scanner/template",
    "chars": 548,
    "preview": "# Template file for 'hyprwayland-scanner'\npkgname=hyprwayland-scanner\nversion=0.4.4\nrevision=1\nbuild_style=cmake\nhostmak"
  },
  {
    "path": "srcpkgs/libspng/template",
    "chars": 507,
    "preview": "# Template file for 'libspng'\npkgname=libspng\nversion=0.7.4\nrevision=1\nbuild_style=meson\nhostmakedepends=\"\n  cmake\n  pkg"
  },
  {
    "path": "srcpkgs/sdbus-cpp/template",
    "chars": 764,
    "preview": "# Template file for 'sdbus-cpp'\npkgname=sdbus-cpp\nversion=2.1.0\nrevision=1\nbuild_style=cmake\nhostmakedepends=\"\n  cmake\n "
  },
  {
    "path": "srcpkgs/tomlplusplus/template",
    "chars": 524,
    "preview": "# Template file for 'tomlplusplus'\npkgname=tomlplusplus\nversion=3.4.0\nrevision=1\nbuild_style=meson\nhostmakedepends=\"\n  c"
  },
  {
    "path": "srcpkgs/xdg-desktop-portal-hyprland/template",
    "chars": 1023,
    "preview": "# Template file for 'xdg-desktop-portal-hyprland'\npkgname=xdg-desktop-portal-hyprland\nversion=1.3.9\nrevision=2\nbuild_sty"
  }
]

About this extraction

This page contains the full source code of the Makrennel/hyprland-void GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 35 files (40.1 KB), approximately 13.3k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!