Rules-based browser launcher for TUI + GNOME. switchyard.aly.codes
tui gome bowser go
0

Configure Feed

Select the types of activity you want to include in your feed.

build: add aarch64-darwin support and macos-specific packages

Aly Raffauf (Jul 6, 2026, 8:59 AM EDT) d97ad60f 40e5a57e

+94 -19
+1
flake.nix
··· 21 21 systems = [ 22 22 "aarch64-linux" 23 23 "x86_64-linux" 24 + "aarch64-darwin" 24 25 ]; 25 26 26 27 imports = [
+23 -16
flake/packages.nix
··· 7 7 ... 8 8 }: let 9 9 # Shared across both Go packages 10 - vendorHash = "sha256-Mkb8LSMUeKqOHxvHq7W1/7rxRr73Cx3L1Pf7+xjWgaE="; 10 + vendorHash = "sha256-pGON6Eq9P+oXk3LE6V1P11KMaAsagjs2e7Lc27a36QM="; 11 11 in { 12 - packages = { 13 - default = self'.packages.switchyard; 12 + packages = 13 + { 14 + # Terminal browser picker (cmd/sw). The only package that builds on 15 + # both Linux and macOS. 16 + sw = pkgs.callPackage ../nix/sw.nix {inherit vendorHash;}; 17 + } 18 + // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux { 19 + default = self'.packages.switchyard; 20 + 21 + # Flatpak/XDG desktop integration installer -- Linux-only concepts. 22 + browser-setup = pkgs.python3Packages.buildPythonApplication { 23 + pname = "browser-setup"; 24 + version = "dev"; 25 + src = ../browser-setup; 26 + pyproject = true; 27 + build-system = with pkgs.python3.pkgs; [setuptools]; 28 + }; 14 29 15 - browser-setup = pkgs.python3Packages.buildPythonApplication { 16 - pname = "browser-setup"; 17 - version = "dev"; 18 - src = ../browser-setup; 19 - pyproject = true; 20 - build-system = with pkgs.python3.pkgs; [setuptools]; 30 + # GTK GUI (cmd/switchyard), Linux-only. 31 + switchyard = pkgs.callPackage ../nix/switchyard.nix {inherit vendorHash;}; 32 + } 33 + // pkgs.lib.optionalAttrs pkgs.stdenv.isDarwin { 34 + default = self'.packages.sw; 21 35 }; 22 - 23 - # GTK GUI (cmd/switchyard). 24 - switchyard = pkgs.callPackage ../nix/switchyard.nix {inherit vendorHash;}; 25 - 26 - # Terminal browser picker (cmd/sw). 27 - sw = pkgs.callPackage ../nix/sw.nix {inherit vendorHash;}; 28 - }; 29 36 }; 30 37 }
+61 -1
flatpak/go-modules.json
··· 323 323 }, 324 324 { 325 325 "type": "file", 326 + "url": "https://proxy.golang.org/github.com/jessevdk/go-flags/@v/v1.4.0.mod", 327 + "sha256": "9fff48f350dbc6bb066594e94496defa195e8b55206d261ca5b2f989f6782a2d", 328 + "dest": "go/pkg/mod/cache/download/github.com/jessevdk/go-flags/@v", 329 + "dest-filename": "v1.4.0.mod" 330 + }, 331 + { 332 + "type": "file", 333 + "url": "https://proxy.golang.org/github.com/jessevdk/go-flags/@v/v1.4.0.zip", 334 + "sha256": "a26e72c3f4c220df8b65ac6eb3d358a8ad2efc300b212318582893ea882726f9", 335 + "dest": "go/pkg/mod/cache/download/github.com/jessevdk/go-flags/@v", 336 + "dest-filename": "v1.4.0.zip" 337 + }, 338 + { 339 + "type": "file", 326 340 "url": "https://proxy.golang.org/github.com/kballard/go-shellquote/@v/v0.0.0-20180428030007-95032a82bc51.mod", 327 341 "sha256": "49a2d6c73f667dc0f46322a0d6acfcba14209bfb76ef7e622d61e1091962ff34", 328 342 "dest": "go/pkg/mod/cache/download/github.com/kballard/go-shellquote/@v", ··· 532 546 "dest-filename": "v0.35.0.zip" 533 547 }, 534 548 { 549 + "type": "file", 550 + "url": "https://proxy.golang.org/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.mod", 551 + "sha256": "5c306e0d633cd66a11b40e2e5fbbc6da42110db7d72ea3c1524ceb45ee40c33f", 552 + "dest": "go/pkg/mod/cache/download/gopkg.in/check.v1/@v", 553 + "dest-filename": "v0.0.0-20161208181325-20d25e280405.mod" 554 + }, 555 + { 556 + "type": "file", 557 + "url": "https://proxy.golang.org/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.zip", 558 + "sha256": "4e1817f964ca34e545b81afda0325a5e89cf58de2e413d8207c0afddd0fdc15c", 559 + "dest": "go/pkg/mod/cache/download/gopkg.in/check.v1/@v", 560 + "dest-filename": "v0.0.0-20161208181325-20d25e280405.zip" 561 + }, 562 + { 563 + "type": "file", 564 + "url": "https://proxy.golang.org/gopkg.in/yaml.v1/@v/v1.0.0-20140924161607-9f9df34309c0.mod", 565 + "sha256": "17b76a6ecf3c4d0aff62a58bfe7e401a5f58fe9bc38f9c4b6fd8da660bca4135", 566 + "dest": "go/pkg/mod/cache/download/gopkg.in/yaml.v1/@v", 567 + "dest-filename": "v1.0.0-20140924161607-9f9df34309c0.mod" 568 + }, 569 + { 570 + "type": "file", 571 + "url": "https://proxy.golang.org/gopkg.in/yaml.v1/@v/v1.0.0-20140924161607-9f9df34309c0.zip", 572 + "sha256": "7abff7973fdab7386de5a1e9e197d8dc50d41ded9d24ff914685900caa0eb742", 573 + "dest": "go/pkg/mod/cache/download/gopkg.in/yaml.v1/@v", 574 + "dest-filename": "v1.0.0-20140924161607-9f9df34309c0.zip" 575 + }, 576 + { 577 + "type": "file", 578 + "url": "https://proxy.golang.org/howett.net/plist/@v/v1.0.1.mod", 579 + "sha256": "c82cd5b5579d83db1ba908f04184b56c04fb4a9052042e832ce68f7adc739335", 580 + "dest": "go/pkg/mod/cache/download/howett.net/plist/@v", 581 + "dest-filename": "v1.0.1.mod" 582 + }, 583 + { 584 + "type": "file", 585 + "url": "https://proxy.golang.org/howett.net/plist/@v/v1.0.1.zip", 586 + "sha256": "a73da26d715d28d6086411893d10d9efdf7c023f208518180aeaec7da7485a21", 587 + "dest": "go/pkg/mod/cache/download/howett.net/plist/@v", 588 + "dest-filename": "v1.0.1.zip" 589 + }, 590 + { 535 591 "type": "shell", 536 592 "commands": [ 537 593 "mkdir -p go/pkg/mod/cache/download/charm.land/bubbles/v2/@v && printf '%s\\n' h1:7r55WzBxpo/R3z98hGmY7KKPd3ET6vsf0Fb9sDHOV60= > go/pkg/mod/cache/download/charm.land/bubbles/v2/@v/v2.1.1.ziphash && printf '%s' '{\"Version\":\"v2.1.1\"}' > go/pkg/mod/cache/download/charm.land/bubbles/v2/@v/v2.1.1.info", ··· 557 613 "mkdir -p go/pkg/mod/cache/download/github.com/diamondburned/gotk4-adwaita/pkg/@v && printf '%s\\n' h1:WzOC3KtvrC1hJMz3fbJBg0Ye50nt4Tafor+a/bBHNEA= > go/pkg/mod/cache/download/github.com/diamondburned/gotk4-adwaita/pkg/@v/v0.0.0-20250703085337-e94555b846b6.ziphash && printf '%s' '{\"Version\":\"v0.0.0-20250703085337-e94555b846b6\"}' > go/pkg/mod/cache/download/github.com/diamondburned/gotk4-adwaita/pkg/@v/v0.0.0-20250703085337-e94555b846b6.info", 558 614 "mkdir -p go/pkg/mod/cache/download/github.com/diamondburned/gotk4/pkg/@v && printf '%s\\n' h1:dN2jYYZ71hFhoKFSn24pQdKWLZb/XDydBt8pEIkFjJo= > go/pkg/mod/cache/download/github.com/diamondburned/gotk4/pkg/@v/v0.3.2-0.20250703063411-16654385f59a.ziphash && printf '%s' '{\"Version\":\"v0.3.2-0.20250703063411-16654385f59a\"}' > go/pkg/mod/cache/download/github.com/diamondburned/gotk4/pkg/@v/v0.3.2-0.20250703063411-16654385f59a.info", 559 615 "mkdir -p go/pkg/mod/cache/download/github.com/dustin/go-humanize/@v && printf '%s\\n' h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= > go/pkg/mod/cache/download/github.com/dustin/go-humanize/@v/v1.0.1.ziphash && printf '%s' '{\"Version\":\"v1.0.1\"}' > go/pkg/mod/cache/download/github.com/dustin/go-humanize/@v/v1.0.1.info", 616 + "mkdir -p go/pkg/mod/cache/download/github.com/jessevdk/go-flags/@v && printf '%s\\n' h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= > go/pkg/mod/cache/download/github.com/jessevdk/go-flags/@v/v1.4.0.ziphash && printf '%s' '{\"Version\":\"v1.4.0\"}' > go/pkg/mod/cache/download/github.com/jessevdk/go-flags/@v/v1.4.0.info", 560 617 "mkdir -p go/pkg/mod/cache/download/github.com/kballard/go-shellquote/@v && printf '%s\\n' h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= > go/pkg/mod/cache/download/github.com/kballard/go-shellquote/@v/v0.0.0-20180428030007-95032a82bc51.ziphash && printf '%s' '{\"Version\":\"v0.0.0-20180428030007-95032a82bc51\"}' > go/pkg/mod/cache/download/github.com/kballard/go-shellquote/@v/v0.0.0-20180428030007-95032a82bc51.info", 561 618 "mkdir -p go/pkg/mod/cache/download/github.com/kylelemons/godebug/@v && printf '%s\\n' h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= > go/pkg/mod/cache/download/github.com/kylelemons/godebug/@v/v1.1.0.ziphash && printf '%s' '{\"Version\":\"v1.1.0\"}' > go/pkg/mod/cache/download/github.com/kylelemons/godebug/@v/v1.1.0.info", 562 619 "mkdir -p go/pkg/mod/cache/download/github.com/lucasb-eyer/go-colorful/@v && printf '%s\\n' h1:UtrWVfLdarDgc44HcS7pYloGHJUjHV/4FwW4TvVgFr4= > go/pkg/mod/cache/download/github.com/lucasb-eyer/go-colorful/@v/v1.4.0.ziphash && printf '%s' '{\"Version\":\"v1.4.0\"}' > go/pkg/mod/cache/download/github.com/lucasb-eyer/go-colorful/@v/v1.4.0.info", ··· 571 628 "mkdir -p go/pkg/mod/cache/download/golang.org/x/mod/@v && printf '%s\\n' h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= > go/pkg/mod/cache/download/golang.org/x/mod/@v/v0.26.0.ziphash && printf '%s' '{\"Version\":\"v0.26.0\"}' > go/pkg/mod/cache/download/golang.org/x/mod/@v/v0.26.0.info", 572 629 "mkdir -p go/pkg/mod/cache/download/golang.org/x/sync/@v && printf '%s\\n' h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= > go/pkg/mod/cache/download/golang.org/x/sync/@v/v0.21.0.ziphash && printf '%s' '{\"Version\":\"v0.21.0\"}' > go/pkg/mod/cache/download/golang.org/x/sync/@v/v0.21.0.info", 573 630 "mkdir -p go/pkg/mod/cache/download/golang.org/x/sys/@v && printf '%s\\n' h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= > go/pkg/mod/cache/download/golang.org/x/sys/@v/v0.46.0.ziphash && printf '%s' '{\"Version\":\"v0.46.0\"}' > go/pkg/mod/cache/download/golang.org/x/sys/@v/v0.46.0.info", 574 - "mkdir -p go/pkg/mod/cache/download/golang.org/x/tools/@v && printf '%s\\n' h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= > go/pkg/mod/cache/download/golang.org/x/tools/@v/v0.35.0.ziphash && printf '%s' '{\"Version\":\"v0.35.0\"}' > go/pkg/mod/cache/download/golang.org/x/tools/@v/v0.35.0.info" 631 + "mkdir -p go/pkg/mod/cache/download/golang.org/x/tools/@v && printf '%s\\n' h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= > go/pkg/mod/cache/download/golang.org/x/tools/@v/v0.35.0.ziphash && printf '%s' '{\"Version\":\"v0.35.0\"}' > go/pkg/mod/cache/download/golang.org/x/tools/@v/v0.35.0.info", 632 + "mkdir -p go/pkg/mod/cache/download/gopkg.in/check.v1/@v && printf '%s\\n' h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= > go/pkg/mod/cache/download/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.ziphash && printf '%s' '{\"Version\":\"v0.0.0-20161208181325-20d25e280405\"}' > go/pkg/mod/cache/download/gopkg.in/check.v1/@v/v0.0.0-20161208181325-20d25e280405.info", 633 + "mkdir -p go/pkg/mod/cache/download/gopkg.in/yaml.v1/@v && printf '%s\\n' h1:POO/ycCATvegFmVuPpQzZFJ+pGZeX22Ufu6fibxDVjU= > go/pkg/mod/cache/download/gopkg.in/yaml.v1/@v/v1.0.0-20140924161607-9f9df34309c0.ziphash && printf '%s' '{\"Version\":\"v1.0.0-20140924161607-9f9df34309c0\"}' > go/pkg/mod/cache/download/gopkg.in/yaml.v1/@v/v1.0.0-20140924161607-9f9df34309c0.info", 634 + "mkdir -p go/pkg/mod/cache/download/howett.net/plist/@v && printf '%s\\n' h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= > go/pkg/mod/cache/download/howett.net/plist/@v/v1.0.1.ziphash && printf '%s' '{\"Version\":\"v1.0.1\"}' > go/pkg/mod/cache/download/howett.net/plist/@v/v1.0.1.info" 575 635 ] 576 636 } 577 637 ]
+3
go.sum
··· 44 44 github.com/diamondburned/gotk4/pkg v0.3.2-0.20250703063411-16654385f59a/go.mod h1:O9K8+PGNFGJpAu8+u5D2Sn5Wae4hxWzHB+AeZNbV/2Q= 45 45 github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= 46 46 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= 47 + github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= 47 48 github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= 48 49 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= 49 50 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= ··· 75 76 golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= 76 77 golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= 77 78 golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= 79 + gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= 78 80 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 81 + gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 h1:POO/ycCATvegFmVuPpQzZFJ+pGZeX22Ufu6fibxDVjU= 79 82 gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= 80 83 howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= 81 84 howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g=
+6 -2
nix/sw.nix
··· 1 1 { 2 2 buildGoModule, 3 3 lib, 4 + stdenv, 4 5 vendorHash, 5 6 }: 6 7 buildGoModule { ··· 9 10 src = ../.; 10 11 inherit vendorHash; 11 12 subPackages = ["cmd/sw"]; 12 - env.CGO_ENABLED = "0"; 13 + 14 + # Darwin's browser scanner calls NSWorkspace via cgo; Linux's is pure Go, 15 + # so CGO stays off there for a fully static binary. 16 + env.CGO_ENABLED = if stdenv.isDarwin then "1" else "0"; 13 17 14 18 ldflags = [ 15 19 "-s" ··· 20 24 description = "Switchyard's terminal browser picker"; 21 25 homepage = "https://github.com/alyraffauf/switchyard"; 22 26 license = licenses.gpl3Plus; 23 - platforms = platforms.linux; 27 + platforms = platforms.unix; 24 28 mainProgram = "sw"; 25 29 }; 26 30 }