| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On NixOS the LD_LIBRARY_PATH looks similar to this (depending on the
configuration):
/run/opengl-driver/lib:/run/opengl-driver-32/lib
However, we don't have these paths available within the sandbox, because
so far we've only used exportReferencesGraph to gather the runtime
dependencies after the build has succeeded.
This obviously doesn't take into account runtime dependencies from the
system itself.
We are now taking care of this by using the Nix store library to query
the requisities of all the paths that are contained inside path-like
variables (multiple paths delimited by colons) and mount them during
sandbox setup.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
| |
This leaves sandbox.c with only the main() function and nothing else, so
that whenever we have a lot of binaries to generate, the compilation
time should be much lower now.
The change doesn't change anything in functionality.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
| |
We're now using a makefile for building the sandbox and use pkg-config
to pass in the flags we need for compiling against lib(nix)store.
Right now the sandbox itself doesn't do anything different because we're
not actually using the (incomplete) code for querying the store.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
| |
These paths are things such as /etc and /run but also the .Xauthority
file, which contains the cookie to connect to the X server.
What is still missing is access to the DRI libraries, which is a bit
trickier, because we need to add those store paths at runtime and we
need to also mount all of the dependencies.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I've already pointed out in the previous commit that using /tmp for the
root directory isn't a very good idea, mainly because we can't access
sockets from /tmp (eg. the X server sockets).
So what we're now doing is using the store path that contains the
sandbox wrappers, because that very path won't be mounted into the
sandbox anyway, so we get a free directory just as an entry point.
This has the main advantage that we don't need to create any temporary
directories which we later need to clean up nor do we need to assume
that some paths might exist in the system. For example if we'd use /usr
we still have /usr/bin/env on NixOS, but if that's going to go away in
the future or we are on a distro that doesn't have it at all, the
sandbox setup will fail.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
So far creating the sandbox has been a setup hook, however it's a bit
ugly how we gathered the needed paths for the chroot file system by
recursively searching for store paths.
While I'd like to have the sandbox being built within the main
derivation, it really isn't very practical when the build takes longer
than 10 minutes.
With this implementation however the sandbox builds really fast and we
can also modify the sandbox without needing to rebuild a particular
game.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is basically to make sure various games can't write to whatever
they want in the file system, so it's not a complete sandboxing
solution.
Currently there's a drawback in that we can't easily determine the
runtime dependencies while building a particular game, so we need to
recursively dig through all referenced store paths to look them up.
A better solution for this would be to gather the build time reference
graph prior to building so that we can limit searching for these
references within only the actual build outputs instead of churning
through all inputs.
In addition to that, we currently mount the namespaced root file system
on top of /tmp, which makes the real /tmp unavailable to us. While in
theory this shouldn't be a problem, it actually turns out it is indeed a
problem if the application wants to connect to the X server socket,
which is at something like /tmp/.X11-unix/X0 for display :0.
Apart from these drawbacks we have a working solution for simple
applications (not games, because they usually require X), which now get
its own chroot with only the paths accessible that are strictly
necessary.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New features:
* NET: Join & invite your Steam friends through the in-game lobby menu
or Steam friends list
* GAME: Experimental fallback for unsupported controllers & generic USB
gamepads
* GAME: Added an achievement for completing the training
* UI: Your Steam nickname will show at the top left of the title screen
* UI: New lobby chat message: "I'm going to spectate this match."
* PREFS: Set your own data export path in the "config.json" file in the
game directory
Updates:
* GAME: The shield is only lost when dealt actual damage (not via
stuns, Yeti breath, etc)
* GAME: Lower chance of character repetition when choosing random
heroes
* GAME: More obvious shocked/soft-stun effect and audio
* GAME: Bubble Suit removed
* NET: Online play requires the latest version if there's an update
available
* AETHER: Aether is immobile for 0.3s after a ground pound
* AETHER: Aether's spam cooldown increased from 0.5s to 0.7s
* AETHER: Aether's pound has a circular radius of 2 units from his
center
* AETHER: Pound hard stuns for 1.25s
* AETHER: Pound pushback force is uniform
* CARMEN: Destroyed block rubble remains for 3s instead of 0.5s
* PROTEUS: Tagged players are slowed more (multiplier changed from
0.65x to 0.45x)
* PROTEUS: The Scanner Drone can't be self-destroyed while
pulse-revealing players
* IRIS: Spam allowed reduced from 3 to 2
* EPI: Epi has an ability cooldown of 2s if the ghost is killed (no
self-imposed cooldown)
* UI: "Join Public Match" is now "Quick Match" with an icon update
* UI: Searching for a public match in "Any" region is faster
* UI: More fun title screen news
Fixes
* GAME: Fixed projectiles having no velocity if split while being
reflected
* GAME: Fixed controller lockup in lobby when switching from previously
chosen player slots
* GAME: Fixed perma-visibility after teleporting while revealed
* GAME: Fixed disappearing revealer if it's pursuing a teleporting
player
* GAME: Fixed possibility that a Beast Tamer pit beast could spawn
outside the map
* AETHER: Aether no longer gets stunned if walking into a player that
he pounded
* EPI: Fixed real Epi teleporting to ghost Epi if inputs are triggered
twice in a frame
* UI: Fixed some lobby UI initialization before an online match is
created
* UI: Fixed edge cases that could cause a client to be stuck "waiting
for host" in the lobby
* UI: Fixed pause menu "Return to Lobby" button for Challenge Mode
* UI: Fixed color & bloom values in field guide
Full upstream change log:
http://www.sombr.com/pub/SIG/tools/ReleaseNotes.php
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
| |
Most older games don't cope very well with PulseAudio, so let's add ALSA
so that a fallback is available. This is also very useful if
withPulseAudio is set to false, because this would actually mean "no
audio at all".
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both of these games weren't working at all. Megabyte Punch was
completely broken and the expression wasn't even finished and Lovers In
A Dangerous Spacetime wasn't up to date (unfortunately we can't pin on a
specific version).
Megabyte Punch now also uses callPackage_i686, because it only comes
with a 32 bit binary.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
| |
So far we only had all the functions within build-support for
builtins.currentSystem, but a few games we have within Vuizvui are still
i686-linux.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
| |
The login URL for HumbleBundle has changed from /login to /processlogin,
so let's fix it quickly via sed.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Issue: saik0/humblebundle-python#16
Cc: @saik0
|
|
|
|
|
|
|
|
|
|
|
| |
A lot of games come as a Zip archive, so let's add it to
nativeBuildInputs by default so we no longer need to deal with that for
every single game.
This also removes that line from Invisigun Heroes, so the package now is
pretty much minimal and very clean :-)
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
| |
A lot of games (especially Unity games) come as a tarbomb, so in order
to avoid having those files all over the place we now create an
additional directory before unpack and set the sourceRoot to that if
it's a tarbomb and if that's not the case set it to the single file
within that directory.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
| |
Now we no longer need to invoke patchelf by ourselves and all of the
dependencies are patched automatically.
I've added gtk2-x11, gdk_pixbuf and glib to buildUnity as well, because
after inspecting other Unity games they seem to require the same
libraries as well.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
| |
This allows us to add libraries to the RPATH despite being required by
the respective game. By default there is only PulseAudio at the moment.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The main functionality for this function is to gather missing
dependencies in ELF executables and shared libraries and using patchelf
to set the right RPATH.
All of the dependencies are searched based on what we have in one of the
buildInputs variables, so all we need to do is list them in there.
One thing that's still left to solve is adding libraries to the RPATH
which are only required at runtime. An example for this would be the
pulseaudio library.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This automatically creates a desktop entry based on the given fullName
and the standard path for the icon (Resources/UnityPlayer.png).
Well, at least I hope that the icon path is standard, but we'll see once
we use buildUnity for more games.
Tested using Plasma 5 for Invisigun Heroes.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
|
|
|
|
|
|
|
| |
The executable of Unity games at the moment is unable to find its own
path if it can't do a stat() on argv[0]. So wrapping the program helps
here for now.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|