diff options
Diffstat (limited to 'pkgs/applications/file-managers/spacefm/default.nix')
-rw-r--r-- | pkgs/applications/file-managers/spacefm/default.nix | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pkgs/applications/file-managers/spacefm/default.nix b/pkgs/applications/file-managers/spacefm/default.nix new file mode 100644 index 0000000000000..433109cd86af3 --- /dev/null +++ b/pkgs/applications/file-managers/spacefm/default.nix @@ -0,0 +1,68 @@ +{ pkgs, fetchFromGitHub, lib, stdenv, gtk3, udev, desktop-file-utils +, shared-mime-info, intltool, pkg-config, wrapGAppsHook, ffmpegthumbnailer +, jmtpfs, ifuseSupport ? false, ifuse ? null, lsof, udisks2 }: + +stdenv.mkDerivation rec { + pname = "spacefm"; + version = "1.0.6"; + + src = fetchFromGitHub { + owner = "IgnorantGuru"; + repo = "spacefm"; + rev = version; + sha256 = "089r6i40lxcwzp60553b18f130asspnzqldlpii53smz52kvpirx"; + }; + + patches = [ + # fix compilation error due to missing include + ./glibc-fix.patch + + # restrict GDK backends to only X11 + ./x11-only.patch + ]; + + # Workaround build failure on -fno-common toolchains: + # ld: spacefm-item-prop.o:src/settings.h:123: multiple definition of + # `xsets'; vfs/spacefm-vfs-file-info.o:src/settings.h:123: first defined here + # TODO: can be removed once https://github.com/IgnorantGuru/spacefm/pull/772 + # or equivalent is merged upstream. + NIX_CFLAGS_COMPILE = "-fcommon"; + + configureFlags = [ + "--with-bash-path=${pkgs.bash}/bin/bash" + ]; + + preConfigure = '' + configureFlags="$configureFlags --sysconfdir=$out/etc" + ''; + + postInstall = '' + rm -f $out/etc/spacefm/spacefm.conf + ln -s /etc/spacefm/spacefm.conf $out/etc/spacefm/spacefm.conf + ''; + + preFixup = '' + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share") + ''; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ + gtk3 udev desktop-file-utils shared-mime-info intltool + wrapGAppsHook ffmpegthumbnailer jmtpfs lsof udisks2 + ] ++ (if ifuseSupport then [ ifuse ] else []); + # Introduced because ifuse doesn't build due to CVEs in libplist + # Revert when libplist builds again… + + meta = with lib; { + description = "A multi-panel tabbed file manager"; + longDescription = '' + Multi-panel tabbed file and desktop manager for Linux + with built-in VFS, udev- or HAL-based device manager, + customizable menu system, and bash integration + ''; + homepage = "http://ignorantguru.github.io/spacefm/"; + platforms = platforms.linux; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jagajaga obadz ]; + }; +} |