{ description = "Discord-style invites for your Minecraft server"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils }: utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ] (system: let version = builtins.substring 0 8 self.lastModifiedDate; pkgs = import nixpkgs { inherit system; }; in { packages = rec { whitelistmanager = pkgs.buildGo122Module { pname = "wlm"; version = "0.1.0-${version}"; go = pkgs.go; src = ./.; subPackages = "cmd/wlm"; vendorHash = "sha256-Jww3hNOGpwXSCAvD2THmTlIVf4HL7FHITjjEUbcLRao="; }; docker = pkgs.dockerTools.buildLayeredImage { name = "git.gmem.ca/arch/whitelistmanager"; tag = "latest"; config.Cmd = [ "${whitelistmanager}/bin/wlm" ]; contents = [ pkgs.cacert ]; }; portable-service = let web-service = pkgs.substituteAll { name = "whitelistmanager.service"; src = ./run/portable-service/whitelistmanager.service.in; inherit whitelistmanager; }; in pkgs.portableService { inherit (whitelistmanager) version; pname = "whitelistmanager"; description = "The whitelistmanager service"; homepage = "https://git.gmem.ca/arch/whitelistmanager"; units = [ web-service ]; symlinks = [{ object = "${pkgs.cacert}/etc/ssl"; symlink = "/etc/ssl"; }]; }; default = docker; }; apps.default = utils.lib.mkApp { drv = self.packages.${system}.default; }; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ go gopls gotools go-tools sqlite-interactive ]; }; }) // {}; }