1
1
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-09-19 08:37:17 +03:00

installer: init

This commit is contained in:
Daiderd Jordan 2018-01-13 15:57:10 +01:00
parent 335baf7936
commit 32481b542b
No known key found for this signature in database
GPG Key ID: D02435D05B810C96
4 changed files with 110 additions and 0 deletions

View File

@ -73,4 +73,6 @@ in
inherit (eval) options config;
system = eval.config.system.build.toplevel;
installer = pkgs.callPackage ./pkgs/darwin-installer {};
}

View File

@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
with lib;
{
imports = [ <user-darwin-config> ];
system.activationScripts.preUserActivation.text = mkBefore ''
darwinPath=$(NIX_PATH=${concatStringsSep ":" config.nix.nixPath} nix-instantiate --eval -E '<darwin>' 2> /dev/null) || true
if ! test -e "$darwinPath"; then
if test -t 1; then
read -p "Would you like to manage <darwin> with nix-channel? [y/n] " i
fi
case "$i" in
y|Y)
nix-channel --add https://github.com/LnL7/nix-darwin/archive/master.tar.gz darwin
nix-channel --update
;;
esac
fi
if ! test -L /etc/bashrc && ! grep -q /etc/static/bashrc /etc/bashrc; then
if test -t 1; then
read -p "Would you like to load darwin configuration in /etc/bashrc? [y/n] " i
fi
case "$i" in
y|Y)
echo 'if test -e /etc/static/bashrc; then . /etc/static/bashrc; fi' | sudo tee -a /etc/bashrc
;;
esac
fi
if ! test -L /etc/profile && grep -q 'etc/profile.d/nix-daemon.sh' /etc/profile; then
if test -t 1; then
read -p "Would you like to remove nix-daemon.sh configuration in /etc/profile? [y/n] " i
fi
case "$i" in
y|Y)
sudo patch -d /etc -p1 < '${./profile.patch}'
;;
esac
fi
'';
}

View File

@ -0,0 +1,50 @@
{ 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
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 switch -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
'';
}

View File

@ -0,0 +1,14 @@
diff --git a/profile b/profile
index 3748e3b..36ad2cd 100644
--- a/profile
+++ b/profile
@@ -7,9 +7,3 @@ fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
-
-# Nix
-if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
- . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
-fi
-# End Nix