From d869a9e31f185a64c3861646b430b26473887f04 Mon Sep 17 00:00:00 2001 From: Lyle Mantooth Date: Sun, 17 Dec 2023 12:59:31 -0500 Subject: [PATCH] Package alttpo/sni as a flake. --- .gitignore | 1 + flake.lock | 26 ++++++++++++++++++++ flake.nix | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 .gitignore create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d56f3d9 --- /dev/null +++ b/flake.lock @@ -0,0 +1,26 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1702645756, + "narHash": "sha256-qKI6OR3TYJYQB3Q8mAZ+DG4o/BR9ptcv9UnRV2hzljc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "40c3c94c241286dd2243ea34d3aef8a488f9e4d0", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-23.11", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d613104 --- /dev/null +++ b/flake.nix @@ -0,0 +1,71 @@ +{ + 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]; + }; + }; + }); + }; +}