mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-04-12 10:48:39 +03:00

1. Refactored Nix devshell/package to make it easier to keep LD_LIBRARY_PATH & buildInputs in sync (plus make it easier to re-use in other Nix environment). 2. Added a CI job to ensure that Blueprints are formatted correctly and that they will compile using `blueprint-compiler` 0.16.0. 3. Reformatted all Blueprints with `blueprint-compiler format`.
131 lines
4.4 KiB
Nix
131 lines
4.4 KiB
Nix
{
|
|
description = "👻";
|
|
|
|
inputs = {
|
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
|
|
|
# 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.
|
|
nixpkgs-stable.url = "github:nixos/nixpkgs/release-24.11";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
# Used for shell.nix
|
|
flake-compat = {
|
|
url = "github:edolstra/flake-compat";
|
|
flake = false;
|
|
};
|
|
|
|
zig = {
|
|
url = "github:mitchellh/zig-overlay";
|
|
inputs = {
|
|
nixpkgs.follows = "nixpkgs-stable";
|
|
flake-utils.follows = "flake-utils";
|
|
flake-compat.follows = "";
|
|
};
|
|
};
|
|
|
|
zon2nix = {
|
|
url = "github:jcollie/zon2nix?ref=56c159be489cc6c0e73c3930bd908ddc6fe89613";
|
|
inputs = {
|
|
nixpkgs.follows = "nixpkgs-unstable";
|
|
flake-utils.follows = "flake-utils";
|
|
};
|
|
};
|
|
};
|
|
|
|
outputs = {
|
|
self,
|
|
nixpkgs-unstable,
|
|
nixpkgs-stable,
|
|
zig,
|
|
zon2nix,
|
|
...
|
|
}:
|
|
builtins.foldl' nixpkgs-stable.lib.recursiveUpdate {} (
|
|
builtins.map (
|
|
system: let
|
|
pkgs-stable = nixpkgs-stable.legacyPackages.${system};
|
|
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
|
|
in {
|
|
devShell.${system} = pkgs-stable.callPackage ./nix/devShell.nix {
|
|
zig = zig.packages.${system}."0.14.0";
|
|
wraptest = pkgs-stable.callPackage ./nix/wraptest.nix {};
|
|
# remove once blueprint-compiler 0.16.0 is in the stable nixpkgs
|
|
blueprint-compiler = pkgs-unstable.blueprint-compiler;
|
|
zon2nix = zon2nix;
|
|
};
|
|
|
|
packages.${system} = let
|
|
mkArgs = optimize: {
|
|
inherit optimize;
|
|
|
|
revision = self.shortRev or self.dirtyShortRev or "dirty";
|
|
};
|
|
in rec {
|
|
deps = pkgs-unstable.callPackage ./build.zig.zon.nix {};
|
|
ghostty-debug = pkgs-unstable.callPackage ./nix/package.nix (mkArgs "Debug");
|
|
ghostty-releasesafe = pkgs-unstable.callPackage ./nix/package.nix (mkArgs "ReleaseSafe");
|
|
ghostty-releasefast = pkgs-unstable.callPackage ./nix/package.nix (mkArgs "ReleaseFast");
|
|
|
|
ghostty = ghostty-releasefast;
|
|
default = ghostty;
|
|
};
|
|
|
|
formatter.${system} = pkgs-stable.alejandra;
|
|
|
|
apps.${system} = let
|
|
runVM = (
|
|
module: let
|
|
vm = import ./nix/vm/create.nix {
|
|
inherit system module;
|
|
nixpkgs = nixpkgs-unstable;
|
|
overlay = self.overlays.debug;
|
|
};
|
|
program = pkgs-unstable.writeShellScript "run-ghostty-vm" ''
|
|
SHARED_DIR=$(pwd)
|
|
export SHARED_DIR
|
|
|
|
${pkgs-unstable.lib.getExe vm.config.system.build.vm} "$@"
|
|
'';
|
|
in {
|
|
type = "app";
|
|
program = "${program}";
|
|
}
|
|
);
|
|
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-gnome = runVM ./nix/vm/x11-gnome.nix;
|
|
x11-plasma6 = runVM ./nix/vm/x11-plasma6.nix;
|
|
x11-xfce = runVM ./nix/vm/x11-xfce.nix;
|
|
};
|
|
}
|
|
# Our supported systems are the same supported systems as the Zig binaries.
|
|
) (builtins.attrNames zig.packages)
|
|
)
|
|
// {
|
|
overlays = {
|
|
default = self.overlays.releasefast;
|
|
releasefast = final: prev: {
|
|
ghostty = self.packages.${prev.system}.ghostty-releasefast;
|
|
};
|
|
debug = final: prev: {
|
|
ghostty = self.packages.${prev.system}.ghostty-debug;
|
|
};
|
|
};
|
|
create-vm = import ./nix/vm/create.nix;
|
|
create-cinnamon-vm = import ./nix/vm/create-cinnamon.nix;
|
|
create-gnome-vm = import ./nix/vm/create-gnome.nix;
|
|
create-plasma6-vm = import ./nix/vm/create-plasma6.nix;
|
|
create-xfce-vm = import ./nix/vm/create-xfce.nix;
|
|
};
|
|
|
|
nixConfig = {
|
|
extra-substituters = ["https://ghostty.cachix.org"];
|
|
extra-trusted-public-keys = ["ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns="];
|
|
};
|
|
}
|