diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-04-04 19:22:04 +0300 |
|---|---|---|
| committer | Can Celik <ogulcancelik@gmail.com> | 2026-04-05 01:23:06 +0300 |
| commit | 41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch) | |
| tree | 3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/flake.nix | |
| parent | 55c138263e190a1e79d4b997bfb9397306c0ec1f (diff) | |
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/flake.nix')
| -rw-r--r-- | vendor/libghostty-vt/flake.nix | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/flake.nix b/vendor/libghostty-vt/flake.nix new file mode 100644 index 00000000..59ced2de --- /dev/null +++ b/vendor/libghostty-vt/flake.nix @@ -0,0 +1,163 @@ +{ + description = "👻"; + + inputs = { + # We want to stay as up to date as possible but need to be careful that the + # glibc versions used by our dependencies from Nix are compatible with the + # system glibc that the user is building for. + # + # We are currently on nixpkgs-unstable to get Zig 0.15 for our package.nix and + # Gnome 49/Gtk 4.20. + # + nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; + + # Used for shell.nix + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + + systems = { + url = "github:nix-systems/default"; + flake = false; + }; + + zig = { + url = "github:mitchellh/zig-overlay"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-compat.follows = "flake-compat"; + systems.follows = "systems"; + }; + }; + + zon2nix = { + url = "github:jcollie/zon2nix?rev=c28e93f3ba133d4c1b1d65224e2eebede61fd071"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + }; + + outputs = { + self, + nixpkgs, + zig, + zon2nix, + home-manager, + ... + }: let + inherit (nixpkgs) lib legacyPackages; + + # Our supported systems are the same supported systems as the Zig binaries. + platforms = lib.attrNames zig.packages; + + # It's not always possible to build Ghostty with Nix for each system, + # one such example being macOS due to missing Swift 6 and xcodebuild + # support in the Nix ecosystem. Therefore for things like package outputs + # we need to limit the attributes we expose. + buildablePlatforms = lib.filter (p: !(lib.systems.elaborate p).isDarwin) platforms; + + forAllPlatforms = f: lib.genAttrs platforms (s: f legacyPackages.${s}); + forBuildablePlatforms = f: lib.genAttrs buildablePlatforms (s: f legacyPackages.${s}); + + mkPkgArgs = optimize: { + inherit optimize; + revision = self.shortRev or self.dirtyShortRev or "dirty"; + }; + in { + devShells = forAllPlatforms (pkgs: { + default = pkgs.callPackage ./nix/devShell.nix { + zig = zig.packages.${pkgs.stdenv.hostPlatform.system}."0.15.2"; + wraptest = pkgs.callPackage ./nix/pkgs/wraptest.nix {}; + zon2nix = zon2nix; + + python3 = pkgs.python3.override { + self = pkgs.python3; + packageOverrides = pyfinal: pyprev: { + blessed = pyfinal.callPackage ./nix/pkgs/blessed.nix {}; + ucs-detect = pyfinal.callPackage ./nix/pkgs/ucs-detect.nix {}; + wcwidth = pyfinal.callPackage ./nix/pkgs/wcwidth.nix {}; + }; + }; + }; + }); + + packages = + forAllPlatforms (pkgs: { + # Deps are needed for environmental setup on macOS + deps = pkgs.callPackage ./build.zig.zon.nix {}; + }) + // forBuildablePlatforms (pkgs: rec { + ghostty-debug = pkgs.callPackage ./nix/package.nix (mkPkgArgs "Debug"); + ghostty-releasesafe = pkgs.callPackage ./nix/package.nix (mkPkgArgs "ReleaseSafe"); + ghostty-releasefast = pkgs.callPackage ./nix/package.nix (mkPkgArgs "ReleaseFast"); + + ghostty = ghostty-releasefast; + default = ghostty; + + libghostty-vt-debug = pkgs.callPackage ./nix/libghostty-vt.nix (mkPkgArgs "Debug"); + libghostty-vt-releasesafe = pkgs.callPackage ./nix/libghostty-vt.nix (mkPkgArgs "ReleaseSafe"); + libghostty-vt-releasefast = pkgs.callPackage ./nix/libghostty-vt.nix (mkPkgArgs "ReleaseFast"); + + libghostty-vt = libghostty-vt-releasefast; + }); + + formatter = forAllPlatforms (pkgs: pkgs.alejandra); + + apps = forBuildablePlatforms (pkgs: let + runVM = module: let + vm = import ./nix/vm/create.nix { + inherit (pkgs.stdenv.hostPlatform) system; + inherit module nixpkgs; + overlay = self.overlays.debug; + }; + program = pkgs.writeShellScript "run-ghostty-vm" '' + SHARED_DIR=$(pwd) + export SHARED_DIR + + ${pkgs.lib.getExe vm.config.system.build.vm} "$@" + ''; + in { + type = "app"; + program = "${program}"; + meta.description = "start a vm from ${toString module}"; + }; + in { + wayland-cinnamon = runVM ./nix/vm/wayland-cinnamon.nix; + wayland-gnome = runVM ./nix/vm/wayland-gnome.nix; + wayland-plasma6 = runVM ./nix/vm/wayland-plasma6.nix; + x11-cinnamon = runVM ./nix/vm/x11-cinnamon.nix; + x11-plasma6 = runVM ./nix/vm/x11-plasma6.nix; + x11-xfce = runVM ./nix/vm/x11-xfce.nix; + }); + + checks = forAllPlatforms (pkgs: + import ./nix/tests.nix { + inherit home-manager nixpkgs self; + inherit (pkgs.stdenv.hostPlatform) system; + }); + + overlays = { + default = self.overlays.releasefast; + releasefast = final: prev: { + ghostty = final.callPackage ./nix/package.nix (mkPkgArgs "ReleaseFast"); + }; + debug = final: prev: { + ghostty = final.callPackage ./nix/package.nix (mkPkgArgs "Debug"); + }; + }; + }; + + nixConfig = { + extra-substituters = ["https://ghostty.cachix.org"]; + extra-trusted-public-keys = ["ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns="]; + }; +} |
