Compare commits
12 Commits
108b714fcb
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| edf415bf03 | |||
| 1911081355 | |||
| dabf6c0f60 | |||
| 8e716b5fe8 | |||
| d7419bcf3b | |||
| 7d9ecb8823 | |||
| 6084fcca27 | |||
| 22ab193f83 | |||
| 3bb0ac8aee | |||
| d51bb39659 | |||
| f0e7b822eb | |||
| 288a60cfa1 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
/PinePods-0.8.2
|
||||
PinePods-0.8.2/
|
||||
PinePods-0.8.2/
|
||||
result
|
||||
228
README.md
Normal file
228
README.md
Normal file
@@ -0,0 +1,228 @@
|
||||
# PinePods Nix Package
|
||||
|
||||
A Nix/NixOS package for [PinePods](https://github.com/madeofpendletonwool/PinePods), a self-hosted podcast manager. This packages the PinePods desktop client (Tauri v2) for NixOS.
|
||||
|
||||
> **Note:** PinePods is a client/server application. You will need a running PinePods server instance to use this package. See the [PinePods documentation](https://github.com/madeofpendletonwool/PinePods) for server setup instructions.
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- NixOS
|
||||
- A running PinePods server (self-hosted)
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
### Option 1: NixOS Module via Flake (recommended)
|
||||
|
||||
Add PinePods as a flake input in your system `flake.nix`:
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||
|
||||
pinepods.url = "git+https://git.briannelson.dev/brian/PinePods-nix";
|
||||
pinepods.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, pinepods, ... }: {
|
||||
nixosConfigurations.mymachine = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
pinepods.nixosModules.pinepods
|
||||
{
|
||||
services.pinepods = {
|
||||
enable = true;
|
||||
# Your server address
|
||||
server = "https://pinepods.example.com";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
Then rebuild your system:
|
||||
```bash
|
||||
sudo nixos-rebuild switch
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Option 2: NixOS Module without Flakes
|
||||
|
||||
Clone this repository:
|
||||
```bash
|
||||
git clone https://git.briannelson.dev/brian/PinePods-nix.git
|
||||
```
|
||||
|
||||
Add the module to your `/etc/nixos/configuration.nix`:
|
||||
```nix
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
/path/to/pinepods-nix/pinepods-module.nix
|
||||
];
|
||||
|
||||
services.pinepods = {
|
||||
enable = true;
|
||||
# Your server address
|
||||
server = "https://pinepods.example.com";
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
Then rebuild your system:
|
||||
```bash
|
||||
sudo nixos-rebuild switch
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Option 3: Install to user profile with nix-env
|
||||
|
||||
Clone this repository:
|
||||
```bash
|
||||
git clone https://git.briannelson.dev/brian/PinePods-nix.git
|
||||
cd pinepods-nix
|
||||
```
|
||||
|
||||
Install to your user profile:
|
||||
```bash
|
||||
nix-env -f default.nix -iA pinepods
|
||||
```
|
||||
|
||||
This is persistent across reboots. To uninstall:
|
||||
```bash
|
||||
nix-env -e pinepods
|
||||
```
|
||||
|
||||
> **Note:** With this option the `server` URL cannot be pre-configured. You will need to enter it manually in the app on first launch.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
### Module Options
|
||||
|
||||
| Option | Type | Default | Description |
|
||||
|--------|------|---------|-------------|
|
||||
| `services.pinepods.enable` | bool | `false` | Enable the PinePods desktop client |
|
||||
| `services.pinepods.server` | string | `""` | URL of your PinePods server (e.g. `https://pinepods.example.com`) |
|
||||
|
||||
When `server` is set, the app will navigate directly to your server on launch. If left empty, the app will open to a blank page and you will need to navigate to your server manually in the address bar.
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
pinepods-nix/
|
||||
├── flake.nix # Nix flake definition
|
||||
├── default.nix # Package definition entry point (non-flake)
|
||||
├── pinepods.nix # Main package derivation
|
||||
├── pinepods-module.nix # NixOS module definition
|
||||
├── patch-lib.py # Build-time patch for server URL support
|
||||
├── example-usage-flake.nix # Example flake for users
|
||||
├── Cargo.lock # Cargo lockfile for src-tauri (Tauri binary)
|
||||
└── Cargo.frontend.lock # Cargo lockfile for web/ (Yew/WASM frontend)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How It Works
|
||||
|
||||
PinePods is a multi-component application. This package builds two components from source:
|
||||
|
||||
**Frontend (pinepods-frontend):** The Yew/WASM web frontend is compiled using `trunk` targeting `wasm32-unknown-unknown`. The output is a static `dist/` directory containing HTML, WASM, and CSS assets.
|
||||
|
||||
**Desktop client (pinepods):** The Tauri v2 desktop binary is compiled with `cargo`, with the pre-built frontend assets embedded directly into the binary via the `custom-protocol` feature. At build time, `tauri.conf.json` is patched to remove the `devUrl` so Tauri serves the embedded assets instead of connecting to a development server. The Rust source is also patched to read the `PINEPODS_SERVER` environment variable and navigate the app window to that URL on launch.
|
||||
|
||||
**Runtime dependencies** are provided via `wrapProgram`:
|
||||
- WebKit2GTK 4.1 (Tauri v2 requirement)
|
||||
- GStreamer + plugins (audio playback)
|
||||
- libayatana-appindicator (system tray icon)
|
||||
- GLib/GTK3/Cairo stack
|
||||
|
||||
---
|
||||
|
||||
## Building from Source
|
||||
|
||||
To build manually without installing:
|
||||
|
||||
```bash
|
||||
git clone https://git.briannelson.dev/brian/PinePods-nix.git
|
||||
cd pinepods-nix
|
||||
nix-build -A pinepods
|
||||
./result/bin/pinepods
|
||||
```
|
||||
|
||||
To use the dev shell with all build tools available:
|
||||
```bash
|
||||
nix develop
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Updating to a New Version of PinePods
|
||||
*This project is still a WIP so I have not been able to test these step until a new version of PinePods gets released*
|
||||
|
||||
To update to a new PinePods release:
|
||||
|
||||
1. Update the `version` and `sha256` in `pinepods.nix`:
|
||||
```nix
|
||||
version = "0.8.3"; # new version
|
||||
sha256 = "..."; # run nix-build and paste the correct hash from the error
|
||||
```
|
||||
|
||||
2. Replace the Cargo lockfiles with the new versions:
|
||||
```bash
|
||||
curl -L https://github.com/madeofpendletonwool/PinePods/archive/refs/tags/0.8.3.tar.gz | tar xz
|
||||
cp PinePods-0.8.3/web/Cargo.lock ./Cargo.frontend.lock
|
||||
cp PinePods-0.8.3/web/src-tauri/Cargo.lock ./Cargo.lock
|
||||
```
|
||||
|
||||
3. Check if the `wasm-bindgen` version changed:
|
||||
```bash
|
||||
grep "wasm-bindgen" PinePods-0.8.3/web/Cargo.toml
|
||||
```
|
||||
If it changed, update `wasm-bindgen-cli` in `default.nix` and `TRUNK_TOOLS_WASM_BINDGEN` in `pinepods.nix` accordingly.
|
||||
|
||||
4. Rebuild and test:
|
||||
```bash
|
||||
nix-build -A pinepods
|
||||
./result/bin/pinepods
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**White screen on launch**
|
||||
Make sure `WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1` is set. This is handled automatically by the package wrapper.
|
||||
|
||||
**No audio playback**
|
||||
GStreamer plugins are included but if audio still doesn't work, check that your system has the required codec support:
|
||||
```bash
|
||||
gst-inspect-1.0 autoaudiosink
|
||||
gst-inspect-1.0 appsink
|
||||
```
|
||||
|
||||
**Login doesn't persist between sessions**
|
||||
This is a known limitation of the WebKit localStorage implementation. As a workaround, set `services.pinepods.server` in your NixOS configuration so the app always navigates to your server on launch.
|
||||
|
||||
**Tray icon shows generic icon**
|
||||
The icon is installed under the app's reverse-DNS identifier `com.gooseberrydevelopment.pinepods`. Make sure your icon theme cache is up to date:
|
||||
```bash
|
||||
gtk-update-icon-cache
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
This Nix packaging is provided as-is. PinePods itself is licensed under GPL-3.0. See the [PinePods repository](https://github.com/madeofpendletonwool/PinePods) for details.
|
||||
14
default.nix
14
default.nix
@@ -1,7 +1,13 @@
|
||||
let
|
||||
let
|
||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-25.11";
|
||||
pkgs = import nixpkgs { config = {}; overlays = []; };
|
||||
in
|
||||
in
|
||||
{ serverUrl ? "" }:
|
||||
{
|
||||
pinepods = pkgs.callPackage ./pinepods.nix { };
|
||||
}
|
||||
pinepods = pkgs.callPackage ./pinepods.nix {
|
||||
# Pin wasm-bindgen-cli to exactly the version PinePods requires
|
||||
wasm-bindgen-cli = pkgs.wasm-bindgen-cli_0_2_105;
|
||||
inherit (pkgs) binaryen tailwindcss_3 libayatana-appindicator gst_all_1 python3;
|
||||
inherit serverUrl;
|
||||
};
|
||||
}
|
||||
|
||||
34
example-useage-flake.nix
Normal file
34
example-useage-flake.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
description = "Example NixOS configuration using the PinePods flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
|
||||
|
||||
pinepods.url = "git+https://git.briannelson.dev/brian/pinepods-nix";
|
||||
# If you want to ensure pinepods uses the same nixpkgs as your system
|
||||
pinepods.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, pinepods, ... }: {
|
||||
nixosConfigurations.mymachine = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
# Import the PinePods NixOS module
|
||||
pinepods.nixosModules.pinepods
|
||||
|
||||
({ config, pkgs, ... }: {
|
||||
# Enable PinePods and point it at your server
|
||||
services.pinepods = {
|
||||
enable = true;
|
||||
server = "https://pinepods.example.com";
|
||||
};
|
||||
|
||||
# The rest of your normal NixOS configuration goes here...
|
||||
# networking.hostName = "mymachine";
|
||||
# users.users.youruser = { ... };
|
||||
# etc.
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1772822230,
|
||||
"narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=",
|
||||
"owner": "NixOs",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "71caefce12ba78d84fe618cf61644dce01cf3a96",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOs",
|
||||
"ref": "nixos-25.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
66
flake.nix
Normal file
66
flake.nix
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
description = "Pinepods desktop client - self-hosted podcast manager";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOs/nixpkgs/nixos-25.11";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs { inherit system; config = {}; overlays = []; };
|
||||
|
||||
makePinepods = { serverUrl ? "" }:
|
||||
pkgs.callPackage ./pinepods.nix {
|
||||
wasm-bindgen-cli = pkgs.wasm-bindgen-cli_0_2_105;
|
||||
inherit (pkgs) binaryen tailwindcss_3 libayatana-appindicator gst_all_1 python3;
|
||||
inherit serverUrl;
|
||||
};
|
||||
in
|
||||
{
|
||||
packages.${system} = {
|
||||
pinepods = makePinepods { };
|
||||
default = makePinepods { };
|
||||
};
|
||||
|
||||
nixosModules.pinepods = { config, lib, pkgs, ... }:
|
||||
let
|
||||
cfg = config.services.pinepods;
|
||||
in
|
||||
{
|
||||
options.services.pinepods = {
|
||||
enable = lib.mkEnableOption "PinePods podcast manager";
|
||||
|
||||
server = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
example = "https://pinepods.example.com";
|
||||
description = ''
|
||||
The URL oof your self-hosted PinePods server.
|
||||
The app will navigate directly to this address on launch.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [
|
||||
(makePinepods { serverUrl = cfg.server; })
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
nixosModules.default = self.nixosModules.pinepods;
|
||||
|
||||
devShells.${system}.default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
trunk
|
||||
wasm-bindgen-cli_0_2_105
|
||||
cargo
|
||||
rustc
|
||||
llvmPackages.lld
|
||||
binaryen
|
||||
tailwindcss_3
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
28
patch-lib.py
Normal file
28
patch-lib.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import sys
|
||||
|
||||
target = '.run(tauri::generate_context!())'
|
||||
replacement = '''.setup(|app| {
|
||||
if let Ok(server_url) = std::env::var("PINEPODS_SERVER") {
|
||||
if !server_url.is_empty() {
|
||||
use tauri::Manager;
|
||||
let window = app.get_webview_window("main").unwrap();
|
||||
window.navigate(server_url.parse().unwrap()).unwrap();
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
.run(tauri::generate_context!())'''
|
||||
|
||||
with open(sys.argv[1], 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
if target not in content:
|
||||
print(f"ERROR: Could not find target string in {sys.argv[1]}")
|
||||
sys.exit(1)
|
||||
|
||||
content = content.replace(target, replacement)
|
||||
|
||||
with open(sys.argv[1], 'w') as f:
|
||||
f.write(content)
|
||||
|
||||
print("Successfully patched lib.rs")
|
||||
24
pinepods-module.nix
Normal file
24
pinepods-module.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.pinepods;
|
||||
pinepods-pkg = (import "${toString ./.}/default.nix" {
|
||||
serverUrl = cfg.server;
|
||||
}).pinepods;
|
||||
in
|
||||
{
|
||||
options.services.pinepods = {
|
||||
enable = lib.mkEnableOption "PinePods podcast manager";
|
||||
|
||||
server = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
example = "https://pinepods.example.com";
|
||||
description = "The URL of your PinePods server.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ pinepods-pkg ];
|
||||
};
|
||||
}
|
||||
86
pinepods.nix
86
pinepods.nix
@@ -3,6 +3,9 @@
|
||||
, rustPlatform
|
||||
, pkg-config
|
||||
, wrapGAppsHook3
|
||||
, llvmPackages
|
||||
, binaryen
|
||||
, tailwindcss_3
|
||||
, webkitgtk_4_1
|
||||
, gtk3
|
||||
, glib
|
||||
@@ -21,6 +24,10 @@
|
||||
, wasm-bindgen-cli
|
||||
, trunk
|
||||
, makeWrapper
|
||||
, libayatana-appindicator
|
||||
, gst_all_1
|
||||
, python3
|
||||
, serverUrl ? ""
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -42,24 +49,28 @@ let
|
||||
sourceRoot = "source/web";
|
||||
cargoRoot = ".";
|
||||
|
||||
postUnpack = ''
|
||||
cp ${builtins.toString ./.}/Cargo.frontend.lock $sourceRoot/Cargo.lock
|
||||
'';
|
||||
|
||||
cargoLock = {
|
||||
lockFile = "${builtins.toString ./.}/Cargo.frontend.lock";
|
||||
lockFile = ./Cargo.frontend.lock;
|
||||
outputHashes = {
|
||||
"i18nrs-0.1.7" = "sha256-LEHQ8GI3eVKwhtxetxyIY4HV16TS3D9n+2Hh+sm5j74=";
|
||||
};
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ trunk wasm-bindgen-cli ];
|
||||
nativeBuildInputs = [ trunk wasm-bindgen-cli llvmPackages.lld binaryen tailwindcss_3 ];
|
||||
|
||||
buildPhase = ''
|
||||
cp -r . $NIX_BUILD_TOP/web-build
|
||||
chmod -R u+w $NIX_BUILD_TOP/web-build
|
||||
cd $NIX_BUILD_TOP/web-build
|
||||
mkdir -p dist
|
||||
|
||||
export HOME=$NIX_BUILD_TOP
|
||||
export XDG_CACHE_HOME=$NIX_BUILD_TOP/cache
|
||||
mkdir -p $NIX_BUILD_TOP/cache
|
||||
export TRUNK_SKIP_VERSION_CHECK=true
|
||||
export TRUNK_TOOLS_WASM_BINDGEN=0.2.105
|
||||
export TRUNK_TOOLS_WASM_OPT=version_124
|
||||
|
||||
RUSTFLAGS="--cfg=web_sys_unstable_apis" trunk build --release
|
||||
'';
|
||||
|
||||
@@ -77,19 +88,17 @@ rustPlatform.buildRustPackage {
|
||||
|
||||
sourceRoot = "source/web/src-tauri";
|
||||
cargoRoot = ".";
|
||||
|
||||
postUnpack = ''
|
||||
cp ${builtins.toString ./.}/Cargo.lock $sourceRoot/Cargo.lock
|
||||
'';
|
||||
cargoExtraArgs = "--bin app --features custom-protocol";
|
||||
|
||||
cargoLock = {
|
||||
lockFile = "${builtins.toString ./.}/Cargo.lock";
|
||||
lockFile = ./Cargo.lock;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
makeWrapper
|
||||
python3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -108,38 +117,83 @@ rustPlatform.buildRustPackage {
|
||||
librsvg
|
||||
glib-networking
|
||||
gsettings-desktop-schemas
|
||||
libayatana-appindicator
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-plugins-bad
|
||||
gst_all_1.gst-plugins-ugly
|
||||
gst_all_1.gst-libav
|
||||
];
|
||||
|
||||
OPENSSL_NO_VENDOR = "1";
|
||||
TAURI_SKIP_DEVSERVER_CHECK = "true";
|
||||
|
||||
preBuild = ''
|
||||
# Link the pre-built frontend dist where tauri.conf.json expects it (../ from src-tauri)
|
||||
chmod -R u+w $NIX_BUILD_TOP/source
|
||||
ln -s ${frontend} $NIX_BUILD_TOP/source/web/dist
|
||||
sed -i '/"devUrl"/d' $NIX_BUILD_TOP/source/web/src-tauri/tauri.conf.json
|
||||
|
||||
# Patch lib.rs to read PINEPODS_SERVER env var and navigate to it on startup
|
||||
python3 ${./patch-lib.py} $NIX_BUILD_TOP/source/web/src-tauri/src/lib.rs
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 target/release/pinepods $out/bin/pinepods
|
||||
install -Dm755 target/x86_64-unknown-linux-gnu/release/app $out/bin/pinepods
|
||||
|
||||
# Desktop entry
|
||||
if [ -f ../../pinepods.desktop ]; then
|
||||
install -Dm644 ../../pinepods.desktop $out/share/applications/pinepods.desktop
|
||||
install -Dm644 ../../pinepods.desktop \
|
||||
$out/share/applications/pinepods.desktop
|
||||
fi
|
||||
|
||||
for size in 32x32 64x64 128x128 256x256; do
|
||||
# Icons
|
||||
for size in 32x32 128x128 256x256; do
|
||||
if [ -f icons/''${size}.png ]; then
|
||||
install -Dm644 icons/''${size}.png \
|
||||
$out/share/icons/hicolor/''${size}/apps/pinepods.png
|
||||
fi
|
||||
done
|
||||
|
||||
# Tray icon — install as the app icon so the taskbar uses it
|
||||
if [ -f icons/icon.png ]; then
|
||||
install -Dm644 icons/icon.png \
|
||||
$out/share/icons/hicolor/256x256/apps/com.gooseberrydevelopment.pinepods.png
|
||||
fi
|
||||
|
||||
# AppStream metadata
|
||||
if [ -f com.gooseberrydevelopment.pinepods.metainfo.xml ]; then
|
||||
install -Dm644 com.gooseberrydevelopment.pinepods.metainfo.xml \
|
||||
$out/share/metainfo/com.gooseberrydevelopment.pinepods.metainfo.xml
|
||||
fi
|
||||
|
||||
# Create desktop entry
|
||||
mkdir -p $out/share/applications
|
||||
cat > $out/share/applications/pinepods.desktop << EOF
|
||||
[Desktop Entry]
|
||||
Name=Pinepods
|
||||
Comment=A self-hosted podcast manager
|
||||
Exec=pinepods
|
||||
Icon=com.gooseberrydevelopment.pinepods
|
||||
Type=Application
|
||||
Categories=Audio;Music;
|
||||
StartupNotify=true
|
||||
StartupWMClass=Pinepods
|
||||
EOF
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/pinepods \
|
||||
--set WEBKIT_DISABLE_COMPOSITING_MODE 1 \
|
||||
--set WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS 1 \
|
||||
${lib.optionalString (serverUrl != "") "--set PINEPODS_SERVER \"${serverUrl}\""} \
|
||||
--prefix LD_LIBRARY_PATH : "${libayatana-appindicator}/lib" \
|
||||
--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "${gst_all_1.gstreamer}/lib/gstreamer-1.0:${gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0:${gst_all_1.gst-plugins-ugly}/lib/gstreamer-1.0:${gst_all_1.gst-libav}/lib/gstreamer-1.0" \
|
||||
--prefix XDG_DATA_DIRS : "$out/share" \
|
||||
--prefix XDG_DATA_DIRS : "${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}" \
|
||||
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules"
|
||||
'';
|
||||
@@ -153,4 +207,4 @@ rustPlatform.buildRustPackage {
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "pinepods";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user