summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs/simple/TabFS
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2021-01-04 17:18:23 +0100
committertv <tv@krebsco.de>2021-01-04 17:18:23 +0100
commitcbb28f34eee5b5c801dc0521d88ffae0cd1a4c81 (patch)
treefced84fb393daa10c704de80c6be42ccba87d0fa /krebs/5pkgs/simple/TabFS
parent3ef1e814227ed05f3715e7adcba5650abba241b5 (diff)
TabFS: init
Diffstat (limited to 'krebs/5pkgs/simple/TabFS')
-rw-r--r--krebs/5pkgs/simple/TabFS/default.nix100
1 files changed, 100 insertions, 0 deletions
diff --git a/krebs/5pkgs/simple/TabFS/default.nix b/krebs/5pkgs/simple/TabFS/default.nix
new file mode 100644
index 000000000..23fdf519d
--- /dev/null
+++ b/krebs/5pkgs/simple/TabFS/default.nix
@@ -0,0 +1,100 @@
+{ lib, pkgs, stdenv }:
+
+stdenv.mkDerivation rec {
+ name = "TabFS";
+
+ src = pkgs.fetchgit {
+ url = https://cgit.krebsco.de/TabFS;
+ rev = "1fc4845283a0e6aa46a8d8978f356d5ccdcedd13";
+ sha256 = "0bsm5fhxrr6zwbnm9p10h9pwm85llr02g2ch97a62r62dhjjrc8h";
+ };
+
+ phases = [
+ "unpackPhase"
+ "buildPhase"
+ "installPhase"
+ ];
+
+ nativeBuildInputs = [
+ pkgs.jq
+ ];
+
+ buildInputs = [
+ pkgs.fuse
+ ];
+
+ buildPhase = ''
+ make -C fs
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+
+ cp fs/tabfs $out/bin
+
+ ${lib.concatStrings
+ (lib.mapAttrsToList
+ (name: spec: /* sh */ ''
+ jq < ${spec.source} > $out/bin/${name} \
+ --arg out $out \
+ --arg path ${lib.makeBinPath spec.path} \
+ -Rrs \
+ ${lib.escapeShellArg /* jq */ ''
+ def when(cond; update): if cond then update else . end;
+
+ split("\n") |
+ map(${lib.concatMapStringsSep "|" (filter: "(${filter})")
+ (lib.toList (spec.filter or []) ++ [
+ /* jq */ ''when(test("^#!"); "\(.)\nexport PATH=\($path)")''
+ ])
+ }) |
+ join("\n")
+ ''}
+ chmod +x $out/bin/${name}
+ '')
+ {
+ tabfs-enable-native-messaging = {
+ source = "install.sh";
+ path = [
+ pkgs.coreutils
+ ];
+ filter = /* jq */''
+ when(test("^EXE_PATH="); "EXE_PATH=\($out)/bin/tabfs-wrapper")
+ '';
+ };
+ tabfs-wrapper = {
+ source = "fs/tabfs-wrapper";
+ path = [
+ pkgs.coreutils
+ pkgs.findutils
+ pkgs.gnugrep
+ pkgs.procps
+ "/run/wrappers" # for fusermount
+ ];
+ };
+ tabfs-build-crx = {
+ source = "build-crx.sh";
+ path = [
+ pkgs.coreutils
+ pkgs.crx
+ pkgs.gnugrep
+ pkgs.jq
+ pkgs.openssl
+ ];
+ filter = /* jq */''
+ when(test("^source_dir=");
+ sub("\\$\\(dirname \"\\$0\"\\)"; ${builtins.toJSON src})
+ )
+ '';
+ };
+ tabfs-install-crx = {
+ source = "install-crx.sh";
+ path = [
+ pkgs.coreutils
+ ];
+ };
+ }
+ )
+ }
+ '';
+}