Something went wrong. Try again.
An ATProto Powered Reputation Network
Something went wrong. Try again.
provenance flake.nix
4.6 kB · 160 lines
Nix
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161{ description = "Provenance services, NixOS modules, and development environment";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; inputs.services-flake.url = "github:juspay/services-flake/0.5.0"; inputs.process-compose-flake.url = "github:Platonic-Systems/process-compose-flake"; inputs.git-hooks = { url = "github:cachix/git-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; };
outputs = { self, nixpkgs, services-flake, process-compose-flake, git-hooks, ... }: let systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; forSystems = nixpkgs.lib.genAttrs systems; devServices = system: import ./nix/dev-services.nix { pkgs = import nixpkgs { inherit system; }; package = self.packages.${system}.provenance; inherit services-flake process-compose-flake; }; hooks = system: git-hooks.lib.${system}.run ( import ./nix/hooks.nix { pkgs = import nixpkgs { inherit system; }; } ); in { packages = forSystems ( system: let pkgs = import nixpkgs { inherit system; }; provenance = pkgs.callPackage ./nix/package.nix { }; in { default = provenance; inherit provenance; goat = pkgs.callPackage ./nix/goat.nix { }; appview = provenance.override { pname = "provenance-appview"; subPackages = [ "cmd/appview" ]; }; ui = provenance.override { pname = "provenance-ui"; subPackages = [ "cmd/ui" ]; }; services = (devServices system).outputs.package; } );
apps = forSystems (system: { services = { type = "app"; meta.description = "Start the native Provenance development services"; program = "${self.packages.${system}.services}/bin/provenance-services"; }; });
processComposeModules.provenance = services-flake.lib.multiService ./nix/services/provenance.nix;
nixosModules = { appview = import ./nix/modules/appview.nix; ui = import ./nix/modules/ui.nix; default = { imports = [ self.nixosModules.appview self.nixosModules.ui ]; }; };
checks = forSystems ( system: let pkgs = import nixpkgs { inherit system; }; in { package = self.packages.${system}.default; dev-services = (devServices system).outputs.check; dev-services-wildcard = (devServices system).outputs.check.overrideAttrs { PROVENANCE_DEV_BIND_HOST = "0.0.0.0"; }; pre-commit = hooks system; source-filter = import ./nix/tests/source-filter.nix { inherit pkgs; }; lexicons = pkgs.runCommand "provenance-lexicon-check" { nativeBuildInputs = [ self.packages.${system}.goat ]; } '' goat lex lint ${./lexicons/computer/ngp/provenance/vouch.json} touch "$out" ''; } // nixpkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { modules = import ./nix/tests/modules.nix { inherit self nixpkgs pkgs system ; }; services = pkgs.testers.runNixOSTest (import ./nix/tests/services.nix { inherit self system; }); } );
devShells = forSystems ( system: let pkgs = import nixpkgs { inherit system; }; in { default = pkgs.mkShell { CGO_ENABLED = "1"; packages = [ pkgs.go pkgs.stdenv.cc pkgs.sqlc pkgs.sqlite self.packages.${system}.goat pkgs.gnumake pkgs.plan9port ] ++ (hooks system).enabledPackages; shellHook = (hooks system).shellHook; }; } );
formatter = forSystems ( system: let pkgs = import nixpkgs { inherit system; }; config = (hooks system).config; in pkgs.writeShellApplication { name = "provenance-hooks"; text = '' exec ${pkgs.lib.getExe config.package} run --all-files --config ${config.configFile} "$@" ''; } ); };}