Command-line and Emacs Calendar Client
at main 1.3 kB view raw
1{ 2 inputs = { 3 nixpkgs.url = "github:nixos/nixpkgs"; 4 opam-nix.url = "github:tweag/opam-nix"; 5 flake-utils.url = "github:numtide/flake-utils"; 6 # we pin opam-nix's nixpkgs to follow the flakes, avoiding using two different instances 7 opam-nix.inputs.nixpkgs.follows = "nixpkgs"; 8 # deduplicate flakes 9 opam-nix.inputs.flake-utils.follows = "flake-utils"; 10 }; 11 outputs = { self, nixpkgs, flake-utils, opam-nix, ... }@inputs: 12 flake-utils.lib.eachDefaultSystem (system: 13 let 14 package = "caledonia"; 15 pkgs = nixpkgs.legacyPackages.${system}; 16 opam-nix-lib = opam-nix.lib.${system}; 17 devPackagesQuery = { 18 ocaml-lsp-server = "*"; 19 ocamlformat = "*"; 20 utop = "*"; 21 }; 22 query = { 23 ocaml-base-compiler = "*"; 24 }; 25 scope = 26 opam-nix-lib.buildOpamProject' { } ./. (query // devPackagesQuery); 27 in { 28 packages.default = scope.${package}; 29 defaultPackage = scope.${package}; 30 31 devShells.default = let 32 devPackages = builtins.attrValues 33 (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope); 34 in pkgs.mkShell { 35 inputsFrom = [ scope.${package} ]; 36 buildInputs = devPackages; 37 }; 38 }); 39}