hope this works

This commit is contained in:
elwrcl committed 2026-06-07 10:28:08 +03:00
1 parent f0a8f448fd
commit 91313154bc
6 files changed
+219 -50

No files matched your search

+15 -1
View File
@@ -31,6 +31,20 @@ with pkgs;
loupe loupe
wine wine
# some kde stuff
kdePackages.kdegraphics-thumbnailers
kdePackages.plasma-integration
kdePackages.breeze-icons
kdePackages.kio-extras
kdePackages.qtwayland
kdePackages.kio-admin
kdePackages.kio-fuse
kdePackages.kservice
kdePackages.dolphin
kdePackages.qtsvg
kdePackages.kio
kdePackages.kdf
# qol-hyprland # qol-hyprland
gpu-screen-recorder gpu-screen-recorder
wl-clipboard wl-clipboard
@@ -134,7 +148,7 @@ with pkgs;
uv uv
# editors # editors
zed-editor-fhs zed-editor-fhs_git
neovim neovim
vscode vscode
+51 -37
View File
@@ -1,4 +1,7 @@
{ ... }: {
pkgs,
...
}:
{ {
imports = [ imports = [
@@ -7,44 +10,55 @@
./audio ./audio
]; ];
xdg.mime = { xdg = {
enable = true; mime = {
defaultApplications = { enable = true;
# gui
"text/html" = "zen-beta.desktop";
"x-scheme-handler/http" = "zen-beta.desktop";
"x-scheme-handler/https" = "zen-beta.desktop";
"x-scheme-handler/about" = "zen-beta.desktop";
"x-scheme-handler/unknown" = "zen-beta.desktop";
"x-scheme-handler/steam" = "steam.desktop";
# media defaultApplications = {
"image/png" = "org.gnome.Loupe.desktop"; # gui
"image/jpeg" = "org.gnome.Loupe.desktop"; "text/html" = "zen-beta.desktop";
"image/gif" = "org.gnome.Loupe.desktop"; "x-scheme-handler/http" = "zen-beta.desktop";
"image/bmp" = "org.gnome.Loupe.desktop"; "x-scheme-handler/https" = "zen-beta.desktop";
"image/svg+xml" = "org.gnome.Loupe.desktop"; "x-scheme-handler/about" = "zen-beta.desktop";
"image/webp" = "org.gnome.Loupe.desktop"; "x-scheme-handler/unknown" = "zen-beta.desktop";
"image/tiff" = "org.gnome.Loupe.desktop"; "x-scheme-handler/steam" = "steam.desktop";
"video/mp4" = "mpv.desktop";
"video/x-matroska" = "mpv.desktop";
"video/webm" = "mpv.desktop";
"video/avi" = "mpv.desktop";
"video/quicktime" = "mpv.desktop";
"audio/mpeg" = "mpv.desktop";
"audio/flac" = "mpv.desktop";
"audio/ogg" = "mpv.desktop";
# code # media
"text/plain" = "zeditor.desktop"; "image/png" = "org.gnome.Loupe.desktop";
"text/x-rust" = "zeditor.desktop"; "image/jpeg" = "org.gnome.Loupe.desktop";
"text/x-nix" = "zeditor.desktop"; "image/gif" = "org.gnome.Loupe.desktop";
"text/x-csrc" = "zeditor.desktop"; "image/bmp" = "org.gnome.Loupe.desktop";
"text/x-chdr" = "zeditor.desktop"; "image/svg+xml" = "org.gnome.Loupe.desktop";
"text/x-python" = "zeditor.desktop"; "image/webp" = "org.gnome.Loupe.desktop";
"text/x-shellscript" = "zeditor.desktop"; "image/tiff" = "org.gnome.Loupe.desktop";
"application/json" = "zeditor.desktop";
"application/x-shellscript" = "zeditor.desktop"; "video/mp4" = "mpv.desktop";
"video/x-matroska" = "mpv.desktop";
"video/webm" = "mpv.desktop";
"video/avi" = "mpv.desktop";
"video/quicktime" = "mpv.desktop";
"audio/mpeg" = "mpv.desktop";
"audio/flac" = "mpv.desktop";
"audio/ogg" = "mpv.desktop";
# code
"text/plain" = "zeditor.desktop";
"text/x-rust" = "zeditor.desktop";
"text/x-nix" = "zeditor.desktop";
"text/x-csrc" = "zeditor.desktop";
"text/x-chdr" = "zeditor.desktop";
"text/x-python" = "zeditor.desktop";
"text/x-shellscript" = "zeditor.desktop";
"application/json" = "zeditor.desktop";
"application/x-shellscript" = "zeditor.desktop";
};
}; };
menus.enable = true;
}; };
environment.etc."xdg/menus/applications.menu".text =
builtins.readFile
"${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu";
} }
+2 -12
View File
@@ -21,22 +21,12 @@ let
hash = "sha256-tZ1rZ+4bRxarcFQhP8V2Mfz0sJ5rBgHYLu2ulrQwL+U="; hash = "sha256-tZ1rZ+4bRxarcFQhP8V2Mfz0sJ5rBgHYLu2ulrQwL+U=";
}; };
}); });
custom-mesa = pkgs.mesa.overrideAttrs (oldAttrs: { hasvk13-layer = pkgs.callPackage ./hasvk13-layer {};
patches = (oldAttrs.patches or []) ++ [
../../../../patches/hd4000-hasvk13.patch
];
});
custom-mesa-32 = pkgs.pkgsi686Linux.mesa.overrideAttrs (oldAttrs: {
patches = (oldAttrs.patches or []) ++ [
../../../../patches/hd4000-hasvk13.patch
];
});
in in
{ {
hardware.graphics = { hardware.graphics = {
package = custom-mesa;
package32 = custom-mesa-32;
extraPackages = [ extraPackages = [
hasvk13-layer
wayland-intel-vaapi-driver wayland-intel-vaapi-driver
pkgs.libvdpau-va-gl pkgs.libvdpau-va-gl
pkgs.intel-ocl pkgs.intel-ocl
@@ -0,0 +1,22 @@
{ pkgs }:
pkgs.stdenv.mkDerivation {
name = "vulkan-layer-hasvk13";
src = ./.;
buildInputs = [ pkgs.vulkan-headers ];
buildPhase = ''
$CC -shared -fPIC -O2 -o libVkLayer_hasvk13.so hasvk13_layer.c \
-I${pkgs.vulkan-headers}/include
'';
installPhase = ''
mkdir -p $out/lib $out/share/vulkan/implicit_layer.d
cp libVkLayer_hasvk13.so $out/lib/
substitute hasvk13_layer.json \
$out/share/vulkan/implicit_layer.d/hasvk13_layer.json \
--subst-var out
'';
}
@@ -0,0 +1,115 @@
/*
* Vulkan implicit layer forces VK 1.3.348
*/
#include <vulkan/vulkan.h>
#include <vulkan/vk_layer.h>
#include <string.h>
static PFN_vkGetInstanceProcAddr g_next_gipa = NULL;
static PFN_vkGetPhysicalDeviceProperties g_next_gdp = NULL;
static PFN_vkGetPhysicalDeviceProperties2 g_next_gdp2 = NULL;
#define HASVK13_API_VERSION VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)
#define INTEL_VENDOR_ID 0x8086
static int is_intel_below_13(uint32_t vendorID, uint32_t apiVersion)
{
return vendorID == INTEL_VENDOR_ID
&& VK_API_VERSION_MAJOR(apiVersion) == 1
&& VK_API_VERSION_MINOR(apiVersion) < 3;
}
VKAPI_ATTR VkResult VKAPI_CALL
HaVK13_EnumerateInstanceVersion(uint32_t *pApiVersion)
{
*pApiVersion = HASVK13_API_VERSION;
return VK_SUCCESS;
}
VKAPI_ATTR VkResult VKAPI_CALL
HaVK13_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkInstance *pInstance)
{
VkLayerInstanceCreateInfo *link =
(VkLayerInstanceCreateInfo *)pCreateInfo->pNext;
while (link &&
!(link->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO &&
link->function == VK_LAYER_LINK_INFO))
link = (VkLayerInstanceCreateInfo *)link->pNext;
if (!link) return VK_ERROR_INITIALIZATION_FAILED;
g_next_gipa = link->u.pLayerInfo->pfnNextGetInstanceProcAddr;
link->u.pLayerInfo = link->u.pLayerInfo->pNext;
PFN_vkCreateInstance next_ci =
(PFN_vkCreateInstance)g_next_gipa(NULL, "vkCreateInstance");
VkResult res = next_ci(pCreateInfo, pAllocator, pInstance);
if (res != VK_SUCCESS) return res;
g_next_gdp = (PFN_vkGetPhysicalDeviceProperties)
g_next_gipa(*pInstance, "vkGetPhysicalDeviceProperties");
g_next_gdp2 = (PFN_vkGetPhysicalDeviceProperties2)
g_next_gipa(*pInstance, "vkGetPhysicalDeviceProperties2");
return VK_SUCCESS;
}
VKAPI_ATTR void VKAPI_CALL
HaVK13_GetPhysicalDeviceProperties(VkPhysicalDevice device,
VkPhysicalDeviceProperties *props)
{
if (g_next_gdp) g_next_gdp(device, props);
if (props && is_intel_below_13(props->vendorID, props->apiVersion))
props->apiVersion = HASVK13_API_VERSION;
}
VKAPI_ATTR void VKAPI_CALL
HaVK13_GetPhysicalDeviceProperties2(VkPhysicalDevice device,
VkPhysicalDeviceProperties2 *props2)
{
if (g_next_gdp2) g_next_gdp2(device, props2);
if (!props2) return;
VkPhysicalDeviceProperties *props = &props2->properties;
if (!is_intel_below_13(props->vendorID, props->apiVersion)) return;
props->apiVersion = HASVK13_API_VERSION;
VkBaseOutStructure *s = (VkBaseOutStructure *)props2->pNext;
while (s) {
if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES) {
VkPhysicalDeviceVulkan12Properties *p12 =
(VkPhysicalDeviceVulkan12Properties *)s;
p12->conformanceVersion = (VkConformanceVersion){ 1, 3, 0, 0 };
}
if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES) {
VkPhysicalDeviceDriverProperties *drv =
(VkPhysicalDeviceDriverProperties *)s;
drv->conformanceVersion = (VkConformanceVersion){ 1, 3, 0, 0 };
}
s = s->pNext;
}
}
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
HaVK13_GetInstanceProcAddr(VkInstance instance, const char *pName)
{
#define INTERCEPT(fn) \
if (strcmp(pName, #fn) == 0) return (PFN_vkVoidFunction)HaVK13_##fn;
INTERCEPT(GetInstanceProcAddr)
INTERCEPT(EnumerateInstanceVersion)
INTERCEPT(CreateInstance)
INTERCEPT(GetPhysicalDeviceProperties)
INTERCEPT(GetPhysicalDeviceProperties2)
#undef INTERCEPT
return g_next_gipa ? g_next_gipa(instance, pName) : NULL;
}
@@ -0,0 +1,14 @@
{
"file_format_version": "1.1.2",
"layer": {
"name": "VK_LAYER_hasvk13_version_override",
"type": "GLOBAL",
"library_path": "@out@/lib/libVkLayer_hasvk13.so",
"api_version": "1.3.0",
"implementation_version": "1",
"description": "Vulkan 1.3.348 implict layer.",
"disable_environment": {
"DISABLE_HASVK13_LAYER": "1"
}
}
}