You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
def after_apply_all [] {
|
|
if $env.SILO_HM_CALLED? != null {
|
|
return;
|
|
}
|
|
$env.SILO_HM_CALLED = true
|
|
if not ('~/.nix-profile/bin/home-manager' | path exists) {
|
|
print $"(ansi red)home-manager is not installed(ansi reset)"
|
|
return
|
|
}
|
|
if (ha-chksum) == $env.SILO_HA_CHKSUM? {
|
|
print $"(ansi green)home-manager configuration unchanged(ansi reset)"
|
|
return;
|
|
}
|
|
print "Updating with home-manager"
|
|
( home-manager switch )
|
|
|
|
print "Expiring old home manager configurations"
|
|
( home-manager expire-generations -1 days )
|
|
|
|
print "Cleaning nix store"
|
|
( nix-store --gc )
|
|
|
|
print "Linking applications"
|
|
link-applications
|
|
|
|
print "Clearing invalid application links"
|
|
clear-invalid-links
|
|
|
|
print "Applying silo config after package install"
|
|
( silo apply )
|
|
ignore
|
|
}
|
|
|
|
def --env before_apply_all [] {
|
|
if $env.SILO_HM_CALLED? != null {
|
|
return;
|
|
}
|
|
$env.SILO_HA_CHKSUM = (ha-chksum)
|
|
$env.PATH = ($env.PATH | append $"($env.HOME)/.nix-profile/bin")
|
|
ignore
|
|
}
|
|
|
|
def ha-chksum [] {
|
|
shasum ~/.config/home-manager/home.nix
|
|
}
|
|
|
|
def link-applications [] {
|
|
( glob ~/.nix-profile/share/applications/*.desktop
|
|
| par-each { try { ln -s $in ~/.local/share/applications/; print $"Linked ($in)" } } )
|
|
}
|
|
|
|
def clear-invalid-links [] {
|
|
( glob /home/jri/.local/share/applications/*.desktop
|
|
| each { ls -l $in }
|
|
| flatten
|
|
| where target? != null
|
|
| par-each {|entry| get target
|
|
| open $in
|
|
| parse -r '\nTryExec\s?=\s?(?<bin>[^\n]+)'
|
|
| get -i 0
|
|
| default {}
|
|
| merge $entry }
|
|
| where bin? != null
|
|
| where {|e| which $e.bin | is-empty }
|
|
| each {|e| rm $e.name; print $"Cleared ($e.name)" }
|
|
)
|
|
}
|