summary refs log tree commit diff stats
path: root/shell.nix
blob: 9167cb7e4963336364395b5e38483c89eab0ea7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
with builtins;

let
  sources = import ./nix/sources.nix;
  sourcesJSON = fromJSON (readFile ./nix/sources.json);

  nixpkgs = sources.nixpkgs;
  pkgs = import nixpkgs { };
  inherit (pkgs.lib) path attrsets;

  mkPathable = v: toString (
    if
      path.subpath.isValid v
    then
      path.append ./. v
    else
      v
  );

  nixPath = concatStringsSep ":" (
    attrsets.mapAttrsToList
      (k: v: "${k}=${mkPathable (getAttr "outPath" v)}")
      (intersectAttrs sourcesJSON sources)
  );
in
pkgs.mkShell
{

  name = "nixfiles-shell";

  buildInputs = with pkgs; [
    niv
    deploy-rs
    (pkgs.callPackage "${sources.agenix}/pkgs/agenix.nix" { })
    (import sources.home-manager { inherit pkgs; }).home-manager
  ];

  shellHook = ''
    export NIX_PATH="${nixPath}";
  '';

}