summaryrefslogtreecommitdiffstats
path: root/pkgs/nix-tools/default.nix
blob: 7351ddaeb7a5469faee99b94872e799d933929cd (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{ lib
, coreutils
, jq
, git
, replaceVarsWith
, stdenv
, profile ? "/nix/var/nix/profiles/system"
, # This should be kept in sync with the default
  # `environment.systemPath`. We err on side of including conditional
  # things like the profile directories, since they’re more likely to
  # help than hurt, and this default is mostly used for fresh
  # installations anyway.
  systemPath ? lib.concatStringsSep ":" [
  "$HOME/.nix-profile/bin"
  "/etc/profiles/per-user/$USER/bin"
  "/run/current-system/sw/bin"
  "/nix/var/nix/profiles/default/bin"
  "/usr/local/bin"
  "/usr/bin"
  "/bin"
  "/usr/sbin"
  "/sbin"
]
, nixPackage ? null
, # This should be kept in sync with the default `nix.nixPath`.
  nixPath ? lib.concatStringsSep ":" [
  "darwin-config=/etc/nix-darwin/configuration.nix"
  "/nix/var/nix/profiles/per-user/root/channels"
]
}:

let
  extraPath = lib.makeBinPath [ coreutils jq git nixPackage ];
  
  writeProgram =
    attrs:
    replaceVarsWith (
      attrs
      // {
        dir = "bin";
        isExecutable = true;
        meta.mainProgram = attrs.name;
      }
    );

  path = "${extraPath}:${systemPath}";
in
{
  darwin-option = writeProgram {
    name = "darwin-option";
    src = ./darwin-option.sh;

    replacements = {
      inherit path nixPath;
      inherit (stdenv) shell;
    };
  };

  darwin-rebuild = writeProgram {
    name = "darwin-rebuild";
    src = ./darwin-rebuild.sh;

    replacements = {
      inherit path nixPath profile;
      inherit (stdenv) shell;
    };

    postInstall = ''
      mkdir -p $out/share/zsh/site-functions
      cp ${./darwin-rebuild.zsh-completions} $out/share/zsh/site-functions/_darwin-rebuild
    '';
  };

  darwin-version = writeProgram {
    name = "darwin-version";
    src = ./darwin-version.sh;

    replacements = {
      inherit (stdenv) shell;
      path = lib.makeBinPath [ jq ];
    };
  };
}