diff --git a/apps/chromium-mac.nix b/apps/chromium-mac.nix deleted file mode 100644 index 1833c65..0000000 --- a/apps/chromium-mac.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/firefox-mac.nix b/apps/firefox-mac.nix deleted file mode 100644 index b50dde2..0000000 --- a/apps/firefox-mac.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/freecad-mac.nix b/apps/freecad-mac.nix deleted file mode 100644 index dab3b1f..0000000 --- a/apps/freecad-mac.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/home-switch.nix b/apps/home-switch.nix new file mode 100644 index 0000000..45506f3 --- /dev/null +++ b/apps/home-switch.nix @@ -0,0 +1,11 @@ +{ writeShellApplication +, home-manager +, +}: +writeShellApplication { + name = "home-switch"; + runtimeInputs = [ home-manager ]; + text = '' + exec home-manager switch --flake . "$@" + ''; +} diff --git a/apps/pinentry-mac.nix b/apps/pinentry-mac.nix deleted file mode 100644 index 2a2dc37..0000000 --- a/apps/pinentry-mac.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/pinentry-touchid.nix b/apps/pinentry-touchid.nix deleted file mode 100644 index a74230b..0000000 --- a/apps/pinentry-touchid.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/qbittorrent-mac.nix b/apps/qbittorrent-mac.nix deleted file mode 100644 index e3bcedc..0000000 --- a/apps/qbittorrent-mac.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/spotify-mac.nix b/apps/spotify-mac.nix deleted file mode 100644 index 59b01df..0000000 --- a/apps/spotify-mac.nix +++ /dev/null @@ -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" ]; -} diff --git a/apps/vlc-mac.nix b/apps/vlc-mac.nix deleted file mode 100644 index c64b8ba..0000000 --- a/apps/vlc-mac.nix +++ /dev/null @@ -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" ]; -} - diff --git a/flake-parts/apps.nix b/flake-parts/apps.nix index 2691d48..0b03156 100644 --- a/flake-parts/apps.nix +++ b/flake-parts/apps.nix @@ -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 {}) + ]; } diff --git a/flake-parts/default.nix b/flake-parts/default.nix index 48c788d..58c95f3 100644 --- a/flake-parts/default.nix +++ b/flake-parts/default.nix @@ -4,5 +4,6 @@ ./home-manager ./lib ./overlays.nix + ./packages.nix ]; } diff --git a/flake-parts/lib/default.nix b/flake-parts/lib/default.nix index 672e84f..4ba1c00 100644 --- a/flake-parts/lib/default.nix +++ b/flake-parts/lib/default.nix @@ -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; }; } diff --git a/flake-parts/packages.nix b/flake-parts/packages.nix new file mode 100644 index 0000000..0aed18c --- /dev/null +++ b/flake-parts/packages.nix @@ -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); + }; + }; +} diff --git a/home-manager/modules/profiles/user/willem/darwin/default.nix b/home-manager/modules/profiles/user/willem/darwin/default.nix index 5ed81d7..e8071b0 100644 --- a/home-manager/modules/profiles/user/willem/darwin/default.nix +++ b/home-manager/modules/profiles/user/willem/darwin/default.nix @@ -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 = { diff --git a/home-manager/modules/profiles/user/willem/packages.nix b/home-manager/modules/profiles/user/willem/packages.nix index 9735651..e7d29c6 100644 --- a/home-manager/modules/profiles/user/willem/packages.nix +++ b/home-manager/modules/profiles/user/willem/packages.nix @@ -3,8 +3,8 @@ let darwin = with pkgs; [ pngpaste - pinentryTouchid - pinentryMac + pinentry-touchid + pinentry-mac spoof-mac ]; linux = with pkgs; [ ]; diff --git a/packages/chromium-mac.nix b/packages/chromium-mac.nix new file mode 100644 index 0000000..a7f8d98 --- /dev/null +++ b/packages/chromium-mac.nix @@ -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"; + }; +} diff --git a/packages/default.nix b/packages/default.nix index 40924a7..abd714f 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -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 { }; } diff --git a/packages/firefox-mac.nix b/packages/firefox-mac.nix new file mode 100644 index 0000000..05178ea --- /dev/null +++ b/packages/firefox-mac.nix @@ -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; } + diff --git a/packages/freecad-mac.nix b/packages/freecad-mac.nix new file mode 100644 index 0000000..2060044 --- /dev/null +++ b/packages/freecad-mac.nix @@ -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; + }; +} diff --git a/packages/mk-mac-binpkg.nix b/packages/mk-mac-binpkg.nix new file mode 100644 index 0000000..8ad8601 --- /dev/null +++ b/packages/mk-mac-binpkg.nix @@ -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 + ''; +} diff --git a/packages/org-auctex.nix b/packages/org-auctex.nix index 7f8792a..ee5f1bd 100644 --- a/packages/org-auctex.nix +++ b/packages/org-auctex.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, emacsPackages }: +{ emacsPackages, fetchFromGitHub }: emacsPackages.trivialBuild { pname = "org-auctex"; diff --git a/packages/pinentry-mac.nix b/packages/pinentry-mac.nix new file mode 100644 index 0000000..e5653a3 --- /dev/null +++ b/packages/pinentry-mac.nix @@ -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; + }; +} + diff --git a/packages/pinentry-touchid.nix b/packages/pinentry-touchid.nix new file mode 100644 index 0000000..5abf2bd --- /dev/null +++ b/packages/pinentry-touchid.nix @@ -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; + }; +} diff --git a/packages/qbittorrent-mac.nix b/packages/qbittorrent-mac.nix new file mode 100644 index 0000000..38d0efe --- /dev/null +++ b/packages/qbittorrent-mac.nix @@ -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; + }; +} diff --git a/packages/spotify-mac.nix b/packages/spotify-mac.nix new file mode 100644 index 0000000..f6eeb34 --- /dev/null +++ b/packages/spotify-mac.nix @@ -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; + }; +} + diff --git a/packages/vlc-mac.nix b/packages/vlc-mac.nix new file mode 100644 index 0000000..e00b1c1 --- /dev/null +++ b/packages/vlc-mac.nix @@ -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; + }; +} + +