diff --git a/flake.nix b/flake.nix index 6f666ad..8a034a4 100644 --- a/flake.nix +++ b/flake.nix @@ -13,32 +13,54 @@ }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; + + name = "scannedImageExtractor"; in { - packages.${system} = let - name = "scannedImageExtractor"; - in { - default = pkgs.gccStdenv.mkDerivation { - inherit name; - src = ./.; + packages.${system} = { + default = let + desktopItem = pkgs.makeDesktopItem { + inherit name; - nativeBuildInputs = with pkgs; [ - cmake - opencv2 - liblbfgs - qt5.full - libsForQt5.qt5.wrapQtAppsHook - ]; + exec = name; + desktopName = "Scanned Image Extractor"; + terminal = false; + icon = name; + mimeTypes = ["x-content/image-dcf"]; + categories = ["Graphics" "Photography" "GNOME" "KDE"]; + }; + in + pkgs.gccStdenv.mkDerivation { + inherit name; + src = ./.; - dontUseCmakeConfigure = true; - buildPhase = '' - cmake scannerExtract -DCMAKE_BUILD_TYPE=release -DOPENCV2=1 - make - ''; + nativeBuildInputs = with pkgs; [ + cmake + opencv2 + liblbfgs + qt5.full + libsForQt5.qt5.wrapQtAppsHook + ]; - installPhase = '' - install -m 555 ${name} -Dt $out/bin - ''; - }; + configurePhase = '' + cmake scannerExtract -DCMAKE_BUILD_TYPE=release -DOPENCV2=1 + ''; + + buildPhase = '' + make + ''; + + installPhase = '' + install -m 555 ${name} -Dt $out/bin + + # Install .desktop file + install -m 444 ${desktopItem}/share/applications/${name}.desktop -Dt $out/share/applications + + # Install icons + for dimension in 128 256; do + install -m 444 $src/scannerExtract/ico/${name}''${dimension}x''${dimension}.png -D $out/share/icons/''${dimension}x''${dimension}/apps/${name}.png + done + ''; + }; appImage = let src = nix-appimage.bundlers.${system}.default self.packages.${system}.default; @@ -55,6 +77,15 @@ }; }; + apps.${system} = { + appImage = { + program = "${pkgs.writeShellScript "scannedImageExtractor" '' + ${pkgs.appimage-run}/bin/appimage-run ${self.packages.${system}.appImage}/${name}.AppImage + ''}"; + type = "app"; + }; + }; + devShells = { default = pkgs.mkShellNoCC { packages = with pkgs; [