I've made a nix file use like so in my configuration nix:
imports = [
/home/theuser/.nix-configs/saturn.nix
];
Here's the actual nix of saturn.nix
{ config, lib, pkgs, ... }:
let
pname = "saturn";
version = "3.0.14";
# When bumping the version, update the url and hash below:
# sha256sum saturn-${version}-linux.AppImage
src = pkgs.fetchurl {
url = "https://github.com/Sheathed/Saturn/releases/download/v${version}/saturn-${version}-linux.AppImage";
sha256 = "sha256-lGJdx2fm9YVaK/w6bznxGixtilB/dma4fzLSdzguHC8=";
};
extracted = pkgs.appimageTools.extract { inherit pname version src; };
fhs = pkgs.appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: with pkgs; [
libayatana-appindicator
libayatana-indicator
ayatana-ido
libdbusmenu-gtk3
fontconfig
glib
cairo
pango
harfbuzz
atk
libepoxy
gdk-pixbuf
gcc14.cc.lib
mpv
];
};
saturn = pkgs.symlinkJoin {
name = "${pname}-${version}";
paths = [
(pkgs.writeShellScriptBin pname ''
# path_provider returns null for getDownloadsDirectory() on first run
# unless these XDG vars are set, which crashes the app (black window).
export XDG_DOWNLOAD_DIR="''${XDG_DOWNLOAD_DIR:-$HOME/Downloads}"
export XDG_DOCUMENTS_DIR="''${XDG_DOCUMENTS_DIR:-$HOME/Documents}"
exec ${fhs}/bin/saturn "$@"
'')
];
postBuild = ''
mkdir -p $out/share/applications $out/share/icons/hicolor/256x256/apps
cp ${extracted}/saturn.png $out/share/icons/hicolor/256x256/apps/saturn.png
cat > $out/share/applications/saturn.desktop <<EOF
[Desktop Entry]
Name=Saturn
GenericName=Music Application
Comment=Deezer music player
Exec=saturn %u
Icon=saturn
Terminal=false
Type=Application
StartupNotify=true
Categories=AudioVideo;Audio;Player;
Keywords=Music;Deezer;Player;Audio;Saturn;
EOF
'';
};
in
{
environment.systemPackages = [ saturn ];
}
I've made a nix file use like so in my configuration nix:
Here's the actual nix of
saturn.nix