dotfiles

My PC Dotfiles & Website
commit 2cfccb2b5196377cab178e5132783f935f9d9ca9
parent df2859977b86099bb67171cb64a83677df0f28c8
Author: maydayv7 <maydayv7@gmail.com>
Date:   Sat, 13 Dec 2025 00:56:48 +0530

fix: Fix VFIO and update GNOME

Diffstat:

MCHANGELOG.md | 4++++
MREADME.md | 2+-
Mdevices/valkyrie/default.nix | 4++--
Mfiles/flake.nix | 3---
Mfiles/gnome/shortcuts.json | 14+++++++-------
Dfiles/touchegg.xml | 141-------------------------------------------------------------------------------
Mflake.nix | 2--
Mmodules/gui/desktop/gnome/default.nix | 7++++---
Mmodules/gui/desktop/gnome/settings/default.nix | 4++--
Mmodules/gui/desktop/gnome/settings/extensions.nix | 73+++++++++++++++++++++++++++++++++----------------------------------------
Mmodules/gui/desktop/pantheon/settings.nix | 2+-
Mmodules/hardware/README.md | 4++--
Mmodules/hardware/virtualisation/default.nix | 6++----
Mmodules/hardware/virtualisation/vfio.nix | 8++++++++
Mmodules/user/mutable.nix | 38+++++++++++++++++++-------------------
Apackages/copyous.nix | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Mshells/android.nix | 13+++----------
17 files changed, 139 insertions(+), 237 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -2,6 +2,10 @@ ### December +- GNOME Updates + - Change terminal hotkeys + - Use [`copyous`](https://github.com/boerdereinar/copyous) instead of `pano` for clipboard +- Fix VFIO after update - Fix `git` GitHub authentication - Update to NixOS 25.11 (Xantusia) diff --git a/README.md b/README.md @@ -497,8 +497,8 @@ _Thanks a lot! ;)_ ### To Do -- VFIO Support via GPU Hotplug instead of restart - Investigate `system` -> `stdenv.hostPlatform.system` +- Remove `pkgs.custom.copyous` after [merge](https://github.com/NixOS/nixpkgs/pull/469919) - Inputs: - Update `minecraft` after [merge](https://github.com/Infinidoge/nix-minecraft/pull/161) - Update `catppuccin` after release branch-off diff --git a/devices/valkyrie/default.nix b/devices/valkyrie/default.nix @@ -74,9 +74,9 @@ }; gui = { - desktop = "hyprland"; + desktop = "gnome"; display = "eDP-1"; - wallpaper = "Quasar"; + wallpaper = "Sunrise"; fancy = true; }; diff --git a/files/flake.nix b/files/flake.nix @@ -59,9 +59,6 @@ extension = ".conf"; }; - # X11 Touchpad Gestures - gestures = readFile ./touchegg.xml; - # 'git' Version Control git.hooks = ./git/hooks; diff --git a/files/gnome/shortcuts.json b/files/gnome/shortcuts.json @@ -92,10 +92,6 @@ "description": "Show notification tray" }, { - "key": "Super + Space", - "description": "Switch keyboard layout" - }, - { "key": "CTRL + ALT + S", "description": "Resize window to pre-defined sizes" }, @@ -138,11 +134,11 @@ }, { "key": "Super + T", - "description": "Open Dropdown Terminal" + "description": "Open Terminal" }, { - "key": "Super + SHIFT + T", - "description": "Open Terminal" + "key": "Super + Space", + "description": "Open Dropdown Terminal" }, { "key": "Super + `", @@ -223,6 +219,10 @@ "description": "Focus next monitor" }, { + "key": "Super + ←/→", + "description": "Switch between workspaces" + }, + { "key": "ALT + Tab", "description": "Focus dash icons" }, diff --git a/files/touchegg.xml b/files/touchegg.xml @@ -1,141 +0,0 @@ -<touchégg> - <!-- My Epic Touchegg X11 Gestures Config --> - <settings> - <!-- - Delay (in ms), since the Gesture starts before animation - --> - <property name="animation_delay">100</property> - - <!-- - Percentage of the Gesture to be completed to apply action - --> - <property name="action_execute_threshold">20</property> - - <!-- - Global animation Colors - --> - <property name="color">5294E2</property> - <property name="borderColor">383C4A</property> - </settings> - - <!-- - Configuration for every application - --> - - <!-- 4 Fingers --> - <application name="All"> - <gesture type="SWIPE" fingers="4" direction="UP"> - <action type="MAXIMIZE_RESTORE_WINDOW"> - <animate>true</animate> - </action> - </gesture> - - <gesture type="SWIPE" fingers="4" direction="DOWN"> - <action type="MINIMIZE_WINDOW"> - <animate>true</animate> - </action> - </gesture> - - <gesture type="SWIPE" fingers="4" direction="LEFT"> - <action type="TILE_WINDOW"> - <direction>left</direction> - <animate>true</animate> - </action> - </gesture> - - <gesture type="SWIPE" fingers="4" direction="RIGHT"> - <action type="TILE_WINDOW"> - <direction>right</direction> - <animate>true</animate> - </action> - </gesture> - - <gesture type="PINCH" fingers="4" direction="OUT"> - <action type="CLOSE_WINDOW"> - <animate>true</animate> - </action> - </gesture> - - <gesture type="PINCH" fingers="4" direction="IN"> - <action type="SHOW_DESKTOP"> - <animate>true</animate> - </action> - </gesture> - - <!-- 3 Fingers --> - <gesture type="SWIPE" fingers="3" direction="RIGHT"> - <action type="SEND_KEYS"> - <repeat>true</repeat> - <modifiers>Alt_L</modifiers> - <keys>Tab</keys> - <decreaseKeys>Shift_L+Tab</decreaseKeys> - </action> - </gesture> - - <gesture type="SWIPE" fingers="3" direction="LEFT"> - <action type="SEND_KEYS"> - <repeat>true</repeat> - <modifiers>Alt_L</modifiers> - <keys>Shift_L+Tab</keys> - <decreaseKeys>Tab</decreaseKeys> - </action> - </gesture> - - <gesture type="SWIPE" fingers="3" direction="UP"> - <action type="CHANGE_DESKTOP"> - <direction>next</direction> - <animate>true</animate> - <cyclic>true</cyclic> - <animationPosition>down</animationPosition> - </action> - </gesture> - - <gesture type="SWIPE" fingers="3" direction="DOWN"> - <action type="CHANGE_DESKTOP"> - <direction>previous</direction> - <animate>true</animate> - <cyclic>true</cyclic> - <animationPosition>up</animationPosition> - </action> - </gesture> - - <!-- Touch Gestures --> - <gesture type="TAP" fingers="2"> - <action type="MOUSE_CLICK"> - <button>3</button> - <on>begin</on> - </action> - </gesture> - - <gesture type="TAP" fingers="3"> - <action type="MOUSE_CLICK"> - <button>2</button> - <on>begin</on> - </action> - </gesture> - </application> - - <!-- - Configuration for specific applications - --> - - <application name="Firefox"> - <gesture type="PINCH" fingers="2" direction="IN"> - <action type="SEND_KEYS"> - <repeat>true</repeat> - <modifiers>Control_L</modifiers> - <keys>KP_Subtract</keys> - <decreaseKeys>KP_Add</decreaseKeys> - </action> - </gesture> - - <gesture type="PINCH" fingers="2" direction="OUT"> - <action type="SEND_KEYS"> - <repeat>true</repeat> - <modifiers>Control_L</modifiers> - <keys>KP_Add</keys> - <decreaseKeys>KP_Subtract</decreaseKeys> - </action> - </gesture> - </application> -</touchégg> diff --git a/flake.nix b/flake.nix @@ -237,7 +237,6 @@ "https://cache.nixos.org" "https://nixpkgs-unfree.cachix.org" "https://nix-community.cachix.org" - "https://cache.nixos-cuda.org" "https://cache.flox.dev" "https://nix-gaming.cachix.org" "https://hyprland.cachix.org" @@ -251,7 +250,6 @@ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nixpkgs-unfree.cachix.org-1:hqvoInulhbV4nJ9yJOEr+4wxhDV4xq2d1DK7S6Nj6rs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - "cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M=" "flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs=" "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" diff --git a/modules/gui/desktop/gnome/default.nix b/modules/gui/desktop/gnome/default.nix @@ -61,7 +61,7 @@ in apps.list = [ "firefox" ]; programs = { - gnupg.agent.pinentryPackage = mkForce pkgs.pinentry.gnome3; + gnupg.agent.pinentryPackage = mkForce pkgs.pinentry-gnome3; nautilus-open-any-terminal = { enable = true; terminal = "ghostty"; @@ -147,8 +147,9 @@ in ".cache/gnome-builder" # Extensions - ".config/paperwm" - ".local/share/clipboard" + ".cache/copyous@boerdereinar.dev" + ".config/copyous@boerdereinar.dev" + ".local/share/copyous@boerdereinar.dev" ]; user.homeConfig = { diff --git a/modules/gui/desktop/gnome/settings/default.nix b/modules/gui/desktop/gnome/settings/default.nix @@ -92,7 +92,7 @@ in screenshot = [ "<Shift>Print" ]; screenshot-clip = [ ]; screensaver = [ "<Super>l" ]; - terminal = [ "<Super>t" ]; + terminal = [ ]; volume-down = [ "AudioLowerVolume" ]; volume-up = [ "AudioRaiseVolume" ]; window-screenshot = [ "<Primary>Print" ]; @@ -111,7 +111,7 @@ in }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { - binding = "<Super><Shift>t"; + binding = "<Super>t"; command = "ghostty"; name = "Terminal"; }; diff --git a/modules/gui/desktop/gnome/settings/extensions.nix b/modules/gui/desktop/gnome/settings/extensions.nix @@ -1,6 +1,5 @@ { sys, - config, lib, pkgs, files, @@ -11,7 +10,6 @@ let filter genList hasAttr - head map toString ; @@ -26,8 +24,6 @@ let recursiveUpdate ; - homeDir = config.home.homeDirectory; - font = head sys.fonts.fontconfig.defaultFonts.sansSerif; inherit (sys.lib.stylix) colors; # Shell Extensions @@ -51,7 +47,6 @@ let { package = screenshot-window-sizer; } { package = unmess; } { package = window-state-manager; } - { package = x11-gestures; } { package = workspace-indicator; disable = true; @@ -78,7 +73,7 @@ let "a11y" "aggregateMenu" "drive-menu" - "pano@elhan.io" + "copyous@boerdereinar.dev" "vitalsMenu" "dwellClick" "color-picker@tuberry" @@ -119,7 +114,7 @@ let { package = lock-keys; name = "lockkeys"; - settings.style = "show-hide"; + settings.always-show-icon = false; } { package = power-profile-indicator-2; @@ -199,6 +194,16 @@ let }; } { + package = wsp-windows-search-provider; + name = "windows-search-provider"; + settings = { + custom-prefixes = "`"; + results-order = 1; + search-commands = false; + search-method = 1; + }; + } + { package = bluetooth-battery-meter; name = "Bluetooth-Battery-Meter"; settings = { @@ -224,6 +229,26 @@ let }; } { + package = pkgs.custom.copyous; + settings = { + auto-hide-search = false; + clipboard-orientation = "horizontal"; + clipboard-position-horizontal = "fill"; + clipboard-position-vertical = "bottom"; + clipboard-history = "keep-all"; + clipboard-size = 700; + disable-hljs-dialog = false; + header-controls-visibility = "visible-on-hover"; + history-length = 250; + open-clipboard-dialog-shortcut = [ "<Super>v" ]; + show-at-cursor = false; + show-at-pointer = false; + show-indicator = true; + toggle-incognito-mode-shortcut = [ "<Control><Super>v" ]; + wiggle-indicator = true; + }; + } + { package = coverflow-alt-tab; name = "coverflowalttab"; settings = { @@ -274,7 +299,7 @@ let package = ddterm; path = "com/github/amezin/ddterm"; settings = { - dterm-toggle-hotkey = [ "<Super>t" ]; + ddterm-activate-hotkey = [ "<Super>space" ]; hide-window-on-esc = true; panel-icon-type = "none"; shortcut-find = [ "<Control>f" ]; @@ -297,28 +322,6 @@ let )); } { - package = pano; - settings = { - database-location = "${homeDir}/.local/share/clipboard"; - history-length = 250; - global-shortcut = [ "<Super>v" ]; - incognito-shortcut = [ "<Ctrl><Super>v" ]; - link-previews = true; - open-links-in-browser = true; - play-audio-on-copy = false; - send-notification-on-copy = false; - watch-exclusion-list = true; - wiggle-indicator = sys.gui.fancy; - window-position = mkUint32 2; - item-date-font-family = font; - item-date-font-size = 11; - item-title-font-family = font; - item-title-font-size = 20; - search-bar-font-family = font; - search-bar-font-size = 14; - }; - } - { package = tiling-shell; name = "tilingshell"; settings = { @@ -342,16 +345,6 @@ let }; } { - package = wsp-windows-search-provider; - name = "windows-search-provider"; - settings = { - custom-prefixes = "`"; - results-order = 1; - search-commands = false; - search-method = 1; - }; - } - { package = vertical-workspaces; settings = { aaa-loading-profile = true; diff --git a/modules/gui/desktop/pantheon/settings.nix b/modules/gui/desktop/pantheon/settings.nix @@ -267,7 +267,7 @@ in play = [ "F4" ]; screenreader = [ ]; screensaver = [ "<Super>l" ]; - terminal = [ "<Super>t" ]; + terminal = [ ]; volume-down = [ "AudioLowerVolume" ]; volume-mute = [ "" ]; volume-up = [ "AudioRaiseVolume" ]; diff --git a/modules/hardware/README.md b/modules/hardware/README.md @@ -33,7 +33,7 @@ Use [`scripts/pci.sh`](../../scripts/pci.sh) in order to determine the PCI Devic In order to create a highly performant Windows VM using the `virt-manager` GUI and [Virtio](https://wiki.libvirt.org/Virtio.html) drivers, follow the instructions given on [this](https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm) page. To configure GPU passthrough, add the relevant GPU and audio IDs to `hardware.vm.passthrough` (See the [Arch Wiki](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF) for additional information), and set `hardware.vm.vfio` to `"on"`. Confirm that the GPU is recognized within the Windows VM, and download the relevant drivers. In order to utilize full graphical bandwidth, one of the following must be done: -1. Connecting an external monitor to the GPU -2. Using a dummy monitor plug or faking a display using [`Virtual Display Driver`](https://github.com/itsmikethetech/Virtual-Display-Driver), then using [Looking Glass](https://looking-glass.io/) to extract video output onto the main monitor. The configuration for Looking Glass on the Linux (client) side is already implemented, and only the Windows (host) needs to be configured by following instructions on [this](https://looking-glass.io/docs/stable/install/) page +1. Connect an external monitor to the GPU +2. Use a dummy monitor plug or fake a display using [`Virtual Display Driver`](https://github.com/itsmikethetech/Virtual-Display-Driver), then use [Looking Glass](https://looking-glass.io/) to extract video output onto the main monitor. The configuration for Looking Glass on the Linux (client) side is already implemented, and only the Windows (host) needs to be configured by following instructions on [this](https://looking-glass.io/docs/stable/install/) page (Follow the section titled 'IVSHMEM with shared memory') The `vfio` Specialisation can be selected in the boot menu to enable GPU passthrough when required (when `hardware.vm.vfio` is set to `"setup"`) diff --git a/modules/hardware/virtualisation/default.nix b/modules/hardware/virtualisation/default.nix @@ -35,10 +35,7 @@ in # VM Packages programs.virt-manager.enable = true; - environment.systemPackages = with pkgs; [ - libguestfs - virtiofsd - ]; + environment.systemPackages = [ pkgs.libguestfs ]; # VM Utilities virtualisation = { @@ -52,6 +49,7 @@ in package = pkgs.qemu_kvm; runAsRoot = false; swtpm.enable = true; + vhostUserPackages = [ pkgs.virtiofsd ]; }; }; }; diff --git a/modules/hardware/virtualisation/vfio.nix b/modules/hardware/virtualisation/vfio.nix @@ -59,6 +59,7 @@ in hardware.vm.vfio = mkForce "setup"; }; + hardware.gpu = mkForce null; boot = { kernelParams = [ "amd_iommu=pt" @@ -76,6 +77,13 @@ in "vfio_iommu_type1" "vfio_virqfd" ]; + + blacklistedKernelModules = [ + "nvidia" + "nvidia_drm" + "nvidia_modeset" + "nvidia_uvm" + ]; }; # Looking Glass diff --git a/modules/user/mutable.nix b/modules/user/mutable.nix @@ -41,23 +41,20 @@ in let mergeAttrsList = foldl' recursiveUpdate { }; fileAttrsType = types.attrsOf ( - types.submodule ( - _: - { - options.mutable = mkOption { - type = types.bool; - default = false; - description = '' - Whether to copy the file without the read-only attribute instead of - symlinking. If you set this to `true`, you must also set `force` to - `true`. Mutable files are not removed when you remove them from your - configuration. - This option is useful for programs that don't have a very good - support for read-only configurations. - ''; - }; - } - ) + types.submodule (_: { + options.mutable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to copy the file without the read-only attribute instead of + symlinking. If you set this to `true`, you must also set `force` to + `true`. Mutable files are not removed when you remove them from your + configuration. + This option is useful for programs that don't have a very good + support for read-only configurations. + ''; + }; + }) ); in mergeAttrsList ( @@ -72,7 +69,9 @@ in config = { home.activation.mutableFileGeneration = let - allFiles = concatLists (map (attrPath: attrValues (getAttrFromPath attrPath config)) fileOptionAttrPaths); + allFiles = concatLists ( + map (attrPath: attrValues (getAttrFromPath attrPath config)) fileOptionAttrPaths + ); filterMutableFiles = filter ( file: @@ -82,7 +81,8 @@ in mutableFiles = filterMutableFiles allFiles; - toCommand = file: + toCommand = + file: let source = escapeShellArg file.source; target = escapeShellArg file.target; diff --git a/packages/copyous.nix b/packages/copyous.nix @@ -0,0 +1,51 @@ +{ + lib, + pkgs, + ... +}: +with pkgs; +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-copyous"; + version = "1.2.0"; + + src = fetchzip { + url = "https://github.com/boerdereinar/copyous/releases/download/v${version}/copyous@boerdereinar.dev.zip"; + hash = "sha256-3yE0+F/E1/qrGGO6loaMoCzf5gtT1j964/HdytU0ePM="; + stripRoot = false; + }; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + runHook preBuild + glib-compile-schemas --strict schemas + runHook postBuild + ''; + + preInstall = '' + sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${libgda6}/lib/girepository-1.0');\nGIRepository.Repository.dup_default().prepend_search_path('${gsound}/lib/girepository-1.0');\n" lib/preferences/dependencies/dependencies.js + sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${libgda6}/lib/girepository-1.0');\n" lib/misc/db.js + sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${gsound}/lib/girepository-1.0');\n" lib/common/sound.js + sed -i "1i import GIRepository from 'gi://GIRepository';\nGIRepository.Repository.dup_default().prepend_search_path('${gsound}/lib/girepository-1.0');\n" lib/preferences/general/feedbackSettings.js + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/gnome-shell/extensions + cp -r -T . $out/share/gnome-shell/extensions/copyous@boerdereinar.dev + runHook postInstall + ''; + + passthru = { + extensionPortalSlug = "copyous"; + extensionUuid = "copyous@boerdereinar.dev"; + }; + + meta = with lib; { + description = "Modern Clipboard Manager for GNOME"; + homepage = "https://github.com/boerdereinar/copyous"; + license = licenses.gpl3Plus; + maintainers = [ "maydayv7" ]; + platforms = platforms.linux; + }; +} diff --git a/shells/android.nix b/shells/android.nix @@ -10,22 +10,15 @@ let (androidEnv.composeAndroidPackages { cmdLineToolsVersion = "8.0"; toolsVersion = "26.1.1"; - platformToolsVersion = "34.0.5"; + platformToolsVersion = "35.0.2"; buildToolsVersions = [ buildTools ]; includeEmulator = false; - platformVersions = [ - "33" - "34" - "35" - ]; + platformVersions = [ "35" ]; includeSystemImages = false; includeSources = false; cmakeVersions = [ "3.22.1" ]; includeNDK = true; - ndkVersions = [ - "27.0.12077973" - "26.3.11579264" - ]; + ndkVersions = [ "27.0.12077973" ]; extraLicenses = [ "android-sdk-license" "android-sdk-preview-license"