summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/.envrc1
-rw-r--r--lisp/flake.nix67
2 files changed, 68 insertions, 0 deletions
diff --git a/lisp/.envrc b/lisp/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/lisp/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/lisp/flake.nix b/lisp/flake.nix
new file mode 100644
index 0000000..4418230
--- /dev/null
+++ b/lisp/flake.nix
@@ -0,0 +1,67 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
+ rust-overlay.url = "github:oxalica/rust-overlay";
+ };
+
+ outputs = { self, nixpkgs, rust-overlay }:
+ let
+ overlays = [ (import rust-overlay) ];
+ pkgs = import nixpkgs {
+ inherit system overlays;
+ };
+
+ system = "x86_64-linux";
+ app = "lisp";
+
+ rust = pkgs.rust-bin.nightly.latest.default.override { extensions = [ "rust-src" ]; };
+ rustPlatform = pkgs.makeRustPlatform { cargo = rust; rustc = rust; };
+
+ shellInputs = with pkgs; [
+ rust clang mold rust-analyzer
+ ];
+ appNativeBuildInputs = with pkgs; [
+ pkg-config
+ ];
+ appBuildInputs = appRuntimeInputs ++ (with pkgs; [
+ ]);
+ appRuntimeInputs = with pkgs; [
+ ];
+ in
+ {
+ devShells.${system}.${app} = pkgs.mkShell {
+ nativeBuildInputs = appNativeBuildInputs;
+ buildInputs = shellInputs ++ appBuildInputs;
+
+ shellHook = ''
+ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath appRuntimeInputs}"
+ ln -fsT ${rust} ./.direnv/rust
+ '';
+ };
+ devShell.${system} = self.devShells.${system}.${app};
+
+ packages.${system}.${app} = rustPlatform.buildRustPackage {
+ pname = app;
+ version = "0.1.0";
+
+ src = ./.;
+ cargoSha256 = "sha256-lzs+8qAsBJ/ms/OppxnKfJChV9+xM0W/QRZGPn+9uv4=";
+
+ nativeBuildInputs = appNativeBuildInputs;
+ buildInputs = appBuildInputs;
+
+ postInstall = ''
+ cp -r assets $out/bin/
+ '';
+ };
+ defaultPackage.${system} = self.packages.${system}.${app};
+
+ apps.${system}.${app} = {
+ type = "app";
+ program = "${self.packages.${system}.${app}}/bin/${app}";
+ };
+ defaultApp.${system} = self.apps.${system}.${app};
+
+ checks.${system}.build = self.packages.${system}.${app};
+ };
+}