From 886da7577048369d3c25b545c3159dd55636c878 Mon Sep 17 00:00:00 2001
From: Rutherther <rutherther@proton.me>
Date: Sun, 1 Oct 2023 19:19:11 +0200
Subject: [PATCH] feat: add verilog flake template

---
 flake-templates/verilog/.envrc     |  1 +
 flake-templates/verilog/flake.lock | 61 ++++++++++++++++++++++++++++++
 flake-templates/verilog/flake.nix  | 45 ++++++++++++++++++++++
 3 files changed, 107 insertions(+)
 create mode 100644 flake-templates/verilog/.envrc
 create mode 100644 flake-templates/verilog/flake.lock
 create mode 100644 flake-templates/verilog/flake.nix

diff --git a/flake-templates/verilog/.envrc b/flake-templates/verilog/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/flake-templates/verilog/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/flake-templates/verilog/flake.lock b/flake-templates/verilog/flake.lock
new file mode 100644
index 0000000..bc2e529
--- /dev/null
+++ b/flake-templates/verilog/flake.lock
@@ -0,0 +1,61 @@
+{
+  "nodes": {
+    "flake-utils": {
+      "inputs": {
+        "systems": "systems"
+      },
+      "locked": {
+        "lastModified": 1694529238,
+        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1696177401,
+        "narHash": "sha256-xSVZ+arFlQqWIArSGBA2wSyKHy9SRnIvkAHhDiMsT7o=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "fcf981a219ef7b910c83871ba202a883cbf7b3d6",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "ref": "release-23.05",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "flake-utils": "flake-utils",
+        "nixpkgs": "nixpkgs"
+      }
+    },
+    "systems": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake-templates/verilog/flake.nix b/flake-templates/verilog/flake.nix
new file mode 100644
index 0000000..fce42db
--- /dev/null
+++ b/flake-templates/verilog/flake.nix
@@ -0,0 +1,45 @@
+{
+  description = "A very basic flake";
+
+  inputs = {
+    nixpkgs.url = "github:NixOS/nixpkgs/release-23.05";
+    flake-utils.url = "github:numtide/flake-utils";
+  };
+
+  outputs = { self, flake-utils, nixpkgs }: let
+  in flake-utils.lib.eachDefaultSystem
+      (system:
+        let pkgs = import nixpkgs {
+              inherit system;
+              config.allowUnfree = true;
+            };
+            verilog-toolchain = with pkgs; symlinkJoin {
+              name = "verilog-toolchain";
+              meta.mainProgram = "verilog";
+              paths = [
+                verilog
+                verilator
+                gtkwave
+              ];
+            };
+        in rec {
+
+          packages.verilog = verilog-toolchain;
+          packages.verilog-lsp = pkgs.svls;
+          packages.default = packages.verilog;
+
+          devShells.default = pkgs.mkShell {
+            name = "verilog-project";
+
+            nativeBuildInputs = [
+              packages.verilog
+            ];
+
+            packages = with pkgs; [
+              # lsp
+              packages.verilog-lsp
+            ];
+          };
+        }
+      );
+}
-- 
2.48.1