diff --git a/modules/desktop/window-managers/hyprland.nix b/modules/desktop/window-managers/hyprland.nix index 4d82562..8e96a30 100644 --- a/modules/desktop/window-managers/hyprland.nix +++ b/modules/desktop/window-managers/hyprland.nix @@ -6,7 +6,6 @@ flake, ... }: - mkOizysModule config "hyprland" { programs.hyprland = enabled; security.pam.services.swaylock = { }; @@ -42,8 +41,14 @@ mkOizysModule config "hyprland" { # not even clear why I need to add this but ¯\_(ツ)_/¯ kdePackages.qtwayland + ]) - ++ [ (flake.pkg "hyprman") ] + ++ [ + (flake.pkg "hyprman") + ((flake.pkgs "self").flameshot.override { + enableWlrSupport = true; + }) + ] # swww-git is broken ++ (with (flake.pkgs "nixpkgs-wayland"); [ @@ -59,7 +64,6 @@ mkOizysModule config "hyprland" { # (overlayFrom "hyprland") ]; - services.getty = { extraArgs = [ "--skip-login" ]; loginOptions = "-p -- ${config.oizys.user}"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 6d8d376..7047ae6 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,4 +12,6 @@ in llm = python3Packages.callPackage ./llm { }; llm-claude-3 = python3Packages.callPackage ./llm-plugins/llm-claude-3 { }; + flameshot = pkgs.callPackage ./flameshot { }; + } diff --git a/pkgs/flameshot/default.nix b/pkgs/flameshot/default.nix new file mode 100644 index 0000000..01a30a3 --- /dev/null +++ b/pkgs/flameshot/default.nix @@ -0,0 +1,136 @@ +{ + stdenv, + lib, + overrideSDK, + fetchFromGitHub, + fetchpatch, + cmake, + imagemagick, + libicns, + libsForQt5, + grim, + makeBinaryWrapper, + nix-update-script, + enableWlrSupport ? false, + enableMonochromeIcon ? false, +}: + +assert stdenv.hostPlatform.isDarwin -> (!enableWlrSupport); + +let + stdenv' = if stdenv.hostPlatform.isDarwin then overrideSDK stdenv "11.0" else stdenv; +in + +stdenv'.mkDerivation { + pname = "flameshot"; + # wlr screenshotting is currently only available on unstable version (>12.1.0) + version = "12.1.0-unstable-2024-11-18"; + + src = fetchFromGitHub { + owner = "flameshot-org"; + repo = "flameshot"; + rev = "729f494d535356adfbd65dc127a5c82ea218006e"; + hash = "sha256-hrUPBVWnTYvgcWOSnRQAywr6RG5qMph5Nf0AbnKdpj0="; + }; + + # is this necessary with newer versions? + # patches = [ + # # https://github.com/flameshot-org/flameshot/pull/3166 + # # fixes fractional scaling calculations on wayland + # (fetchpatch { + # name = "10-fix-wayland.patch"; + # url = "https://github.com/flameshot-org/flameshot/commit/5fea9144501f7024344d6f29c480b000b2dcd5a6.patch"; + # hash = "sha256-SnjVbFMDKD070vR4vGYrwLw6scZAFaQA4b+MbI+0W9E="; + # }) + # ]; + + cmakeFlags = + [ + (lib.cmakeBool "DISABLE_UPDATE_CHECKER" true) + (lib.cmakeBool "USE_MONOCHROME_ICON" enableMonochromeIcon) + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + (lib.cmakeBool "USE_WAYLAND_CLIPBOARD" true) + (lib.cmakeBool "USE_WAYLAND_GRIM" enableWlrSupport) + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + (lib.cmakeFeature "Qt5_DIR" "${libsForQt5.qtbase.dev}/lib/cmake/Qt5") + ]; + + nativeBuildInputs = + [ + cmake + libsForQt5.qttools + libsForQt5.qtsvg + libsForQt5.wrapQtAppsHook + makeBinaryWrapper + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + imagemagick + libicns + ]; + + buildInputs = [ + libsForQt5.qtbase + libsForQt5.kguiaddons + ]; + + postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' + # Fix icns generation running concurrently with png generation + sed -E -i '/"iconutil -o/i\ + )\ + execute_process(\ + ' src/CMakeLists.txt + + # Replace unavailable commands + sed -E -i \ + -e 's/"sips -z ([0-9]+) ([0-9]+) +(.+) --out /"magick \3 -resize \1x\2\! /' \ + -e 's/"iconutil -o (.+) -c icns (.+)"/"png2icns \1 \2\/*{16,32,128,256,512}.png"/' \ + src/CMakeLists.txt + ''; + + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' + mkdir $out/Applications + mv $out/bin/flameshot.app $out/Applications + + ln -s $out/Applications/flameshot.app/Contents/MacOS/flameshot $out/bin/flameshot + + rm -r $out/share/applications + rm -r $out/share/dbus* + rm -r $out/share/icons + rm -r $out/share/metainfo + ''; + + dontWrapQtApps = true; + + postFixup = + let + binary = + if stdenv.hostPlatform.isDarwin then + "Applications/flameshot.app/Contents/MacOS/flameshot" + else + "bin/flameshot"; + in + '' + wrapProgram $out/${binary} \ + ${lib.optionalString enableWlrSupport "--prefix PATH : ${lib.makeBinPath [ grim ]}"} \ + ''${qtWrapperArgs[@]} + ''; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + }; + + meta = with lib; { + description = "Powerful yet simple to use screenshot software"; + homepage = "https://github.com/flameshot-org/flameshot"; + changelog = "https://github.com/flameshot-org/flameshot/releases"; + mainProgram = "flameshot"; + maintainers = with maintainers; [ + scode + oxalica + ]; + license = licenses.gpl3Plus; + platforms = platforms.linux ++ platforms.darwin; + }; +}