Compare commits
11 Commits
92a019ce78
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| bbc73fc47e | |||
| ee1f72ff01 | |||
| fb5e1e2451 | |||
| c311013c0e | |||
| a1149682cb | |||
| 987029e6c8 | |||
| 104d0afbd2 | |||
| ac3834846f | |||
| 41c3ebec4b | |||
| feff32f4c0 | |||
| 706db3c704 |
@@ -6,6 +6,8 @@ Personal [NUR](https://github.com/nix-community/NUR) repository.
|
|||||||
|
|
||||||
- **librepods**: LibrePods Linux app (Qt6) — AirPods controls and battery monitoring.
|
- **librepods**: LibrePods Linux app (Qt6) — AirPods controls and battery monitoring.
|
||||||
- Upstream: `https://github.com/kavishdevar/librepods`
|
- Upstream: `https://github.com/kavishdevar/librepods`
|
||||||
|
- **looking-glass-client**: Looking Glass client.
|
||||||
|
- Upstream: `https://github.com/gnif/LookingGlass`
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -19,19 +21,15 @@ If you want to use this repo directly as a flake input:
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
my-nur.url = "github:<YOUR_GITHUB_USER>/nur-packages";
|
chiasson.url = "git+https://git.chiasson.cloud/Olivier/nur-packages";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, my-nur, ... }:
|
outputs = { self, nixpkgs, chiasson, ... }:
|
||||||
let
|
let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
overlays = [ my-nur.overlays.default ];
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
packages.${system}.default = pkgs.librepods;
|
packages.${system}.default = chiasson.packages.${system}.librepods;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
# example-package = pkgs.callPackage ./pkgs/example-package { };
|
# example-package = pkgs.callPackage ./pkgs/example-package { };
|
||||||
librepods = pkgs.callPackage ./pkgs/librepods { };
|
librepods = pkgs.callPackage ./pkgs/librepods { };
|
||||||
|
flow-browser-bin = pkgs.callPackage ./pkgs/flow-browser-bin { };
|
||||||
|
looking-glass-client = pkgs.callPackage ./pkgs/looking-glass-client { };
|
||||||
# some-qt5-package = pkgs.libsForQt5.callPackage ./pkgs/some-qt5-package { };
|
# some-qt5-package = pkgs.libsForQt5.callPackage ./pkgs/some-qt5-package { };
|
||||||
# ...
|
# ...
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
{ lib
|
||||||
|
, appimageTools
|
||||||
|
, fetchurl
|
||||||
|
, runCommand
|
||||||
|
, stdenv
|
||||||
|
, mesa
|
||||||
|
, vips
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
pname = "flow-browser-bin";
|
||||||
|
version = "0.8.6";
|
||||||
|
|
||||||
|
# Flow bundles `sharp`, which attempts to dlopen libvips with a filename that
|
||||||
|
# includes the libvips version (e.g. libvips-cpp.so.8.17.3). Nixpkgs provides
|
||||||
|
# libvips with a different SONAME-based filename (e.g. libvips-cpp.so.42.19.3),
|
||||||
|
# so we provide compatibility symlinks in the FHS env.
|
||||||
|
vipsSharpCompat = runCommand "flow-browser-vips-compat" { } ''
|
||||||
|
mkdir -p $out/lib
|
||||||
|
# Link to the SONAME symlinks provided by nixpkgs, so we don't hardcode the
|
||||||
|
# 42.x.y patchlevel.
|
||||||
|
ln -sf ${vips.out}/lib/libvips-cpp.so.42 $out/lib/libvips-cpp.so.8
|
||||||
|
ln -sf ${vips.out}/lib/libvips.so.42 $out/lib/libvips.so.8
|
||||||
|
|
||||||
|
# `sharp` wants an exact libvips filename including patchlevel (observed in
|
||||||
|
# Flow 0.8.6: libvips-cpp.so.8.17.3). Provide a small compatibility set:
|
||||||
|
# - the version bundled with Flow (`8.17.3`)
|
||||||
|
# - the current nixpkgs vips.version (helps when they match)
|
||||||
|
for v in 8.17.3 ${vips.version}; do
|
||||||
|
ln -sf ${vips.out}/lib/libvips-cpp.so.42 $out/lib/libvips-cpp.so.$v
|
||||||
|
ln -sf ${vips.out}/lib/libvips.so.42 $out/lib/libvips.so.$v
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
src =
|
||||||
|
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||||
|
fetchurl {
|
||||||
|
url = "https://github.com/MultiboxLabs/flow-browser/releases/download/v${version}/flow-browser-${version}-x86_64.AppImage";
|
||||||
|
sha256 = "1s4i419vlwgqzy8p73msb6djf6bbdk530inwc6hr7rwz611cf0gz";
|
||||||
|
}
|
||||||
|
else if stdenv.hostPlatform.system == "aarch64-linux" then
|
||||||
|
fetchurl {
|
||||||
|
url = "https://github.com/MultiboxLabs/flow-browser/releases/download/v${version}/flow-browser-${version}-arm64.AppImage";
|
||||||
|
sha256 = "0n2cp0519z43z5aa6mc7xzrhp6mpfjl7fkls29hk6db4mzv6sfsn";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw "flow-browser-bin: unsupported system: ${stdenv.hostPlatform.system}";
|
||||||
|
|
||||||
|
appimageContents = appimageTools.extractType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
appimageTools.wrapType2 {
|
||||||
|
inherit pname version src;
|
||||||
|
|
||||||
|
extraPkgs = _pkgs: [
|
||||||
|
vipsSharpCompat
|
||||||
|
mesa
|
||||||
|
];
|
||||||
|
|
||||||
|
# Ensure `sharp` can find libvips in the bubblewrapped FHS env.
|
||||||
|
# (Relying on /usr/lib64 + ld.so cache can be flaky depending on the env.)
|
||||||
|
profile = ''
|
||||||
|
export LD_LIBRARY_PATH="${vipsSharpCompat}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
|
||||||
|
|
||||||
|
# Help Electron/ANGLE find GL/EGL drivers inside the FHS env.
|
||||||
|
export LIBGL_DRIVERS_PATH="${mesa}/lib/dri"
|
||||||
|
export __EGL_VENDOR_LIBRARY_DIRS="${mesa}/share/glvnd/egl_vendor.d''${__EGL_VENDOR_LIBRARY_DIRS:+:}$__EGL_VENDOR_LIBRARY_DIRS"
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraInstallCommands = ''
|
||||||
|
# Desktop entry
|
||||||
|
install -D -m 444 ${appimageContents}/Flow.desktop \
|
||||||
|
$out/share/applications/flow-browser.desktop
|
||||||
|
|
||||||
|
substituteInPlace $out/share/applications/flow-browser.desktop \
|
||||||
|
--replace-fail 'Exec=AppRun' "Exec=$out/bin/${pname}"
|
||||||
|
|
||||||
|
# Help launchers detect the binary without relying on PATH.
|
||||||
|
if grep -q '^TryExec=' $out/share/applications/flow-browser.desktop; then
|
||||||
|
sed -i "s|^TryExec=.*|TryExec=$out/bin/${pname}|" $out/share/applications/flow-browser.desktop
|
||||||
|
else
|
||||||
|
echo "TryExec=$out/bin/${pname}" >> $out/share/applications/flow-browser.desktop
|
||||||
|
fi
|
||||||
|
|
||||||
|
# appimageTools.wrapType2 tends to name the wrapper with the version suffix
|
||||||
|
# (e.g. flow-browser-bin-0.8.6). Provide a stable name for launchers/scripts.
|
||||||
|
if [ -e "$out/bin/${pname}-${version}" ] && [ ! -e "$out/bin/${pname}" ]; then
|
||||||
|
ln -s "$out/bin/${pname}-${version}" "$out/bin/${pname}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Keep the launcher name stable (avoid showing version suffixes in menus).
|
||||||
|
if grep -q '^Name=' $out/share/applications/flow-browser.desktop; then
|
||||||
|
sed -i 's/^Name=.*/Name=Flow/' $out/share/applications/flow-browser.desktop
|
||||||
|
else
|
||||||
|
echo 'Name=Flow' >> $out/share/applications/flow-browser.desktop
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Icon
|
||||||
|
install -D -m 444 ${appimageContents}/usr/share/icons/hicolor/512x512/apps/Flow.png \
|
||||||
|
$out/share/icons/hicolor/512x512/apps/flow-browser.png
|
||||||
|
|
||||||
|
substituteInPlace $out/share/applications/flow-browser.desktop \
|
||||||
|
--replace-fail 'Icon=Flow' 'Icon=flow-browser'
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A modern, privacy-focused browser with a minimalistic design (binary AppImage)";
|
||||||
|
homepage = "https://github.com/multiboxlabs/flow-browser";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
|
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||||
|
mainProgram = "flow-browser-bin";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -10,13 +10,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "librepods";
|
pname = "librepods";
|
||||||
version = "0.1.0";
|
version = "0.2.0-alpha.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "kavishdevar";
|
owner = "kavishdevar";
|
||||||
repo = "librepods";
|
repo = "librepods";
|
||||||
rev = "linux-v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-ZvHbSSW0rfcsNUORZURe0oBHQbnqmS5XT9ffVMwjIMU=";
|
hash = "sha256-37dLiXC+eO4f5waLKgMMpHXH1m6W54O/l2axJsnyU5M=";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = "${src.name}/linux";
|
sourceRoot = "${src.name}/linux";
|
||||||
|
|||||||
@@ -0,0 +1,140 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
lib,
|
||||||
|
fetchFromGitHub,
|
||||||
|
pkg-config,
|
||||||
|
cmake,
|
||||||
|
freefont_ttf,
|
||||||
|
spice-protocol,
|
||||||
|
nettle,
|
||||||
|
libbfd,
|
||||||
|
fontconfig,
|
||||||
|
libffi,
|
||||||
|
expat,
|
||||||
|
libGL,
|
||||||
|
nanosvg,
|
||||||
|
libX11,
|
||||||
|
libxkbcommon,
|
||||||
|
libXext,
|
||||||
|
libXrandr,
|
||||||
|
libXi,
|
||||||
|
libXScrnSaver,
|
||||||
|
libXinerama,
|
||||||
|
libXcursor,
|
||||||
|
libXpresent,
|
||||||
|
libXdmcp,
|
||||||
|
wayland,
|
||||||
|
wayland-protocols,
|
||||||
|
wayland-scanner,
|
||||||
|
pipewire,
|
||||||
|
pulseaudio,
|
||||||
|
libsamplerate,
|
||||||
|
openGLSupport ? true,
|
||||||
|
xorgSupport ? true,
|
||||||
|
waylandSupport ? true,
|
||||||
|
pipewireSupport ? true,
|
||||||
|
pulseSupport ? true,
|
||||||
|
rev ? "27fe47cb",
|
||||||
|
hash ? "sha256-I84oVLeS63mnR19vTalgvLvA5RzCPTXV+tSsw+ImDwQ=",
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "looking-glass-client";
|
||||||
|
version = rev;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "gnif";
|
||||||
|
repo = "LookingGlass";
|
||||||
|
rev = rev;
|
||||||
|
hash = hash;
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
pkg-config
|
||||||
|
wayland-scanner
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
[
|
||||||
|
libX11
|
||||||
|
libGL
|
||||||
|
freefont_ttf
|
||||||
|
spice-protocol
|
||||||
|
expat
|
||||||
|
libbfd
|
||||||
|
nettle
|
||||||
|
fontconfig
|
||||||
|
libffi
|
||||||
|
nanosvg
|
||||||
|
]
|
||||||
|
++ lib.optionals xorgSupport [
|
||||||
|
libxkbcommon
|
||||||
|
libXi
|
||||||
|
libXScrnSaver
|
||||||
|
libXinerama
|
||||||
|
libXcursor
|
||||||
|
libXpresent
|
||||||
|
libXext
|
||||||
|
libXrandr
|
||||||
|
libXdmcp
|
||||||
|
]
|
||||||
|
++ lib.optionals waylandSupport [
|
||||||
|
libxkbcommon
|
||||||
|
wayland
|
||||||
|
wayland-protocols
|
||||||
|
]
|
||||||
|
++ lib.optionals pipewireSupport [
|
||||||
|
pipewire
|
||||||
|
libsamplerate
|
||||||
|
]
|
||||||
|
++ lib.optionals pulseSupport [
|
||||||
|
pulseaudio
|
||||||
|
libsamplerate
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags =
|
||||||
|
[
|
||||||
|
"-DOPTIMIZE_FOR_NATIVE=OFF"
|
||||||
|
]
|
||||||
|
++ lib.optionals (!openGLSupport) ["-DENABLE_OPENGL=no"]
|
||||||
|
++ lib.optionals (!xorgSupport) ["-DENABLE_X11=no"]
|
||||||
|
++ lib.optionals (!waylandSupport) ["-DENABLE_WAYLAND=no"]
|
||||||
|
++ lib.optionals (!pulseSupport) ["-DENABLE_PULSEAUDIO=no"]
|
||||||
|
++ lib.optionals (!pipewireSupport) ["-DENABLE_PIPEWIRE=no"];
|
||||||
|
|
||||||
|
# GCC can warn about maybe-uninitialized inside vendored nanosvg and Looking
|
||||||
|
# Glass treats warnings as errors, which breaks the build.
|
||||||
|
NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [
|
||||||
|
"-Wno-error=maybe-uninitialized"
|
||||||
|
];
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
echo ${finalAttrs.src.rev} > source/VERSION
|
||||||
|
export sourceRoot="source/client"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/share/pixmaps
|
||||||
|
cp $src/resources/lg-logo.png $out/share/pixmaps
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "KVM Frame Relay (KVMFR) implementation";
|
||||||
|
longDescription = ''
|
||||||
|
Looking Glass is an open source application that allows the use of a KVM
|
||||||
|
(Kernel-based Virtual Machine) configured for VGA PCI Pass-through
|
||||||
|
without an attached physical monitor, keyboard or mouse. This is the final
|
||||||
|
step required to move away from dual booting with other operating systems
|
||||||
|
for legacy programs that require high performance graphics.
|
||||||
|
'';
|
||||||
|
homepage = "https://looking-glass.io/";
|
||||||
|
downloadPage = "https://github.com/gnif/LookingGlass/releases";
|
||||||
|
changelog = "https://github.com/gnif/LookingGlass/commits/${rev}";
|
||||||
|
branch = "master";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
sourceProvenance = with sourceTypes; [ fromSource ];
|
||||||
|
mainProgram = "looking-glass-client";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user