Deployment and lifecycle management for Nix
0
fork

Configure Feed

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

client: init elixir client

+296 -1
client-elixir/config/prod.exs

This is a binary file and will not be displayed.

+260
client-elixir/deps.nix
··· 1 + { 2 + pkgs, 3 + lib, 4 + beamPackages, 5 + overrides ? (x: y: { }), 6 + }: 7 + 8 + let 9 + buildMix = lib.makeOverridable beamPackages.buildMix; 10 + buildRebar3 = lib.makeOverridable beamPackages.buildRebar3; 11 + 12 + workarounds = { 13 + portCompiler = _unusedArgs: old: { 14 + buildPlugins = [ pkgs.beamPackages.pc ]; 15 + }; 16 + 17 + rustlerPrecompiled = 18 + { 19 + toolchain ? null, 20 + ... 21 + }: 22 + old: 23 + let 24 + extendedPkgs = pkgs.extend fenixOverlay; 25 + fenixOverlay = import "${ 26 + fetchTarball { 27 + url = "https://github.com/nix-community/fenix/archive/056c9393c821a4df356df6ce7f14c722dc8717ec.tar.gz"; 28 + sha256 = "sha256:1cdfh6nj81gjmn689snigidyq7w98gd8hkl5rvhly6xj7vyppmnd"; 29 + } 30 + }/overlay.nix"; 31 + nativeDir = "${old.src}/native/${with builtins; head (attrNames (readDir "${old.src}/native"))}"; 32 + fenix = 33 + if toolchain == null then 34 + extendedPkgs.fenix.stable 35 + else 36 + extendedPkgs.fenix.fromToolchainName toolchain; 37 + native = 38 + (extendedPkgs.makeRustPlatform { 39 + inherit (fenix) cargo rustc; 40 + }).buildRustPackage 41 + { 42 + pname = "${old.packageName}-native"; 43 + version = old.version; 44 + src = nativeDir; 45 + cargoLock = { 46 + lockFile = "${nativeDir}/Cargo.lock"; 47 + }; 48 + nativeBuildInputs = [ 49 + extendedPkgs.cmake 50 + ] ++ extendedPkgs.lib.lists.optional extendedPkgs.stdenv.isDarwin extendedPkgs.darwin.IOKit; 51 + doCheck = false; 52 + }; 53 + 54 + in 55 + { 56 + nativeBuildInputs = [ extendedPkgs.cargo ]; 57 + 58 + env.RUSTLER_PRECOMPILED_FORCE_BUILD_ALL = "true"; 59 + env.RUSTLER_PRECOMPILED_GLOBAL_CACHE_PATH = "unused-but-required"; 60 + 61 + preConfigure = '' 62 + mkdir -p priv/native 63 + for lib in ${native}/lib/* 64 + do 65 + ln -s "$lib" "priv/native/$(basename "$lib")" 66 + done 67 + ''; 68 + 69 + buildPhase = '' 70 + suggestion() { 71 + echo "***********************************************" 72 + echo " deps_nix " 73 + echo 74 + echo " Rust dependency build failed. " 75 + echo 76 + echo " If you saw network errors, you might need " 77 + echo " to disable compilation on the appropriate " 78 + echo " RustlerPrecompiled module in your " 79 + echo " application config. " 80 + echo 81 + echo " We think you need this: " 82 + echo 83 + echo -n " " 84 + grep -Rl 'use RustlerPrecompiled' lib \ 85 + | xargs grep 'defmodule' \ 86 + | sed 's/defmodule \(.*\) do/config :${old.packageName}, \1, skip_compilation?: true/' 87 + echo "***********************************************" 88 + exit 1 89 + } 90 + trap suggestion ERR 91 + ${old.buildPhase} 92 + ''; 93 + }; 94 + }; 95 + 96 + defaultOverrides = ( 97 + final: prev: 98 + 99 + let 100 + apps = { 101 + crc32cer = [ 102 + { 103 + name = "portCompiler"; 104 + } 105 + ]; 106 + explorer = [ 107 + { 108 + name = "rustlerPrecompiled"; 109 + toolchain = { 110 + name = "nightly-2024-11-01"; 111 + sha256 = "sha256-wq7bZ1/IlmmLkSa3GUJgK17dTWcKyf5A+ndS9yRwB88="; 112 + }; 113 + } 114 + ]; 115 + snappyer = [ 116 + { 117 + name = "portCompiler"; 118 + } 119 + ]; 120 + }; 121 + 122 + applyOverrides = 123 + appName: drv: 124 + let 125 + allOverridesForApp = builtins.foldl' ( 126 + acc: workaround: acc // (workarounds.${workaround.name} workaround) drv 127 + ) { } apps.${appName}; 128 + 129 + in 130 + if builtins.hasAttr appName apps then drv.override allOverridesForApp else drv; 131 + 132 + in 133 + builtins.mapAttrs applyOverrides prev 134 + ); 135 + 136 + self = packages // (defaultOverrides self packages) // (overrides self packages); 137 + 138 + packages = 139 + with beamPackages; 140 + with self; 141 + { 142 + 143 + hpax = 144 + let 145 + version = "1.0.3"; 146 + drv = buildMix { 147 + inherit version; 148 + name = "hpax"; 149 + appConfigPath = ./config; 150 + 151 + src = fetchHex { 152 + inherit version; 153 + pkg = "hpax"; 154 + sha256 = "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"; 155 + }; 156 + }; 157 + in 158 + drv; 159 + 160 + mint = 161 + let 162 + version = "1.7.1"; 163 + drv = buildMix { 164 + inherit version; 165 + name = "mint"; 166 + appConfigPath = ./config; 167 + 168 + src = fetchHex { 169 + inherit version; 170 + pkg = "mint"; 171 + sha256 = "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"; 172 + }; 173 + 174 + beamDeps = [ 175 + hpax 176 + ]; 177 + }; 178 + in 179 + drv; 180 + 181 + mint_web_socket = 182 + let 183 + version = "1.0.4"; 184 + drv = buildMix { 185 + inherit version; 186 + name = "mint_web_socket"; 187 + appConfigPath = ./config; 188 + 189 + src = fetchHex { 190 + inherit version; 191 + pkg = "mint_web_socket"; 192 + sha256 = "027d4c5529c45a4ba0ce27a01c0f35f284a5468519c045ca15f43decb360a991"; 193 + }; 194 + 195 + beamDeps = [ 196 + mint 197 + ]; 198 + }; 199 + in 200 + drv; 201 + 202 + nimble_options = 203 + let 204 + version = "1.1.1"; 205 + drv = buildMix { 206 + inherit version; 207 + name = "nimble_options"; 208 + appConfigPath = ./config; 209 + 210 + src = fetchHex { 211 + inherit version; 212 + pkg = "nimble_options"; 213 + sha256 = "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"; 214 + }; 215 + }; 216 + in 217 + drv; 218 + 219 + slipstream = 220 + let 221 + version = "1.2.0"; 222 + drv = buildMix { 223 + inherit version; 224 + name = "slipstream"; 225 + appConfigPath = ./config; 226 + 227 + src = fetchHex { 228 + inherit version; 229 + pkg = "slipstream"; 230 + sha256 = "f2fceddbb3c97331d348586e77c6425f4d150242dfaf392d22e8bd22f93d1f1e"; 231 + }; 232 + 233 + beamDeps = [ 234 + mint_web_socket 235 + nimble_options 236 + telemetry 237 + ]; 238 + }; 239 + in 240 + drv; 241 + 242 + telemetry = 243 + let 244 + version = "1.3.0"; 245 + drv = buildRebar3 { 246 + inherit version; 247 + name = "telemetry"; 248 + 249 + src = fetchHex { 250 + inherit version; 251 + pkg = "telemetry"; 252 + sha256 = "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"; 253 + }; 254 + }; 255 + in 256 + drv; 257 + 258 + }; 259 + in 260 + self
+1
client-elixir/mix.exs
··· 22 22 # Run "mix help deps" to learn about dependencies. 23 23 defp deps do 24 24 [ 25 + {:deps_nix, "~> 2.0", only: [:dev]}, 25 26 {:slipstream, "~> 1.0"}, 26 27 {:igniter, "~> 0.6", only: [:dev, :test]} 27 28 ]
+2 -1
client-elixir/mix.lock
··· 1 1 %{ 2 + "deps_nix": {:hex, :deps_nix, "2.2.0", "648321171b7152ba1a980b5767af553bfa52a86dcfa1f72efa576f18b363b374", [:mix], [{:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: false]}], "hexpm", "cc302e2b3edc51dc658b32552f3bbef276f722f78936ac923b38fa60f899f645"}, 2 3 "finch": {:hex, :finch, "0.19.0", "c644641491ea854fc5c1bbaef36bfc764e3f08e7185e1f084e35e0672241b76d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc5324ce209125d1e2fa0fcd2634601c52a787aff1cd33ee833664a5af4ea2b6"}, 3 4 "glob_ex": {:hex, :glob_ex, "0.1.11", "cb50d3f1ef53f6ca04d6252c7fde09fd7a1cf63387714fe96f340a1349e62c93", [:mix], [], "hexpm", "342729363056e3145e61766b416769984c329e4378f1d558b63e341020525de4"}, 4 5 "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, 5 - "igniter": {:hex, :igniter, "0.6.5", "0b16a37e1aaaefc39777c6250980a314df8ba02a8ae81063d786a7bddb40dbf0", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "21dec3066f372f49f391d00a2067769eb20f7a2213513e022593e4b51bad93e2"}, 6 + "igniter": {:hex, :igniter, "0.6.6", "82d707a2419a95e6ea115949c68a9113dfc0b4802d3d8386aa351feb0ead71ee", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "a85832987fc78f5fdc38f628a62acfd50b4e441166496fea15c7b05218fa84f5"}, 6 7 "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, 7 8 "mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"}, 8 9 "mint": {:hex, :mint, "1.7.1", "113fdb2b2f3b59e47c7955971854641c61f378549d73e829e1768de90fc1abf1", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"},
+4
flake.nix
··· 113 113 inherit version; 114 114 }; 115 115 116 + client = pkgs.callPackage ./nix/packages/client.nix { 117 + inherit beamPackages version; 118 + }; 119 + 116 120 server = pkgs.callPackage ./nix/packages/server.nix { 117 121 inherit 118 122 beamPackages
+1
justfile
··· 36 36 37 37 mix-nix-lock: 38 38 mix deps.nix --output nix/packages/deps.nix 39 + cd client-elixir; mix deps.nix 39 40 40 41 mix-clean: 41 42 mix deps.clean --unused --unlock
+28
nix/packages/client.nix
··· 1 + { 2 + beamPackages, 3 + callPackages, 4 + lib, 5 + version, 6 + }: 7 + 8 + beamPackages.mixRelease { 9 + pname = "sower-client"; 10 + inherit version; 11 + 12 + src = lib.fileset.toSource { 13 + root = ../../client-elixir; 14 + fileset = lib.fileset.unions [ 15 + ../../client-elixir 16 + ]; 17 + }; 18 + 19 + mixNixDeps = callPackages ../../client-elixir/deps.nix { 20 + inherit lib beamPackages; 21 + }; 22 + 23 + # Disable checks for now 24 + doCheck = false; 25 + 26 + meta.mainProgram = "sower_client"; 27 + } 28 +