diff --git a/flake.nix b/flake.nix index 820c4ee..4fd2c20 100644 --- a/flake.nix +++ b/flake.nix @@ -14,20 +14,55 @@ flake-utils.lib.eachDefaultSystem ( system: let pkgs = nixpkgs.legacyPackages.${system}; + + deploy = pkgs.writeShellScriptBin "deploy" '' + set -e; set -o pipefail; set -x; + + nix build .#docker + image=$((docker load < result) | sed -n '$s/^Loaded image: //p') + docker image tag "$image" harbor.julian-mutter.de/sheetless/sheetless-server:latest + docker push harbor.julian-mutter.de/sheetless/sheetless-server:latest + ''; in { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ go gopls go-tools + + deploy ]; }; - packages.default = pkgs.buildGoModule { - pname = "sheetless-server"; - version = "0.1.0"; - src = ./src; - vendorHash = "sha256-NnHo1wcsX0aCBpay8eEyjmtO7+Qe8gcBPITobP7WtkA="; + packages = rec { + default = sheetless-server; + + sheetless-server = pkgs.buildGoModule { + pname = "sheetless-server"; + version = "0.1.0"; + src = ./src; + vendorHash = "sha256-NnHo1wcsX0aCBpay8eEyjmtO7+Qe8gcBPITobP7WtkA="; + }; + + docker = pkgs.dockerTools.buildImage { + name = "sheetless-server"; + tag = "latest"; + + copyToRoot = with pkgs; [ + dockerTools.usrBinEnv + dockerTools.binSh + dockerTools.caCertificates + + coreutils + sheetless-server + ]; + + config = { + Cmd = ["/bin/sheetless-server"]; + Expose = "8080"; + }; + created = "now"; + }; }; } );