diff --git a/flake.nix b/flake.nix index 2af0a031..c5124fc5 100644 --- a/flake.nix +++ b/flake.nix @@ -50,6 +50,7 @@ # for raspberry pi: allow building u-boot for rpi 4{,00} ./nixpatches/02-rpi4-uboot.patch ./nixpatches/03-whalebird-4.6.0.patch + ./nixpatches/04-dart-2.7.0.patch ]; }; nixosSystem = import (patchedPkgs + "/nixos/lib/eval-config.nix"); @@ -106,6 +107,7 @@ #### TEMPORARY: PACKAGES WAITING TO BE UPSTREAMED whalebird = prev.callPackage ./pkgs/whalebird { }; + kaiteki = prev.callPackage ./pkgs/kaiteki { }; }) ]; }; diff --git a/helpers/home-manager-gen-colin.nix b/helpers/home-manager-gen-colin.nix index e61b208d..5eacf8be 100644 --- a/helpers/home-manager-gen-colin.nix +++ b/helpers/home-manager-gen-colin.nix @@ -501,12 +501,13 @@ pkgs.gnome-podcasts pkgs.gnome.gnome-terminal # works on phosh pkgs.inkscape + pkgs.kaiteki # Pleroma client pkgs.libreoffice-fresh # XXX colin: maybe don't want this on mobile pkgs.mesa-demos pkgs.playerctl pkgs.tdesktop # broken on phosh pkgs.vlc # works on phosh - pkgs.whalebird # pleroma client. TODO: port kaiteki to nix: https://craftplacer.moe/projects/kaiteki/ + pkgs.whalebird # pleroma client. input is broken on phosh pkgs.xterm # broken on phosh ] else []) ++ (if gui == "sway" then diff --git a/nixpatches/04-dart-2.7.0.patch b/nixpatches/04-dart-2.7.0.patch new file mode 100644 index 00000000..1372f818 --- /dev/null +++ b/nixpatches/04-dart-2.7.0.patch @@ -0,0 +1,58 @@ +diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix +index 9eba6773448..f51aeb8b624 100644 +--- a/pkgs/development/compilers/flutter/default.nix ++++ b/pkgs/development/compilers/flutter/default.nix +@@ -4,20 +4,20 @@ let + getPatches = dir: + let files = builtins.attrNames (builtins.readDir dir); + in map (f: dir + ("/" + f)) files; +- version = "2.10.1"; ++ version = "3.0.0"; + channel = "stable"; + filename = "flutter_linux_${version}-${channel}.tar.xz"; + + # Decouples flutter derivation from dart derivation, + # use specific dart version to not need to bump dart derivation when bumping flutter. +- dartVersion = "2.16.1"; ++ dartVersion = "2.17.0"; + dartSourceBase = "https://storage.googleapis.com/dart-archive/channels"; + dartForFlutter = dart.override { + version = dartVersion; + sources = { + "${dartVersion}-x86_64-linux" = fetchurl { + url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; +- sha256 = "sha256-PMY6DCFQC8XrlnFzOEPcwgBAs5/cAvNd78969Z+I1Fk="; ++ sha256 = "57b8fd964e47c81d467aeb95b099a670ab7e8f54a1cd74d45bcd1fdc77913d86"; + }; + }; + }; +@@ -29,7 +29,7 @@ in { + pname = "flutter"; + src = fetchurl { + url = "https://storage.googleapis.com/flutter_infra_release/releases/${channel}/linux/${filename}"; +- sha256 = "sha256-rSfwcglDV2rvJl10j7FByAWmghd2FYxrlkgYnvRO54Y="; ++ sha256 = "e96d75ec8e7dc2a46bc8dad5a9e01c391ab9310ad01c4e3940c963dd263788a0"; + }; + patches = getPatches ./patches; + }; +diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix +index 43538ede339..26f50f731c2 100644 +--- a/pkgs/development/compilers/flutter/flutter.nix ++++ b/pkgs/development/compilers/flutter/flutter.nix +@@ -48,6 +48,7 @@ let + ''; + + buildPhase = '' ++ set -ex + export FLUTTER_ROOT="$(pwd)" + export FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools" + export SCRIPT_PATH="$FLUTTER_TOOLS_DIR/bin/flutter_tools.dart" +@@ -61,7 +62,7 @@ let + # path is relative otherwise it's replaced by /build/flutter + + pushd "$FLUTTER_TOOLS_DIR" +- ${dart}/bin/pub get --offline ++ ${dart}/bin/dart pub get --offline + popd + + local revision="$(cd "$FLUTTER_ROOT"; git rev-parse HEAD)" diff --git a/pkgs/kaiteki/default.nix b/pkgs/kaiteki/default.nix new file mode 100644 index 00000000..e6d5204a --- /dev/null +++ b/pkgs/kaiteki/default.nix @@ -0,0 +1,88 @@ +{ lib +, fetchFromGitHub +, flutter +, olm +, imagemagick +, makeDesktopItem +}: + +flutter.mkFlutterApp rec { + pname = "kaiteki"; + version = "1.1"; + + vendorHash = "sha256-N7s63e8z4pAFtFV9cFN+CIIg+A/s8lYfiJWrBkMkkd0="; + + src = fetchFromGitHub { + owner = "Kaiteki-Fedi"; + repo = "Kaiteki"; + rev = "0a322313071e4391949d23d9b006d74de65f58d9"; + hash = "sha256-ggDIbVwueS162m15TFaC6Tcg+0lpcVGi4x/O691sxR8"; + }; + + desktopItem = makeDesktopItem { + name = "Kaiteki"; + exec = "@out@/bin/kaiteki"; + icon = "kaiteki"; + desktopName = "Kaiteki"; + genericName = "Micro-blogging client"; + categories = [ "Network" "InstantMessaging" "GTK" ]; + }; + + sourceRoot = "source/src/kaiteki"; + + # postUnpack = '' + # mv assets assets-toplevel + # mv src/kaiteki/* . + # ''; + + buildInputs = [ + olm + ]; + + nativeBuildInputs = [ + imagemagick + ]; + + # flutterExtraFetchCommands = '' + # M=$(echo $TMP/.pub-cache/hosted/pub.dartlang.org/matrix-*) + # sed -i $M/scripts/prepare.sh \ + # -e "s|/usr/lib/x86_64-linux-gnu/libolm.so.3|/bin/sh|g" \ + # -e "s|if which flutter >/dev/null; then|exit; if which flutter >/dev/null; then|g" + + # pushd $M + # bash scripts/prepare.sh + # popd + # ''; + + # replace olm dummy path + # postConfigure = '' + # M=$(echo $depsFolder/.pub-cache/hosted/pub.dartlang.org/matrix-*) + # ln -sf ${olm}/lib/libolm.so.3 $M/ffi/olm/libolm.so + # ''; + + # postInstall = '' + # FAV=$out/app/data/flutter_assets/assets/favicon.png + # ICO=$out/share/icons + + # install -D $FAV $ICO/fluffychat.png + # mkdir $out/share/applications + # cp $desktopItem/share/applications/*.desktop $out/share/applications + + # for s in 24 32 42 64 128 256 512; do + # D=$ICO/hicolor/''${s}x''${s}/apps + # mkdir -p $D + # convert $FAV -resize ''${s}x''${s} $D/fluffychat.png + # done + + # substituteInPlace $out/share/applications/*.desktop \ + # --subst-var out + # ''; + + meta = with lib; { + description = "The comfy Fediverse client"; + homepage = "https://craftplacer.moe/projects/kaiteki/"; + license = licenses.agpl3Plus; + # maintainers = with maintainers; [ uninsane ]; + platforms = platforms.linux; + }; +}