From 6af52615ed8de2c4f9f4a30d97a22f7b3513c474 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 14 Dec 2016 12:32:20 +0100 Subject: [PATCH] add activate-user script --- modules/examples/lnl.nix | 3 ++- modules/system/activation-scripts.nix | 20 +++++++++++++++++++- modules/system/default.nix | 6 ++++++ pkgs/nix-tools/darwin-rebuild.sh | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/modules/examples/lnl.nix b/modules/examples/lnl.nix index e9791661..f5c9c186 100644 --- a/modules/examples/lnl.nix +++ b/modules/examples/lnl.nix @@ -81,7 +81,8 @@ esac } - conf=$HOME/.nixpkgs/darwin-config.nix + cfg=$HOME/.nixpkgs/darwin-config.nix + darwin=$HOME/.nix-defexpr/darwin pkgs=$HOME/.nix-defexpr/nixpkgs ''; diff --git a/modules/system/activation-scripts.nix b/modules/system/activation-scripts.nix index 2695e54f..6f22d45a 100644 --- a/modules/system/activation-scripts.nix +++ b/modules/system/activation-scripts.nix @@ -59,12 +59,30 @@ in # Prevent the current configuration from being garbage-collected. ln -sfn /run/current-system /nix/var/nix/gcroots/current-system - ${cfg.activationScripts.defaults.text} ${cfg.activationScripts.etc.text} ${cfg.activationScripts.launchd.text} exit $_status ''; + system.activationScripts.userScript.text = '' + #! ${stdenv.shell} + set -e + set -o pipefail + export PATH=${pkgs.coreutils}/bin:${config.environment.systemPath}:$PATH + + systemConfig=@out@ + + _status=0 + trap "_status=1" ERR + + # Ensure a consistent umask. + umask 0022 + + ${cfg.activationScripts.defaults.text} + + exit $_status + ''; + }; } diff --git a/modules/system/default.nix b/modules/system/default.nix index f4b82d7f..0e659bb4 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -51,6 +51,7 @@ in preferLocalBuild = true; activationScript = cfg.activationScripts.script.text; + activationUserScript = cfg.activationScripts.userScript.text; inherit (cfg) nixdarwinLabel; buildCommand = '' @@ -69,6 +70,11 @@ in chmod u+x $out/activate unset activationScript + echo "$activationUserScript" > $out/activate-user + substituteInPlace $out/activate-user --subst-var out + chmod u+x $out/activate-user + unset activationUserScript + echo -n "$systemConfig" > $out/systemConfig echo -n "$nixdarwinLabel" > $out/nixdarwin-version diff --git a/pkgs/nix-tools/darwin-rebuild.sh b/pkgs/nix-tools/darwin-rebuild.sh index 898adcae..2f522c2b 100644 --- a/pkgs/nix-tools/darwin-rebuild.sh +++ b/pkgs/nix-tools/darwin-rebuild.sh @@ -39,4 +39,5 @@ fi if [ "$action" = switch ]; then sudo nix-env -p @profile@ --set $systemConfig sudo $systemConfig/activate + $systemConfig/activate-user fi