{ dir, pkgs ? import {}, ownLib ? import ../lib/default.nix {inherit (pkgs) lib;}, gitRoot ? "$(git rev-parse --show-toplevel)", # FIXME: why do these need explicit mentioning? moreargs ? "", rebuildarg ? "", ... } @ args: let rebuildargsSudo = ["switch" "boot"]; rebuild = { gitRoot, rebuildarg ? "dry-activate", moreargs ? "", ... }: pkgs.writeScript "script" '' #!/usr/bin/env bash set -xe pushd ${gitRoot}/${dir} export NIXOS_CONFIG="$PWD"/configuration.nix [[ -e "''${NIXOS_CONFIG}" ]] if test -L result; then rm result fi ${ if (builtins.elem rebuildarg rebuildargsSudo) && (builtins.match ".*--target-host.*" moreargs) == null then "sudo -E \\" else "" } nixos-rebuild --show-trace -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} ${moreargs} ''; in { recipes = { rebuild = rebuild { inherit gitRoot; inherit moreargs; inherit rebuildarg; } # // pkgs.lib.attrsets.optionalAttrs (moreargs != "") { inherit moreargs; } # // pkgs.lib.attrsets.optionalAttrs (rebuildarg != "") { inherit rebuildarg; } ; } // (import ./disk.nix (args // {inherit pkgs ownLib gitRoot;})); }