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> = 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() 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(temp.size) fun Array.insert(position: Int, element: String): Array { 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 " 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 " 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 " 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 " 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 " 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 #include #include +#include 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 " 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 }