fix: Use wrapGAppsHook4 to actually get icons in the applications

This commit is contained in:
DashieTM 2024-04-19 17:50:12 +02:00
parent 57cacdb1c9
commit 4cfd212947
16 changed files with 3357 additions and 37 deletions

View file

@ -7,20 +7,25 @@
glib
gtk4
gtk3
libadwaita
gtk-layer-shell
gtk4-layer-shell
direnv
dconf
gsettings-desktop-schemas
gnome.nixos-gsettings-overrides
gnome.adwaita-icon-theme
bibata-cursors
xorg.xkbutils
libxkbcommon
gnome-icon-theme
icon-library
gnome.adwaita-icon-theme
hicolor-icon-theme
morewaita-icon-theme
kdePackages.breeze-icons
];
gtk.iconCache.enable = false;
fonts.packages = with pkgs; [
cantarell-fonts
];

View file

@ -43,4 +43,5 @@
wallpaper = HDMI-A-1,/home/dashie/Pictures/backgrounds/shinobu_1200.jpg
splash = true
'';
programs.hyprland.extra_autostart= [ "streamdeck -n" ];
}

View file

@ -1,6 +1,6 @@
{
programs.streamdeck-ui = {
enable = true;
autoStart = true; # optional
};
#programs.streamdeck-ui = {
# enable = true;
# autoStart = false; # optional
#};
}

View file

@ -7,7 +7,15 @@
'';
type = lib.types.lines;
description = ''
Extra settings for foo.
hyprpaper
'';
};
extra_autostart = lib.mkOption {
default = [ ];
example = [ "your application" ];
type = lib.types.listOf lib.types.str;
description = ''
Extra exec_once.
'';
};
};

View file

