From d4f6f8bf224f8526dc6e79f07e41b3e62262a5b0 Mon Sep 17 00:00:00 2001
From: Mitchell Hanberg <mitch@mitchellhanberg.com>
Date: Wed, 12 Jun 2024 08:11:18 -0400
Subject: [PATCH 1/2] feat: upgrade to 1.17 and OTP 27

Adds a zigpkgs input to use zig from a past rev of nixpkgs, as the 0.11
version in latest does not seem to work.

related: https://github.com/NixOS/nixpkgs/issues/299091

Updates credo to 1.7.7-rc.0 as it supports Elixir 1.17.0
---
 .mise.toml                  |  4 ++--
 .tool-versions              |  4 ++--
 flake.lock                  | 24 +++++++++++++++++++++---
 flake.nix                   | 19 +++++++++++++------
 mix.exs                     |  2 +-
 mix.lock                    |  2 +-
 test/next_ls/hover_test.exs |  2 +-
 7 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/.mise.toml b/.mise.toml
index 70087e12..7dea5d05 100644
--- a/.mise.toml
+++ b/.mise.toml
@@ -2,6 +2,6 @@
 KERL_BUILD_DOCS = "yes"
 
 [tools]
-erlang = "26.2.2"
-elixir = "ref:e3b6a91b173f7e836401a6a75c3906c26bd7fd39"
+erlang = "27.0"
+elixir = "1.17.0"
 zig = "0.11.0"
diff --git a/.tool-versions b/.tool-versions
index eb701dde..7e96f888 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1,3 +1,3 @@
-erlang 26.2.2
-elixir ref:e3b6a91b173f7e836401a6a75c3906c26bd7fd39
+erlang 27.0
+elixir 1.17.0
 zig 0.11.0
