Deployment and lifecycle management for Nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix port loading, stable compat, home/workdir

+26 -24
+16 -14
config/runtime.exs
··· 39 39 "database" => %{ 40 40 "type" => "string" 41 41 }, 42 - "pass_file" => %{ 43 - "type" => "string" 44 - }, 45 42 "port" => %{ 46 43 "type" => "integer", 47 44 "minimum" => 80, ··· 114 111 115 112 @credentials |> Enum.map(&load_credential(&1)) 116 113 114 + case credential("SOWER_DATABASE_PASS_FILE") do 115 + {:ok, pass} -> put_config(Sower.Repo, password: pass) 116 + _ -> nil 117 + end 118 + 117 119 # load some non-app namespaced configs 118 120 %URI{scheme: scheme, host: host, port: port} = URI.parse(public_url) 119 121 ··· 133 135 put_config(config_atom, values) 134 136 end 135 137 136 - defp load_config({config_atom, value}) when is_binary(value) do 138 + defp load_config({config_atom, value}) when is_binary(value) or is_number(value) do 137 139 config_atom = String.to_atom(config_atom) 138 140 put_config(config_atom, value) 139 141 end 140 142 141 - defp credential(name) do 142 - credential_dir = System.get_env("CREDENTIALS_DIRECTORY") 143 - credential = System.get_env(name) 144 - 145 - case read_credential(name, credential_dir, credential) do 146 - {:ok, value} -> {:ok, value |> String.trim()} 147 - {:error, err} -> {:error, ~s"unable to load credential #{name}, #{err}"} 148 - end 149 - end 150 - 151 143 defp load_credential(cred) when is_binary(cred) do 152 144 Logger.debug(~s"Loading credential #{cred}") 153 145 ··· 171 163 172 164 {:error, _err} -> 173 165 :error 166 + end 167 + end 168 + 169 + defp credential(name) do 170 + credential_dir = System.get_env("CREDENTIALS_DIRECTORY") 171 + credential = System.get_env(name) 172 + 173 + case read_credential(name, credential_dir, credential) do 174 + {:ok, value} -> {:ok, value |> String.trim()} 175 + {:error, err} -> {:error, ~s"unable to load credential #{name}, #{err}"} 174 176 end 175 177 end 176 178
+1
dev-server.json
··· 10 10 "database": "sower_dev", 11 11 "port": 5432 12 12 }, 13 + "listen_port": 4000, 13 14 "nix_cache": { 14 15 "url": "https://cache.junco.dev/v3", 15 16 "public_key": "v3:aMXMnngJoGU8dpELPyNAhADrOgrn5GiXWP90NiB4aFY="
+4 -4
flake.nix
··· 13 13 }; 14 14 15 15 outputs = 16 - inputs@{ flake-parts, self, ... }: 16 + inputs@{ flake-parts, ... }: 17 17 flake-parts.lib.mkFlake { inherit inputs; } ( 18 - { lib, withSystem, ... }: 19 - rec { 18 + { ... }: 19 + { 20 20 imports = [ 21 21 ./nix/flakemodule.nix 22 22 inputs.process-compose-flake.flakeModule ··· 37 37 ... 38 38 }: 39 39 let 40 - beamPackages = pkgs.beam.packagesWith pkgs.erlang_27; 40 + beamPackages = pkgs.beam_minimal.packages.erlang_27; 41 41 elixir = beamPackages.elixir_1_17; 42 42 43 43 rustTarget =
+4 -5
nix/nixos-server.nix
··· 7 7 let 8 8 cfg = config.services.sower.server; 9 9 jsonType = (pkgs.formats.json { }).type; 10 - 11 - beamPackages = pkgs.beam.packagesWith pkgs.erlang_27; 12 - elixir = beamPackages.elixir_1_17; 13 10 in 14 11 { 15 12 options = { ··· 18 15 19 16 package = lib.mkOption { 20 17 type = lib.types.package; 21 - default = pkgs.callPackage ./server-package.nix { inherit beamPackages elixir; }; 18 + default = pkgs.callPackage ./server-package.nix { }; 22 19 }; 23 20 24 21 secrets = lib.mkOption { 25 22 type = lib.types.attrsOf lib.types.str; 26 23 description = "systemd credentials wrapper"; 27 24 example = { 28 - SOWER_DATABASE_PASS_FILE = "/path/to/pass/file"; 25 + database_password_file = "/path/to/pass/file"; 29 26 }; 30 27 default = { }; 31 28 }; ··· 76 73 DynamicUser = true; 77 74 StateDirectory = "sower"; 78 75 RuntimeDirectory = "sower"; 76 + WorkingDirectory = "%S/sower"; 79 77 80 78 ExecStart = pkgs.writeShellScript "sower-start" '' 81 79 ${lib.optionalString cfg.initSecrets '' ··· 91 89 }; 92 90 93 91 environment = { 92 + HOME = "%S/sower"; 94 93 PHX_SERVER = "true"; 95 94 SOWER_SERVER_CONFIG_FILE = pkgs.writeText "sower-server-config" (builtins.toJSON cfg.settings); 96 95 } // cfg.environment;
+1 -1
nix/server-package.nix
··· 1 1 { 2 2 lib, 3 3 beamPackages, 4 - elixir ? beamPackages.elixir_1_17, 4 + elixir, 5 5 esbuild, 6 6 tailwindcss, 7 7 stdenv,