From 34bef046bf1ef3d5f9d0b5581c5f0e8d67184396 Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Mon, 16 Jan 2023 16:23:53 +0000 Subject: [PATCH] create portable service image Signed-off-by: Xe Iaso --- flake.nix | 37 +++++++++++++++------ run/portable-service/infinipaste.service.in | 13 ++++++++ 2 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 run/portable-service/infinipaste.service.in diff --git a/flake.nix b/flake.nix index bc11081..12110f0 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,7 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; - + gomod2nix = { url = "github:tweag/gomod2nix"; inputs.nixpkgs.follows = "nixpkgs"; @@ -28,28 +28,46 @@ in { packages = rec { web = pkgs.buildGoApplication { - pname = "tailpaste-web"; - version = "0.1.0-dev"; + pname = "infinipaste-web"; + version = "0.1.0-${version}"; src = ./.; subPackages = "cmd/web"; modules = ./gomod2nix.toml; }; - tailpaste = pkgs.buildGoApplication { - pname = "tailpaste"; + infinipaste = pkgs.buildGoApplication { + pname = "infinipaste"; inherit (web) src version modules; - subPackages = "cmd/tailpaste"; + subPackages = "cmd/infinipaste"; CGO_ENABLED = "0"; }; docker = pkgs.dockerTools.buildLayeredImage { - name = "tailpaste"; + name = "infinipaste"; tag = "latest"; config.Cmd = [ "${web}/bin/web" ]; contents = [ pkgs.cacert ]; }; + portable-service = let + web-service = pkgs.substituteAll { + name = "infinipaste.service"; + src = ./run/portable-service/infinipaste.service.in; + infinipaste = web; + }; + in pkgs.portableService { + inherit (web) version; + pname = "infinipaste"; + description = "The infinipaste service"; + homepage = "https://github.com/tailscale-dev/infinipaste"; + units = [ web-service ]; + symlinks = [{ + object = "${pkgs.cacert}/etc/ssl"; + symlink = "/etc/ssl"; + }]; + }; + default = docker; }; @@ -64,12 +82,9 @@ go-tools gomod2nix.packages.${system}.default sqlite-interactive - - jo - jq ]; TSNET_HOSTNAME = "paste-devel"; }; - }); + }) // {}; } diff --git a/run/portable-service/infinipaste.service.in b/run/portable-service/infinipaste.service.in new file mode 100644 index 0000000..1f36455 --- /dev/null +++ b/run/portable-service/infinipaste.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=The Infinipaste service +Documentation=https://github.com/tailscale-dev/infinipaste + +[Service] +DynamicUser=yes +StateDirectory=infinipaste +Environment=DATA_DIR=/var/lib/private/infinipaste/data +WorkingDirectory=/var/lib/private/infinipaste +ExecStart=@web@/bin/web + +[Install] +WantedBy=multi-user.target