From 1bf50449e25e7be585827cb2bbafc1fc076c5040 Mon Sep 17 00:00:00 2001 From: Tristan Druyen Date: Mon, 22 Jan 2024 15:50:26 +0100 Subject: [PATCH] Add spotube & some tweaks - move steam pkg override into os-mods/desktop/gaming.nix - simplify nixpkgs overrides in flake.nix --- flake.nix | 33 +++++---------- home-mods/firefox/default.nix | 6 +-- os-mods/desktop/gaming.nix | 16 ++++++++ pkgs/spotube.nix | 72 +++++++++++++++++++++++++++++++++ systems/nixos-pulse/default.nix | 1 + 5 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 pkgs/spotube.nix diff --git a/flake.nix b/flake.nix index e7767b1..b04abdb 100644 --- a/flake.nix +++ b/flake.nix @@ -76,16 +76,14 @@ let system = "x86_64-linux"; unstable-os = import nixos-unstable pkgs-args; - unstable-os-overlay = _final: _prev: { + unstable-pkgs = import nixpkgs-unstable pkgs-args; + my-overlay = final: prev: { + my = self.packages."${system}"; + unstable-pkgs = unstable-pkgs.pkgs; unstable-os = unstable-os.pkgs; }; - unstable-pkgs = import nixpkgs-unstable pkgs-args; - unstable-pkgs-overlay = _final: _prev: { - unstable-pkgs = unstable-pkgs.pkgs; - }; overlays = [ - unstable-os-overlay - unstable-pkgs-overlay + my-overlay emacs-overlay.overlay inputs.nix-alien.overlays.default inputs.nix-ld-rs.overlays.default @@ -95,23 +93,7 @@ inherit overlays; config = { allowUnfree = true; - packageOverrides = pkgs: { - steam = pkgs.steam.override { - extraPkgs = pkgs: - with pkgs.unstable-os; [ - xorg.libXcursor - xorg.libXi - xorg.libXinerama - xorg.libXScrnSaver - libpng - libpulseaudio - libvorbis - stdenv.cc.cc.lib - libkrb5 - keyutils - ]; - }; - }; + packageOverrides = pkgs: { }; permittedInsecurePackages = [ "electron-22.3.27" "electron-24.8.6" @@ -145,6 +127,9 @@ formatter = { ${system} = pkgs.nixpkgs-fmt; }; + packages."${system}" = { + spotube = pkgs.callPackage ./pkgs/spotube.nix { }; + }; diskoConfigurations = { nixos-desk = import ./systems/nixos-desk/disko.nix; nixos-pulse = import ./systems/nixos-pulse/disko.nix; diff --git a/home-mods/firefox/default.nix b/home-mods/firefox/default.nix index 8644206..523928c 100644 --- a/home-mods/firefox/default.nix +++ b/home-mods/firefox/default.nix @@ -51,9 +51,9 @@ clearurls consent-o-matic darkreader - dearrow - deutsch-de-language-pack - dictionary-german + dearrow + deutsch-de-language-pack + dictionary-german localcdn plasma-integration privacy-badger diff --git a/os-mods/desktop/gaming.nix b/os-mods/desktop/gaming.nix index 7a3c493..49253c4 100644 --- a/os-mods/desktop/gaming.nix +++ b/os-mods/desktop/gaming.nix @@ -5,6 +5,22 @@ }: { programs.steam = { enable = true; + package = pkgs.unstable-os.steam.override { + extraPkgs = pkgs: + with pkgs.unstable-os; [ + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXScrnSaver + libpng + libpulseaudio + libvorbis + stdenv.cc.cc.lib + libkrb5 + keyutils + ]; + }; + remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; }; diff --git a/pkgs/spotube.nix b/pkgs/spotube.nix new file mode 100644 index 0000000..cc03605 --- /dev/null +++ b/pkgs/spotube.nix @@ -0,0 +1,72 @@ +{ lib +, stdenv +, fetchurl +, autoPatchelfHook +, dpkg +, makeWrapper +, wrapGAppsHook +, libappindicator +, libnotify +, libsecret +, mpv-unwrapped +, xdg-user-dirs +, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "spotube"; + version = "3.4.0"; + + src = fetchurl { + url = "https://github.com/KRTirtho/spotube/releases/download/v${finalAttrs.version}/Spotube-linux-x86_64.deb"; + hash = "sha256-XBciTNWsmaY1C8ji+SCWWP/M/uIDZHM9fi9wucHJsBY="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + dpkg + makeWrapper + wrapGAppsHook + ]; + + buildInputs = [ + libappindicator + libnotify + libsecret + mpv-unwrapped + ]; + + dontWrapGApps = true; + + installPhase = '' + runHook preInstall + mkdir -p $out + mv usr/* $out + runHook postInstall + ''; + + preFixup = '' + patchelf $out/share/spotube/lib/libmedia_kit_native_event_loop.so \ + --replace-needed libmpv.so.1 libmpv.so.2 + ''; + + postFixup = '' + makeWrapper $out/share/spotube/spotube $out/bin/spotube \ + "''${gappsWrapperArgs[@]}" \ + --prefix LD_LIBRARY_PATH : $out/share/spotube/lib:${lib.makeLibraryPath [mpv-unwrapped]} \ + --prefix PATH : ${lib.makeBinPath [xdg-user-dirs]} + ''; + + meta = { + changelog = "https://github.com/KRTirtho/spotube/blob/v${finalAttrs.version}/CHANGELOG.md"; + description = "An open source Spotify client"; + longDescription = '' + Spotube is an open source, cross-platform Spotify client that + doesn't require Premium nor uses Electron + ''; + homepage = "https://spotube.netlify.app/"; + license = lib.licenses.bsdOriginal; + maintainers = with lib.maintainers; [ tomasajt ]; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + }; +}) diff --git a/systems/nixos-pulse/default.nix b/systems/nixos-pulse/default.nix index 4e722cc..8e3c5f5 100644 --- a/systems/nixos-pulse/default.nix +++ b/systems/nixos-pulse/default.nix @@ -148,6 +148,7 @@ android-tools android-udev-rules rustdesk + my.spotube ]; hardware = {