summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2021-01-05 13:37:16 +0100
committerlassulus <lassulus@lassul.us>2021-01-05 13:37:16 +0100
commit91e7352884668486a66ae963731670660d9b6516 (patch)
treeab79e50d669455ee28cd948dae1c703e642dfb73
parent81c31869c2afeb510c97141af12c72a6e2b44c97 (diff)
parentcbb28f34eee5b5c801dc0521d88ffae0cd1a4c81 (diff)
Merge remote-tracking branch 'ni/master'
-rw-r--r--krebs/5pkgs/simple/TabFS/default.nix100
-rw-r--r--krebs/5pkgs/simple/crx/default.nix50
-rw-r--r--tv/2configs/gitrepos.nix6
3 files changed, 156 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
+ ];
+ };
+ }
+ )
+ }
+ '';
+}
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 = {