{ description = "Super Nintendo Interface"; # Nixpkgs / NixOS version to use. inputs.nixpkgs.url = "nixpkgs/nixos-23.11"; outputs = { self, nixpkgs, }: let # to work with older version of flakes lastModifiedDate = self.lastModifiedDate or self.lastModified or "19700101"; version = "0.0.95"; # System types to support. supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'. forAllSystems = nixpkgs.lib.genAttrs supportedSystems; # Nixpkgs instantiated for supported system types. nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;}); in { # Provide some binary packages for selected system types. packages = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in rec { default = sni; sni = pkgs.buildGoModule { pname = "sni"; inherit version; src = pkgs.fetchFromGitHub { owner = "alttpo"; repo = "sni"; rev = "v${version}"; hash = "sha256-lk4RIeObwdyTJzPcDYhSxkT9VG8Y6FWnsHQcjGJdfwI="; }; buildInputs = with pkgs; [ gtk3.dev libayatana-appindicator.dev ]; nativeBuildInputs = [ pkgs.pkg-config ]; subPackages = "./cmd/sni"; # This hash locks the dependencies of this package. It is # necessary because of how Go requires network access to resolve # VCS. See https://www.tweag.io/blog/2021-03-04-gomod2nix/ for # details. Normally one can build with a fake sha256 and rely on native Go # mechanisms to tell you what the hash should be or determine what # it should be "out-of-band" with other tooling (eg. gomod2nix). # To begin with it is recommended to set this, but one must # remeber to bump this hash when your dependencies change. vendorHash = "sha256-hvIfGu7SQ+OV5iPYlvuOIpE9OqMLRCuUpl5YCpsmBWI="; meta = with pkgs.lib; { description = "An interface that allows multiple concurrent applications to access various kinds of Super Nintendo devices connected to the computer"; homepage = "https://github.com/alttpo/sni"; license = licenses.mit; maintainers = with maintainers; [island_usurper]; }; }; }); }; }