# Copyright 2024, Gavin John # SPDX-License-Identifier: CC0-1.0 OR MIT OR BSL-1.0 { inputs = { # Whenever an upstream change is merged, update this to # the relevant commit and remove the packages from the # ...ToUpstream lists below nixpkgs.url = "github:NixOS/nixpkgs/e80d1b630036fe33badbc168dfcd071d463b92cf"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; devTools = with pkgs; [ # Tools that are required in order to develop with Monado, but that are not required to build Monado itself # These cannot be upstreamed into nixpkgs, as they are not required to build Monado # See https://github.com/NixOS/nix/issues/7501 for a discussion on this clang cmake-format git gradle gradle-completion ]; nativeBuildInputsToUpstream = with pkgs; [ # If there are any nativeBuildInputs that are not in nixpkgs, add them here # nativeBuildInputs are packages that are needed to develop and/or build the project (i.e. tooling) ]; buildInputsToUpstream = with pkgs; [ # If there are any buildInputs that are not in nixpkgs, add them here # buildInputs are any packages that are needed at runtime (i.e. dependencies) ]; package = pkgs.monado.overrideAttrs (oldAttrs: { src = ./.; nativeBuildInputs = oldAttrs.nativeBuildInputs ++ nativeBuildInputsToUpstream ++ devTools; buildInputs = oldAttrs.buildInputs ++ buildInputsToUpstream; patches = []; }); in { packages.default = package; devShells.default = package; } ); }