summary refs log tree commit diff
path: root/pkgs/tools/misc/mons/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/misc/mons/default.nix')
-rw-r--r--pkgs/tools/misc/mons/default.nix76
1 files changed, 67 insertions, 9 deletions
diff --git a/pkgs/tools/misc/mons/default.nix b/pkgs/tools/misc/mons/default.nix
index 920cab1763b..923c61532c6 100644
--- a/pkgs/tools/misc/mons/default.nix
+++ b/pkgs/tools/misc/mons/default.nix
@@ -1,8 +1,18 @@
-{ stdenv, lib, fetchFromGitHub, help2man, xrandr }:
+{ lib
+, bash
+, coreutils
+, fetchFromGitHub
+, gawk
+, gnugrep
+, gnused
+, help2man
+, resholve
+, xrandr
+}:
 
-stdenv.mkDerivation rec {
+resholve.mkDerivation rec {
   pname = "mons";
-  version = "20200320";
+  version = "unstable-2020-03-20";
 
   src = fetchFromGitHub {
     owner = "Ventto";
@@ -12,17 +22,64 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
-  patches = [
-    # Substitute xrandr path with @xrandr@ so we can replace it with
-    # real path in substituteInPlace
-    ./xrandr.patch
-  ];
+  /*
+    Remove reference to `%LIBDIR%/liblist.sh`. This would be linked to the
+    non-resholved of the library in the final derivation.
 
+    Patching out the library check; it's bad on multiple levels:
+    1. The check literally breaks if it fails.
+       See https://github.com/Ventto/mons/pull/49
+    2. It doesn't need to do this; source would fail with a
+       sensible message if the script was missing.
+    3. resholve can't wrestle with test/[] (at least until
+       https://github.com/abathur/resholve/issues/78)
+  */
   postPatch = ''
-    substituteInPlace mons.sh --replace '@xrandr@' '${xrandr}/bin/xrandr'
+    substituteInPlace mons.sh \
+      --replace "lib='%LIBDIR%/liblist.sh'" "" \
+      --replace '[ ! -r "$lib" ] && { "$lib: library not found."; exit 1; }' ""
   '';
 
+  solutions = {
+    mons = {
+      scripts = [ "bin/mons" "lib/libshlist/liblist.sh" ];
+      interpreter = "${bash}/bin/sh";
+      inputs = [
+        bash
+        coreutils
+        gawk
+        gnugrep
+        gnused
+        xrandr
+      ];
+      fix = {
+        "$lib" = [ "lib/libshlist/liblist.sh" ];
+        "$XRANDR" = [ "xrandr" ];
+      };
+      keep = {
+        /*
+        has a whole slate of *flag variables that it sets to either
+        the true or false builtin and then executes...
+        */
+        "$aFlag" = true;
+        "$dFlag" = true;
+        "$eFlag" = true;
+        "$mFlag" = true;
+        "$nFlag" = true;
+        "$oFlag" = true;
+        "$sFlag" = true;
+        "$OFlag" = true;
+        "$SFlag" = true;
+        "$pFlag" = true;
+        "$iFlag" = true;
+        "$xFlag" = true;
+        "$is_flag" = true;
+      };
+    };
+  };
+
   nativeBuildInputs = [ help2man ];
+
   makeFlags = [
     "DESTDIR=$(out)"
     "PREFIX="
@@ -33,5 +90,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Ventto/mons.git";
     license = licenses.mit;
     maintainers = with maintainers; [ mschneider thiagokokada ];
+    platforms = platforms.unix;
   };
 }