From 32393f12c03d0a01bd7da22b3bb66d74a647d72d Mon Sep 17 00:00:00 2001 From: Elec3137 Date: Sun, 1 Feb 2026 11:46:56 -0800 Subject: [PATCH 1/8] add packages.default flake output this likely doesn't work (yet), cannot properly test because at time of writing, the app doesn't compile through `flutter run` either. --- flake.nix | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/flake.nix b/flake.nix index c4c5cc3..a167232 100644 --- a/flake.nix +++ b/flake.nix @@ -29,6 +29,20 @@ ... }: + let + src = ./.; + + # from https://discourse.nixos.org/t/is-there-a-way-to-read-a-yaml-file-and-get-back-a-set/18385/5 + fromYAML = + file: + builtins.fromJSON ( + builtins.readFile ( + pkgs.runCommand "converted-yaml.json" { } ''${pkgs.yj}/bin/yj < "${file}" > "$out"'' + ) + ); + + package = fromYAML "${src}/pubspec.yaml"; + in { _module.args.pkgs = import nixpkgs { inherit system; @@ -59,6 +73,20 @@ CPATH = lib.makeSearchPath "include" [ pkgs.glibc.dev ]; }; }; + + packages.default = pkgs.flutter.buildFlutterApplication { + inherit src; + pname = package.name; + version = package.version; + + pubspecLock = fromYAML "${src}/pubspec.lock"; + gitHashes = { + flutter_chat_ui = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk="; + flutter_link_previewer = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk="; + flyer_chat_text_message = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk="; + window_size = "sha256-XelNtp7tpZ91QCEcvewVphNUtgQX7xrp5QP0oFo6DgM="; + }; + }; }; }; } From f72c59f79d21531aab6366ebe5727071f7fe8cb6 Mon Sep 17 00:00:00 2001 From: Elec3137 Date: Sun, 1 Feb 2026 14:13:29 -0800 Subject: [PATCH 2/8] rename fromYAML -> importYAML this is more consistent with existing nixpkgs.lib functions --- flake.nix | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index a167232..5c2c10a 100644 --- a/flake.nix +++ b/flake.nix @@ -33,15 +33,13 @@ src = ./.; # from https://discourse.nixos.org/t/is-there-a-way-to-read-a-yaml-file-and-get-back-a-set/18385/5 - fromYAML = + importYAML = file: - builtins.fromJSON ( - builtins.readFile ( - pkgs.runCommand "converted-yaml.json" { } ''${pkgs.yj}/bin/yj < "${file}" > "$out"'' - ) + lib.importJSON ( + pkgs.runCommand "converted-yaml.json" { } ''${pkgs.yj}/bin/yj < "${file}" > "$out"'' ); - package = fromYAML "${src}/pubspec.yaml"; + package = importYAML "${src}/pubspec.yaml"; in { _module.args.pkgs = import nixpkgs { @@ -79,7 +77,7 @@ pname = package.name; version = package.version; - pubspecLock = fromYAML "${src}/pubspec.lock"; + pubspecLock = importYAML "${src}/pubspec.lock"; gitHashes = { flutter_chat_ui = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk="; flutter_link_previewer = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk="; From cc050f62fc8d4db67a70cd443b3b58ac58a1c078 Mon Sep 17 00:00:00 2001 From: Elec3137 Date: Sun, 1 Feb 2026 14:25:45 -0800 Subject: [PATCH 3/8] dubious (mostly style) changes in flake --- flake.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/flake.nix b/flake.nix index 5c2c10a..c4d1da3 100644 --- a/flake.nix +++ b/flake.nix @@ -40,6 +40,10 @@ ); package = importYAML "${src}/pubspec.yaml"; + + usedFlutter = (pkgs.flutter.override { extraPkgConfigPackages = [ pkgs.libsecret ]; }); + + buildInputs = [ pkgs.sqlite ]; in { _module.args.pkgs = import nixpkgs { @@ -57,23 +61,19 @@ olm git clang - (flutter.override { extraPkgConfigPackages = [ pkgs.libsecret ]; }) + usedFlutter (pkgs.writeShellScriptBin "rustup" (builtins.readFile ./nix/fake-rustup.sh)) ]; env = { - LD_LIBRARY_PATH = "${ - pkgs.lib.makeLibraryPath ([ - pkgs.sqlite - ]) - }:./build/native_assets/linux"; + LD_LIBRARY_PATH = "${lib.makeLibraryPath buildInputs}:./build/native_assets/linux"; CPATH = lib.makeSearchPath "include" [ pkgs.glibc.dev ]; }; }; - packages.default = pkgs.flutter.buildFlutterApplication { - inherit src; + packages.default = usedFlutter.buildFlutterApplication { + inherit src buildInputs; pname = package.name; version = package.version; From d0df1a198b0e9f66b02003c8162832ede5e905fa Mon Sep 17 00:00:00 2001 From: Elec3137 Date: Sun, 1 Feb 2026 17:12:26 -0800 Subject: [PATCH 4/8] try to use generate script the script fails with: Couldn't resolve the package 'ffigen' in 'package:ffigen/ffigen.dart'. Couldn't resolve the package 'path' in 'package:path/path.dart'. --- flake.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/flake.nix b/flake.nix index c4d1da3..0e5e7c8 100644 --- a/flake.nix +++ b/flake.nix @@ -84,6 +84,11 @@ flyer_chat_text_message = "sha256-4fuag7lRH5cMBFD3fUzj2K541JwXLoz8HF/4OMr3uhk="; window_size = "sha256-XelNtp7tpZ91QCEcvewVphNUtgQX7xrp5QP0oFo6DgM="; }; + + patchPhase = /* sh */ '' + patchShebangs ./scripts/generate.sh + ./scripts/generate.sh # note: this doesn't quit the build on fail + ''; }; }; }; From 06a25b89e61408ff1adc62461ed6965f8b9ddea1 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Mon, 2 Feb 2026 21:48:08 +0100 Subject: [PATCH 5/8] update readme and remove unneeded deps --- README.md | 22 ++++++++++++++----- flake.nix | 10 ++------- .../secure_storage_controller.dart | 19 ---------------- lib/pages/settings_page.dart | 9 +------- 4 files changed, 20 insertions(+), 40 deletions(-) delete mode 100644 lib/controllers/secure_storage_controller.dart diff --git a/README.md b/README.md index 62d2b75..c6b5b0d 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ A simple and user-friendly Matrix client made with Flutter and the Matrix Dart S - [x] Using a text/uri/link - [x] Plain text - [x] `matrix:` Uri - - [ ] Matrix.to link: I just need to fix my regex + - [ ] Matrix.to link: I just need to fix my regex, I should do this next. - [ ] From space - [ ] Exploring - [x] Leaving @@ -108,7 +108,7 @@ A simple and user-friendly Matrix client made with Flutter and the Matrix Dart S - [ ] About - [x] Log Out -## Development +## Build Instructions First, clone and open the repo: @@ -122,13 +122,13 @@ cd nexus #### Linux - With Nix: Either use direnv, or `nix flake develop` -- Without Nix: Install Flutter, Rust, the libsecret dev package for your distro (must be in `PKG_CONFIG_PATH`), and sqlite (must be in `LD_LIBRARY_PATH`). +- Without Nix: Install Flutter, Go, Olm, Git, Clang, and GLibc. #### Windows / MacOS -I don't really know. You will need Flutter and Rust, and otherwise I guess just keep installing stuff until there aren't any errors. +I don't really know. You will need Flutter, Git, Olm, Go, and Visual Studio tools, and otherwise I guess just keep installing stuff until there aren't any errors. I will look into this sometimeTM. -### +### Set up Flutter Get dependencies: @@ -136,6 +136,18 @@ Get dependencies: flutter pub get ``` +Get dependencies: + +```sh +flutter pub get +``` + +Clone Gomuks and generate bindings: + +```sh +scripts/generate.sh +``` + Build generated files, and watch for new changes: ```sh diff --git a/flake.nix b/flake.nix index c4c5cc3..860d010 100644 --- a/flake.nix +++ b/flake.nix @@ -45,17 +45,11 @@ olm git clang - (flutter.override { extraPkgConfigPackages = [ pkgs.libsecret ]; }) - - (pkgs.writeShellScriptBin "rustup" (builtins.readFile ./nix/fake-rustup.sh)) + flutter ]; env = { - LD_LIBRARY_PATH = "${ - pkgs.lib.makeLibraryPath ([ - pkgs.sqlite - ]) - }:./build/native_assets/linux"; + LD_LIBRARY_PATH = "./build/native_assets/linux"; CPATH = lib.makeSearchPath "include" [ pkgs.glibc.dev ]; }; }; diff --git a/lib/controllers/secure_storage_controller.dart b/lib/controllers/secure_storage_controller.dart deleted file mode 100644 index 4a5781b..0000000 --- a/lib/controllers/secure_storage_controller.dart +++ /dev/null @@ -1,19 +0,0 @@ -import "package:flutter_riverpod/flutter_riverpod.dart"; -import "package:flutter_secure_storage/flutter_secure_storage.dart"; - -class SecureStorageController extends Notifier { - @override - FlutterSecureStorage build() => FlutterSecureStorage(); - - Future get(String key) => state.read(key: key); - - Future set(String key, String value) => - state.write(key: key, value: value); - - Future clear() => state.deleteAll(); - - static final provider = - NotifierProvider( - SecureStorageController.new, - ); -} diff --git a/lib/pages/settings_page.dart b/lib/pages/settings_page.dart index b348aac..505904c 100644 --- a/lib/pages/settings_page.dart +++ b/lib/pages/settings_page.dart @@ -1,18 +1,11 @@ import "package:flutter/material.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; -import "package:nexus/controllers/secure_storage_controller.dart"; class SettingsPage extends ConsumerWidget { const SettingsPage({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { - return Scaffold( - appBar: AppBar(title: Text("Settings")), - body: ElevatedButton( - onPressed: ref.watch(SecureStorageController.provider.notifier).clear, - child: Text("Log out"), - ), - ); + return Placeholder(); } } From c44a8cddc3fff52e45c5daec96467c92d0a5c966 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Mon, 2 Feb 2026 21:49:45 +0100 Subject: [PATCH 6/8] remove secure storage --- linux/flutter/generated_plugin_registrant.cc | 4 -- linux/flutter/generated_plugins.cmake | 1 - pubspec.lock | 48 ------------------- pubspec.yaml | 1 - .../flutter/generated_plugin_registrant.cc | 3 -- windows/flutter/generated_plugins.cmake | 1 - 6 files changed, 58 deletions(-) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index dffacff..f70fb6e 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -21,9 +20,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); - g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); - flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); g_autoptr(FlPluginRegistrar) screen_retriever_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverLinuxPlugin"); screen_retriever_linux_plugin_register_with_registrar(screen_retriever_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 8b658f4..78dcf40 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,7 +5,6 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_system_colors file_selector_linux - flutter_secure_storage_linux screen_retriever_linux url_launcher_linux window_manager diff --git a/pubspec.lock b/pubspec.lock index 222e779..716393c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -533,54 +533,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" - flutter_secure_storage: - dependency: "direct main" - description: - name: flutter_secure_storage - sha256: da922f2aab2d733db7e011a6bcc4a825b844892d4edd6df83ff156b09a9b2e40 - url: "https://pub.dev" - source: hosted - version: "10.0.0" - flutter_secure_storage_darwin: - dependency: transitive - description: - name: flutter_secure_storage_darwin - sha256: "8878c25136a79def1668c75985e8e193d9d7d095453ec28730da0315dc69aee3" - url: "https://pub.dev" - source: hosted - version: "0.2.0" - flutter_secure_storage_linux: - dependency: transitive - description: - name: flutter_secure_storage_linux - sha256: "2b5c76dce569ab752d55a1cee6a2242bcc11fdba927078fb88c503f150767cda" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - flutter_secure_storage_platform_interface: - dependency: transitive - description: - name: flutter_secure_storage_platform_interface - sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - flutter_secure_storage_web: - dependency: transitive - description: - name: flutter_secure_storage_web - sha256: "6a1137df62b84b54261dca582c1c09ea72f4f9a4b2fcee21b025964132d5d0c3" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - flutter_secure_storage_windows: - dependency: transitive - description: - name: flutter_secure_storage_windows - sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613" - url: "https://pub.dev" - source: hosted - version: "4.1.0" flutter_svg: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 7893653..f3dc1bd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,7 +61,6 @@ dependencies: shared_preferences: ^2.5.3 mention_tag_text_field: ^0.0.9 fluttertagger: ^2.3.1 - flutter_secure_storage: ^10.0.0 dynamic_polls: ^0.0.6 flutter_hooks: ^0.21.3+1 cross_cache: ^1.1.0 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index b12edca..55fb066 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -19,8 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); - FlutterSecureStorageWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); ScreenRetrieverWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("ScreenRetrieverWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 8967b80..9333a2f 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,7 +5,6 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_system_colors file_selector_windows - flutter_secure_storage_windows screen_retriever_windows url_launcher_windows window_manager From 4e94b4a3bb4b4df83ba1149b53f72c75fc9e66fc Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Mon, 2 Feb 2026 21:55:56 +0100 Subject: [PATCH 7/8] remove dep we havent used for ages --- pubspec.lock | 8 -------- pubspec.yaml | 1 - 2 files changed, 9 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 716393c..aec6fdc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -880,14 +880,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.11.1" - mention_tag_text_field: - dependency: "direct main" - description: - name: mention_tag_text_field - sha256: ba7b9d8003e0f340a65c6dcdb7770f4340f653ae1612a9e31e11d12f7f1dd80f - url: "https://pub.dev" - source: hosted - version: "0.0.9" meta: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index f3dc1bd..3c50656 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -59,7 +59,6 @@ dependencies: flutter_svg: ^2.2.2 json_annotation: ^4.9.0 shared_preferences: ^2.5.3 - mention_tag_text_field: ^0.0.9 fluttertagger: ^2.3.1 dynamic_polls: ^0.0.6 flutter_hooks: ^0.21.3+1 From 5c4135ddb1ff03782bbb02f8220920d7bd40580a Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Mon, 2 Feb 2026 22:11:28 +0100 Subject: [PATCH 8/8] remove unused script --- nix/fake-rustup.sh | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 nix/fake-rustup.sh diff --git a/nix/fake-rustup.sh b/nix/fake-rustup.sh deleted file mode 100644 index 7884c05..0000000 --- a/nix/fake-rustup.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -# Fake rustup for nix-managed Rust toolchains - -case "$1" in - run) - if [[ "$2" == "stable" ]]; then - shift 2 - if [[ $# -eq 0 ]]; then - echo "fake rustup: no command given" >&2 - exit 1 - fi - exec "$@" - exit 0 - fi - ;; - - toolchain) - if [[ "$2" == "list" ]]; then - echo "stable (default)" - exit 0 - fi - ;; - - target) - if [[ "$2" == "list" && "$3" == "--toolchain" && "$4" == "stable" && "$5" == "--installed" ]]; then - echo "x86_64-unknown-linux-gnu" - exit 0 - fi - ;; -esac - -echo "fake rustup: the command:" >&2 -echo " rustup $*" >&2 -echo "…is not mocked yet" >&2 -exit 1 \ No newline at end of file