From 39521036fb3af87ff0ec0301f34368939d23451e Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Sun, 24 Apr 2022 13:25:23 +0200 Subject: [PATCH] `droidcam` and `magit` improvements --- flake.lock | 6 ++-- hosts/pc/configuration.nix | 3 +- pkgs/default.nix | 2 ++ pkgs/droidcam/default.nix | 36 +++++++++++++++++++ pkgs/emacs/default.nix | 1 + pkgs/v4l2loopback-dc/default.nix | 32 +++++++++++++++++ profiles/adb/default.nix | 4 +++ users/ccr/default.nix | 1 + .../emacs/emacs.d/config/aesthetics.el | 3 +- .../emacs/emacs.d/config/config-magit.el | 13 +++++++ users/profiles/git/default.nix | 2 ++ 11 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 pkgs/droidcam/default.nix create mode 100644 pkgs/v4l2loopback-dc/default.nix diff --git a/flake.lock b/flake.lock index 02908cb..6ef3731 100644 --- a/flake.lock +++ b/flake.lock @@ -329,11 +329,11 @@ }, "nixpkgsDevInput": { "locked": { - "lastModified": 1650235668, - "narHash": "sha256-OmGlM2pIMMrhkoHNi4yxG0H3JzoK8gZ7dUfx7OsDoFE=", + "lastModified": 1650450000, + "narHash": "sha256-/ASymH28AS7KsNvkQ1RMKRoCQKSi1AsWkHdJpQwhXCg=", "owner": "aciceri", "repo": "nixpkgs", - "rev": "a28ba9716a4c3f16379ceba7e4d754782846bebb", + "rev": "cf941213b48d9602be0dc2656e02e065740798ab", "type": "github" }, "original": { diff --git a/hosts/pc/configuration.nix b/hosts/pc/configuration.nix index c7e8f96..55da011 100644 --- a/hosts/pc/configuration.nix +++ b/hosts/pc/configuration.nix @@ -6,9 +6,10 @@ boot = { initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; initrd.kernelModules = [ ]; - kernelModules = [ "kvm-intel" "v4l2loopback" ]; + kernelModules = [ "kvm-intel" "snd-aloop" "v4l2loopback" ]; extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback + pkgs.v4l2loopback-dc ]; extraModprobeConfig = '' diff --git a/pkgs/default.nix b/pkgs/default.nix index 2dac6a8..f90606e 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -26,5 +26,7 @@ in geoclue2 = nixpkgsUnstable.geoclue2; gnome = nixpkgsUnstable.gnome; umoria = nixpkgsDev.umoria; + droidcam = prev.callPackage (import ./droidcam) { }; + v4l2loopback-dc = prev.callPackage (import ./v4l2loopback-dc) { kernel = prev.linux; }; # then, call packages with `final.callPackage` } diff --git a/pkgs/droidcam/default.nix b/pkgs/droidcam/default.nix new file mode 100644 index 0000000..6b6bce0 --- /dev/null +++ b/pkgs/droidcam/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchzip, pkgconfig, ffmpeg, gtk3-x11, libjpeg, libusbmuxd, alsaLib, speex }: + +stdenv.mkDerivation rec { + pname = "droidcam"; + version = "0"; + + src = fetchzip { + url = "https://github.com/dev47apps/droidcam/archive/refs/tags/v1.7.2.zip"; + sha256 = "1iskvs5p71gkiinj78kkl9ygl5il9rdbzm0h85hwyzm2xwkcybrp"; + }; + + sourceRoot = "source"; + + buildInputs = [ pkgconfig ]; + nativeBuildInputs = [ ffmpeg gtk3-x11 libusbmuxd alsaLib libjpeg speex ]; + + postPatch = '' + cat Makefile + ls ${libusbmuxd.out}/lib + sed -i -e 's:-lusbmuxd:-I ${libusbmuxd.out} ${libusbmuxd.out}/lib/libusbmuxd-2.0.so:' Makefile + sed -i -e 's:/opt/libjpeg-turbo:${libjpeg.out}:' Makefile + sed -i -e 's:$(JPEG_DIR)/lib`getconf LONG_BIT`:${libjpeg.out}/lib:' Makefile + sed -i -e 's:libturbojpeg.a:libturbojpeg.so:' Makefile + cat Makefile + ''; + + installPhase = '' + mkdir -p $out/bin + cp droidcam droidcam-cli $out/bin/ + ''; + + meta = with stdenv.lib; { + description = "DroidCam Linux client"; + homepage = https://github.com/aramg/droidcam; + }; +} diff --git a/pkgs/emacs/default.nix b/pkgs/emacs/default.nix index 9d3728f..12e5fdf 100644 --- a/pkgs/emacs/default.nix +++ b/pkgs/emacs/default.nix @@ -12,6 +12,7 @@ emacsWithPackages ( all-the-icons company dap-mode + diff-hl doom-modeline evil evil-collection diff --git a/pkgs/v4l2loopback-dc/default.nix b/pkgs/v4l2loopback-dc/default.nix new file mode 100644 index 0000000..0c3fe9c --- /dev/null +++ b/pkgs/v4l2loopback-dc/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchzip, kernel }: + +stdenv.mkDerivation rec { + pname = "v4l2loopback-dc"; + version = "0"; + + src = fetchzip { + url = "https://github.com/dev47apps/droidcam/archive/refs/tags/v1.7.2.zip"; + sha256 = "1iskvs5p71gkiinj78kkl9ygl5il9rdbzm0h85hwyzm2xwkcybrp"; + }; + + sourceRoot = "source/v4l2loopback"; + + KVER = "${kernel.modDirVersion}"; + KBUILD_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"; + + nativeBuildInputs = kernel.moduleBuildDependencies; + + postPatch = '' + sed -i -e 's:/lib/modules/$(KERNELRELEASE)/build:${KBUILD_DIR}:g' Makefile + ''; + + installPhase = '' + mkdir -p $out/lib/modules/${KVER}/kernels/media/video + cp v4l2loopback-dc.ko $out/lib/modules/${KVER}/kernels/media/video/ + ''; + + meta = with stdenv.lib; { + description = "DroidCam kernel module v4l2loopback-dc"; + homepage = https://github.com/aramg/droidcam; + }; +} diff --git a/profiles/adb/default.nix b/profiles/adb/default.nix index a0d0793..eb52fbb 100644 --- a/profiles/adb/default.nix +++ b/profiles/adb/default.nix @@ -1,4 +1,8 @@ { pkgs, ... }: { programs.adb.enable = !pkgs.stdenv.hostPlatform.isAarch64; + + services.udev.packages = [ + pkgs.android-udev-rules + ]; } diff --git a/users/ccr/default.nix b/users/ccr/default.nix index e5f1963..8047723 100644 --- a/users/ccr/default.nix +++ b/users/ccr/default.nix @@ -10,6 +10,7 @@ ack ranger umoria + droidcam ] ++ (if config.networking.hostName != "hs" then [ imv calibre diff --git a/users/profiles/emacs/emacs.d/config/aesthetics.el b/users/profiles/emacs/emacs.d/config/aesthetics.el index 6644106..a3a6834 100644 --- a/users/profiles/emacs/emacs.d/config/aesthetics.el +++ b/users/profiles/emacs/emacs.d/config/aesthetics.el @@ -41,7 +41,8 @@ ("" . #'good-scroll-down-full-screen))) (use-package rainbow-identifiers - :hook ((prog-mode . rainbow-identifiers-mode))) + ;; :hook ((prog-mode . rainbow-identifiers-mode)) + ) ;; To move in a different config file (when (string-equal system-type "darwin") diff --git a/users/profiles/emacs/emacs.d/config/config-magit.el b/users/profiles/emacs/emacs.d/config/config-magit.el index 0177c00..422071b 100644 --- a/users/profiles/emacs/emacs.d/config/config-magit.el +++ b/users/profiles/emacs/emacs.d/config/config-magit.el @@ -2,4 +2,17 @@ :bind (("C-x g" . magit-status) ("C-x C-g" . magit-status))) +(use-package transient + :defer t + :config + (transient-bind-q-to-quit)) + +(use-package diff-hl + :after magit + :config + (require 'diff-hl-flydiff) + (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh) + (diff-hl-flydiff-mode t) + (global-diff-hl-mode t)) + (provide 'config-magit) diff --git a/users/profiles/git/default.nix b/users/profiles/git/default.nix index 59b6bb6..d7b27d9 100644 --- a/users/profiles/git/default.nix +++ b/users/profiles/git/default.nix @@ -16,7 +16,9 @@ in package = pkgs.gitAndTools.gitFull; extraConfig = { + ui.color = true; pull.rebase = false; + rebase.autostash = true; }; userName = config.name;