redo apps/packages

This commit is contained in:
willemml 2023-03-17 14:51:38 -07:00
parent e5f4a95410
commit d32c9060b8
Signed by: willemml
GPG key ID: C3DE5DF6198DACBD
26 changed files with 408 additions and 336 deletions

View file

@ -1,51 +0,0 @@
{
definition = lib: pkgs:
(
let
versions = {
aarch64-darwin = "1101351";
x86_64-darwin = "1101350";
};
version = versions.${pkgs.stdenv.hostPlatform.system};
pname = "chromium";
appName = "Chromium";
srcs = {
aarch64-darwin = pkgs.fetchurl {
url =
"https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac_Arm/${version}/chrome-mac.zip";
sha256 = "sha256-LlbYlJmFLzyHIiygofa0Btm7NAOvWXXhmbjMHldVoGo=";
name = "${pname}_aarch64_${version}.zip";
};
x86_64-darwin = pkgs.fetchurl {
url =
"https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/${version}/chrome-mac.zip";
sha256 = "sha256-O+OnjakEpjCRbSjDysEA6RKKaKaSMw+LSO2ZLcxz2vM=";
name = "${pname}_x86_64_${version}.zip";
};
};
src = srcs.${pkgs.stdenv.hostPlatform.system};
in
lib.mk-mac-binpkg {
inherit pkgs src pname appName version;
srcsubdir = "chrome-mac";
meta = with pkgs.lib; {
description = "An open source web browser from Google.";
longDescription = ''
Chromium is an open source web browser from Google that aims to build a
safer, faster, and more stable way for all Internet users to experience
the web. It has a minimalist user interface and provides the vast majority
of source code for Google Chrome (which has some additional features).
'';
homepage = "https://www.chromium.org/";
license = licenses.bsd3;
platforms = platforms.linux;
mainProgram = "chromium";
};
}
);
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,17 +0,0 @@
{
definition = lib: pkgs: (
let
version = "109.0.1";
pname = "firefox";
appName = "Firefox";
src = pkgs.fetchurl {
url =
"https://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/mac/en-CA/Firefox%20${version}.dmg";
sha256 = "sha256-V/8W3qqYhJmte2tq/ZSPtYChdhv8WFQoSORYRaxva9Y=";
name = "${pname}_${version}.dmg";
};
in
lib.mk-mac-binpkg { inherit pkgs src pname appName version; }
);
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,63 +0,0 @@
{
definition = lib: pkgs:
let
version = "0.20.2";
date = "2022-12-27";
appName = "FreeCAD";
pname = "freecad";
src = pkgs.fetchurl {
url =
"https://github.com/FreeCAD/FreeCAD/releases/download/${version}/FreeCAD_${version}-${date}-conda-macOS-x86_64-py310.dmg";
sha256 = "sha256-OAi98HUacHcLHVYSadnQFPnEhutJvE4YfRBtPSZk00c=";
};
in
pkgs.stdenv.mkDerivation {
inherit version src;
name = pname;
nativeBuildInputs = [ pkgs.makeWrapper ];
dontUnpack = true;
installPhase = ''
export tempdir=$(mktemp -d -p /tmp)
cp $src freecad.dmg
/usr/bin/hdiutil attach -mountpoint "$tempdir" freecad.dmg
mkdir -p $out/Applications
cp -r "$tempdir/${appName}.app" $out/Applications
/usr/bin/hdiutil detach "$tempdir"
mkdir -p $out/bin
makeWrapper "$out/Applications/${appName}.app/Contents/MacOS/${appName}" "$out/bin/${pname}"
runHook postInstall
'';
meta = with pkgs.lib; {
homepage = "https://www.freecadweb.org/";
description = "General purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler";
longDescription = ''
FreeCAD is an open-source parametric 3D modeler made primarily to design
real-life objects of any size. Parametric modeling allows you to easily
modify your design by going back into your model history and changing its
parameters.
FreeCAD allows you to sketch geometry constrained 2D shapes and use them
as a base to build other objects. It contains many components to adjust
dimensions or extract design details from 3D models to create high quality
production ready drawings.
FreeCAD is designed to fit a wide range of uses including product design,
mechanical engineering and architecture. Whether you are a hobbyist, a
programmer, an experienced CAD user, a student or a teacher, you will feel
right at home with FreeCAD.
'';
license = licenses.lgpl2Plus;
platforms = platforms.darwin;
};
};
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

11
apps/home-switch.nix Normal file
View file

@ -0,0 +1,11 @@
{ writeShellApplication
, home-manager
,
}:
writeShellApplication {
name = "home-switch";
runtimeInputs = [ home-manager ];
text = ''
exec home-manager switch --flake . "$@"
'';
}

View file

@ -1,22 +0,0 @@
{
definition = lib: pkgs: pkgs.stdenv.mkDerivation {
name = "pinentry-mac";
src = pkgs.pinentry_mac;
installPhase = ''
# -*-sh-*-
mkdir -p "$out/bin"
cp "$src/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac" "$out/bin/pinentry-mac"
'';
meta = {
description = "Pinentry for GPG on Mac";
license = pkgs.lib.licenses.gpl2Plus;
homepage = "https://github.com/GPGTools/pinentry-mac";
platforms = pkgs.lib.platforms.darwin;
};
};
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,50 +0,0 @@
{
definition = lib: pkgs: pkgs.stdenv.mkDerivation {
name = "pinentry-touchid";
src = pkgs.fetchFromGitHub {
owner = "jorgelbg";
repo = "pinentry-touchid";
rev = "1170eb6bc7b23313aee622887b47b77be6e5fb5f";
sha256 = "sha256-asLFY7ztRKXEFsetB3Ym/0tJ1BBOn0yYpL8MIn1Z//0=";
};
nativeBuildInputs = with pkgs; [
go
gopls
gotools
darwin.apple_sdk.frameworks.CoreFoundation
darwin.apple_sdk.frameworks.Foundation
darwin.apple_sdk.frameworks.LocalAuthentication
];
sourceRoot = ".";
buildPhase = ''
unset GOROOT
export GOPATH="/tmp/gopath-$(echo $RANDOM | md5sum | head -c 20)"
export GOCACHE="/tmp/gocache-$(echo $RANDOM | md5sum | head -c 20)"
export NIX_LDFLAGS="-F${pkgs.darwin.apple_sdk.frameworks.CoreFoundation}/Library/Frameworks -framework CoreFoundation $NIX_LDFLAGS";
cd source
go mod download
go build
'';
installPhase = ''
mkdir -p $out/bin
mv pinentry-touchid $out/bin/pinentry-touchid
'';
meta = {
description = "Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.";
license = pkgs.lib.licenses.asl20;
homepage = "https://github.com/jorgelbg/pinentry-touchid";
platforms = pkgs.lib.platforms.darwin;
};
};
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,26 +0,0 @@
{
definition = lib: pkgs:
let
version = "4.4.5";
appName = "qBittorrent";
pname = "qbittorrent";
src = pkgs.fetchurl {
url =
"https://phoenixnap.dl.sourceforge.net/project/qbittorrent/qbittorrent-mac/qbittorrent-${version}/qbittorrent-${version}.dmg";
sha256 = "sha256-9h+gFAEU0tKrltOjnOKLfylbbBunGZqvPzQogdP9uQM=";
};
in
lib.mk-mac-binpkg {
inherit pkgs src pname appName version;
meta = with pkgs.lib; {
description = "Featureful free software BitTorrent client";
homepage = "https://www.qbittorrent.org/";
changelog = "https://github.com/qbittorrent/qBittorrent/blob/release-${version}/Changelog";
license = licenses.gpl2Plus;
platforms = platforms.darwin;
};
};
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,26 +0,0 @@
{
definition = lib: pkgs:
let
appName = "Spotify";
pname = "spotify";
version = "sha256-JESQZtyPE9o5PW/f5GdxbqbyeHCxs/oZEW0AakMJgKg=";
src = pkgs.fetchurl {
url = "https://download.scdn.co/Spotify.dmg";
hash = version;
name = "spotify-mac.dmg";
};
in
lib.mk-mac-binpkg {
inherit pkgs src pname appName version;
meta = with pkgs.lib; {
homepage = "https://www.spotify.com/";
description = "Play music from the Spotify music service";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = platforms.darwin;
};
};
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,35 +0,0 @@
{
definition = lib: pkgs:
let
appName = "VLC";
pname = "vlc";
version = "3.0.18";
srcs = {
aarch64-darwin = pkgs.fetchurl {
url =
"http://get.videolan.org/vlc/${version}/macosx/vlc-${version}-arm64.dmg";
sha256 = "sha256-mcJZvbxSIf1QgX9Ri3Dpv57hdeiQdDkDyYB7x3hmj0c=";
name = "${pname}_aarch64_${version}.dmg";
};
x86_64-darwin = pkgs.fetchurl {
url =
"http://get.videolan.org/vlc/${version}/macosx/vlc-${version}-intel64.dmg";
sha256 = "sha256-iO3N/Os70vaANn2QCdOKDBR/p1jy3TleQ0EsHgjOHMs=";
name = "${pname}_x86_64_${version}.dmg";
};
};
src = srcs.${pkgs.stdenv.hostPlatform.system};
in
lib.mk-mac-binpkg {
inherit pkgs src pname appName version;
meta = with pkgs.lib; {
description = "Cross-platform media player and streaming server";
homepage = "http://www.videolan.org/vlc/";
license = licenses.lgpl21Plus;
platforms = platforms.darwin;
};
};
systems = [ "aarch64-darwin" "x86_64-darwin" ];
}

View file

@ -1,16 +1,22 @@
{ lib, self, inputs, withSystem, config, ... }: {
flake =
let
buildProgram = system: definition: (withSystem system ({ pkgs, self', ... }: definition self.lib pkgs));
defineProgram = system: name: definition: { ${system}.${name} = buildProgram system definition; };
appsDir = self.lib.importDirToAttrs ../apps;
builtPrograms = lib.mapAttrsToList (name: value: (lib.forEach (builtins.filter (system: builtins.elem system config.systems) value.systems) (system: defineProgram system name value.definition))) appsDir;
flattenedPrograms = lib.flatten builtPrograms;
assembledPrograms = builtins.foldl' (a: b: lib.recursiveUpdate a b) { } flattenedPrograms;
assembledApps = lib.mapAttrsRecursiveCond (as: !(as ? "type" && as.type == "derivation")) (path: value: { type = "app"; program = lib.getExe value; }) assembledPrograms;
in
{
apps = assembledApps;
programs = assembledPrograms;
};
# Copyright (c) 2018 Terje Larsen
# This work is licensed under the terms of the MIT license.
# For a copy, see https://opensource.org/licenses/MIT.
# https://github.com/terlar/nix-config/blob/00c8a3622e8bc4cb522bbf335e6ede04ca07da40/flake-parts/apps.nix
{lib, ...}: {
perSystem = {pkgs, ...}:
lib.pipe ../apps [
lib.filesystem.listFilesRecursive
(map (file: pkgs.callPackage file {}))
(map (drv: {
apps.${drv.name} = {
type = "app";
program = lib.getExe drv;
};
checks."app-${drv.name}" = drv;
}))
(lib.fold lib.recursiveUpdate {})
];
}

View file

@ -4,5 +4,6 @@
./home-manager
./lib
./overlays.nix
./packages.nix
];
}

View file

@ -31,28 +31,6 @@
builtins.listToAttrs
];
mk-mac-binpkg = { src, version, pname, appName, pkgs, srcsubdir ? ".", ... }: pkgs.stdenv.mkDerivation {
inherit version src;
name = pname;
nativeBuildInputs = [ pkgs.undmg pkgs.unzip pkgs.makeWrapper ];
sourceRoot = ".";
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
cp -r "${srcsubdir}/${appName}.app" $out/Applications
# wrap executable to $out/bin
mkdir -p $out/bin
makeWrapper "$out/Applications/${appName}.app/Contents/MacOS/${appName}" "$out/bin/${pname}"
runHook postInstall
'';
};
mk-mac-binpkg = import ../../packages/mk-mac-binpkg.nix;
};
}

72
flake-parts/packages.nix Normal file
View file

@ -0,0 +1,72 @@
# Copyright (c) 2018 Terje Larsen
# This work is licensed under the terms of the MIT license.
# For a copy, see https://opensource.org/licenses/MIT.
# https://github.com/terlar/nix-config/blob/00c8a3622e8bc4cb522bbf335e6ede04ca07da40/flake-parts/packages.nix
{ self
, lib
, ...
}: {
perSystem =
{ config
, pkgs
, ...
}:
let
overlays = [
self.overlays.default
];
pkgs' = pkgs.extend (lib.composeManyExtensions overlays);
in
{
packages = {
inherit (pkgs')
chromium-mac
darwin-zsh-completions
firefox-mac
freecad-mac
org-auctex
pinentry-mac
pinentry-touchid
qbittorrent-mac
spotify-mac
vlc-mac;
};
legacyPackages = {
wrapPackage =
{ wrapper
, package
, exes ? [ (lib.getExe package) ]
,
}:
let
wrapperExe = lib.getExe wrapper;
wrapExe = exe:
pkgs.writeShellScriptBin (builtins.baseNameOf exe) ''
exec ${wrapperExe} ${exe} "$@"
'';
in
pkgs.symlinkJoin {
name = "${package.name}-${wrapper.name}";
paths = (map wrapExe exes) ++ [ package ];
};
wrapPackages = pkgsWrapperFn: pkgNames: final: prev:
let
wrapper = pkgsWrapperFn final;
in
builtins.listToAttrs (map
(name: {
inherit name;
value = config.legacyPackages.wrapPackage {
inherit wrapper;
package = prev.${name};
};
})
pkgNames);
};
};
}

View file

@ -17,7 +17,7 @@ in
{
home.file.".gnupg/gpg-agent.conf" = mkIf stdenv.isDarwin {
text = ''
pinentry-program "${pkgs.pinentryTouchid}/bin/pinentry-touchid"
pinentry-program "${pkgs.pinentry-touchid}/bin/pinentry-touchid"
default-cache-ttl 30
max-cache-ttl 600
'';
@ -41,8 +41,8 @@ in
pinentry = "pinentry-mac";
} // lib.attrsets.mapAttrs (name: value: "open -a '" + value + "'") appCommands);
programs.firefox.package = mkIf stdenv.isDarwin pkgs.firefoxMac;
programs.chromium.package = mkIf stdenv.isDarwin pkgs.chromiumMac;
programs.firefox.package = mkIf stdenv.isDarwin pkgs.firefox-mac;
programs.chromium.package = mkIf stdenv.isDarwin pkgs.chromium-mac;
targets.darwin = mkIf stdenv.isDarwin {
defaults = {

View file

@ -3,8 +3,8 @@
let
darwin = with pkgs; [
pngpaste
pinentryTouchid
pinentryMac
pinentry-touchid
pinentry-mac
spoof-mac
];
linux = with pkgs; [ ];

46
packages/chromium-mac.nix Normal file
View file

@ -0,0 +1,46 @@
{ fetchurl, lib, mkMacBinPackage, stdenv }:
let
versions = {
aarch64-darwin = "1101351";
x86_64-darwin = "1101350";
};
version = versions.${stdenv.hostPlatform.system};
pname = "chromium";
appName = "Chromium";
srcs = {
aarch64-darwin = fetchurl {
url =
"https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac_Arm/${version}/chrome-mac.zip";
sha256 = "sha256-LlbYlJmFLzyHIiygofa0Btm7NAOvWXXhmbjMHldVoGo=";
name = "${pname}_aarch64_${version}.zip";
};
x86_64-darwin = fetchurl {
url =
"https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/${version}/chrome-mac.zip";
sha256 = "sha256-O+OnjakEpjCRbSjDysEA6RKKaKaSMw+LSO2ZLcxz2vM=";
name = "${pname}_x86_64_${version}.zip";
};
};
src = srcs.${stdenv.hostPlatform.system};
in
mkMacBinPackage {
inherit src pname appName version;
srcsubdir = "chrome-mac";
meta = with lib; {
description = "An open source web browser from Google.";
longDescription = ''
Chromium is an open source web browser from Google that aims to build a
safer, faster, and more stable way for all Internet users to experience
the web. It has a minimalist user interface and provides the vast majority
of source code for Google Chrome (which has some additional features).
'';
homepage = "https://www.chromium.org/";
license = licenses.bsd3;
platforms = platforms.linux;
mainProgram = "chromium";
};
}

View file

@ -1,4 +1,13 @@
_final: prev: {
org-auctex = prev.callPackage ./org-auctex.nix {};
darwin-zsh-completions = prev.callPackage ./darwin-zsh-completions.nix {};
chromium-mac = prev.callPackage ./chromium-mac.nix { };
darwin-zsh-completions = prev.callPackage ./darwin-zsh-completions.nix { };
firefox-mac = prev.callPackage ./firefox-mac.nix { };
freecad-mac = prev.callPackage ./freecad-mac.nix { };
mkMacBinPackage = import ./mk-mac-binpkg.nix prev;
org-auctex = prev.callPackage ./org-auctex.nix { };
pinentry-mac = prev.callPackage ./pinentry-mac.nix { };
pinentry-touchid = prev.callPackage ./pinentry-touchid.nix { };
qbittorrent-mac = prev.callPackage ./qbittorrent-mac.nix { };
spotify-mac = prev.callPackage ./spotify-mac.nix { };
vlc-mac = prev.callPackage ./vlc-mac.nix { };
}

14
packages/firefox-mac.nix Normal file
View file

@ -0,0 +1,14 @@
{ fetchurl, lib, mkMacBinPackage }:
let
version = "109.0.1";
pname = "firefox";
appName = "Firefox";
src = fetchurl {
url =
"https://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/mac/en-CA/Firefox%20${version}.dmg";
sha256 = "sha256-V/8W3qqYhJmte2tq/ZSPtYChdhv8WFQoSORYRaxva9Y=";
name = "${pname}_${version}.dmg";
};
in
mkMacBinPackage { inherit src pname appName version; }

60
packages/freecad-mac.nix Normal file
View file

@ -0,0 +1,60 @@
{ fetchurl, lib, makeWrapper, stdenv }:
let
version = "0.20.2";
date = "2022-12-27";
appName = "FreeCAD";
pname = "freecad";
src = fetchurl {
url =
"https://github.com/FreeCAD/FreeCAD/releases/download/${version}/FreeCAD_${version}-${date}-conda-macOS-x86_64-py310.dmg";
sha256 = "sha256-OAi98HUacHcLHVYSadnQFPnEhutJvE4YfRBtPSZk00c=";
};
in
stdenv.mkDerivation {
inherit version src;
name = pname;
nativeBuildInputs = [ makeWrapper ];
dontUnpack = true;
installPhase = ''
export tempdir=$(mktemp -d -p /tmp)
cp $src freecad.dmg
/usr/bin/hdiutil attach -mountpoint "$tempdir" freecad.dmg
mkdir -p $out/Applications
cp -r "$tempdir/${appName}.app" $out/Applications
/usr/bin/hdiutil detach "$tempdir"
mkdir -p $out/bin
makeWrapper "$out/Applications/${appName}.app/Contents/MacOS/${appName}" "$out/bin/${pname}"
runHook postInstall
'';
meta = with lib; {
homepage = "https://www.freecadweb.org/";
description = "General purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler";
longDescription = ''
FreeCAD is an open-source parametric 3D modeler made primarily to design
real-life objects of any size. Parametric modeling allows you to easily
modify your design by going back into your model history and changing its
parameters.
FreeCAD allows you to sketch geometry constrained 2D shapes and use them
as a base to build other objects. It contains many components to adjust
dimensions or extract design details from 3D models to create high quality
production ready drawings.
FreeCAD is designed to fit a wide range of uses including product design,
mechanical engineering and architecture. Whether you are a hobbyist, a
programmer, an experienced CAD user, a student or a teacher, you will feel
right at home with FreeCAD.
'';
license = licenses.lgpl2Plus;
platforms = platforms.darwin;
};
}

View file

@ -0,0 +1,23 @@
pkgs: { src, version, pname, appName, srcsubdir ? ".", ... }: pkgs.stdenv.mkDerivation {
inherit version src;
name = pname;
nativeBuildInputs = [ pkgs.undmg pkgs.unzip pkgs.makeWrapper ];
sourceRoot = ".";
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
cp -r "${srcsubdir}/${appName}.app" $out/Applications
# wrap executable to $out/bin
mkdir -p $out/bin
makeWrapper "$out/Applications/${appName}.app/Contents/MacOS/${appName}" "$out/bin/${pname}"
runHook postInstall
'';
}

View file

@ -1,4 +1,4 @@
{ fetchFromGitHub, emacsPackages }:
{ emacsPackages, fetchFromGitHub }:
emacsPackages.trivialBuild {
pname = "org-auctex";

19
packages/pinentry-mac.nix Normal file
View file

@ -0,0 +1,19 @@
{ lib, pinentry_mac, stdenv }: stdenv.mkDerivation {
name = "pinentry-mac";
src = pinentry_mac;
installPhase = ''
# -*-sh-*-
mkdir -p "$out/bin"
cp "$src/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac" "$out/bin/pinentry-mac"
'';
meta = with lib; {
description = "Pinentry for GPG on Mac";
license = licenses.gpl2Plus;
homepage = "https://github.com/GPGTools/pinentry-mac";
platforms = platforms.darwin;
};
}

View file

@ -0,0 +1,46 @@
{ fetchFromGitHub, lib, pkgs, stdenv }: stdenv.mkDerivation {
name = "pinentry-touchid";
src = fetchFromGitHub {
owner = "jorgelbg";
repo = "pinentry-touchid";
rev = "1170eb6bc7b23313aee622887b47b77be6e5fb5f";
sha256 = "sha256-asLFY7ztRKXEFsetB3Ym/0tJ1BBOn0yYpL8MIn1Z//0=";
};
nativeBuildInputs = with pkgs; [
go
gopls
gotools
darwin.apple_sdk.frameworks.CoreFoundation
darwin.apple_sdk.frameworks.Foundation
darwin.apple_sdk.frameworks.LocalAuthentication
];
sourceRoot = ".";
buildPhase = ''
unset GOROOT
export GOPATH="/tmp/gopath-$(echo $RANDOM | md5sum | head -c 20)"
export GOCACHE="/tmp/gocache-$(echo $RANDOM | md5sum | head -c 20)"
export NIX_LDFLAGS="-F${pkgs.darwin.apple_sdk.frameworks.CoreFoundation}/Library/Frameworks -framework CoreFoundation $NIX_LDFLAGS";
cd source
go mod download
go build
'';
installPhase = ''
mkdir -p $out/bin
mv pinentry-touchid $out/bin/pinentry-touchid
'';
meta = with lib; {
description = "Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.";
license = licenses.asl20;
homepage = "https://github.com/jorgelbg/pinentry-touchid";
platforms = platforms.darwin;
};
}

View file

@ -0,0 +1,22 @@
{ fetchurl, lib, mkMacBinPackage }:
let
version = "4.4.5";
appName = "qBittorrent";
pname = "qbittorrent";
src = fetchurl {
url =
"https://phoenixnap.dl.sourceforge.net/project/qbittorrent/qbittorrent-mac/qbittorrent-${version}/qbittorrent-${version}.dmg";
sha256 = "sha256-9h+gFAEU0tKrltOjnOKLfylbbBunGZqvPzQogdP9uQM=";
};
in
mkMacBinPackage {
inherit src pname appName version;
meta = with lib; {
description = "Featureful free software BitTorrent client";
homepage = "https://www.qbittorrent.org/";
changelog = "https://github.com/qbittorrent/qBittorrent/blob/release-${version}/Changelog";
license = licenses.gpl2Plus;
platforms = platforms.darwin;
};
}

23
packages/spotify-mac.nix Normal file
View file

@ -0,0 +1,23 @@
{ fetchurl, lib, mkMacBinPackage }:
let
appName = "Spotify";
pname = "spotify";
version = "sha256-JESQZtyPE9o5PW/f5GdxbqbyeHCxs/oZEW0AakMJgKg=";
src = fetchurl {
url = "https://download.scdn.co/Spotify.dmg";
hash = version;
name = "spotify-mac.dmg";
};
in
mkMacBinPackage {
inherit src pname appName version;
meta = with lib; {
homepage = "https://www.spotify.com/";
description = "Play music from the Spotify music service";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
platforms = platforms.darwin;
};
}

32
packages/vlc-mac.nix Normal file
View file

@ -0,0 +1,32 @@
{ fetchurl, lib, mkMacBinPackage, stdenv }:
let
appName = "VLC";
pname = "vlc";
version = "3.0.18";
srcs = {
aarch64-darwin = fetchurl {
url =
"http://get.videolan.org/vlc/${version}/macosx/vlc-${version}-arm64.dmg";
sha256 = "sha256-mcJZvbxSIf1QgX9Ri3Dpv57hdeiQdDkDyYB7x3hmj0c=";
name = "${pname}_aarch64_${version}.dmg";
};
x86_64-darwin = fetchurl {
url =
"http://get.videolan.org/vlc/${version}/macosx/vlc-${version}-intel64.dmg";
sha256 = "sha256-iO3N/Os70vaANn2QCdOKDBR/p1jy3TleQ0EsHgjOHMs=";
name = "${pname}_x86_64_${version}.dmg";
};
};
src = srcs.${stdenv.hostPlatform.system};
in
mkMacBinPackage {
inherit src pname appName version;
meta = with lib; {
description = "Cross-platform media player and streaming server";
homepage = "http://www.videolan.org/vlc/";
license = licenses.lgpl21Plus;
platforms = platforms.darwin;
};
}