diff --git a/flake.lock b/flake.lock
index 7609a89..abb57d9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,33 +1,12 @@
 {
   "nodes": {
-    "fenix": {
-      "inputs": {
-        "nixpkgs": [
-          "nixpkgs"
-        ],
-        "rust-analyzer-src": "rust-analyzer-src"
-      },
-      "locked": {
-        "lastModified": 1713421495,
-        "narHash": "sha256-5vVF9W1tJT+WdfpWAEG76KywktKDAW/71mVmNHEHjac=",
-        "owner": "nix-community",
-        "repo": "fenix",
-        "rev": "fd47b1f9404fae02a4f38bd9f4b12bad7833c96b",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "fenix",
-        "type": "github"
-      }
-    },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1713248628,
-        "narHash": "sha256-NLznXB5AOnniUtZsyy/aPWOk8ussTuePp2acb9U+ISA=",
+        "lastModified": 1722421184,
+        "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "5672bc9dbf9d88246ddab5ac454e82318d094bb8",
+        "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
         "type": "github"
       },
       "original": {
@@ -39,24 +18,27 @@
     },
     "root": {
       "inputs": {
-        "fenix": "fenix",
-        "nixpkgs": "nixpkgs"
+        "nixpkgs": "nixpkgs",
+        "rust-overlay": "rust-overlay"
       }
     },
-    "rust-analyzer-src": {
-      "flake": false,
+    "rust-overlay": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
       "locked": {
-        "lastModified": 1713373173,
-        "narHash": "sha256-octd9BFY9G/Gbr4KfwK4itZp4Lx+qvJeRRcYnN+dEH8=",
-        "owner": "rust-lang",
-        "repo": "rust-analyzer",
-        "rev": "46702ffc1a02a2ac153f1d1ce619ec917af8f3a6",
+        "lastModified": 1722651535,
+        "narHash": "sha256-2uRmNwxe3CO5h7PfvqXrRe8OplXaEdwhqOUtaF13rpU=",
+        "owner": "oxalica",
+        "repo": "rust-overlay",
+        "rev": "56d83ca6f3c557647476f3720426a7615c22b860",
         "type": "github"
       },
       "original": {
-        "owner": "rust-lang",
-        "ref": "nightly",
-        "repo": "rust-analyzer",
+        "owner": "oxalica",
+        "repo": "rust-overlay",
         "type": "github"
       }
     }
diff --git a/flake.nix b/flake.nix
index 9bb5cc9..5207955 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,36 +1,41 @@
 {
   inputs = {
     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-    fenix.url = "github:nix-community/fenix";
-    fenix.inputs.nixpkgs.follows = "nixpkgs";
+
+    rust-overlay.url = "github:oxalica/rust-overlay";
+    rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
   };
 
-
-  outputs = { self, nixpkgs, fenix }@inputs:
-  let 
+  outputs = { self, nixpkgs, rust-overlay }:
+  let
     systems = [
       "x86_64-linux"
       "aarch64-linux"
+      "x86_64-darwin"
       "aarch64-darwin"
+      "armv7l-linux"
     ];
     forAllSystems = f: nixpkgs.lib.genAttrs systems (system: let
-      toolchain = fenix.packages.${system}.complete;
       pkgs = import nixpkgs {
         inherit system;
         overlays = [
-          (_: super: let pkgs = fenix.inputs.nixpkgs.legacyPackages.${system}; in fenix.overlays.default pkgs pkgs)
+          (import rust-overlay)
         ];
       };
+
+      rust-bin = rust-overlay.lib.mkRustBin { } pkgs.buildPackages;
+      toolchain = rust-bin.stable.latest.default;
     in f system pkgs toolchain);
   in {
-    devShell = forAllSystems (system: pkgs: toolchain: pkgs.mkShell {
-      packages = [
-        (toolchain.withComponents [
-          "cargo" "rustc" "rustfmt" "clippy"
-        ])
-        pkgs.mpv
-      ];
-      RUST_SRC_PATH = "${toolchain.rust-src}/lib/rustlib/src/rust/";
+    devShells = forAllSystems (system: pkgs: toolchain: {
+      default = pkgs.mkShell {
+        nativeBuildInputs = [
+          toolchain
+          pkgs.mpv
+        ];
+
+        RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library";
+      };
     });
   };
-}
+}
\ No newline at end of file