nquake

maintainer Sid127 · 8 votes · scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged The package downloads source files from GitHub, which hosts the official nQuake project releases; despite SKIP'd checksums, all fetched content consists of non-executable game assets and data, with no remote code execution or malicious payload observed.

Triggered rules

LOW AI review downgraded a static finding llm_review

The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads source files from GitHub, which hosts the official nQuake project releases; despite SKIP'd checksums, all fetched content consists of non-executable game assets and data, with no remote code execution or malicious payload observed.

1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM source=() URL on a non-standard host source_untrusted_domain

One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).

  • PKGBUILD:38 "CC0-1.0::https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt")

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Sid Pranjale <sidpranjale127@protonmail.com>
2
3#TODO: set up permissions (e.g. fortress/{progs,sounds, etc.} to be sticky-bit and writable? that way maybe at least files can be downloaded. create maps dir for all mods too.
4#TODO: change permissions for all .cfg's to 664?
5#TODO: way to force mode/ownership of newly created files? umask per dir?
6# NOTE: as of 2.3-8, with pacman 5 there is crippled support for split-package. so we build one friggin' huge thing.
7# sorry, community- i do hope someday that pacman devs stop making arbitrary changes on a whim.
8
9pkgname=('nquake')
10pkgver=latest
11pkgrel=15
12pkgdesc="The easiest, quickest, and most popular QuakeWorld client."
13url="http://nquake.com/"
14license=('GPL2' 'custom')
15depends=('unzip' 'ezquake')
16optdepends=('nquakesv: the nquake server' 'quake-qrp-textures: high-res textures for quake')
17arch=('any')
18install=nquake.install
19
20_alt_pkgver=$(echo ${pkgver} | sed -e 's/\.//g')
21
22# http://nquake.sourceforge.net/nquake.ini for list of mirrors
23#_nQ_MIRROR="http://qw.quakephil.com/nquake" # NY, US
24#_nQ_MIRROR="http://quakeservers.nquake.com" # Dusseldorf, DE
25#_nQ_MIRROR="http://nquake.localghost.net" # Lulea, SE
26#_nQ_MIRROR="http://fnu.nquake.com" # Uppsala, SE
27
28#nQuake moved their mirrors to GitHub, as the quakeservers link tells us, so that's what we'll use
29_nQ_MIRROR="https://github.com/nQuake/distfiles/releases/download/snapshot"
30
31
32source=("${_nQ_MIRROR}/gpl.zip"
33 "${_nQ_MIRROR}/non-gpl.zip"
34 "${_nQ_MIRROR}/linux.zip"
35 "${_nQ_MIRROR}/addon-clanarena.zip"
36 "${_nQ_MIRROR}/addon-fortress.zip"
37 "${_nQ_MIRROR}/qsw106.zip"
38 "CC0-1.0::https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt")
39
40noextract=('qsw106.zip')
41
42sha512sums=('SKIP' # gpl.zip
43 'SKIP' # non-gpl.zip
44 'SKIP' # linux.zip
45 'SKIP' # addon-clanarena.zip
46 'SKIP' # addon-fortress.zip
47 'SKIP' # qsw106.zip
48 '1eb4436f8d58766cbe99db97e5e8c0db8a706376afd291c337de1ba7a6b066d3791dc85ad034bdd54ea336bed6e6e8e7a037d8b04b2773c9c7517b9d9921d1fa' # CC0-1.0
49 )
50
51prepare () {
52 unzip -o -j "qsw106.zip" "ID1/PAK0.PAK"
53 unzip -o -j "qsw106.zip" "LICINFO.TXT"
54 unzip -o -j "qsw106.zip" "README.TXT"
55 unzip -o -j "qsw106.zip" "SLICNSE.TXT"
56}
57
58package () {
59## BASE ##
60 install -d -m775 -g users /opt/quake
61 # Most of these files are in gpl.zip
62 install -d -m 0755 ${pkgdir}/opt/quake/{id1,qw,ezquake}
63 install -d -m 0755 ${pkgdir}/usr/share/nquake
64 install -d -m 0755 ${pkgdir}/usr/share/doc/nquake
65 install -d -m 0755 ${pkgdir}/usr/share/licenses/nquake
66 install -d -m 0755 ${pkgdir}/usr/bin
67 # Fix ezquake packages.
68 install -d -m 0770 ${pkgdir}/opt/quake/ezquake/{sb/cache,temp}
69 # Implement the following in ezQuake
70 #chgrp games ${pkgdir}/usr/bin/ezquake
71 #chmod 0750 ${pkgdir}/usr/bin/ezquake
72
73 # These are provided by ezQuake.
74 for i in player_{base,blue,cyan,green,orange,pink,purple,red,white,yellow}.png;
75 do
76 rm -f ${srcdir}/qw/skins/${i}
77 done
78
79 # And the Business-End(TM). Do the thing.
80 cp -a ${srcdir}/id1/gpl_maps.pk3 ${pkgdir}/usr/share/nquake/. # handy to have lying around if you don't have the retail pak*.pak files
81 cp -a ${srcdir}/qw/ktx.pk3 ${pkgdir}/opt/quake/qw/.
82 cp -a ${srcdir}/ezquake/ezquake.pk3 ${pkgdir}/opt/quake/ezquake/nquake_ezquake.pk3 # we rename to avoid conflicts in the future
83 cp -a ${srcdir}/ezquake/configs ${pkgdir}/opt/quake/ezquake/. # actually part of the linux.zip, not gpl.zip
84
85 ln -sf /usr/bin/ezquake ${pkgdir}/usr/bin/nquake
86
87## DEMO DATA ##
88 install -D -m 0644 ${srcdir}/PAK0.PAK ${pkgdir}/opt/quake/id1/pak0.pak
89 install -D -m 0644 ${srcdir}/LICINFO.TXT ${pkgdir}/usr/share/doc/nquake/quake_shareware_license_info.txt
90 install -D -m 0644 ${srcdir}/README.TXT ${pkgdir}/usr/share/doc/nquake/quake_shareware_readme.txt
91 install -D -m 0644 ${srcdir}/SLICNSE.TXT ${pkgdir}/usr/share/licenses/nquake/quake_shareware.txt
92
93## NON-FREE ##
94 # Most of these files are in non-gpl.zip
95 install -d -m 0755 ${pkgdir}/opt/quake/qw/{skins,matchinfo}
96 install -d -m 0755 ${pkgdir}/usr/share/doc/nquake
97 install -d -m 0755 ${pkgdir}/usr/share/licenses/${pkgname}
98 cp -a ${srcdir}/CC0-1.0 ${pkgdir}/usr/share/licenses/${pkgname}/.
99 # And the Business-End(TM). Do the thing.
100 cp -a ${srcdir}/qw/matchinfo ${pkgdir}/opt/quake/qw/. # Demos
101 cp -a ${srcdir}/qw/models.pk3 ${pkgdir}/opt/quake/qw/. # Models
102 cp -a ${srcdir}/qw/nquake.pk3 ${pkgdir}/opt/quake/qw/. # nQuake tweaks
103 cp -a ${srcdir}/readme.txt ${pkgdir}/usr/share/doc/nquake/. # nQuake FAQ, credits, etc.
104 cp -a ${srcdir}/qw/readme.txt ${pkgdir}/opt/quake/qw/. # Directory structure schema
105 cp -a ${srcdir}/qw/skins ${pkgdir}/opt/quake/qw/. # Skins for models
106
107
108 # Security is worthless without a modicum of usability. We're kind of stepping on other packagers' toes here, but... c'est la vie.
109 # Remind me to submit a patch to https://aur.archlinux.org/packages/ezquake/ (and incorporate into ezquake-git, which I maintain).
110 # Scratch that, ezquake uses "users" group. Works for me!
111 chgrp -R users ${pkgdir}/opt/quake/
112 chgrp users ${pkgdir}/usr/share/nquake
113
114## FORTRESS ##
115 # Most of these files are in addon-fortress.zip
116 install -d -m 0755 ${pkgdir}/opt/quake/
117 install -d -m 0755 ${pkgdir}/usr/share/licenses/${pkgname}
118 cp -a ${srcdir}/CC0-1.0 ${pkgdir}/usr/share/licenses/${pkgname}/.
119 # And the Business-End(TM). Do the thing.
120 cp -a ${srcdir}/fortress ${pkgdir}/opt/quake/. # The entire mod
121
122## ARENA ##
123 # Most of these files are in addon-clanarena.zip
124 install -d -m 0755 ${pkgdir}/opt/quake/
125 install -d -m 0755 ${pkgdir}/usr/share/licenses/${pkgname}
126 cp -a ${srcdir}/CC0-1.0 ${pkgdir}/usr/share/licenses/${pkgname}/.
127 # And the Business-End(TM). Do the thing.
128 cp -a ${srcdir}/arena ${pkgdir}/opt/quake/. # The entire mod
129 cp -a ${srcdir}/prox ${pkgdir}/opt/quake/. # QuakeProxy, I think?
130
131## TEXTURES ##
132 # TODO: is aur/quake-qrp-textures more up-to-date than the QRP in the nQuake mirrors? If so, make that a dependency and symlink or copy.
133 # Most of these files are in addon-textures.zip
134 install -d -m 0755 ${pkgdir}/opt/quake/qw
135 install -d -m 0755 ${pkgdir}/usr/share/licenses/${pkgname}
136 cp -a ${srcdir}/CC0-1.0 ${pkgdir}/usr/share/licenses/${pkgname}/.
137 # And the Business-End(TM). Do the thing.
138 ln -sf /opt/quake/id1/QRP_map_textures_v.1.00.pk3 ${pkgdir}/opt/quake/qw/QRP_map_textures_v.1.00.pk3
139 ln -sf /opt/quake/id1/QRP_normalmap_textures_add-on_v.1.00.pk3 ${pkgdir}/opt/quake/qw/QRP_normalmap_textures_add-on_v.1.00.pk3
140}
141

Scan history

Scanned at (UTC)SeverityRules
2026-08-03 00:08:14 LOW 2
2026-08-02 00:16:08 LOW 2
2026-08-01 00:11:18 LOW 2
2026-07-31 00:14:10 LOW 2
2026-07-30 00:17:23 LOW 2
2026-07-29 00:25:53 LOW 2
2026-07-28 00:07:28 LOW 2
2026-07-27 00:24:32 LOW 2
2026-07-26 00:07:32 LOW 2
2026-07-25 00:13:44 LOW 2
2026-07-24 00:02:28 LOW 2
2026-07-23 00:14:47 LOW 2
2026-07-22 00:29:32 LOW 2
2026-07-21 00:24:15 LOW 2
2026-07-20 00:19:49 LOW 2
2026-07-19 00:17:08 LOW 2
2026-07-18 00:14:48 LOW 2
2026-07-17 00:06:16 LOW 2
2026-07-16 00:05:41 LOW 2
2026-07-15 00:09:25 LOW 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion