{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; nix-systems.url = "github:nix-systems/default-linux"; }; outputs = inputs: with inputs; let get = builtins.attrValues; forAllSystems = function: nixpkgs.lib.genAttrs (import nix-systems) (system: function nixpkgs.legacyPackages.${system}); deps = forAllSystems (pkgs: { dev = get { inherit (pkgs) just; inherit (pkgs.ocamlPackages) utop dune_3 ocaml-lsp ocamlformat ocamlformat-rpc-lib ; }; build = get { inherit (pkgs.ocamlPackages) ocaml lwt lwt_ppx inotify angstrom systemd yojson ppx_deriving_yojson ; } ++ [ self.packages.${pkgs.system}.obus ]; }); in { devShells = forAllSystems (pkgs: { default = import ./shell.nix { inherit pkgs; deps = deps.${pkgs.system}; }; }); packages = forAllSystems (pkgs: { default = pkgs.callPackage ./default.nix { buildInputs = deps.${pkgs.system}.build; }; obus = pkgs.callPackage ./nix/obus.nix { }; }); nixosModules.smooooth = { config, pkgs, lib, ... }: { imports = [ ./module.nix ]; services.smooooth.package = self.packages.${pkgs.system}.default; }; }; }