From 5cfed8ac52bc02053eb51e55d253af777353fba2 Mon Sep 17 00:00:00 2001 From: illuc Date: Tue, 4 Aug 2026 21:07:02 +0300 Subject: [PATCH 1/2] Ran `nix fmt` to make treefmt happy --- flake.nix | 470 +++++++++++++++++++++++++++--------------------------- 1 file changed, 238 insertions(+), 232 deletions(-) diff --git a/flake.nix b/flake.nix index 7960c6dbeb..f16db7134a 100644 --- a/flake.nix +++ b/flake.nix @@ -13,8 +13,9 @@ }; }; - outputs = inputs @ {flake-parts, ...}: - flake-parts.lib.mkFlake {inherit inputs;} { + outputs = + inputs@{ flake-parts, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.git-hooks.flakeModule inputs.treefmt-nix.flakeModule @@ -27,24 +28,26 @@ "aarch64-darwin" ]; - perSystem = { - inputs', - config, - system, - lib, - ... - }: let - pkgs = import inputs.nixpkgs { - inherit system; - - config = { - allowUnfree = true; - android_sdk.accept_license = true; + perSystem = + { + inputs', + config, + system, + lib, + ... + }: + let + pkgs = import inputs.nixpkgs { + inherit system; + + config = { + allowUnfree = true; + android_sdk.accept_license = true; + }; }; - }; - rust = ( - with inputs'.fenix.packages; + rust = ( + with inputs'.fenix.packages; combine [ stable.toolchain targets.aarch64-linux-android.stable.rust-std @@ -52,77 +55,189 @@ targets.armv7-linux-androideabi.stable.rust-std targets.i686-linux-android.stable.rust-std ] - ); - - platformVersion = "36"; - systemImageType = "default"; - currentPath = builtins.getEnv "PWD"; - androidEnv = pkgs.androidenv.override {licenseAccepted = true;}; - androidComp = ( - androidEnv.composeAndroidPackages { - cmdLineToolsVersion = "8.0"; - includeNDK = true; - buildToolsVersions = ["35.0.0"]; - - platformVersions = [ - "30" - platformVersion - ]; - includeEmulator = true; - includeSystemImages = true; - systemImageTypes = [ - systemImageType - ]; - abiVersions = [ - "x86" - "x86_64" - "armeabi-v7a" - "arm64-v8a" + ); + + platformVersion = "36"; + systemImageType = "default"; + currentPath = builtins.getEnv "PWD"; + androidEnv = pkgs.androidenv.override { licenseAccepted = true; }; + androidComp = ( + androidEnv.composeAndroidPackages { + cmdLineToolsVersion = "8.0"; + includeNDK = true; + buildToolsVersions = [ "35.0.0" ]; + + platformVersions = [ + "30" + platformVersion + ]; + includeEmulator = true; + includeSystemImages = true; + systemImageTypes = [ + systemImageType + ]; + abiVersions = [ + "x86" + "x86_64" + "armeabi-v7a" + "arm64-v8a" + ]; + cmakeVersions = [ "3.10.2" ]; + } + ); + android-sdk = pkgs.android-studio.withSdk androidComp.androidsdk; + + self = inputs.self; + + packageJson = builtins.fromJSON (builtins.readFile ./package.json); + + nodejs = pkgs.nodejs_24; + pnpm = pkgs.pnpm_10; + pnpmConfigHook = pkgs.pnpmConfigHook.override { inherit pnpm; }; + + pnpmNativeBuildInputs = [ + pkgs.pkg-config + nodejs + pnpm + pnpmConfigHook + ]; + + mkPnpmDeps = + { + src, + version, + pnpmInstallFlags, + }: + pkgs.fetchPnpmDeps { + inherit + pnpm + src + version + pnpmInstallFlags + ; + pname = "sable"; + fetcherVersion = 3; + hash = "sha256-9lHy7/+hVET5c9Mt3F9DvrkW97DMxTISJsrklK/Ls2c="; + }; + + mkPnpmCheck = + name: script: + pkgs.stdenv.mkDerivation (finalAttrs: { + pname = "sable-${name}"; + inherit (packageJson) version; + src = lib.cleanSource ./.; + + pnpmInstallFlags = [ "--ignore-scripts" ]; + + pnpmDeps = mkPnpmDeps { + inherit (finalAttrs) src version pnpmInstallFlags; + }; + + nativeBuildInputs = pnpmNativeBuildInputs; + + buildPhase = '' + runHook preBuild + pnpm run ${script} + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + touch $out + runHook postInstall + ''; + + doCheck = false; + }); + + nativeBuildInputs = with pkgs; [ + pkg-config + gobject-introspection + cargo + cargo-tauri + nodejs + xdg-utils + desktop-file-utils + wrapGAppsHook3 + ]; + + buildInputs = with pkgs; [ + at-spi2-atk + atkmm + cairo + gdk-pixbuf + glib + glib-networking + gtk3 + gsettings-desktop-schemas + harfbuzz + librsvg + libsoup_3 + pango + webkitgtk_4_1 + openssl + dbus + dbus.dev + libayatana-appindicator + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly + gst_all_1.gst-libav + android-sdk + ]; + + defaultPackages = [ + nodejs + pnpm + rust + pkgs.cargo + pkgs.cargo-tauri + pkgs.corepack + pkgs.vitejs + pkgs.oxlint + pkgs.oxfmt + pkgs.knope + pkgs.typescript + pkgs.typescript-language-server + pkgs.nil + pkgs.nixd + pkgs.jdk + ]; + in + { + treefmt = { + projectRootFile = "flake.nix"; + programs = { + nixfmt.enable = true; + oxfmt.enable = true; + }; + settings.global.excludes = [ + "dist" + "node_modules" + "pnpm-lock.yaml" + "pnpm-workspace.yaml" + "package.json" + "LICENSE" + "CHANGELOG.md" + "./changeset" ]; - cmakeVersions = ["3.10.2"]; - } - ); - android-sdk = pkgs.android-studio.withSdk androidComp.androidsdk; - - self = inputs.self; - - packageJson = builtins.fromJSON (builtins.readFile ./package.json); - - nodejs = pkgs.nodejs_24; - pnpm = pkgs.pnpm_10; - pnpmConfigHook = pkgs.pnpmConfigHook.override {inherit pnpm;}; - - pnpmNativeBuildInputs = [ - pkgs.pkg-config - nodejs - pnpm - pnpmConfigHook - ]; - - mkPnpmDeps = { - src, - version, - pnpmInstallFlags, - }: - pkgs.fetchPnpmDeps { - inherit - pnpm - src - version - pnpmInstallFlags - ; - pname = "sable"; - fetcherVersion = 3; - hash = "sha256-9lHy7/+hVET5c9Mt3F9DvrkW97DMxTISJsrklK/Ls2c="; + }; + pre-commit.settings.hooks = { + treefmt = { + enable = true; + package = config.treefmt.build.wrapper; + }; }; - mkPnpmCheck = name: script: - pkgs.stdenv.mkDerivation (finalAttrs: { - pname = "sable-${name}"; + packages.sable = pkgs.stdenv.mkDerivation (finalAttrs: { + pname = "sable"; inherit (packageJson) version; src = lib.cleanSource ./.; - pnpmInstallFlags = ["--ignore-scripts"]; + # ignoring knope for building + pnpmInstallFlags = [ "--ignore-scripts" ]; pnpmDeps = mkPnpmDeps { inherit (finalAttrs) src version pnpmInstallFlags; @@ -130,182 +245,73 @@ nativeBuildInputs = pnpmNativeBuildInputs; + env.VITE_BUILD_HASH = self.shortRev or self.dirtyShortRev or ""; + env.SABLE_BUILD_FLAVOR = "stable"; + buildPhase = '' runHook preBuild - pnpm run ${script} + pnpm run build runHook postBuild ''; installPhase = '' runHook preInstall - touch $out + cp -r dist $out runHook postInstall ''; - - doCheck = false; }); - nativeBuildInputs = with pkgs; [ - pkg-config - gobject-introspection - cargo - cargo-tauri - nodejs - xdg-utils - desktop-file-utils - wrapGAppsHook3 - ]; - - buildInputs = with pkgs; [ - at-spi2-atk - atkmm - cairo - gdk-pixbuf - glib - glib-networking - gtk3 - gsettings-desktop-schemas - harfbuzz - librsvg - libsoup_3 - pango - webkitgtk_4_1 - openssl - dbus - dbus.dev - libayatana-appindicator - gst_all_1.gstreamer - gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good - gst_all_1.gst-plugins-bad - gst_all_1.gst-plugins-ugly - gst_all_1.gst-libav - android-sdk - ]; - - defaultPackages = [ - nodejs - pnpm - rust - pkgs.cargo - pkgs.cargo-tauri - pkgs.corepack - pkgs.vitejs - pkgs.oxlint - pkgs.oxfmt - pkgs.knope - pkgs.typescript - pkgs.typescript-language-server - pkgs.nil - pkgs.nixd - pkgs.jdk - ]; - in { - treefmt = { - projectRootFile = "flake.nix"; - programs = { - nixfmt.enable = true; - oxfmt.enable = true; - }; - settings.global.excludes = [ - "dist" - "node_modules" - "pnpm-lock.yaml" - "pnpm-workspace.yaml" - "package.json" - "LICENSE" - "CHANGELOG.md" - "./changeset" - ]; - }; - pre-commit.settings.hooks = { - treefmt = { - enable = true; - package = config.treefmt.build.wrapper; + packages.android-emulator = androidEnv.emulateApp { + name = "emulate-sable"; + platformVersion = platformVersion; + abiVersion = "x86_64"; # arm64-v8a + systemImageType = systemImageType; }; - }; - - packages.sable = pkgs.stdenv.mkDerivation (finalAttrs: { - pname = "sable"; - inherit (packageJson) version; - src = lib.cleanSource ./.; - # ignoring knope for building - pnpmInstallFlags = ["--ignore-scripts"]; + packages.default = config.packages.sable; - pnpmDeps = mkPnpmDeps { - inherit (finalAttrs) src version pnpmInstallFlags; + checks = { + build = config.packages.sable; + lint = mkPnpmCheck "lint" "lint"; + fmt = mkPnpmCheck "fmt" "fmt:check"; + test = mkPnpmCheck "test" "test:run"; + typecheck = mkPnpmCheck "typecheck" "typecheck"; + knip = mkPnpmCheck "knip" "knip"; }; - nativeBuildInputs = pnpmNativeBuildInputs; - - env.VITE_BUILD_HASH = self.shortRev or self.dirtyShortRev or ""; - env.SABLE_BUILD_FLAVOR = "stable"; - - buildPhase = '' - runHook preBuild - pnpm run build - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - cp -r dist $out - runHook postInstall - ''; - }); - - packages.android-emulator = androidEnv.emulateApp { - name = "emulate-sable"; - platformVersion = platformVersion; - abiVersion = "x86_64"; # arm64-v8a - systemImageType = systemImageType; - }; + devShells = { + default = pkgs.mkShell { + inherit buildInputs nativeBuildInputs; - packages.default = config.packages.sable; + packages = defaultPackages; - checks = { - build = config.packages.sable; - lint = mkPnpmCheck "lint" "lint"; - fmt = mkPnpmCheck "fmt" "fmt:check"; - test = mkPnpmCheck "test" "test:run"; - typecheck = mkPnpmCheck "typecheck" "typecheck"; - knip = mkPnpmCheck "knip" "knip"; - }; + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (nativeBuildInputs ++ buildInputs); - devShells = { - default = pkgs.mkShell { - inherit buildInputs nativeBuildInputs; + GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules"; + GST_PLUGIN_SYSTEM_PATH = "${pkgs.gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0"; - packages = defaultPackages; + RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + }; - LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (nativeBuildInputs ++ buildInputs); + android = pkgs.mkShell { + inherit buildInputs nativeBuildInputs; - GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules"; - GST_PLUGIN_SYSTEM_PATH = "${pkgs.gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0"; - - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; - }; - - android = pkgs.mkShell { - inherit buildInputs nativeBuildInputs; + packages = defaultPackages ++ [ + android-sdk + ]; - packages = defaultPackages ++ [ - android-sdk - ]; + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (nativeBuildInputs ++ buildInputs); - LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (nativeBuildInputs ++ buildInputs); + ANDROID_HOME = "${androidComp.androidsdk}/libexec/android-sdk"; + ANDROID_SDK_ROOT = "${androidComp.androidsdk}/libexec/android-sdk"; + ANDROID_NDK_ROOT = "${androidComp.androidsdk}/libexec/android-sdk/ndk-bundle"; - ANDROID_HOME = "${androidComp.androidsdk}/libexec/android-sdk"; - ANDROID_SDK_ROOT = "${androidComp.androidsdk}/libexec/android-sdk"; - ANDROID_NDK_ROOT = "${androidComp.androidsdk}/libexec/android-sdk/ndk-bundle"; + GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules"; + GST_PLUGIN_SYSTEM_PATH = "${pkgs.gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0"; - GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules"; - GST_PLUGIN_SYSTEM_PATH = "${pkgs.gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0"; - - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + }; }; }; - }; }; } From 828d538ea84985fd4f2093fd97b08decfa8eb6c1 Mon Sep 17 00:00:00 2001 From: illuc Date: Tue, 4 Aug 2026 21:17:04 +0300 Subject: [PATCH 2/2] nix: updated the pnpm deps hash --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index f16db7134a..7c7ae9b968 100644 --- a/flake.nix +++ b/flake.nix @@ -117,7 +117,7 @@ ; pname = "sable"; fetcherVersion = 3; - hash = "sha256-9lHy7/+hVET5c9Mt3F9DvrkW97DMxTISJsrklK/Ls2c="; + hash = "sha256-1siT4fB6ty2azmWXe5L40EFUdk0th59qIdARUB0cVOc="; }; mkPnpmCheck =