mirror of
https://github.com/RGBCube/ncc
synced 2025-07-30 11:37:44 +00:00
Shadow popup triggering Darwin binaries and set zshrc in rebuild.nu
This commit is contained in:
parent
ce4be21e2e
commit
f691a27456
1 changed files with 78 additions and 0 deletions
78
rebuild.nu
78
rebuild.nu
|
@ -41,8 +41,86 @@ def main --wrapped [
|
||||||
|
|
||||||
if (uname | get kernel-name) == "Darwin" {
|
if (uname | get kernel-name) == "Darwin" {
|
||||||
darwin-rebuild switch --flake (".#" + $host) ...$nix_flags
|
darwin-rebuild switch --flake (".#" + $host) ...$nix_flags
|
||||||
|
|
||||||
|
darwin-shadow-xcode-popup
|
||||||
|
|
||||||
|
darwin-set-zshrc
|
||||||
} else {
|
} else {
|
||||||
nh os switch . ...$nh_flags -- ...$nix_flags
|
nh os switch . ...$nh_flags -- ...$nix_flags
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Replace with the command that has been triggering
|
||||||
|
# the "install developer tools" popup.
|
||||||
|
#
|
||||||
|
# Set by default to "SplitForks" because who even uses that?
|
||||||
|
const original_trigger = "SplitForks"
|
||||||
|
|
||||||
|
# Where the symbolic links to `false` will be created in
|
||||||
|
# to shadow all popup-triggering binaries.
|
||||||
|
#
|
||||||
|
# Place this in your $env.PATH right before /usr/bin
|
||||||
|
# to never get the "install developer tools" popup ever again:
|
||||||
|
#
|
||||||
|
# ```nu
|
||||||
|
# let usr_bin_index = $env.PATH
|
||||||
|
# | enumerate
|
||||||
|
# | where item == /usr/bin
|
||||||
|
# | get 0.index
|
||||||
|
#
|
||||||
|
# $env.PATH = $env.PATH | insert $usr_bin_index $shadow_path
|
||||||
|
# ```
|
||||||
|
#
|
||||||
|
# Do NOT set this to a path that you use for other things,
|
||||||
|
# it will get deleted if it exists to only have the shadowers.
|
||||||
|
const shadow_path = "~/.local/shadow" # Did you read the comment?
|
||||||
|
|
||||||
|
def darwin-shadow-xcode-popup [] {
|
||||||
|
print "shadowing xcode popup binaries..."
|
||||||
|
|
||||||
|
let original_size = ls (which $original_trigger | get 0.path)
|
||||||
|
| get 0.size
|
||||||
|
|
||||||
|
let shadoweds = ls /usr/bin
|
||||||
|
| flatten
|
||||||
|
| filter {
|
||||||
|
# All xcode-select binaries are the same size, so we can narrow down and not run weird stuff.
|
||||||
|
$in.size == $original_size
|
||||||
|
}
|
||||||
|
| filter {
|
||||||
|
^$in.name e>| str contains "xcode-select: note: No developer tools were found, requesting install."
|
||||||
|
}
|
||||||
|
| get name
|
||||||
|
| each { path basename }
|
||||||
|
|
||||||
|
let false_path = which "false" | get 0.path
|
||||||
|
|
||||||
|
rm -rf $shadow_path
|
||||||
|
mkdir $shadow_path
|
||||||
|
for shadowed in $shadoweds {
|
||||||
|
let shadow_path = $shadow_path | path join $shadowed
|
||||||
|
|
||||||
|
ln --symbolic $false_path $"($shadow_path)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def darwin-set-zshrc [] {
|
||||||
|
print "setting zshrc..."
|
||||||
|
|
||||||
|
let nu_command = $"
|
||||||
|
let usr_bin_index = $env.PATH
|
||||||
|
| enumerate
|
||||||
|
| where item == /usr/bin
|
||||||
|
| get 0.index
|
||||||
|
|
||||||
|
$env.PATH = $env.PATH | insert $usr_bin_index ($shadow_path | path expand)
|
||||||
|
"
|
||||||
|
|
||||||
|
let zshrc = $"
|
||||||
|
exec nu --execute '
|
||||||
|
($nu_command)
|
||||||
|
'
|
||||||
|
"
|
||||||
|
|
||||||
|
$zshrc | save --force ~/.zshrc
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue