Command-line and Emacs Calendar Client
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}