# Building Isle Building from source requires [nix][nix]. (*NOTE* The first time you run some of these builds a lot of things will be built from scratch. If you have not otherwise configured it, nix might be using a tmpfs as its build directory, and the capacity of this tmpfs will probably be exceeded by this build. You can change your build directory to somewhere on-disk by setting the TMPDIR environment variable for `nix-daemon` (see [this github issue][tmpdir-gh].)) [nix]: https://nixos.wiki/wiki/Nix_package_manager [tmpdir-gh]: https://github.com/NixOS/nix/issues/2098#issuecomment-383243838 ## Current System You can build an AppImage for your current system by running the following from the project's root: ```bash nix-build -A build.appImage ``` The resulting binary can be found under `result/bin`. ## Cross-Compile An AppImage can be cross-compiled by passing the `hostSystem` argument: ```bash nix-build --argstr hostSystem "x86_64-linux" -A build.appImage ``` Supported system strings are enumerated in `nix/pkgs.nix`. ## Alternative Build Targets Besides AppImage, Isle supports building alternative package types which are targetted at different specific operating systems. Each of these has its own `build.*` target. * AppImage (all OSs): `nix-build -A build.appImage` * Arch Linux package: `nix-build -A build.archPkg` All targets theoretically support passing in a `hostSystem` argument to cross-compile to a different architecture or OS, but some targets may not make sense with some `hostSystem` values.