From f062c93deb2d1599f684a16d40fa5f975432e601 Mon Sep 17 00:00:00 2001 From: Aaron Bieber Date: Tue, 2 Jan 2024 18:22:48 -0700 Subject: [PATCH] templates: add go-fyne --- templates/go-fyne/.envrc | 1 + templates/go-fyne/.gitignore | 4 ++ templates/go-fyne/LICENSE | 15 ++++++ templates/go-fyne/flake.nix | 93 ++++++++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 templates/go-fyne/.envrc create mode 100644 templates/go-fyne/.gitignore create mode 100644 templates/go-fyne/LICENSE create mode 100644 templates/go-fyne/flake.nix diff --git a/templates/go-fyne/.envrc b/templates/go-fyne/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/templates/go-fyne/.envrc @@ -0,0 +1 @@ +use flake diff --git a/templates/go-fyne/.gitignore b/templates/go-fyne/.gitignore new file mode 100644 index 0000000..0446835 --- /dev/null +++ b/templates/go-fyne/.gitignore @@ -0,0 +1,4 @@ +.direnv +*.bak +result +tags diff --git a/templates/go-fyne/LICENSE b/templates/go-fyne/LICENSE new file mode 100644 index 0000000..a122d8a --- /dev/null +++ b/templates/go-fyne/LICENSE @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2022 Aaron Bieber + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/templates/go-fyne/flake.nix b/templates/go-fyne/flake.nix new file mode 100644 index 0000000..0b7dd85 --- /dev/null +++ b/templates/go-fyne/flake.nix @@ -0,0 +1,93 @@ +{ + description = "thing: stuff and things"; + + inputs.nixpkgs.url = "nixpkgs/nixos-23.11"; + + outputs = + { self + , nixpkgs + , + }: + let + supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); + in + { + overlay = _: prev: { inherit (self.packages.${prev.system}) thing; }; + + packages = forAllSystems (system: + let + pkgs = nixpkgsFor.${system}; + in + { + thing = with pkgs; pkgs.buildGoModule { + pname = "thing"; + version = "v0.0.0"; + src = ./.; + + vendorHash = pkgs.lib.fakeSha256; + + nativeBuildInputs = [ pkg-config copyDesktopItems ]; + buildInputs = [ + glfw + libGL + libGLU + openssh + pkg-config + glibc + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXrandr + xorg.libXxf86vm + xorg.xinput + ]; + + desktopItems = [ + (makeDesktopItem { + name = "traygent"; + exec = pname; + icon = pname; + desktopName = pname; + }) + ]; + }; + }); + + defaultPackage = forAllSystems (system: self.packages.${system}.thing); + devShells = forAllSystems (system: + let + pkgs = nixpkgsFor.${system}; + in + { + default = pkgs.mkShell { + shellHook = '' + PS1='\u@\h:\@; ' + nix flake run github:qbit/xin#flake-warn + echo "Go `${pkgs.go}/bin/go version`" + ''; + buildInputs = with pkgs; [ + git + go_1_21 + gopls + go-tools + glxinfo + + glfw + glibc + pkg-config + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXrandr + xorg.libXxf86vm + xorg.xinput + graphviz + + go-font + ]; + }; + }); + }; +}