No description
Find a file
2026-02-09 13:25:46 -08:00
.gitignore gitignore 2026-02-09 13:17:32 -08:00
_2ship2harkinian.nix It's-a me, Mario! 2026-02-09 13:11:24 -08:00
dont-fetch-stb.patch It's-a me, Mario! 2026-02-09 13:11:24 -08:00
flake.lock It's-a me, Mario! 2026-02-09 13:11:24 -08:00
flake.nix It's-a me, Mario! 2026-02-09 13:11:24 -08:00
ghostship.nix It's-a me, Mario! 2026-02-09 13:11:24 -08:00
pass-fetchcontent-to-torch.patch It's-a me, Mario! 2026-02-09 13:11:24 -08:00
README.md Update README 2026-02-09 13:25:46 -08:00
shipwright.nix It's-a me, Mario! 2026-02-09 13:11:24 -08:00

HarbourMasters N64 Ports for Nix

Nix packages for HarbourMasters PC ports of classic N64 games. This repo is basically for Producer Jeff AKA PJ. The rest of this README was written by an LLM.

Available Packages

Package Game Repository
shipwright The Legend of Zelda: Ocarina of Time Shipwright
_2ship2harkinian The Legend of Zelda: Majora's Mask 2ship2harkinian
ghostship Super Mario 64 Ghostship

Usage

Building packages

# Build Ghostship (default)
nix build

# Build specific packages
nix build .#ghostship
nix build .#shipwright
nix build .#_2ship2harkinian

Running

# Run directly from the flake
nix run .#ghostship
nix run .#shipwright
nix run .#_2ship2harkinian

Development shell

nix develop

The dev shell includes all build dependencies plus debugging tools (gdb, valgrind, clang-tools).

ROM Requirements

These ports do not include any copyrighted game assets. You must provide your own legally obtained ROM files.

Supported ROMs

Ghostship (Super Mario 64):

  • US ROM: SHA-1 9bef1128717f958171a4afac3ed78ee2bb4e86ce
  • JP ROM: SHA-1 8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51

Shipwright (Ocarina of Time):

2ship2harkinian (Majora's Mask):

First run

On first launch, each game will prompt you to select your ROM file. The game will extract assets and generate an .o2r archive file that will be used for subsequent launches.

Adding to your NixOS configuration

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    n64-ports.url = "path:/path/to/this/directory";
  };

  outputs = { self, nixpkgs, n64-ports, ... }: {
    nixosConfigurations.your-host = nixpkgs.lib.nixosSystem {
      # ...
      modules = [
        ({ pkgs, ... }: {
          environment.systemPackages = [
            n64-ports.packages.${pkgs.system}.ghostship
            n64-ports.packages.${pkgs.system}.shipwright
            n64-ports.packages.${pkgs.system}._2ship2harkinian
          ];
        })
      ];
    };
  };
}

Platform support

Package Linux x86_64 macOS
shipwright
_2ship2harkinian
ghostship

License

The Nix expressions in this repository are provided as-is. The games themselves have mixed licensing:

  • libultraship, libgfxd, thread-pool: MIT
  • Game-specific code: Various (see individual repositories)
  • Reverse-engineered content: Unfree

You must set config.allowUnfree = true in your Nix configuration to build these packages.