initial commit
This commit is contained in:
85
internal/tui/views_nixos_wm.go
Normal file
85
internal/tui/views_nixos_wm.go
Normal file
@@ -0,0 +1,85 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
)
|
||||
|
||||
func (m Model) viewMissingWMInstructions() string {
|
||||
var b strings.Builder
|
||||
|
||||
b.WriteString(m.renderBanner())
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Determine which WM is missing
|
||||
wmName := "Niri"
|
||||
installCmd := `environment.systemPackages = with pkgs; [
|
||||
niri
|
||||
];`
|
||||
alternateCmd := `# Or enable the module if available:
|
||||
# programs.niri.enable = true;`
|
||||
|
||||
if m.selectedWM == 1 {
|
||||
wmName = "Hyprland"
|
||||
installCmd = `programs.hyprland.enable = true;`
|
||||
alternateCmd = `# Or add to systemPackages:
|
||||
# environment.systemPackages = with pkgs; [
|
||||
# hyprland
|
||||
# ];`
|
||||
}
|
||||
|
||||
// Title
|
||||
title := m.styles.Title.Render("⚠️ " + wmName + " Not Installed")
|
||||
b.WriteString(title)
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Explanation
|
||||
explanation := m.styles.Normal.Render(wmName + " needs to be installed system-wide on NixOS.")
|
||||
b.WriteString(explanation)
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Instructions
|
||||
instructions := m.styles.Subtle.Render("To install " + wmName + ", add this to your /etc/nixos/configuration.nix:")
|
||||
b.WriteString(instructions)
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Command box
|
||||
cmdBox := m.styles.CodeBlock.Render(installCmd)
|
||||
b.WriteString(cmdBox)
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Alternate command
|
||||
altBox := m.styles.Subtle.Render(alternateCmd)
|
||||
b.WriteString(altBox)
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Rebuild instruction
|
||||
rebuildInstruction := m.styles.Normal.Render("Then rebuild your system:")
|
||||
b.WriteString(rebuildInstruction)
|
||||
b.WriteString("\n")
|
||||
|
||||
rebuildCmd := m.styles.CodeBlock.Render("sudo nixos-rebuild switch")
|
||||
b.WriteString(rebuildCmd)
|
||||
b.WriteString("\n\n")
|
||||
|
||||
// Navigation help
|
||||
help := m.styles.Subtle.Render("Press Esc to go back and select a different window manager, or Ctrl+C to exit")
|
||||
b.WriteString(help)
|
||||
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func (m Model) updateMissingWMInstructionsState(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
if keyMsg, ok := msg.(tea.KeyMsg); ok {
|
||||
switch keyMsg.String() {
|
||||
case "esc":
|
||||
// Go back to window manager selection
|
||||
m.state = StateSelectWindowManager
|
||||
return m, m.listenForLogs()
|
||||
case "ctrl+c":
|
||||
return m, tea.Quit
|
||||
}
|
||||
}
|
||||
return m, m.listenForLogs()
|
||||
}
|
||||
Reference in New Issue
Block a user