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 + ]; + }; + } + ) + } + ''; +} diff --git a/krebs/5pkgs/simple/crx/default.nix b/krebs/5pkgs/simple/crx/default.nix new file mode 100644 index 000000000..429a471df --- /dev/null +++ b/krebs/5pkgs/simple/crx/default.nix @@ -0,0 +1,50 @@ +{ lib, pkgs, stdenv }: + +stdenv.mkDerivation rec { + pname = "crx"; + version = "1.1.0"; + + src = pkgs.fetchgit { + url = https://cgit.krebsco.de/crx; + rev = "refs/tags/v${version}"; + sha256 = "10xwrdxwbvqydayg6a4jcl3cfp4wi9ssm7a0dlnclkc4rmf6sv4a"; + }; + + phases = [ + "unpackPhase" + "installPhase" + ]; + + installPhase = '' + mkdir -p $out/bin + + ${lib.concatStrings + (lib.mapAttrsToList + (name: path: /* sh */ '' + sed \ + 's,^set -efu$,&\nPATH=${lib.makeBinPath path}; export PATH,' \ + < ./${name} \ + > $out/bin/${name} + chmod +x $out/bin/${name} + '') + { + crxid = [ + pkgs.bc + pkgs.coreutils + pkgs.file + pkgs.gnused + pkgs.openssl + pkgs.xxd + ]; + crxmake = [ + pkgs.coreutils + pkgs.gnused + pkgs.openssl + pkgs.xxd + pkgs.zip + ]; + } + ) + } + ''; +} diff --git a/tv/2configs/gitrepos.nix b/tv/2configs/gitrepos.nix index 991281ede..5b6a70b27 100644 --- a/tv/2configs/gitrepos.nix +++ b/tv/2configs/gitrepos.nix @@ -65,6 +65,9 @@ let { public-repos = mapAttrs make-public-repo ({ } // mapAttrs (_: recursiveUpdate { cgit.section = "1. miscellaneous"; }) { + crx = { + cgit.desc = "utilities for working with Chrome extensions"; + }; dic = { cgit.desc = "dict.leo.org command line interface"; }; @@ -102,6 +105,9 @@ let { stockholm = { cgit.desc = "NixOS configuration"; }; + TabFS = { + cgit.desc = "mount browser tabs & co. as a filesystem"; + }; with-ssh = {}; } // mapAttrs (_: recursiveUpdate { cgit.section = "2. Host configurations"; }) { ni = {