diff --git a/firmware.go b/firmware.go new file mode 100644 index 0000000..0db79fe --- /dev/null +++ b/firmware.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "strings" + + "github.com/rwinkhart/go-boilerplate/back" + "github.com/rwinkhart/go-boilerplate/front" +) + +const firm = "linux-firmware-" + +func firmwareSelector() { + var nonOptional = []string{firm + "whence", firm + "cirrus", firm + "other"} + var optional []string + for { + fmt.Println(back.AnsiBold + "\nSelected firmware: " + strings.Join(optional, ", ") + back.AnsiReset + "\n") + choice := front.InputMenuGen("Firmware to install:", []string{"BACK", "INSTALL", "intel", "amdgpu", "nvidia", "mediatek", "realtek", "atheros", "qcom", "broadcom"}) + switch choice { + case 1: + return + case 2: + allPackages := append(nonOptional, optional...) + managePackages("-S", allPackages) + managePackages("-Rcns", []string{"linux-firmware"}) + case 3: + optional = append(optional, firm+"intel") + case 4: + optional = append(optional, firm+"amdgpu") + case 5: + optional = append(optional, firm+"nvidia") + case 6: + optional = append(optional, firm+"mediatek") + case 7: + optional = append(optional, firm+"realtek") + case 8: + optional = append(optional, firm+"atheros") + case 9: + optional = append(optional, firm+"qcom") + case 10: + optional = append(optional, firm+"broadcom") + } + } +} diff --git a/main.go b/main.go index f9c061a..3bac52f 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "os" "os/user" "github.com/rwinkhart/go-boilerplate/front" @@ -32,7 +33,7 @@ func main() { for { fmt.Println() - choice := front.InputMenuGen("Option:", []string{"ALL", "pre-mount tweaks", "universal tweaks", "system tweaks", "removals", "applications", "configuration", "cosmic"}) + choice := front.InputMenuGen("Option:", []string{"ALL", "pre-mount tweaks", "universal tweaks", "system tweaks", "removals", "applications", "configuration", "cosmic", "firmware selector"}) switch choice { case 1: performAllTweaks = true @@ -40,6 +41,7 @@ func main() { case 2: if partitionIsMounted() { fmt.Println("\n" + partitionR + " is already mounted on " + mountPoint) + os.Exit(1) } else { premount() } @@ -93,6 +95,16 @@ func main() { cosmic() // TODO window decoration position (not yet implemented) // TODO screen blank shortcut (not yet implemented) + + if !performAllTweaks { + break + } + fallthrough + case 9: + firmwareSelector() + } + if !performAllTweaks { + os.Exit(0) } } } diff --git a/premount.go b/premount.go index 4b5b705..749f030 100644 --- a/premount.go +++ b/premount.go @@ -9,7 +9,12 @@ import ( func premount() { for { - choice := front.InputMenuGen("Tweak:", []string{"BACK", "enable ext4 fast_commit"}) + var choice int + if performAllTweaks { + choice = 2 + } else { + choice = front.InputMenuGen("Tweak:", []string{"BACK", "enable ext4 fast_commit"}) + } switch choice { case 1: return @@ -20,5 +25,8 @@ func premount() { other.PrintError("Failed to enable fast_commit", 1) } } + if !performAllTweaks { + break + } } }