diff --git a/build.sbt b/build.sbt
index 980d94ac7dfa44def911204da3bcd3355713118b..b421d4d8fd196f90f8f8138f6a3d611fa56521de 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,7 +1,15 @@
 name := "prog-2"
 scalaVersion := "3.1.1"
 
+enablePlugins(ScalaNativePlugin)
+
+nativeCompileOptions ++= Seq("-stdlib=libc++")
+nativeLinkingOptions ++= Seq("-fuse-ld=lld")
+
+nativeMode := "release-fast"
+nativeLTO := "thin"
+
 libraryDependencies ++= Seq(
-  "org.scalatest" %% "scalatest-funsuite" % "3.2.11" % "test",
-  "org.scala-lang.modules" %% "scala-swing" % "3.0.0"
+    "org.scalatest" %% "scalatest-funsuite" % "3.2.11" % "test",
+    "org.scala-lang.modules" %% "scala-swing" % "3.0.0"
 )
diff --git a/project/plugins.sbt b/project/plugins.sbt
index e24df6371380c712659b2c13386d0a3c6609efdf..edb0c6526b46e56b6c779ba4170c12ca0bcbad85 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,2 +1,3 @@
 addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.1")
 addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
+addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.3")
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000000000000000000000000000000000000..135e4cde739209df21513362f8442b15fb7933d7
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,13 @@
+{ pkgs ? import <nixpkgs> { } }:
+
+with pkgs;
+
+let
+  llvmPackages = llvmPackages_13;
+  stdenv = llvmPackages.libcxxStdenv;
+in stdenv.mkDerivation (rec {
+  name = "prog-2";
+  buildInputs = [ llvmPackages.lld sbt SDL2 which ];
+  LD_LIBRARY_PATH =
+    lib.makeLibraryPath [ llvmPackages.libcxx llvmPackages.libcxxabi SDL2 ];
+})