From dade373f200f8addff067c3b36ce49992143c673 Mon Sep 17 00:00:00 2001 From: Kate Adkins Date: Thu, 5 Dec 2024 22:32:05 -0700 Subject: [PATCH] temporary?: switch to kanbaru --- flake.nix | 6 +- nixos/hosts/kanbaru.nix | 65 +++++----- nixos/hosts/valere/default.nix | 5 +- packages.nix | 118 ------------------ packages/default.nix | 119 +++++++++++++++++++ packages/synatudor/00-dont-use-network.patch | 21 ++++ packages/synatudor/default.nix | 72 +++++++++++ 7 files changed, 249 insertions(+), 157 deletions(-) delete mode 100644 packages.nix create mode 100644 packages/default.nix create mode 100644 packages/synatudor/00-dont-use-network.patch create mode 100644 packages/synatudor/default.nix diff --git a/flake.nix b/flake.nix index e28a088..f2173f1 100644 --- a/flake.nix +++ b/flake.nix @@ -98,7 +98,7 @@ # # Include our package repository. # - (import ./packages.nix) { + (import ./packages) { inherit flake-utils nixpkgs; deprekages = self.outputs.packages; } @@ -278,12 +278,12 @@ }; # Valere (powerful laptop). - nixosConfigurations.valere = nixpkgs.lib.nixosSystem rec { + nixosConfigurations.kanbaru = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; specialArgs = mkSpecialArgs system; modules = linuxOfflineGuiModules [ - ./nixos/hosts/valere + ./nixos/hosts/kanbaru.nix ./nixos/configs/steam.nix ./nixos/configs/vmware.nix ./nixos/configs/power-saving.nix diff --git a/nixos/hosts/kanbaru.nix b/nixos/hosts/kanbaru.nix index 4d49556..6a30555 100644 --- a/nixos/hosts/kanbaru.nix +++ b/nixos/hosts/kanbaru.nix @@ -45,47 +45,42 @@ # # Intel+NVIDIA / prime setup. # + # Disable the NVIDIA GPU unless we explicitly request it. + hardware.nvidiaOptimus.disable = true; - services.xserver.videoDrivers = [ "nvidia" ]; + # TEMPORARILY DISABLED DUE TO KERNEL WONK + #specialisation.optimus.configuration = { + # system.nixos.tags = [ "NVIDIA" ]; + # services.xserver.videoDrivers = [ "nvidia" ]; - # Set up the NVIDIA half of the GPU setup. - system.nixos.tags = [ - "NVIDIA" - "AMDGPU" - ]; - hardware.nvidia = { - modesetting.enable = true; + # # Set up the NVIDIA half of the GPU setup. + # # These are used only in the "enabled" configuration. + # hardware.nvidia = { + # modesetting.enable = true; - # Prefer the open NVIDIA driver. - open = true; + # # Prefer the open NVIDIA driver. + # open = true; - # Enable the nvidia-settings command. - nvidiaSettings = true; + # # Enable the nvidia-settings command. + # nvidiaSettings = true; - # Offloading setup: use GPU when asked for by command, and not otherwise. - prime = { - sync.enable = true; + # # Offloading setup: use GPU when asked for by command, and not otherwise. + # prime = { + # sync.enable = true; - # Specify how to find our GPUs. - amdgpuBusId = "PCI:4:0:0"; - nvidiaBusId = "PCI:1:0:0"; - }; + # # Specify how to find our GPUs. + # intelBusId = "PCI:0:2:0"; + # nvidiaBusId = "PCI:1:0:0"; + # }; - }; + # }; - # Provide a way to disable the NVIDIA GPU entirely, - # for points when traveling where we don't want to burn power. - specialisation.lowpower.configuration = { - system.nixos.tags = lib.mkForce [ "AMDGPU" ]; + # # Include the NVIDIA X11 driver. + # boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; - # Disable the NVIDIA GPU. - hardware.nvidiaOptimus.disable = true; - - # These don't actually do anything, but they make introspecting - # the configuration a bit nicer. - hardware.nvidia.modesetting.enable = lib.mkForce false; - hardware.nvidia.prime.sync.enable = lib.mkForce false; - }; + # # Don't disable optimus on this config. + # hardware.nvidiaOptimus.disable = lib.mkForce false; + #}; # Set up the asus-on-linux services for this machine. services.asusd = { @@ -95,7 +90,7 @@ # Enable fingerprint reader... services.fprintd = { - enable = false; + enable = true; # ... and use a weird Goodix-ized fork of libfprintd. package = pkgs.fprintd.override { @@ -113,8 +108,8 @@ src = pkgs.fetchFromGitHub { owner = "infinytum"; repo = "libfprint"; - rev = "5e14af7f136265383ca27756455f00954eef5db1"; - hash = "sha256-MFhPsTF0oLUMJ9BIRZnSHj9VRwtHJxvWv0WT5zz7vDY="; + rev = "de5990838c2ef8813388a48811fbccc11088475b"; + hash = "sha256-XQ4jsgILvwc/HqT2ZmnIMpTezu5VedJ1RjuY0B6gcSk="; }; # Manually null out the installCheckPhase. diff --git a/nixos/hosts/valere/default.nix b/nixos/hosts/valere/default.nix index 7d69486..f4eac7a 100644 --- a/nixos/hosts/valere/default.nix +++ b/nixos/hosts/valere/default.nix @@ -36,6 +36,9 @@ pkgs.nvitop ]; + # Fingerprint reader, external. + + # # Niri configuration for our monitors. # @@ -50,7 +53,7 @@ # Intel+NVIDIA / prime setup. # # Provide a configuration that uses the full GPU power of the system. - system.nixos.tags = [ "Intel" ]; + system.nixos.tags = [ "AMD" ]; # Disable the NVIDIA GPU unless we explicitly request it. hardware.nvidiaOptimus.disable = true; diff --git a/packages.nix b/packages.nix deleted file mode 100644 index 84b0662..0000000 --- a/packages.nix +++ /dev/null @@ -1,118 +0,0 @@ -# -# Our various packages; generated for each system. -# -{ - flake-utils, - deprekages, - nixpkgs, -}: - -flake-utils.lib.eachDefaultSystem ( - system: - let - pkgs = import nixpkgs { - inherit system; - config.allowUnfree = true; - }; - callPackage = pkgs.callPackage; - in - { - # The packages themselves, - packages = rec { - # fonts - font-monolisa = callPackage ./fonts/monolisa.nix { }; - font-codicon = callPackage ./fonts/codicon.nix { }; - font-manrope = callPackage ./fonts/manrope.nix { }; - - # scientific things - ffts = callPackage ./packages/scopehal-apps/ffts.nix { }; - libsigrok4DSL = callPackage ./packages/scopehal-apps/libsigrok4DSL.nix { }; - vulkan-sdk = callPackage ./packages/scopehal-apps/vulkan-sdk.nix { }; - scopehal-apps = callPackage ./packages/scopehal-apps { deprekages = deprekages.${system}; }; - scopehal-sigrok-bridge = callPackage ./packages/scopehal-apps/sigrok-bridge.nix { - deprekages = deprekages.${system}; - }; - - # apps - navit = callPackage ./packages/navit.nix { }; - navit-with-maps = callPackage ./packages/navit.nix { with_maps = true; }; - binary-ninja = callPackage ./packages/binary-ninja.nix { }; - argos = callPackage ./packages/argos.nix { }; - todoist-electron = callPackage ./packages/todoist-electron.nix { }; - home-assistant-desktop = callPackage ./packages/home-assistant-desktop/x86_64-linux.nix { }; - flexbv = callPackage ./packages/flexbv.nix { }; - glowing-bear-desktop = callPackage ./packages/glowing-bear-desktop.nix { }; - hrvst-cli = callPackage ./packages/hrvst-cli { }; - notion-app = callPackage ./packages/notion-app { inherit _7zz; }; - gfn-electron = callPackage ./packages/geforce-now { }; - - # utilities - ykush = callPackage ./packages/ykush.nix { }; - wsl-gpg-forward = callPackage ./windows/gpg-forward.nix { }; - oxfs = callPackage ./packages/oxfs.nix { }; - pcsclite = callPackage ./packages/pcsclite.nix { }; - age-plugin-yubikey = callPackage ./packages/age-plugin-yubikey.nix { inherit pcsclite; }; - humanfx = callPackage ./packages/humanfx { }; - clipboard-sync = callPackage ./packages/clipboard-sync.nix { }; - vsmartcard = callPackage ./packages/vsmartcard.nix { }; - pcsc-relay = callPackage ./packages/pcsc-relay.nix { }; - neard = callPackage ./packages/neard.nix { }; - libnfc = callPackage ./packages/libnfc.nix { inherit libnfc-nci; }; - jadx = callPackage ./packages/jadx { }; - firefox-webserial = callPackage ./packages/firefox-webserial { inherit ws-server; }; - ryzen-ppd = callPackage ./packages/ryzen-ppd { }; - avbroot = callPackage ./packages/avbroot { }; - okc-agents = callPackage ./packages/okc-agents.nix { }; - _7zz = pkgs._7zz.override { useUasm = true; }; - mergiraf = callPackage ./packages/mergiraf.nix { }; - - # libraries - libnfc-nci = callPackage ./packages/libnfc-nci { }; - ws-server = callPackage ./packages/ws-server { }; - rubyPackages = callPackage ./packages/ruby-gems.nix { }; - - # jetbrains products - jetbrains-jdk = callPackage ./packages/jetbrains-jdk.nix { }; - jetbrains = import ./packages/jetbrains.nix { - inherit pkgs; - jdk = jetbrains-jdk; - }; - - # kernel modules - linuxPackages_i915-sriov = callPackage ./packages/i915-sriov/kernel.nix { }; - i915-sriov = callPackage ./packages/i915-sriov { linuxPackages = linuxPackages_i915-sriov; }; - linux-nfc-lenovo = callPackage ./packages/linux-nfc-lenovo { }; - - # hw support - dell = callPackage ./packages/dell { }; - - # udev rules~ - t5-udev-rules = callPackage ./packages/t5-udev-rules { }; - ykush-udev-rules = callPackage ./packages/ykush-udev-rules { }; - dreamsource-udev-rules = callPackage ./packages/dreamsource-udev-rules { }; - hantek-udev-rules = callPackage ./packages/hantek-udev-rules { }; - linux-nfc-lenovo-udev-rules = callPackage ./packages/linux-nfc-lenovo/udev.nix { }; - - # weechat - weechat-discord = callPackage ./packages/weechat-discord { }; - - # kakoune - kak-tree-sitter = callPackage ./packages/kak-tree-sitter { }; - - # vscode - vscode-extensions = callPackage ./packages/vscode-extensions.nix { }; - - # plasma - kde-karousel = callPackage ./packages/kde-karousel.nix { }; - - # xonsh and xontribs - xonsh-with-xontribs = pkgs.xonsh.override { - extraPackages = pythonPackages: [ - (callPackage ./packages/xontrib-whole-word-jumping.nix { }) - (callPackage ./packages/xontrib-term-integrations.nix { }) - (callPackage ./packages/xontrib-sh.nix { }) - ]; - }; - }; - } -) diff --git a/packages/default.nix b/packages/default.nix new file mode 100644 index 0000000..2dfbcc7 --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,119 @@ +# +# Our various packages; generated for each system. +# +{ + flake-utils, + deprekages, + nixpkgs, +}: + +flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + callPackage = pkgs.callPackage; + in + { + # The packages themselves, + packages = rec { + # fonts + font-monolisa = callPackage ../fonts/monolisa.nix { }; + font-codicon = callPackage ../fonts/codicon.nix { }; + font-manrope = callPackage ../fonts/manrope.nix { }; + + # scientific things + ffts = callPackage ./scopehal-apps/ffts.nix { }; + libsigrok4DSL = callPackage ./scopehal-apps/libsigrok4DSL.nix { }; + vulkan-sdk = callPackage ./scopehal-apps/vulkan-sdk.nix { }; + scopehal-apps = callPackage ./scopehal-apps { deprekages = deprekages.${system}; }; + scopehal-sigrok-bridge = callPackage ./scopehal-apps/sigrok-bridge.nix { + deprekages = deprekages.${system}; + }; + + # apps + navit = callPackage ./navit.nix { }; + navit-with-maps = callPackage ./navit.nix { with_maps = true; }; + binary-ninja = callPackage ./binary-ninja.nix { }; + argos = callPackage ./argos.nix { }; + todoist-electron = callPackage ./todoist-electron.nix { }; + home-assistant-desktop = callPackage ./home-assistant-desktop/x86_64-linux.nix { }; + flexbv = callPackage ./flexbv.nix { }; + glowing-bear-desktop = callPackage ./glowing-bear-desktop.nix { }; + hrvst-cli = callPackage ./hrvst-cli { }; + notion-app = callPackage ./notion-app { inherit _7zz; }; + gfn-electron = callPackage ./geforce-now { }; + + # utilities + ykush = callPackage ./ykush.nix { }; + wsl-gpg-forward = callPackage ./windows/gpg-forward.nix { }; + oxfs = callPackage ./oxfs.nix { }; + pcsclite = callPackage ./pcsclite.nix { }; + age-plugin-yubikey = callPackage ./age-plugin-yubikey.nix { inherit pcsclite; }; + humanfx = callPackage ./humanfx { }; + clipboard-sync = callPackage ./clipboard-sync.nix { }; + vsmartcard = callPackage ./vsmartcard.nix { }; + pcsc-relay = callPackage ./pcsc-relay.nix { }; + neard = callPackage ./neard.nix { }; + libnfc = callPackage ./libnfc.nix { inherit libnfc-nci; }; + jadx = callPackage ./jadx { }; + firefox-webserial = callPackage ./firefox-webserial { inherit ws-server; }; + ryzen-ppd = callPackage ./ryzen-ppd { }; + avbroot = callPackage ./avbroot { }; + okc-agents = callPackage ./okc-agents.nix { }; + _7zz = pkgs._7zz.override { useUasm = true; }; + mergiraf = callPackage ./mergiraf.nix { }; + + # libraries + libnfc-nci = callPackage ./libnfc-nci { }; + ws-server = callPackage ./ws-server { }; + rubyPackages = callPackage ./ruby-gems.nix { }; + + # jetbrains products + jetbrains-jdk = callPackage ./jetbrains-jdk.nix { }; + jetbrains = import ./jetbrains.nix { + inherit pkgs; + jdk = jetbrains-jdk; + }; + + # kernel modules + linuxPackages_i915-sriov = callPackage ./i915-sriov/kernel.nix { }; + i915-sriov = callPackage ./i915-sriov { linuxPackages = linuxPackages_i915-sriov; }; + linux-nfc-lenovo = callPackage ./linux-nfc-lenovo { }; + + # hw support + dell = callPackage ./dell { }; + synatudor = callPackage ./synatudor { }; + + # udev rules~ + t5-udev-rules = callPackage ./t5-udev-rules { }; + ykush-udev-rules = callPackage ./ykush-udev-rules { }; + dreamsource-udev-rules = callPackage ./dreamsource-udev-rules { }; + hantek-udev-rules = callPackage ./hantek-udev-rules { }; + linux-nfc-lenovo-udev-rules = callPackage ./linux-nfc-lenovo/udev.nix { }; + + # weechat + weechat-discord = callPackage ./weechat-discord { }; + + # kakoune + kak-tree-sitter = callPackage ./kak-tree-sitter { }; + + # vscode + vscode-extensions = callPackage ./vscode-extensions.nix { }; + + # plasma + kde-karousel = callPackage ./kde-karousel.nix { }; + + # xonsh and xontribs + xonsh-with-xontribs = pkgs.xonsh.override { + extraPackages = pythonPackages: [ + (callPackage ./xontrib-whole-word-jumping.nix { }) + (callPackage ./xontrib-term-integrations.nix { }) + (callPackage ./xontrib-sh.nix { }) + ]; + }; + }; + } +) diff --git a/packages/synatudor/00-dont-use-network.patch b/packages/synatudor/00-dont-use-network.patch new file mode 100644 index 0000000..38b2e2b --- /dev/null +++ b/packages/synatudor/00-dont-use-network.patch @@ -0,0 +1,21 @@ +diff --git a/libtudor/download_driver.sh b/libtudor/download_driver.sh +index 4450786..7dc45c9 100644 +--- a/libtudor/download_driver.sh ++++ b/libtudor/download_driver.sh +@@ -9,7 +9,8 @@ mkdir -p "$TMP_DIR" + + #Download the driver executable and check hash + INSTALLER="$TMP_DIR/installer.exe" +-wget https://download.lenovo.com/pccbbs/mobiles/r19fp02w.exe -O "$INSTALLER" ++#wget https://download.lenovo.com/pccbbs/mobiles/r19fp02w.exe -O "$INSTALLER" ++cp $r19fp02w $INSTALLER + shasum "$INSTALLER" | cut -d" " -f1 | cmp - "$HASH_FILE" + + #Extract the driver +@@ -22,4 +23,4 @@ mkdir -p "$OUT_DIR" + for dll in $DLLS + do + cp $(find "$WINDRV" -name "$dll") "$OUT_DIR/$dll" +-done +\ No newline at end of file ++done diff --git a/packages/synatudor/default.nix b/packages/synatudor/default.nix new file mode 100644 index 0000000..90f5051 --- /dev/null +++ b/packages/synatudor/default.nix @@ -0,0 +1,72 @@ +{ + lib, + stdenv, + fetchFromGitHub, + meson, + ninja, + pkg-config, + openssl, + cmake, + libusb1, + libcap, + libseccomp, + glib, + dbus, + libfprint-tod, + gusb, + perl, + wget, + innoextract, + fetchurl, +}: + +stdenv.mkDerivation rec { + pname = "syna-tudor"; + version = "unstable-2024-08-07"; + + src = fetchFromGitHub { + owner = "Popax21"; + repo = "synaTudor"; + rev = "5e4df4061ef1cc67b504085806db35932a642aca"; + hash = "sha256-YNcPJ+Zot5M9BmrNx/6lMYPAmUKQa6Y13IyZSGKh0hc="; + }; + + r19fp02w = fetchurl { + url = "https://download.lenovo.com/pccbbs/mobiles/r19fp02w.exe"; + hash = "sha256-CfBurJRksBhsGxyN7Xlppik3Lh14nPxsi9d3xydbaY8="; + }; + + patches = [ + ./00-dont-use-network.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + cmake + ninja + wget + perl + innoextract + ]; + + buildInputs = [ + openssl + libusb1 + libcap + libseccomp + glib + dbus + libfprint-tod + gusb + ]; + + meta = { + description = ""; + homepage = "https://github.com/Popax21/synaTudor.git"; + license = lib.licenses.lgpl21Only; + mainProgram = "syna-tudor"; + platforms = lib.platforms.all; + }; +}