| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This is quite straightforward and very similar to most other Mono games
and even uses XDG directories already.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
On some occasions a captcha isn't needed for login (not sure exactly
when this is the case), so we really should just log in without it
instead of bailing out with an error.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
So far we only checked for the source root by checking only one level of
directories, so for example if the source code is unpacked into
something like "a/b/c" and only "c" contains files, the previous
implementation would set the source root to be "a".
In addition we didn't do a check on the type of the contents, so for
example if the archive contains only *one* file, that *file* itself
would be set as the source root and the chdir to that will fail later.
What we do now is recursively search through directories in order to
find the last directory that does not contain *only* a subdirectory.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We only fetch the data files from GOG here and use the port from
OpenPandora (https://repo.openpandora.org/?page=detail&app=albion_sr)
for the main game executable.
Instead of using the binaries of the static recompiler, this is
completely compiled from source and comes with a few changes in the form
of a few patches:
config.patch:
Hide the mouse cursor and set the default scaled resolution to
1280x960 (the window can still be resized) in the default
albion.cfg.
error-log-stderr.patch:
Whenever an error happens, the game usually creates a file called
"error.log", which contains the actual error message. This patch
makes sure the file isn't created but the error message is printed
to stderr.
scons.patch:
Fixes a few SConstruct/SConscript files to use the builder's
environment, so that it can find executables such as gcc.
sdl2.patch:
SDL 2 has dropped support for the keysym.unicode field at some
point, so use keysym.sym instead. This has the disadvantage that it
doesn't recognize key modifiers, so we might want to switch this to
use the SDL_TEXTINPUT event.
xdg-paths.patch:
We want to use XDG_CONFIG_HOME and XDG_DATA_HOME instead of writing
everything to one directory, so this patch makes sure that the paths
are correctly read depending on whether its an XDG directory or one
of the store paths of the game.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We're in almost the same misery here as with HumbleBundle, because we
can't get stable download URLs with manifests for games that have an
"os" field of either "windows" or "osx".
Unfortunately, this isn't the only hoop we're going to, because similar
to the HumbleBundle fetcher, we need to solve a (re)captcha in order to
login (and I've been annoyed by countless cars, street signs, roads,
busses, store fronts, hills and mountains during development).
I tried looking for a way to get an API key similar to what itch.io is
doing, but the only mechanism in place is a temporary key which needs to
be refreshed using the old key after a while, so it's unsuitable for our
case.
The code currently is very much _not_ DRY, because a lot of it is copied
over and modified from fetchHumbleBundle, especially the captcha solving
application.
It's really a shame to see the same situation that we have for
HumbleBundle in GOG, given that HB is getting less DRM-free games these
days and GOG is DRM-free *only* (which is a very good thing).
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
| |
A lot has changed since the version I had in here and the current
upstream master, so let's get all the new bugs and features :-)
Here is a comparison with all the commits that have happened since then:
https://github.com/NixOS/nixops/compare/d1907cb1a4defa...eb6d25688a35de
Signed-off-by: aszlig <aszlig@nix.build>
|
| |
|
|
|
|
|
|
|
|
|
| |
I've pushed this with a few improvements to upstream <nixpkgs> via
commit NixOS/nixpkgs@1cba74dfc1541673f91b91c3ab50dbdce43c764a.
The original pull request was NixOS/nixpkgs#34506.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
A few attributes weren't re-added to the actual derivation, so for
example whenever we add buildInputs to buildUnity the attribute would be
completely ignored.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New features:
* New Cerebrus map: Back to the Future
Updates:
* RONIN: Slashed players will incur 0.25s of hard stun / push back, and
0.35s of soft stun
* PROTEUS: Scanner Drone won't continue to shock dead players
* PROTEUS: Next Scanner Drone has a 3s cooldown from the time the last
was destroyed (if shot down)
* CRONUS: Drop target movement speed increased from 0.17s to 0.15s per
tile
* CRONUS: Bomb hit time & lingering fire increased from 1s to 1.5s
* AETHER: Ground pound hit window is active for 0.25s instead of 1
frame
* GAME: Arx-515 teleporters are disabled for 1.25s while being used
* GAME: Reduced visibility time after firing from 0.75s to 0.5s
* GAME: Slightly reduced replay recording memory usage
* GAME: Improved presentation of players visible due to Revealer
powerup
* GAME: Players are snapped to the nearest tile when firing
perpendicular to movement
* GFX: Removed FX when revealer ends, which had the potential to reveal
real Epi's position
* GFX: Clarified readability of some boundaries on Aqueduct
* GFX: Powerup parachute drops are slightly transparent until near the
ground
* UI: Hero Profile demos properly show ability cooldown indicators
Fixes:
* EPI: Fixed cluster shots from ghost Epi breaking shields
* CRONUS: Fixed target disappearing on clients after attempting a drop
over a disallowed area
* CRONUS: Better drop target local simulation and feel for remote
clients
* MAPS: Added missing fence posts around holes on Conundrum
* GAME: Slightly increased physics step rate to prevent some
fast-moving collision misses
* GAME: Fixed bumping builder blocks destruction after the reflection
shield is already gone
* GAME: Fixed potential to get shot in your original spot after
teleporting online
* GFX: Fixed projectile collision visuals' positions due to high-speed
physics
* GFX: Fixed projectile collision visuals' positions on network clients
* GFX: Fixed exported GIF speeds due to vsync differences
* UI: Fixed occasional disappearing in-match pause menu
* UI: Fixed Proteus hero profile demo
* UI: Fixed insane speed when changing controller setup types using
analog sticks
* PREFS: custom config file will no longer be reset during updates
(after this release)
* PREFS: custom config file has option to disable fullscreen FX for
strobe-sensitive players
Full upstream change log:
https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
| |
Very similar to other games using Mono, but this has a similar problem
to what Opus Magnum had (see 523dcef1f77251a4cfeb3428a0b13c0ec1d9c342)
but instead of using Cecil for patching I'm using LD_PRELOAD instead
because the number of occasions we need to patch is not only higher but
also there are different constructors in use for System.IO.FileStream,
so patching becomes much much harder.
Signed-off-by: aszlig <aszlig@nix.build>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upstream changelog summarized:
* Switch to DirectSound on Windows.
* Remove iron-on patch link.
* The Hexstabilized Salt puzzle now requires 18 outputs instead of 6.
* Add a new journal issue that is entirely production puzzles.
* Add a hidden option that will hopefully fix some of the sound issues
that were introduced when we rewrote our audio backend.
* Add a new issue to the journal with some "battlefield medicine"
themed puzzles.
* The game's content files are now opened as read-only, which should
hopefully fix some of the antivirus-related crashes some players have
been experiencing.
* Atom spawn/consume effects on glyphs are now cleared when the
simulation is stopped, which should fix a bug causing "ghost atoms" to
linger on the board.
I've made this summary by picking the relevant parts of the upstream
Steam announcement page at:
http://steamcommunity.com/games/558990/announcements
The best part about the changes is that content files are now opened
read-only, so we can finally drop all that patching. This also is the
first time I can say something positive about AV software, so thanks for
bugging Zachtronics into fixing this issue for Nix as well :-)
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
| |
In order to do integer comparisons on the Nix version, we need to
zero-pad the minor version, so that we always have two digits.
Since the change of Nix version 1.12 to 2.0 the minor version no longer
has two digits, so we get 20 instead of 112 and when compared the former
is smaller than the latter but it has to be the opposite.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
We certainly don't want the builder to succeed if we're missing a
dependency, so let's make sure the build is aborted (due to set -e)
whenever that happens.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
Having a function in autoPatchelfHook that's unused inside the setup
hook is a bit of weird, because the actual usage is within buildGame and
thus it should stay there for now.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
| |
This is really not game-specific, so let's put it at the top-level and
also make sure we substitute all the commands we're using there, even
though a few of them are in PATH of stdenv so that it will always work
even when the programs available in stdenv should change someday.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
| |
So far we only matched the file name of the dependency but not its
architecture, so if for example there is one shared object for
i686-linux and another one with the same name but for x86_64-linux,
chances are that the wrong architecture is chosen.
Now we're checking the architecture of the shared object file and only
pick it, if it matches the architecture of the file to patchelf.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
| |
This makes sure that ldd doesn't print warnings like if the file isn't
executable and also makes the status messages a bit more clear.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The semantics of adding env hooks has changed in
NixOS/nixpkgs@7f3ca3e21a22fd3101b40cadb86899542dec2e35 so that it's now
broken up into several hook variables (envBuildBuildHook,
envBuildHostHook, envBuildTargetHook, envHostHostHook, envHostTargetHook
and envTargetTargetHook).
Fortunately commit NixOS/nixpkgs@a036473a0a0c6100fce316e1444fc33ec6674b
adds a helper function (addEnvHooks) to deal this without referencing
those hook variables directly and rather just providing an offset.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We don't want this little helper to leave all kinds of junk on the disk,
so let's enable offTheRecord mode for the default QtWebEngine profile.
This in turn causes all stuff like cache, cookies, local storage and
whatnot to only reside in memory.
For example on my machine I had lots of files like this in
~/.local/share and ~/.cache:
* 014bxyklf1xm99jd5rg8y4q0blmqw6yc-get-captcha
* 18j0knrwrsamsrpwjz741midspxbqmpp-get-captcha
* 4817rvjnj249ifvk7dsvv2p0kxi2jwkg-get-captcha
So if you ran this helper you should probably remove *-get-captcha in
XDG_DATA_HOME (by default ~/.local/share) and XDG_CACHE_HOME (by default
~/.cache).
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @Profpatsch, @Sternenseemann, @layus
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New features:
* New hero: Cronus
* New planet: Cerebrus (Kickstarter Cartographers' designs)
* New Cerebrus map: Temple Garden
* New Cerebrus map: Triple Trouble
* New Cerebrus map: The Four Seasons
* New Cerebrus map: Aqueduct
* New Cerebrus map: Ice Prison
* New Cerebrus map: Cold Storage
* New Cerebrus map: The Conundrum
* Localization: Spanish (Latin American, ES-419)
Updates:
* UI: Added ability to change the game mode in the post-match menu
* UI: Improved map thumbnails (reflects game-lighting)
* UI: Time-based game modes modifier increment changed from 10s to 5s
* UI: Changed UI title font to support more localization glyphs
* GFX: Cluster bombs match their owner's color
Fixes:
* UI: Fixed "FREE" resolution setting in windowed mode always reverting
back to fixed sizes
* UI: Fixed resolution / bluriness when using Alt+Enter to toggle
fullscreen
Full upstream change log:
https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The wine-no-unixfs.patch doesn't apply anymore, so we need to get a
newer version of the patch now from http://achurch.org/patch-pile/,
which is a bit different in that it adds --disable-unixfs as a flag to
configure. We don't have autoreconfHook in nativeBuildInputs, so that
flag will simply be ignored but unixfs will be disabled regardless
because the flag in config.h.in is ENABLE_UNIXFS and it's not defined by
default. The reason why I still added it to configureFlags is to prevent
enabling it by accident if autoreconfHook should be part of the wine
derivation in upstream <nixpkgs>.
In addition to that I've made disabling getuid a bit more clear and with
a comment about why we need to disable it.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
| |
This one is no longer required and the syntax and indent files are
already part of Vim since version 7.4.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upstream URL: http://www.zachtronics.com/opus-magnum/
For this I've ripped apart all of the bundled shared objects including
Mono itself, so we're using Mono from <nixpkgs> instead of the provided
one.
In addition to that I had to patch the intermediate language because the
game really doesn't cope very well when the data files are read-only,
which is the case in the Nix store.
Instead of replacing the CIL, I could have used an LD preloader as well,
but I think this is way less error-prone even though we had to patch a
few internal classes where we couldn't match the name properly.
Compared to this an LD preloader would involve patching several symbols
and also implement some logic to distinguish between files read from the
data directory and files read/written to XDG_DATA_HOME.
The reason why I added $HOME/Desktop to the required sandbox paths is
because the game saves gif images into that directory.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
Though we're already checking the realpath() let's actually make sure
that the path begins with a slash, otherwise we'll run into a segfault
later when we try to access the second byte of path.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
| |
We only handle XDG_DATA_HOME and XDG_CONFIG_HOME, but we've missed
XDG_CACHE_HOME. While the latter is used very rarely as it doesn't
matter a lot if it ends up within a tmpfs anyway. However if the cache
directory gets pretty large we might run out of space.
Not only do we now have proper fallbacks but this also adds tests for
all of the XDG environment variables we're using.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we already have support for mounting plain files, this is done on
a very specific basis, mainly the .Xauthority file.
Whenever we use bind_mount() and the file is a regular file, mounting
that file will fail. So let's actually do a stat on the file and decide
whether we want to do bind_file() or bind_mount().
I've stumbled on this because one of the store paths of the run time
dependency graph was a plain file and thus the sandbox wrapper was
unable to mount it.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
| |
This is not only useful for packaging games, so let's make it available
from the vuizvui scope, so we can use it from other packages as well.
Signed-off-by: aszlig <aszlig@nix.build>
|
| |
|
|
|
|
|
|
|
| |
Apart from using the go compiler, switch from `nix-shell -p`, which only worked
in certain cases, to a `nix-build` with fallback for `man` and default outputs.
Thanks to @muesli for the golang intro.
|
|
|
|
|
|
|
|
|
| |
For replays and custom phrases, Invisigun Heroes writes them to
"$HOME/Invisigun Heroes", so we need to bind-mount that directory to the
chroot as well.
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @Profpatsch
|
|
|
|
|
|
|
|
| |
If the saveDir isn't set the game only gets access to all the saveDirs
from other Unity games, so missing that attribute shouldn't be a deal
breaker.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
This is used for sandboxing and instead of letting all Unity games
access the data of every other Unity game we now restrict it to its own
save directory only.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now distinguish between paths that have to exist and paths that are
fine to skip during bind mounting.
So far we had hard failures whenever a path that needed to be mounted
didn't exist, for example something like $XDG_CONFIG_HOME/unity3d failed
whenever the directory didn't exist.
Apart from that we now have a more clean attribute structure for sandbox
parameters, which are now:
* paths.required: Created prior to bind-mounting
* paths.wanted: Skipped if it doesn't exist
* paths.runtimeVars: Extracted from PATH-like environment variables
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
| |
This originally was in the nixgames repository but I accidentally
omitted the attribute emitting the error message during refactoring.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
| |
We're going to add a test for our buildSandbox function, so we need to
have the buildSandbox function available from outside the package scope
and thus within the resulting attribute set.
Signed-off-by: aszlig <aszlig@nix.build>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We no longer use the legacy SSH store protocol for taalo but the new
ssh-ng protocol, which makes the implementation of taalo-build a LOT
less clunky.
It also didn't make sense to have this as a NixOS module when we after
all just emit a static store path without any stuff depending on
configuration options.
The new implementation basically just wraps nix-build and nix-store -r
along with the right NIX_REMOTE variable.
With Nix 1.2 this can also be done with the new "nix build" command
using the --store option, but unfortunately "nix build" doesn't yet have
the same functionality as nix-build.
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @Profpatsch, @bendlas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's a bit weird to need to write something like this:
nix-build pkgs -A vuizvui.aszlig.vim
We're already within vuizvui, and the filesystem paths are already
structured in a way so that the above is in pkgs/aszlig/vim, so the need
to add the vuizvui attribute to that seems quite pointless and
unnatural.
I have tested this by evaluating a few machines, tests and packages.
Signed-off-by: aszlig <aszlig@nix.build>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New features:
* New powerup: Cluster Shot
* New powerup: Guardian
Updates:
* GAME: Blizzards vary in intensity, with max intensity slighty reduced
* MAPS: Adjusted Zone Control area on The Long Run
* GFX: Updated frozen player visuals
* GFX: More efficient pooling & performance for sprite trails (dash,
jump, etc)
* SELENE: Added a subtle jump trail
* UI: Updated some sprites to reduce buzzing on contrast-sensitive
monitors
* UI: Updated discord URL to the verified official address:
discord.gg/invisigun
* UI: Minor update to Epi's character image
Fixes:
* GAME: Fixed being able to act on an already-existing shot after
picking up Split Shot
* GAME: Fixed resistance & diagonal shot interactions
* GAME: More reliable slow-motion timing for end-of-round moments
* AI: Fixed several path-finding errors for bots
* AI: Fixed bots staying in place momentarily while soft-stunned
* SELENE: Fixed buffered shots still firing when landing on another
player
* RONIN: Slashing a player shouldn't remove their shield
* MAPS: Fixed asymmetrical issue on Snowergrown
Full upstream change log:
https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes a crash when switching between weapons of the same type and also
adds category tags for the Steam workshop. The latter isn't really
relevent for us however.
The full upstream release notes can be found at:
https://playstarbound.com/133-patchnotes/
Tested using the games.starbound VM test.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
| |
I'm currently only using this plugin by copy & pasting the store path
manually to the native messaging host config, so I didn't notice that
the path is wrong and was wrong in the first place.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
| |
Unfortunately the syntax file is a bit incomplete it's the best that
I've found online, so I'll stick with it for the time being.
Thanks to @Profpatsch for bringing ATS to my attention :-)
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Almost all of the issues we so far needed patches for have been
addressed upstream with the exception of backlight probing.
The reason for this is detailled in the following bug:
https://bugs.freedesktop.org/show_bug.cgi?id=96571
In summary, when the I915 driver is built into the kernel, it can't
access the PWM because it's initialized at a later stage.
What we're now doing instead is that we compile i915 as a module and
bake the necessary PWM modules directly into the kernel.
This has the advantage that we no longer need the backlight.patch,
because after all this is already a workaround and having a workaround
that doesn't require us to rebase the patch once a new kernel arrives
seems to be a better solution in my opinion.
With this update we can now revert the reintroduction of kernel 4.12
done in 45bdcd7fc7788316cbad2d7d412e421b230715dc.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
| |
This kernel is only relevant for the T100HA hardware module, so it
doesn't make much sense to build the unpatched kernel.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
| |
It has been removed by NixOS/nixpkgs@964672dde516d1b9a5d2248db33253dc36.
This kernel version is officially EOL but in order to switch to a newer
kernel I need to rebase the patches first.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
| |
We already mount /etc, but it isn't quite enough, because it contains
files symlinked to /etc/static, which in turn is a store path so we need
to mount the closure of that path as well.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
| |
First of all this is to bring down the amount of syscalls we're doing
but it's also useful to avoid errors when we try to mount a path over an
already mounted path.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
| |
This is using buildSandbox with the addition of adding LD_LIBRARY_PATH
to the default runtimePathVars. I've also renamed the attribute to be
called runtimePathVars instead of runtimePathVariables, simply because
it's shorter.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|