From a57a22a072183731420e045d2da93e93262544b8 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Fri, 23 Aug 2024 23:13:03 -0500 Subject: [PATCH] Initial deno project --- .envrc | 1 + .gitignore | 5 +++++ .helix/languages.toml | 49 +++++++++++++++++++++++++++++++++++++++++++ deno.json | 10 +++++++++ flake.lock | 27 ++++++++++++++++++++++++ flake.nix | 34 ++++++++++++++++++++++++++++++ mod.ts | 5 +++++ 7 files changed, 131 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 .helix/languages.toml create mode 100644 deno.json create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 mod.ts diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a1b0be --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# nix build results +/result + +# direnv cache +/.direnv diff --git a/.helix/languages.toml b/.helix/languages.toml new file mode 100644 index 0000000..b05ee97 --- /dev/null +++ b/.helix/languages.toml @@ -0,0 +1,49 @@ +[language-server.deno] +command = "deno" +args = ["lsp"] +config.hostInfo = "helix" + +[[language]] +name = "javascript" +scope = "source.js" +injection-regex = "(js|javascript)" +language-id = "javascript" +file-types = ["js", "mjs", "cjs", "rules", "es6", "pac", "jakefile"] +shebangs = ["node"] +comment-token = "//" +language-servers = [ "deno" ] +indent = { tab-width = 2, unit = "\t" } +auto-format = true + +[[language]] +name = "jsx" +scope = "source.jsx" +injection-regex = "jsx" +language-id = "javascriptreact" +file-types = ["jsx"] +comment-token = "//" +language-servers = [ "deno" ] +indent = { tab-width = 2, unit = "\t" } +grammar = "javascript" +auto-format = true + +[[language]] +name = "typescript" +scope = "source.ts" +injection-regex = "(ts|typescript)" +file-types = ["ts", "mts", "cts"] +language-id = "typescript" +shebangs = ["deno", "ts-node"] +language-servers = [ "deno" ] +indent = { tab-width = 2, unit = "\t" } +auto-format = true + +[[language]] +name = "tsx" +scope = "source.tsx" +injection-regex = "(tsx)" +language-id = "typescriptreact" +file-types = ["tsx"] +language-servers = [ "deno" ] +indent = { tab-width = 2, unit = "\t" } +auto-format = true diff --git a/deno.json b/deno.json new file mode 100644 index 0000000..b5051e1 --- /dev/null +++ b/deno.json @@ -0,0 +1,10 @@ +{ + "tasks": { + "dev": "deno run -A --watch=src,mod.ts mod.ts" + }, + "fmt": { + "useTabs": true, + "semiColons": false, + "singleQuote": true + } +} \ No newline at end of file diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..618e92e --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1724224976, + "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..323a903 --- /dev/null +++ b/flake.nix @@ -0,0 +1,34 @@ +{ + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + outputs = { + self, + nixpkgs, + }: let + inherit (self) outputs; + supportedSystems = [ + "x86_64-linux" + "aarch64-linux" + + "x86_64-darwin" + "aarch64-darwin" + ]; + forEachSupportedSystem = nixpkgs.lib.genAttrs supportedSystems; + in { + devShells = forEachSupportedSystem (system: let + pkgs = import nixpkgs {inherit system;}; + in { + deno-dev = pkgs.mkShell { + buildInputs = with pkgs; [ + vscode-langservers-extracted + deno + curl + xh + sqlite + ]; + }; + + default = outputs.devShells.${system}.deno-dev; + }); + }; +} diff --git a/mod.ts b/mod.ts new file mode 100644 index 0000000..b31559d --- /dev/null +++ b/mod.ts @@ -0,0 +1,5 @@ +console.log('Hello, world!') + +if (true) { + console.log('Truth!') +}