{ description = "A flake for running pokemon fangames, often via wine"; inputs.erosanix.url = "github:emmanuelrosa/erosanix"; inputs.erosanix.inputs.nixpkgs.follows = "nixpkgs"; outputs = { self, nixpkgs, erosanix, ... } @ inputs: let systems = nixpkgs.lib.systems.flakeExposed; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f rec { inherit system; inherit (nixpkgs.legacyPackages.${system}) pkgs lib; }); in nixpkgs.lib.recursiveUpdate { lib = forAllSystems ({ pkgs, system, ... }: pkgs.callPackage ./pkgs/fetchers.nix { inherit (self.packages.${system}) badown mediafire-dl; }); packages = forAllSystems ({ pkgs, ... }: { badown = pkgs.callPackage ./pkgs/badown.nix {}; mediafire-dl = pkgs.python3Packages.callPackage ./pkgs/mediafire-dl.nix {}; }); }{ # mkWindowsApp resources: # - https://github.com/emmanuelrosa/erosanix/tree/master/pkgs/mkwindowsapp # - https://github.com/emmanuelrosa/sumatrapdf-nix/blob/master/sumatrapdf.nix packages.x86_64-linux = with nixpkgs.legacyPackages.x86_64-linux; let callPackage = newScope ( { wine = wineWowPackages.full; wineArch = "win64"; } // self.lib.x86_64-linux // erosanix.lib.x86_64-linux ); in rec { pokemon-infinite-fusion = callPackage ./games/infinite-fusion.nix { legacy-version = false; }; pokemon-infinite-fusion-legacy = callPackage ./games/infinite-fusion.nix { legacy-version = true; wine = winePackages.full; wineArch = "win32"; }; pokemon-project-untamed = callPackage ./games/project-untamed.nix { }; pokemon-uranium = callPackage ./games/uranium.nix { wine = winePackages.full; wineArch = "win32"; }; pokemon-clockwork = callPackage ./games/clockwork.nix { wine = winePackages.full; wineArch = "win32"; }; }; # a mkWindowsApp garbage-collect tool apps.x86_64-linux.gc = { type = "app"; program = "${erosanix.packages.x86_64-linux.mkwindowsapp-tools}/bin/mkwindows-tools-gc"; }; }; }