{ inputs = { self.submodules = true; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; c3c = { url = "github:c3lang/c3c"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, c3c, ... }: let pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [(_: _: {c3c = c3c.packages.x86_64-linux.default;})]; }; in { packages.x86_64-linux.default = pkgs.stdenv.mkDerivation { pname = "c3term"; version = "0.1.0"; src = ./.; buildInputs = [ pkgs.c3c pkgs.wayland-scanner ]; nativeBuildInputs = [ pkgs.libxkbcommon pkgs.libGL pkgs.wayland ]; configurePhase = '' wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml include/xdg-shell.h wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/staging/pointer-warp/pointer-warp-v1.xml include/pointer-warp-v1.h wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/staging/xdg-toplevel-icon/xdg-toplevel-icon-v1.xml include/xdg-toplevel-icon-v1.h wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml include/xdg-decoration-unstable-v1.h wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml include/relative-pointer-unstable-v1.h wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml include/pointer-constraints-unstable-v1.h wayland-scanner client-header ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-output/xdg-output-unstable-v1.xml include/xdg-output-unstable-v1.h wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/stable/xdg-shell/xdg-shell.xml xdg-shell.c wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/staging/pointer-warp/pointer-warp-v1.xml pointer-warp-v1.c wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/staging/xdg-toplevel-icon/xdg-toplevel-icon-v1.xml xdg-toplevel-icon-v1.c wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml xdg-decoration-unstable-v1.c wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml relative-pointer-unstable-v1.c wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml pointer-constraints-unstable-v1.c wayland-scanner private-code ${pkgs.wayland-protocols}/share/wayland-protocols/unstable/xdg-output/xdg-output-unstable-v1.xml xdg-output-unstable-v1.c ''; buildPhase = '' c3c build ''; installPhase = '' mkdir -p $out/bin/ cp ./build/c3term $out/bin/ ''; }; devShells.x86_64-linux.default = pkgs.mkShell { buildInputs = [ pkgs.c3c ]; }; }; }