- + concatMapStringsSep "\n" (f: "verify_ownership ${escapeShellArg f}")
- cfg.upgradeConfig)}
-
- config=$(${pkgs.nix}/bin/nix-instantiate --eval --strict --json -A config \
- --arg upgradeConfig ${
- escapeShellArg ("["
- + lib.concatMapStringsSep " " lib.strings.escapeNixString
- cfg.upgradeConfig + "]")
- } ${../upgrade-config.nix})
-
- config_query() {
- ${pkgs.jq}/bin/jq -r "$@" <<< "$config"
- }
-
- repo_query() {
- config_query --arg path "$1" ".repos[\$ARGS.named.path]$2"
- }
-
- userenv_query() {
- config_query --arg user "$1" ".userEnvironments[\$ARGS.named.user]$2"
- }
-
- # Pull updates
- while read path;do
- hydrate /run/wrappers/bin/sudo -u "$(repo_query "$path" .user)" \
- ${pull-repo-script} "$path" "$(repo_query "$path" "")"
- done < <( config_query '.repos | keys []' )
-
- # Update channels
- config_query '.pinchFiles[]' | ${pkgs.findutils}/bin/xargs --no-run-if-empty --delimiter=\\n ${pkgs.pinch}/bin/pinch update "''${pinch_args[@]}"
-
- # Build
- in_tmpdir hydrate ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build
- while read user;do
- hydrate /run/wrappers/bin/sudo -u "$user" \
- ${pkgs.nix}/bin/nix-build --no-out-link '<nixpkgs>' -A "$(userenv_query "$user" .package)"
- done < <( config_query '.userEnvironments | keys []' )
-
- # Install
- hydrate ${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch
- while read user;do
- remove_arg=-r
- if [[ "$(userenv_query "$user" .otherPackagesAction)" == keep ]];then
- remove_arg=
- fi
- hydrate /run/wrappers/bin/sudo -u "$user" \
- ${pkgs.nix}/bin/nix-env -f '<nixpkgs>' $remove_arg -iA "$(userenv_query "$user" .package)"
- done < <( config_query '.userEnvironments | keys []' )
- ''
- }
+ + concatMapStringsSep "\n" (f: "verify_ownership ${escapeShellArg f}") cfg.upgradeConfig
+ )}
+
+ config=$(${pkgs.nix}/bin/nix-instantiate --eval --strict --json -A config \
+ --arg upgradeConfig ${
+ escapeShellArg (
+ "[" + lib.concatMapStringsSep " " lib.strings.escapeNixString cfg.upgradeConfig + "]"
+ )
+ } ${../upgrade-config.nix})
+
+ config_query() {
+ ${pkgs.jq}/bin/jq -r "$@" <<< "$config"
+ }
+
+ repo_query() {
+ config_query --arg path "$1" ".repos[\$ARGS.named.path]$2"
+ }
+
+ userenv_query() {
+ config_query --arg user "$1" ".userEnvironments[\$ARGS.named.user]$2"
+ }
+
+ # Pull updates
+ while read path;do
+ hydrate /run/wrappers/bin/sudo -u "$(repo_query "$path" .user)" \
+ ${pull-repo-script} "$path" "$(repo_query "$path" "")"
+ done < <( config_query '.repos | keys []' )
+
+ # Update channels
+ config_query '.pinchFiles[]' | ${pkgs.findutils}/bin/xargs --no-run-if-empty --delimiter=\\n ${pkgs.pinch}/bin/pinch update "''${pinch_args[@]}"
+
+ # Build
+ in_tmpdir hydrate ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build
+ while read user;do
+ pushd /
+ hydrate /run/wrappers/bin/sudo -u "$user" \
+ ${pkgs.nix}/bin/nix-build --no-out-link '<nixpkgs>' -A "$(userenv_query "$user" .package)"
+ popd
+ done < <( config_query '.userEnvironments | keys []' )
+ sync
+
+ # Install
+ hydrate ${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch
+ sync
+ while read user;do
+ remove_arg=-r
+ if [[ "$(userenv_query "$user" .otherPackagesAction)" == keep ]];then
+ remove_arg=
+ fi
+ hydrate /run/wrappers/bin/sudo -u "$user" \
+ ${pkgs.nix}/bin/nix-env -f '<nixpkgs>' $remove_arg -iA "$(userenv_query "$user" .package)"
+ sync
+ done < <( config_query '.userEnvironments | keys []' )
+ ''}