diff --git a/flake.lock b/flake.lock
index 692becdd..1691685d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2,10 +2,11 @@
   "nodes": {
     "nixpkgs": {
       "locked": {
-        "narHash": "sha256-5tPUpZlCpgqDQVUDlmhDhKn1h0A68jba8/DYie+yNC4=",
+        "lastModified": 1718160348,
+        "narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "592a779f3c5e7bce1a02027abe11b7996816223f",
+        "rev": "57d6973abba7ea108bac64ae7629e7431e0199b6",
         "type": "github"
       },
       "original": {
@@ -17,7 +18,24 @@
     },
     "root": {
       "inputs": {
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs",
+        "zigpkgs": "zigpkgs"
+      }
+    },
+    "zigpkgs": {
+      "locked": {
+        "lastModified": 1704057613,
+        "narHash": "sha256-5tPUpZlCpgqDQVUDlmhDhKn1h0A68jba8/DYie+yNC4=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "592a779f3c5e7bce1a02027abe11b7996816223f",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "592a779f3c5e7bce1a02027abe11b7996816223f",
+        "type": "github"
       }
     }
   },
diff --git a/flake.nix b/flake.nix
index 1b4e139f..f3a80d8e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,6 +1,9 @@
 {
   inputs = {
     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+    zigpkgs = {
+      url = "github:NixOS/nixpkgs/592a779f3c5e7bce1a02027abe11b7996816223f";
+    };
   };
 
   nixConfig = {
@@ -11,6 +14,7 @@
   outputs = {
     self,
     nixpkgs,
+    zigpkgs,
   }: let
     inherit (nixpkgs) lib;
 
@@ -20,13 +24,14 @@
     forAllSystems = f:
       lib.genAttrs systems (system: let
         pkgs = nixpkgs.legacyPackages.${system};
-        beamPackages = pkgs.beam_minimal.packages.erlang_26;
+        zpkgs = zigpkgs.legacyPackages.${system};
+        beamPackages = pkgs.beam_minimal.packages.erlang_27;
         otp = (pkgs.beam.packagesWith beamPackages.erlang).extend (final: prev: {
           elixir_1_17 = prev.elixir_1_16.override {
-            rev = "e3b6a91b173f7e836401a6a75c3906c26bd7fd39";
+            rev = "v1.17.0";
             # You can discover this using Trust On First Use by filling in `lib.fakeHash`
-            sha256 = "sha256-RK0aMW7pz7kQtK9XXN1wVCBxKOJKdQD7I/53V8rWD04=";
-            version = "1.17.0-dev";
+            sha256 = "sha256-RBylCfD+aCsvCqWUIvqXi3izNqqQoNfQNnQiZxz0Igg=";
+            version = "1.17.0";
           };
 
           elixir = final.elixir_1_17;
@@ -36,7 +41,7 @@
         });
         elixir = otp.elixir;
       in
-        f {inherit system pkgs beamPackages elixir;});
+        f {inherit system pkgs zpkgs beamPackages elixir;});
 
     systems = [
       "aarch64-darwin"
@@ -50,6 +55,7 @@
       system,
       beamPackages,
       elixir,
+      ...
     }: {
       default = lib.makeOverridable ({
         localBuild,
@@ -92,6 +98,7 @@
 
     devShells = forAllSystems ({
       pkgs,
+      zpkgs,
       beamPackages,
       elixir,
       ...
@@ -117,7 +124,7 @@
           pkgs.openssl
           pkgs.starship
           pkgs.xz
-          pkgs.zig_0_11
+          zpkgs.zig_0_11
           pkgs.zsh
         ];
       };
diff --git a/mix.exs b/mix.exs
index 0a0392e4..01dcb92a 100644
--- a/mix.exs
+++ b/mix.exs
@@ -78,7 +78,7 @@ defmodule NextLS.MixProject do
       {:burrito, "~> 1.0", only: [:dev, :prod]},
       {:bypass, "~> 2.1", only: :test},
       {:dialyxir, ">= 0.0.0", only: [:dev, :test], runtime: false},
-      {:credo, "~> 1.7.6", only: [:dev, :test], runtime: false},
+      {:credo, "~> 1.7.7-rc.0", only: [:dev, :test], runtime: false},
       {:ex_doc, ">= 0.0.0", only: :dev},
       {:styler, "~> 1.0-rc.0", only: :dev}
     ]
diff --git a/mix.lock b/mix.lock
index 624638b6..2701d6e8 100644
--- a/mix.lock
+++ b/mix.lock
@@ -9,7 +9,7 @@
   "cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
   "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
   "cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
-  "credo": {:hex, :credo, "1.7.6", "b8f14011a5443f2839b04def0b252300842ce7388f3af177157c86da18dfbeea", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "146f347fb9f8cbc5f7e39e3f22f70acbef51d441baa6d10169dd604bfbc55296"},
+  "credo": {:hex, :credo, "1.7.7-rc.0", "a7fb63b6e30e523355fb545cb089c5cba550b6d92e1a70db131e01a5dbb77368", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "c977f50ada33d6b053122945a0e4e74280585f7f8ac617aca46c913e88cc4de0"},
   "ctx": {:hex, :ctx, "0.6.0", "8ff88b70e6400c4df90142e7f130625b82086077a45364a78d208ed3ed53c7fe", [:rebar3], [], "hexpm", "a14ed2d1b67723dbebbe423b28d7615eb0bdcba6ff28f2d1f1b0a7e1d4aa5fc2"},
   "db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
   "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
diff --git a/test/next_ls/hover_test.exs b/test/next_ls/hover_test.exs
index aede5bce..b4fb092a 100644
--- a/test/next_ls/hover_test.exs
+++ b/test/next_ls/hover_test.exs
@@ -313,7 +313,7 @@ defmodule NextLS.HoverTest do
                     "contents" => %{
                       "kind" => "markdown",
                       "value" =>
-                        "## :timer.sleep/1\n\n`sleep/1`\n\nSuspends the process" <>
+                        "## :timer.sleep/1\n\n`sleep(Time)`\n\nSuspends the process" <>
                           _
                     },
                     "range" => %{

From c32b580c2f81c5c24ce2ecb3652f3a85d24e7e5a Mon Sep 17 00:00:00 2001
From: Mitchell Hanberg <mitch@mitchellhanberg.com>
Date: Thu, 13 Jun 2024 08:17:45 -0400
Subject: [PATCH 2/2] fixup! feat: upgrade to 1.17 and OTP 27

---
 mix.exs  | 2 +-
 mix.lock | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mix.exs b/mix.exs
index 01dcb92a..f67f5d55 100644
--- a/mix.exs
+++ b/mix.exs
@@ -78,7 +78,7 @@ defmodule NextLS.MixProject do
       {:burrito, "~> 1.0", only: [:dev, :prod]},
       {:bypass, "~> 2.1", only: :test},
       {:dialyxir, ">= 0.0.0", only: [:dev, :test], runtime: false},
-      {:credo, "~> 1.7.7-rc.0", only: [:dev, :test], runtime: false},
+      {:credo, "~> 1.7.7", only: [:dev, :test], runtime: false},
       {:ex_doc, ">= 0.0.0", only: :dev},
       {:styler, "~> 1.0-rc.0", only: :dev}
     ]
diff --git a/mix.lock b/mix.lock
index 2701d6e8..f9fd7b7f 100644
--- a/mix.lock
+++ b/mix.lock
@@ -9,7 +9,7 @@
   "cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
   "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
   "cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
-  "credo": {:hex, :credo, "1.7.7-rc.0", "a7fb63b6e30e523355fb545cb089c5cba550b6d92e1a70db131e01a5dbb77368", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "c977f50ada33d6b053122945a0e4e74280585f7f8ac617aca46c913e88cc4de0"},
+  "credo": {:hex, :credo, "1.7.7", "771445037228f763f9b2afd612b6aa2fd8e28432a95dbbc60d8e03ce71ba4446", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"},
   "ctx": {:hex, :ctx, "0.6.0", "8ff88b70e6400c4df90142e7f130625b82086077a45364a78d208ed3ed53c7fe", [:rebar3], [], "hexpm", "a14ed2d1b67723dbebbe423b28d7615eb0bdcba6ff28f2d1f1b0a7e1d4aa5fc2"},
   "db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
   "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
