-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.nu
81 lines (64 loc) · 2.31 KB
/
main.nu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/env nu
# NOTE: This script must be run from the root of the dotfiles repo. (Nushell limitation)
use std log
use ./ *
def main [package_manager: string = "pacman"] {
log info $"Using package manager: (ansi green)($package_manager)"
log info "Cloning submodules. . ."
git submodule update --init --recursive
# Configs to include in the build.
let include = [
(home_config),
(kitty_config),
(hypr_config),
(helix_config),
(nushell_config),
(rofi_config),
(waybar_config),
(wezterm_config),
(zellij_config),
(i3_config),
]
let extra_packages = (extra_packages)
let source_dependencies = ($include.source_dependencies | flatten | uniq | sort)
let dependencies = ($include.dependencies | flatten | uniq | sort)
let symlinks = ($include.symlinks | flatten | uniq | sort)
log info "Generating install script. . ."
let source_packages = $source_dependencies | str join " "
match $package_manager {
'pacman' => {
echo $"(ansi blue)"
# TODO: move this stuff out into a function for DRY.
let config_packages = $dependencies | each { |dep|
$PACKAGE_DICTIONARY | get $dep
} | get $package_manager | str join " "
let extras = $extra_packages | each { |dep|
$PACKAGE_DICTIONARY | get $dep
} | get $package_manager | str join " "
$symlinks | each { echo $"ln -sf ($in.source) ($in.target)"}
echo "\n"
echo $"sudo pacman -Syu ($config_packages)"
echo $"sudo pacman -Syu ($extras)"
echo "\n"
echo $"sudo paru -Syu ($source_packages)"
},
'apt' => {
echo $"(ansi yellow)"
echo $"Source packges that need to be built manually: ($source_packages)"
echo $"(ansi green)"
let config_packages = $dependencies | each { |dep|
$PACKAGE_DICTIONARY | get $dep
} | get $package_manager | str join " "
let extras = $extra_packages | each { |dep|
$PACKAGE_DICTIONARY | get $dep
} | get $package_manager | str join " "
$symlinks | each { echo $"ln -sf ($in.source) ($in.target)"}
echo "\n"
echo $"sudo apt install ($config_packages)"
echo $"sudo apt install ($extras)"
},
_ => {echo $"Package manager (ansi red)($package_manager)(ansi reset) not supported."},
}
echo "\n\n"
}
# wezterm, zellij, helix, rofi