From cf757f1df44f47b718d0c43b30f420dda040175b Mon Sep 17 00:00:00 2001 From: Lander Van den Bulcke Date: Mon, 30 Sep 2024 09:33:01 +0200 Subject: [PATCH] feat: add vuescan Signed-off-by: Lander Van den Bulcke --- hosts/common/optional/vuescan.nix | 60 +++++++++++++++++++++++++++++++ hosts/wodan/default.nix | 14 ++++---- 2 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 hosts/common/optional/vuescan.nix diff --git a/hosts/common/optional/vuescan.nix b/hosts/common/optional/vuescan.nix new file mode 100644 index 0000000..5a70a5a --- /dev/null +++ b/hosts/common/optional/vuescan.nix @@ -0,0 +1,60 @@ +{ + stdenv, + fetchurl, + gnutar, + autoPatchelfHook, + glibc, + gtk2, + xorg, + libgudev, + makeDesktopItem, +}: let + pname = "vuescan"; + version = "9.8.36"; + desktopItem = makeDesktopItem { + name = "VueScan"; + desktopName = "VueScan"; + genericName = "Scanning Program"; + comment = "Scanning Program"; + icon = "vuescan"; + terminal = false; + type = "Application"; + startupNotify = true; + categories = ["Graphics" "Utility"]; + keywords = ["scan" "scanner"]; + + exec = "vuescan"; + }; +in + stdenv.mkDerivation { + name = "${pname}-${version}"; + + src = fetchurl { + url = "https://www.hamrick.com/files/vuex6498.tgz"; + hash = "sha256-JomNwzGP68vRz2H+xutGkkMxH6WJ5DS7s06vU0rei/E="; + }; + + # Stripping breaks the program + dontStrip = true; + + nativeBuildInputs = [gnutar autoPatchelfHook]; + + buildInputs = [glibc gtk2 xorg.libSM libgudev]; + + unpackPhase = '' + tar xfz $src + ''; + + installPhase = '' + install -m755 -D VueScan/vuescan $out/bin/vuescan + + mkdir -p $out/share/icons/hicolor/scalable/apps/ + cp VueScan/vuescan.svg $out/share/icons/hicolor/scalable/apps/vuescan.svg + + mkdir -p $out/lib/udev/rules.d/ + cp VueScan/vuescan.rul $out/lib/udev/rules.d/60-vuescan.rules + + mkdir -p $out/share/applications/ + ln -s ${desktopItem}/share/applications/* $out/share/applications + ''; + } diff --git a/hosts/wodan/default.nix b/hosts/wodan/default.nix index 20c526c..3079cf2 100644 --- a/hosts/wodan/default.nix +++ b/hosts/wodan/default.nix @@ -1,6 +1,6 @@ -{ config, pkgs, ... }: - -{ +{pkgs, ...}: let + vuescan = pkgs.callPackage ../common/optional/vuescan.nix {}; +in { imports = [ ./hardware-configuration.nix @@ -58,17 +58,19 @@ awscli2 libreoffice x32edit + vuescan ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + services.udev.packages = [vuescan]; + + nix.settings.experimental-features = ["nix-command" "flakes"]; services.tailscale.enable = true; services.printing.enable = true; - services.printing.drivers = [ pkgs.brlaser ]; + services.printing.drivers = [pkgs.brlaser]; hardware.sane.enable = true; system.stateVersion = "24.05"; - }