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