commit 570c320397a4f052050ebf34c08cff06ea2fcfe9
parent 93157fadf1457a72748b4d128752fae2a2c85761
Author: Silas Brack <silasbrack@gmail.com>
Date: Sun, 13 Oct 2024 16:28:56 +0200
More changes
Diffstat:
5 files changed, 72 insertions(+), 3 deletions(-)
diff --git a/apps/my_app/gleam.toml b/apps/my_app/gleam.toml
@@ -19,6 +19,8 @@ gleam_erlang = ">= 0.27.0 and < 1.0.0"
gleam_http = ">= 3.7.0 and < 4.0.0"
gleam_otp = ">= 0.12.1 and < 1.0.0"
wisp = ">= 1.2.0 and < 2.0.0"
+decode = ">= 0.2.1 and < 1.0.0"
+glenv = ">= 0.4.0 and < 1.0.0"
[dev-dependencies]
gleeunit = ">= 1.0.0 and < 2.0.0"
diff --git a/apps/my_app/manifest.toml b/apps/my_app/manifest.toml
@@ -3,6 +3,7 @@
packages = [
{ name = "birl", version = "1.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "ranger"], otp_app = "birl", source = "hex", outer_checksum = "5C66647D62BCB11FE327E7A6024907C4A17954EF22865FE0940B54A852446D01" },
+ { name = "decode", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "decode", source = "hex", outer_checksum = "4727FC627B803E4F4FF0075B5F93BC022F9293A19B03BF44B5A4C64BF9E8EAE1" },
{ name = "directories", version = "1.1.0", build_tools = ["gleam"], requirements = ["envoy", "gleam_stdlib", "platform", "simplifile"], otp_app = "directories", source = "hex", outer_checksum = "BDA521A4EB9EE3A7894F0DC863797878E91FF5C7826F7084B2E731E208BDB076" },
{ name = "envoy", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "CFAACCCFC47654F7E8B75E614746ED924C65BD08B1DE21101548AC314A8B6A41" },
{ name = "exception", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "exception", source = "hex", outer_checksum = "F5580D584F16A20B7FCDCABF9E9BE9A2C1F6AC4F9176FA6DD0B63E3B20D450AA" },
@@ -14,6 +15,7 @@ packages = [
{ name = "gleam_otp", version = "0.12.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "BFACC1513410DF5A1617169A9CD7EA334973AC71D860A17574BA7B2EADD89A6F" },
{ name = "gleam_stdlib", version = "0.40.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "86606B75A600BBD05E539EB59FABC6E307EEEA7B1E5865AFB6D980A93BCB2181" },
{ name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" },
+ { name = "glenv", version = "0.4.0", build_tools = ["gleam"], requirements = ["decode", "envoy", "gleam_stdlib"], otp_app = "glenv", source = "hex", outer_checksum = "46164B9FFEB08927FD2CEBD96C3AFBE082AD5CC2C6F2FC4A78EFDA9EB61E3510" },
{ name = "glisten", version = "6.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging", "telemetry"], otp_app = "glisten", source = "hex", outer_checksum = "912132751031473CB38F454120124FFC96AF6B0EA33D92C9C90DB16327A2A972" },
{ name = "gramps", version = "2.0.3", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gramps", source = "hex", outer_checksum = "3CCAA6E081225180D95C79679D383BBF51C8D1FDC1B84DA1DA444F628C373793" },
{ name = "hpack_erl", version = "0.3.0", build_tools = ["rebar3"], requirements = [], otp_app = "hpack", source = "hex", outer_checksum = "D6137D7079169D8C485C6962DFE261AF5B9EF60FBC557344511C1E65E3D95FB0" },
@@ -28,10 +30,12 @@ packages = [
]
[requirements]
+decode = { version = ">= 0.2.1 and < 1.0.0" }
gleam_erlang = { version = ">= 0.27.0 and < 1.0.0" }
gleam_http = { version = ">= 3.7.0 and < 4.0.0" }
gleam_otp = { version = ">= 0.12.1 and < 1.0.0" }
gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" }
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
+glenv = { version = ">= 0.4.0 and < 1.0.0" }
mist = { version = ">= 3.0.0 and < 4.0.0" }
wisp = { version = ">= 1.2.0 and < 2.0.0" }
diff --git a/apps/my_app/src/my_app/env.gleam b/apps/my_app/src/my_app/env.gleam
@@ -0,0 +1,21 @@
+import decode
+import glenv
+
+pub type Env {
+ Env(port: Int)
+}
+
+pub fn get_env() {
+ let definitions = [#("PORT", glenv.Int)]
+
+ let decoder =
+ decode.into({
+ use port <- decode.parameter
+ Env(port:)
+ })
+ |> decode.field("PORT", decode.int)
+
+ let assert Ok(env) = glenv.load(decoder, definitions)
+
+ env
+}
diff --git a/flake.lock b/flake.lock
@@ -26,7 +26,7 @@
},
"locked": {
"lastModified": 1,
- "narHash": "sha256-sLjDHjDb7c7oXAQ5c0WaFLjviuX7rKwMccKVcuY1DG0=",
+ "narHash": "sha256-RirvqSHmEsPsi8MubQ2b+zWJoirpUooEcJrKZ9HMX/A=",
"path": "./apps/my_app",
"type": "path"
},
diff --git a/flake.nix b/flake.nix
@@ -3,10 +3,12 @@
# nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
sops-nix.url = "github:Mic92/sops-nix";
+ # my_app.url = "github:silasbrack/test_gleam_app";
my_app.url = "path:./apps/my_app";
};
outputs =
{ nixpkgs, sops-nix, my_app, ... }:
+ # inputs @ { nixpkgs, sops-nix, my_app, ... }:
{
colmena = {
meta = {
@@ -14,6 +16,7 @@
nixpkgs = import nixpkgs {
system = "x86_64-linux";
};
+ # specialArgs.inputs = inputs;
};
defaults =
@@ -42,7 +45,7 @@
};
nixos-s-1vcpu-512mb-10gb-ams3-01 =
- { pkgs, name, ... }:
+ { pkgs, lib, name, ... }:
{
deployment = {
targetHost = "188.166.127.72";
@@ -54,7 +57,6 @@
imports = [
./vpn.nix
sops-nix.nixosModules.sops
- # my_app.defaultPackage
];
# security.pki.certificates = [ (builtins.readFile "/run/secrets/ca_certificate") ];
@@ -90,6 +92,46 @@
# port = 8000;
# };
+ networking.firewall.allowedTCPPorts = [ 8000 8003 8004 ];
+ users.groups.myapp_user = {};
+ users.users.myapp_user = {
+ name = "myapp_user";
+ group = "myapp_user";
+ description = "My app service user";
+ isSystemUser = true;
+ createHome = true;
+ packages = with pkgs; [
+ gleam
+ erlang_27
+ rebar3
+ ];
+ };
+ # systemd.services.pokemon-app = {
+ # wantedBy = [ "multi-user.target" ];
+ # description = "Run Pokemon app.";
+ # after = [ "network.target" ];
+ # serviceConfig = {
+ # Type = "simple";
+ # User = "myapp_user";
+ # ExecStart = "/home/myapp_user/pokemon-app/erlang-shipment/entrypoint.sh run";
+ # };
+ # path = with pkgs; [ gleam erlang_27 rebar3 ];
+ # };
+ systemd.services.my_app = {
+ wantedBy = [ "multi-user.target" ];
+ description = "Run my app.";
+ after = [ "network.target" ];
+ serviceConfig = {
+ Type = "simple";
+ User = "myapp_user";
+ ExecStart = "${my_app.packages."x86_64-linux".default}/bin/my_app";
+ };
+ environment = {
+ PORT="8004";
+ };
+ # path = with pkgs; [ my_app.packages."x86_64-linux".default gleam erlang_27 rebar3 ];
+ };
+
# services.postgres = {
# enable = true;
# };