@ -22,7 +22,10 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-nxLXT9SVorsgj7qzwX8Ipx8SDvyTYMAcpepTg62QL7o=";
nativeBuildInputs = with pkgs;[ pkg-config ];
nativeBuildInputs = with pkgs;[
pkg-config
wrapGAppsHook4
];
buildInputs = with pkgs;[
gtk4

View file

@ -22,7 +22,11 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-seFHiBht0vc+iqQw5bd22qVvdhCMqDthWuth3NTm8OY=";
nativeBuildInputs = with pkgs;[ pkg-config glib ];
nativeBuildInputs = with pkgs;[
pkg-config
glib
wrapGAppsHook4
];
buildInputs = with pkgs;[
dbus
@ -31,16 +35,6 @@ rustPlatform.buildRustPackage rec {
libadwaita
];
#postInstall = ''
# install -D --mode=444 $src/misc/ncspot.desktop $out/share/applications/${pname}.desktop
# install -D --mode=444 $src/images/logo.svg $out/share/icons/hicolor/scalable/apps/${pname}.png
#'';
#passthru = {
# updateScript = nix-update-script { };
# tests.version = testers.testVersion { package = oxinoti; };
#};
meta = with lib; {
description = "A work in progress notification daemon made with rust and gtk.";
homepage = "https://github.com/DashieTM/OxiDash";

View file

@ -22,7 +22,10 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-jIdev6K5MQ8jASDo1KWU89rSLd9UhI2MhTT4l7pP+tA=";
nativeBuildInputs = with pkgs;[ pkg-config ];
nativeBuildInputs = with pkgs;[
pkg-config
wrapGAppsHook4
];
buildInputs = with pkgs;[
dbus
@ -30,16 +33,6 @@ rustPlatform.buildRustPackage rec {
gtk-layer-shell
];
#postInstall = ''
# install -D --mode=444 $src/misc/ncspot.desktop $out/share/applications/${pname}.desktop
# install -D --mode=444 $src/images/logo.svg $out/share/icons/hicolor/scalable/apps/${pname}.png
#'';
#passthru = {
# updateScript = nix-update-script { };
# tests.version = testers.testVersion { package = oxinoti; };
#};
meta = with lib; {
description = "A work in progress notification daemon made with rust and gtk.";
homepage = "https://github.com/DashieTM/OxiNoti";

View file

@ -22,7 +22,10 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-RXaL5y0hohP9VJ7IJCEfdJjyxwY2l555xSwRa9ZiNKc=";
nativeBuildInputs = with pkgs;[ pkg-config ];
nativeBuildInputs = with pkgs;[
pkg-config
wrapGAppsHook4
];
buildInputs = with pkgs;[
dbus

View file

@ -22,7 +22,11 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-UeoBSHwMGfhkgRT7kmelcG3/omtB03Wh4IZrTy3yf3Y=";
nativeBuildInputs = with pkgs;[ pkg-config glib ];
nativeBuildInputs = with pkgs;[
pkg-config
glib
wrapGAppsHook4
];
buildInputs = with pkgs;[
gtk4

106
nix/override/streamdeck.nix Normal file
View file

@ -0,0 +1,106 @@
{ lib
, pkgs
, python3Packages
, fetchFromGitHub
, writeText
, makeDesktopItem
}:
python3Packages.buildPythonApplication rec {
pname = "streamdeck-ui";
version = "4.1.2";
src = fetchFromGitHub {
repo = "streamdeck-linux-gui";
owner = "streamdeck-linux-gui";
rev = "v${version}";
sha256 = "sha256-CSsFPGnKVQUCND6YOA9kfO41KS85C57YL9LcrWlQRKo=";
};
patches = [
# nixpkgs has a newer pillow version
./streamdeck_path.patch
];
desktopItems =
let
common = {
name = "streamdeck-ui";
desktopName = "Stream Deck UI";
icon = "streamdeck-ui";
exec = "streamdeck";
comment = "UI for the Elgato Stream Deck";
categories = [ "Utility" ];
};
in
builtins.map makeDesktopItem [
common
(common // {
name = "${common.name}-noui";
exec = "${common.exec} --no-ui";
noDisplay = true;
})
];
postInstall =
let
udevRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", TAG+="uaccess"
'';
in
''
mkdir -p $out/lib/systemd/user
substitute scripts/streamdeck.service $out/lib/systemd/user/streamdeck.service \
--replace '<path to streamdeck>' $out/bin/streamdeck
mkdir -p "$out/etc/udev/rules.d"
cp ${writeText "70-streamdeck.rules" udevRules} $out/etc/udev/rules.d/70-streamdeck.rules
mkdir -p "$out/share/pixmaps"
cp streamdeck_ui/logo.png $out/share/pixmaps/streamdeck-ui.png
'';
dontWrapQtApps = true;
dontWrapGApps = true;
makeWrapperArgs = [ "\${qtWrapperArgs[@]}" "\${gappsWrapperArgs[@]}" ];
format = "pyproject";
nativeBuildInputs = [
pkgs.python3Packages.poetry-core
pkgs.copyDesktopItems
pkgs.qt6.wrapQtAppsHook
pkgs.wrapGAppsHook
];
propagatedBuildInputs = with pkgs.python3Packages; [
importlib-metadata
setuptools
filetype
cairosvg
pillow
pynput
pyside6
streamdeck
xlib
] ++ lib.optionals stdenv.isLinux [
pkgs.qt6.qtwayland
];
nativeCheckInputs = [
pkgs.xvfb-run
pkgs.python3Packages.pytest
];
# checkPhase = ''
# xvfb-run pytest tests
# '';
meta = with lib; {
description = "Linux compatible UI for the Elgato Stream Deck";
homepage = "https://streamdeck-linux-gui.github.io/streamdeck-linux-gui/";
license = licenses.mit;
mainProgram = "streamdeck";
maintainers = with maintainers; [ majiir ];
};
}

View file

@ -0,0 +1,13 @@
diff --git a/pyproject.toml b/pyproject.toml
index 54a8c19..f107170 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -18,7 +18,7 @@ pillow = "10.2.0"
pyside6 = "^6.4.2"
CairoSVG = "^2.5.2"
filetype = "^1.0.10"
-importlib-metadata = "^6.8.0"
+importlib-metadata = "^7.0.0"
evdev = "^1.6.1"
[tool.poetry.group.docs.dependencies]

View file

@ -23,5 +23,6 @@
unzip
pkg-config
sqlite
plantuml
];
}

View file

@ -35,7 +35,6 @@ in
adw-gtk3
qt5ct
qt6ct
libadwaita
gnutar
fishPlugins.tide
nix-index
@ -44,6 +43,8 @@ in
nh
amberol
satty
pulseaudio
playerctl
(callPackage
../override/ncspot.nix
{ })
@ -62,6 +63,9 @@ in
(callPackage
../override/oxishut.nix
{ })
(callPackage
../override/streamdeck.nix
{ })
];
home.username = "dashie";
@ -88,6 +92,7 @@ in
gtk-theme = "adw-gtk3";
cursor-theme = "Bibata-Modern-Classic";
cursor-size = 24;
icon-theme = "MoreWaita";
};
};

View file

@ -1,5 +1,6 @@
{ pkgs
, inputs
, config
, ...
}:
{
@ -240,7 +241,7 @@
#"/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
"nextcloud --background"
"oxinoti"
];
] ++ config.programs.hyprland.extra_autostart;
plugin = {
hyprspace = {