A macOS utility to track home-manager JJ repo status

Add Tangled CI lint workflow using nix fmt

Add a Spindle pipeline that checks formatting on push to main and on
pull requests using `nix fmt -- --fail-on-change`. This uses the
treefmt-nix configuration from flake.nix as the single source of truth
for all formatting rules (nixfmt, shfmt, swift-format).

Since the app is macOS-only (Swift + AppKit/SwiftUI), we can't build
or test on Linux CI, but we can verify formatting.

Changes to flake.nix:
- Add x86_64-linux to systems so treefmt evaluates on Linux CI
- Gate packages.default behind stdenv.hostPlatform.isDarwin since the
Swift/macOS derivation can't build on Linux

authored by nolith.dev and committed by tangled.org 508e2121 b3a5af73

+28 -2
+19
.tangled/workflows/lint.yml
··· 1 + # Formatting checks using nix fmt (treefmt-nix) 2 + # Single source of truth: flake.nix treefmt config drives all formatting rules. 3 + 4 + when: 5 + - event: ["push"] 6 + branch: ["main"] 7 + - event: ["pull_request"] 8 + branch: ["main"] 9 + 10 + engine: "nixery" 11 + 12 + dependencies: 13 + nixpkgs: 14 + - nix 15 + - git 16 + 17 + steps: 18 + - name: "Check formatting" 19 + command: "nix fmt -- --ci"
+9 -2
flake.nix
··· 16 16 systems = [ 17 17 "aarch64-darwin" 18 18 "x86_64-darwin" 19 + "x86_64-linux" 19 20 ]; 20 21 21 22 imports = [ ··· 28 29 }; 29 30 30 31 perSystem = 31 - { pkgs, ... }: 32 32 { 33 - packages.default = pkgs.swiftPackages.callPackage ./nix/package.nix { }; 33 + pkgs, 34 + lib, 35 + ... 36 + }: 37 + { 38 + packages = lib.optionalAttrs pkgs.stdenv.hostPlatform.isDarwin { 39 + default = pkgs.swiftPackages.callPackage ./nix/package.nix { }; 40 + }; 34 41 35 42 treefmt = { 36 43 projectRootFile = "flake.nix";