feat: Initial commit

This commit is contained in:
uttarayan21
2025-10-26 03:11:00 +05:30
commit dfd1b0b866
7 changed files with 564 additions and 0 deletions

133
package.nix Normal file
View File

@@ -0,0 +1,133 @@
{
lib,
stdenv,
fetchFromGitHub,
python3,
wrapGAppsHook3,
gobject-introspection,
gtk3,
nautilus,
nautilus-python,
ffmpeg,
makeDesktopItem,
copyDesktopItems,
}:
stdenv.mkDerivation rec {
pname = "nautilus-file-converter-addon";
version = "1.3.11";
src = fetchFromGitHub {
owner = "Lich-Corals";
repo = "linux-file-converter-addon";
rev = version;
hash = "sha256-wldyhPeZayzrwFcYyFDUhlp8/8PQZ7tnJZ88v37kAa8=";
};
nativeBuildInputs = [
wrapGAppsHook3
gobject-introspection
copyDesktopItems
];
buildInputs = [
gtk3
nautilus
nautilus-python
python3
];
propagatedBuildInputs = with python3.pkgs; [
pillow
python-magic
pygobject3
# Optional dependencies for additional format support
pillow-heif
];
dontBuild = true;
installPhase = ''
runHook preInstall
# Create necessary directories
mkdir -p $out/share/nautilus-python/extensions
mkdir -p $out/bin
# Install the main script for Nautilus
cp nautilus-fileconverter.py $out/share/nautilus-python/extensions/linux-file-converter-addon.py
# Also install as a standalone script for other file managers
cp nautilus-fileconverter.py $out/bin/linux-file-converter-addon
chmod +x $out/bin/linux-file-converter-addon
# Install additional files for other file managers if they exist
if [ -f "nautilus-fileconverter.nemo_action" ]; then
mkdir -p $out/share/nemo/actions
cp nautilus-fileconverter.nemo_action $out/share/nemo/actions/linux-file-converter-addon.nemo_action
# Update the exec path in the nemo action
substituteInPlace $out/share/nemo/actions/linux-file-converter-addon.nemo_action \
--replace "nautilus-fileconverter.py" "$out/bin/linux-file-converter-addon"
fi
if [ -f "linux-file-converter-addon.kde_servicemenu" ]; then
mkdir -p $out/share/kio/servicemenus
cp linux-file-converter-addon.kde_servicemenu $out/share/kio/servicemenus/linux-file-converter-addon.desktop
# Update the exec path in the service menu
substituteInPlace $out/share/kio/servicemenus/linux-file-converter-addon.desktop \
--replace "python3 ~/.local/bin/linux-file-converter-addon.py" "$out/bin/linux-file-converter-addon"
fi
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "linux-file-converter-addon";
desktopName = "Linux File Converter Addon";
comment = "Convert files from context menu";
exec = "${placeholder "out"}/bin/linux-file-converter-addon";
categories = ["Utility" "FileTools"];
noDisplay = true;
})
];
postInstall = ''
# Patch the script to use absolute paths for dependencies and disable auto-updates
for script in $out/share/nautilus-python/extensions/linux-file-converter-addon.py $out/bin/linux-file-converter-addon; do
# Use absolute path for ffmpeg
substituteInPlace $script \
--replace 'ffmpeg' '${ffmpeg}/bin/ffmpeg' \
--replace '"automaticUpdates": True,' '"automaticUpdates": False,'
done
'';
postFixup = ''
# Wrap the standalone script to ensure proper environment
wrapProgram $out/bin/linux-file-converter-addon \
--prefix PATH : ${lib.makeBinPath [ffmpeg]} \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--prefix PYTHONPATH : "${python3.withPackages (ps: with ps; [pillow python-magic pygobject3 pillow-heif])}/lib/python*/site-packages"
'';
meta = with lib; {
description = "File converter addon for Linux file managers (Nautilus, Nemo, Thunar, Dolphin)";
longDescription = ''
Linux File Converter Addon adds context menu options to convert between
various image, audio, and video formats using FFmpeg and Python libraries.
Supports multiple file managers including Nautilus, Nemo, Thunar, and Dolphin.
Features:
- Convert images between formats (PNG, JPEG, WebP, TIFF, etc.)
- Convert audio files (MP3, WAV, FLAC, OGG, etc.)
- Convert video files (MP4, WebM, AVI, etc.)
- Resize images to specific dimensions
- Built-in wallpaper and square format presets
- Support for modern formats like HEIF, AVIF (with optional dependencies)
'';
homepage = "https://github.com/Lich-Corals/linux-file-converter-addon";
license = licenses.agpl3Plus;
# maintainers = [];
platforms = platforms.linux;
mainProgram = "linux-file-converter-addon";
};
}