Skip to content

Nix support #25

Description

@Deluxo

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 ];
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions