about summary refs log tree commit diff
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2023-01-07T13·58+0100
committerProfpatsch <mail@profpatsch.de>2023-01-07T15·21+0000
commit727e6d890cad830c10c420f500583ebbed385d8a (patch)
treea6a16a4f05958a5998aa77c2e82e63051230c760
parenta149a1ee067047719e38240ca7ef70068a217686 (diff)
feat(users/Profpatsch): global shell for my userdir r/5627
For my tooling, I want to be able to use vscode language servers for
all subprojects, and the best ways to do that I’ve found so far is to
add a global shell.nix which contains the transitive closure of all
dependencies I need.

This is not /nice/ per se, but it does the job with minimal effort
right now and gives me a good development environment for all these
crazy & dumb experiments in here.

Change-Id: I717a72f490e9d58d45e4e15e9ba604c36b299814
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7794
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
-rw-r--r--users/Profpatsch/.envrc1
-rw-r--r--users/Profpatsch/.gitignore1
-rw-r--r--users/Profpatsch/.vscode/settings.json14
-rw-r--r--users/Profpatsch/shell.nix70
4 files changed, 86 insertions, 0 deletions
diff --git a/users/Profpatsch/.envrc b/users/Profpatsch/.envrc
new file mode 100644
index 000000000000..051d09d292a8
--- /dev/null
+++ b/users/Profpatsch/.envrc
@@ -0,0 +1 @@
+eval "$(lorri direnv)"
diff --git a/users/Profpatsch/.gitignore b/users/Profpatsch/.gitignore
new file mode 100644
index 000000000000..c33954f53a06
--- /dev/null
+++ b/users/Profpatsch/.gitignore
@@ -0,0 +1 @@
+dist-newstyle/
diff --git a/users/Profpatsch/.vscode/settings.json b/users/Profpatsch/.vscode/settings.json
new file mode 100644
index 000000000000..81546964eb03
--- /dev/null
+++ b/users/Profpatsch/.vscode/settings.json
@@ -0,0 +1,14 @@
+{
+    "sqltools.connections": [
+        {
+            "previewLimit": 50,
+            "driver": "SQLite",
+            "name": "cas-serve",
+            "database": "${workspaceFolder:Profpatsch}/cas-serve/data.sqlite"
+        }
+    ],
+    "sqltools.useNodeRuntime": true,
+    "[haskell]": {
+        "editor.formatOnSave": true
+    }
+}
diff --git a/users/Profpatsch/shell.nix b/users/Profpatsch/shell.nix
new file mode 100644
index 000000000000..cde599a8b414
--- /dev/null
+++ b/users/Profpatsch/shell.nix
@@ -0,0 +1,70 @@
+# generic shell.nix that can be used for most of my projects here,
+# until I figure out a way to have composable shells.
+let root = (import ../../. { }); in
+{ pkgs ? root.third_party.nixpkgs, depot ? root, ... }:
+
+pkgs.mkShell {
+  buildInputs = [
+    pkgs.sqlite-interactive
+    pkgs.sqlite-utils
+    pkgs.haskell-language-server
+    pkgs.cabal-install
+    (pkgs.haskellPackages.ghcWithHoogle (h: [
+      h.async
+      h.aeson-better-errors
+      h.conduit-extra
+      h.error
+      h.PyF
+      h.unliftio
+      h.wai
+      h.warp
+      h.profunctors
+      h.semigroupoids
+      h.validation-selective
+      h.free
+      h.cryptonite-conduit
+      h.sqlite-simple
+      h.hedgehog
+      h.http-conduit
+      h.nonempty-containers
+      h.deriving-compat
+      h.unix
+      h.attoparsec
+      h.iCalendar
+      h.case-insensitive
+      h.hscolour
+      h.nicify-lib
+      h.hspec-expectations-pretty-diff
+      depot.users.Profpatsch.my-prelude
+      depot.users.Profpatsch.netencode.netencode-hs
+      depot.users.Profpatsch.execline.exec-helpers-hs
+
+    ]))
+
+    pkgs.rustup
+    pkgs.pkg-config
+    pkgs.fuse
+  ];
+
+
+  RUSTC_WRAPPER =
+    let
+      wrapperArgFile = libs: pkgs.writeText "rustc-wrapper-args"
+        (pkgs.lib.concatStringsSep
+          "\n"
+          (pkgs.lib.concatLists
+            (map
+              (lib: [
+                "-L"
+                "${pkgs.lib.getLib lib}/lib"
+              ])
+              libs)));
+    in
+    depot.nix.writeExecline "rustc-wrapper" { readNArgs = 1; } [
+      "$1"
+      "$@"
+      "@${wrapperArgFile [
+      depot.third_party.rust-crates.nom
+    ]}"
+    ];
+}