Skip to content

Repository files navigation

gamemaker-flake

A Nix flake for GameMaker, and for playing/building GameMaker games.

This flake has:

  • Package outputs for different IDE versions
  • A shell in the same environment used for the IDE, so you can run games
  • A more lightweight shell that can run Igor for building from the terminal
  • Support for VM and YYC building, with no setup required!
  • A project builder output (W.I.P! See below)

This flake only targets x86_64-linux for now. If you want to add support for your platform, See Contributing

Please see https://github.com/MichailiK/yoyo-games-runner-nix - without which this flake would have been way worse.

Important

  • All of the outputs depend on OpenSSL 1.0.2 (for some reason, this library is required to run GameMaker games), which has been EOL since 2019 and is considered insecure. I don't think there's a flake equivalent for nixpkgs.config.permittedInsecurePackages list, so the flake doesn't require you to do anything for this library to be built and be used. So I'm leaving this warning here. By using any of the outputs you are installing this insecure package.

  • All old packages pull from https://github.com/skirlez/gamemaker-ubuntu-archive as GameMaker removed all of their old releases a while back. (If you have any .deb files of old releases, please open an issue there!)

  • In the event the .deb for a version is removed from GameMaker's servers, it will be uploaded to the archive and this flake will be updated to pull that version from there.

Outputs

IDE

There are many IDE package outputs under packages.x86_64-linux.

ide-lts-2026 is currently on version v2026.0.0.16.

ide-latest-beta is currently on version v2026.100.0.1149.

The default package output is set to be the same as ide-lts-2026.

Complete list:

LTS:
ide-lts-2026

Betas:
ide-latest-beta
ide-2023-400-0-324

Internal-Normal:
ide-2024-13-1-193
ide-2023-11-1-129
ide-2023-8-2-108
ide-2023-4-0-84

Project builder

The project builder output is available in packages.x86_64-linux.buildGameMakerProject.

It only needs an attribute src. For more information, see the builder folder and it's README.

Devshells

The devshell outputs are under devShells.x86_64-linux.

  • default (Same FHS environment that the IDE builds and runs games in)
  • igor (Minimal FHS environment required to run Igor)

Internal-Normal packages

These builds without Beta branding exist or used to exist on GameMaker's servers. I happened to have more of these downloaded and archived than normal Betas. It should be noted you're putting your project in the exact same risk as using a Beta IDE version, by using these versions. Always use source control!

Using non-Beta runtimes with Beta IDE versions

You may have to do this for older versions.

Go to Preferences > Runtime Feeds, and click the Add button. Fill the left field with whatever you want, and the right field with https://gms.yoyogames.com/Zeus-Runtime.rss. There should now be a new entry under Runtime Feeds for stable runtimes. If you don't see any runtimes inside of it, make sure to press the refresh icon. If you want, you can also access the LTS runtimes by adding an entry with https://gms.yoyogames.com/Zeus-Runtime-LTS.rss, or https://gms.yoyogames.com/Zeus-Runtime-LTS2026.rss

HELP!!!

  • If some of your project files from a Windows project refuse to load, try enabling "Case-Insensitive mode for project files" in Preferences > General Settings
  • If the font for code sucks ass, you can switch it in Preferences > Text Editors > Code Editor > Colours > Default. I believe "Droid Sans Mono" is the default font from the Windows version but I don't remember.
  • If you can't see any of your system fonts and you're on NixOS, try enabling fonts.fontDir.enable.

Technical Details

GameMaker requires the Steam Runtime 1 'scout' SDK to run games. The Steam runtime is basically a collection of libraries and utilities packaged in an FHS file structure (so it has a /bin, /usr, /lib, and so on). During compilation, GameMaker will invoke chroot to change the current root directory to the Steam runtime folder and perform the building process there, so it happens in a predictable environment (as doing that avoids relying on any libraries and utilities from your system, so it should be the same for everyone).

I wanted to avoid having the packages download the entire Steam runtime, so instead, the packages have GameMaker run in its own FHS environment (using pkgs.buildFHSEnv) and they fetch and build just the libraries and utilities that are needed (which is much cleaner).

To avoid the chroot, in the FHS environment /opt/steam-runtime (the default directory GameMaker expects the Steam runtime to be in) is symlinked to /, making the chroot do nothing, and so GameMaker will perform the building in our FHS environment instead.

You can still download and specify the Steam runtime location manually in Preferences > Platform Settings > Ubuntu, and everything will still work. If you want to do that, the latest image (which GameMaker links in their guide) is available here.

TODO

  • Have all packages reuse the same FHS environment. If that's not possible/unideal, there are a few libraries only needed for some versions but not others, and those should only be included when necessary
  • The online manual doesn't work (middle-clicking any function just takes you to the start page). Switching to the offline manual and downloading it when prompted does, though.
  • Audio playback in the IDE has crackles, for any file imported from a non .wav format
  • The IDE does not kill the currently running game process when pressing stop/play/debug
  • Have runtimes be managed by the flake (Should be possible, would be cool. I imagine each IDE package would by default include the runtime package for Ubuntu matching that version, and you could override it with whatever you want)
  • GMRT support (As in, without setup. Maybe its components could be made into Nix derivations if how the GameMaker Package Manager downloads them is understood) (I have no idea if it's possible to run GMRT the intended way with this flake. I tried for a bit but it seemed to not be Fun)

License

This flake is licensed under the AGPLv3 license.

For the purpose of contributing to Nixpkgs, you may use this code however you see fit, without attribution (I'm too lazy to submit a GameMaker package please do it for me).

Contributing

Please contribute

About

A Nix flake for GameMaker, and for playing/building GameMaker games.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages