From 4da36a70998eca87c9815917f777553f56bbf27f Mon Sep 17 00:00:00 2001 From: Gabriel Fontes Date: Tue, 19 Apr 2022 10:41:25 -0300 Subject: [PATCH] wip xiaomitool package --- pkgs/default.nix | 1 + pkgs/xiaomitool/default.nix | 96 +++++++++++++++++++++++++ pkgs/xiaomitool/fix-captcha.patch | 14 ++++ pkgs/xiaomitool/update-api-params.patch | 15 ++++ users/misterio/home/cli/nvim/ui.nix | 41 ++++++++++- 5 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 pkgs/xiaomitool/default.nix create mode 100644 pkgs/xiaomitool/fix-captcha.patch create mode 100644 pkgs/xiaomitool/update-api-params.patch diff --git a/pkgs/default.nix b/pkgs/default.nix index e06d38c3..ae635092 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -11,4 +11,5 @@ shellcolord = pkgs.callPackage ./shellcolord { }; swayfader = pkgs.callPackage ./swayfader { }; wallpapers = pkgs.callPackage ./wallpapers { }; + xiaomitool = pkgs.callPackage ./xiaomitool { }; } diff --git a/pkgs/xiaomitool/default.nix b/pkgs/xiaomitool/default.nix new file mode 100644 index 00000000..95253d10 --- /dev/null +++ b/pkgs/xiaomitool/default.nix @@ -0,0 +1,96 @@ +{ lib, stdenv, fetchFromGitHub, makeWrapper, gradle_6, jdk11, perl, writeText }: +let + pname = "xiaomitoolv2"; + version = "unstable-2021-03-25"; + jdk = jdk11; + gradle = gradle_6; + + src = fetchFromGitHub { + owner = "francescotescari"; + repo = pname; + rev = "256679c6061fb2ffcda7fe59caa60a9a3d04517d"; + sha256 = "sha256-QffTGyv+JCF0Phz5GgLLs8gtypYIjZ9MPNO57ksFWNw="; + }; + + patches = [ ./fix-captcha.patch ./update-api-params.patch ]; + + deps = stdenv.mkDerivation { + pname = "${pname}-deps"; + inherit src patches version; + + nativeBuildInputs = [ gradle jdk perl ]; + + buildPhase = '' + export GRADLE_USER_HOME=$(mktemp -d) + gradle --no-daemon --info build + ''; + + # Mavenize dependency paths + # e.g. org.codehaus.groovy/groovy/2.4.0/{hash}/groovy-2.4.0.jar -> org/codehaus/groovy/groovy/2.4.0/groovy-2.4.0.jar + installPhase = '' + find $GRADLE_USER_HOME/caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \ + | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \ + | sh + ''; + + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + # outputHash = "sha256-85U9qZswLHt3csgPf0N4/BtVF94I+An4OGklKs0Xvac="; + }; + + # Point to our local deps repo + gradleInit = writeText "init.gradle" '' + settingsEvaluated { settings -> + settings.pluginManagement { + repositories { + clear() + maven { url '${deps}' } + } + } + } + logger.lifecycle 'Replacing Maven repositories with ${deps}...' + gradle.projectsLoaded { + rootProject.allprojects { + buildscript { + repositories { + clear() + maven { url '${deps}' } + } + } + repositories { + clear() + maven { url '${deps}' } + } + } + } + ''; +in + +stdenv.mkDerivation { + inherit pname version src patches; + + nativeBuildInputs = [ gradle jdk makeWrapper ]; + + buildPhase = '' + runHook preBuild + + export GRADLE_USER_HOME=$(mktemp -d) + gradle --offline --no-daemon --info --init-script ${gradleInit} distTar + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install -Dm644 build/libs/XiaomiToolV2.jar $out/lib/xiaomitool.jar + + mkdir -p $out + tar xf build/distributions/XiaomiToolV2.tar --strip-components=1 --directory $out/ + + wrapProgram $out/bin/xiaomitool \ + --set JAVA_HOME "${jdk}" + + runHook postInstall + ''; +} diff --git a/pkgs/xiaomitool/fix-captcha.patch b/pkgs/xiaomitool/fix-captcha.patch new file mode 100644 index 00000000..0adf09b2 --- /dev/null +++ b/pkgs/xiaomitool/fix-captcha.patch @@ -0,0 +1,14 @@ +diff --git a/build.gradle.kts b/build.gradle.kts +index 5b14c43..e93e5df 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -32,7 +32,8 @@ java { + } + + javafx { +- version = "11.0.2" ++ //version = "11.0.2" ++ version = "17.0.2" + modules = listOf("javafx.controls", "javafx.fxml", "javafx.web", "javafx.swing") + } + diff --git a/pkgs/xiaomitool/update-api-params.patch b/pkgs/xiaomitool/update-api-params.patch new file mode 100644 index 00000000..0ebd5893 --- /dev/null +++ b/pkgs/xiaomitool/update-api-params.patch @@ -0,0 +1,15 @@ +diff --git a/src/main/java/com/xiaomitool/v2/gui/controller/LoginController.java b/src/main/java/com/xiaomitool/v2/gui/controller/LoginController.java +index c90bb86..d5e4b0d 100644 +--- a/src/main/java/com/xiaomitool/v2/gui/controller/LoginController.java ++++ b/src/main/java/com/xiaomitool/v2/gui/controller/LoginController.java +@@ -35,8 +35,8 @@ import java.net.HttpCookie; + import java.net.URI; + import java.util.Locale; + +-public class LoginController extends DefaultController { +- private static final String LOGIN_URL = "https://account.xiaomi.com/pass/serviceLogin?sid=passport&json=false&passive=true&hidden=false&_snsDefault=facebook&_locale=" + Locale.getDefault().getLanguage().toLowerCase(); ++public class LoginController extends DefaultController { ++ private static final String LOGIN_URL = "https://account.xiaomi.com/pass/serviceLogin?sid=unlockApi&json=false&passive=true&hidden=false&_snsDefault=facebook&checkSafePhone=true&_locale=" + Locale.getDefault().getLanguage().toLowerCase(); + private static boolean loggedIn = false; + private static Thread loginThread = null; + @FXML diff --git a/users/misterio/home/cli/nvim/ui.nix b/users/misterio/home/cli/nvim/ui.nix index 8ff97e68..591487ff 100644 --- a/users/misterio/home/cli/nvim/ui.nix +++ b/users/misterio/home/cli/nvim/ui.nix @@ -5,7 +5,46 @@ { plugin = telescope-nvim; config = /* vim */ '' - lua require('telescope').setup{} + lua << EOF + local actions = require('telescope.actions') + local action_state = require('telescope.actions.state') + local telescope_custom_actions = {} + + function telescope_custom_actions._multiopen(prompt_bufnr, open_cmd) + local picker = action_state.get_current_picker(prompt_bufnr) + local selected_entry = action_state.get_selected_entry() + local num_selections = #picker:get_multi_selection() + if not num_selections or num_selections <= 1 then + actions.add_selection(prompt_bufnr) + end + actions.send_selected_to_qflist(prompt_bufnr) + vim.cmd("cfdo " .. open_cmd) + end + function telescope_custom_actions.multi_selection_open(prompt_bufnr) + telescope_custom_actions._multiopen(prompt_bufnr, "edit") + end + + + require('telescope').setup { + defaults = { + mappings = { + i = { + [''] = actions.move_selection_next, + [''] = actions.move_selection_previous, + [''] = actions.toggle_selection + actions.move_selection_next, + [''] = actions.toggle_selection + actions.move_selection_previous, + [''] = telescope_custom_actions.multi_selection_open + }, + n = { + [''] = actions.toggle_selection + actions.move_selection_next, + [''] = actions.toggle_selection + actions.move_selection_previous, + [''] = telescope_custom_actions.multi_selection_open + } + }, + } + } + EOF + nnoremap ff Telescope find_files nnoremap fg Telescope live_grep nnoremap fb Telescope buffers