1
1
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-11-14 23:42:43 +03:00
nix-darwin/pkgs/darwin-installer/default.nix
2018-01-13 23:33:27 +01:00

65 lines
1.6 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ stdenv, nix, pkgs }:
let
nixPath = stdenv.lib.concatStringsSep ":" [
"darwin-config=${toString ./configuration.nix}"
"darwin=${toString ../..}"
"nixpkgs=${toString pkgs.path}"
"$NIX_PATH"
];
in
stdenv.mkDerivation {
name = "darwin-installer";
unpackPhase = ":";
installPhase = ''
mkdir -p $out/bin
echo "$shellHook" > $out/bin/darwin-installer
chmod +x $out/bin/darwin-installer
'';
shellHook = ''
#!/usr/bin/env bash
set -e
action=switch
while [ "$#" -gt 0 ]; do
i="$1"; shift 1
case "$i" in
--help)
echo "darwin-installer: [--check]"
exit
;;
--check)
action=check
;;
esac
done
export nix=${nix}
config=$(nix-instantiate --eval -E '<darwin-config>' 2> /dev/null || echo "$HOME/.nixpkgs/darwin-configuration.nix")
if ! test -f "$config"; then
echo "copying example configuration.nix" >&2
mkdir -p "$HOME/.nixpkgs"
cp "${toString ../../modules/examples/simple.nix}" "$config"
fi
export NIX_PATH=${nixPath}
system=$($nix/bin/nix-build '<darwin>' -I "user-darwin-config=$config" -A system --no-out-link)
export PATH=$system/sw/bin:$PATH
darwin-rebuild "$action" -I "user-darwin-config=$config"
echo >&2
echo " Open '$config' to get started." >&2
echo " See the README for more information: https://github.com/LnL7/nix-darwin/blob/master/README.md" >&2
echo >&2
echo " Don't forget to start a new shell or source /etc/static/bashrc." >&2
echo >&2
exit
'';
}