From b93fc1d7a5bc15bdeb3f6fe1899f46db4dcc4de2 Mon Sep 17 00:00:00 2001 From: Christian Krinitsin Date: Mon, 21 Apr 2025 20:41:13 +0200 Subject: add own shopping-list service, written in go --- modules/shopping-list.nix | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 modules/shopping-list.nix (limited to 'modules') diff --git a/modules/shopping-list.nix b/modules/shopping-list.nix new file mode 100644 index 0000000..8c25316 --- /dev/null +++ b/modules/shopping-list.nix @@ -0,0 +1,63 @@ +{ config, pkgs, lib, ... }: + +let + shopping-list = pkgs.buildGoModule rec { + pname = "shopping-list"; + version = "0.1"; + + src = pkgs.fetchFromGitHub { + owner = "ckrinitsin"; + repo = "shopping-list"; + rev = "1e974f70a6c262d0b5db8b177ebb02b46446bfb0"; + hash = "sha256-QtLOYo7shRoBpExUh4zvkroEjcmfqStRXELQqeAcMs8="; + }; + + vendorHash = "sha256-Q8UzufKbUMnpduciwu9uyHq8WpjgSQWmcJGVdlxs0kk="; + }; + + port = 10000; + base_path = "/shopping/"; +in +{ + environment.systemPackages = [ + shopping-list + ]; + + systemd.services.shopping-list = { + description = "shopping-list"; + wantedBy = [ "multi-user.target" ]; + environment = { + GIN_MODE = "release"; + PORT = "${toString port}"; + BASE_PATH = "${base_path}"; + }; + + serviceConfig = { + ExecStart = "${shopping-list}/bin/shopping-list"; + WorkingDirectory = "/var/lib/shopping-list/"; + Restart = "always"; + User = "shopping-list"; + }; + + }; + + # Create the system user for the service + users.users.shopping-list = { + isSystemUser = true; + group = "shopping-list"; + }; + users.groups.shopping-list = {}; + + services.nginx = { + virtualHosts = { + "krinitsin.com" = { + locations.${base_path} = { + basicAuthFile = "/secret/shopping_auth"; + proxyPass = "http://localhost:${toString port}/"; + recommendedProxySettings = true; + }; + }; + }; + }; +} + -- cgit v1.2.3