Compare commits
125 Commits
ucode-addi
...
overlay-up
| Author | SHA1 | Date | |
|---|---|---|---|
| 317571499e | |||
| 971a263963 | |||
| 2fb3e2867c | |||
| 4492dcdff5 | |||
| 7d8dcee57c | |||
| 3bd43f72a2 | |||
| 915ecc73e8 | |||
| 43c5308feb | |||
| a1c0407f02 | |||
| 33f590b214 | |||
| 89cdef92a7 | |||
| 2f378ddc22 | |||
| 937deb7079 | |||
| 4c462c21f3 | |||
| eb26a93944 | |||
| 098478fa0f | |||
| 80fd89c5ac | |||
| 1a8c910e3a | |||
| 3992cab7c8 | |||
| f0eb5678c8 | |||
| bd262d3fb6 | |||
| f1a426bd2e | |||
| 9fe67f2b97 | |||
| 245b5b1e08 | |||
| b3954838d2 | |||
| 6b586d80ab | |||
| 0718c9f18d | |||
| 14dbc1363e | |||
| 7e0d58c097 | |||
| f2ae159c67 | |||
| a3ef9fa59e | |||
| aea71bb49b | |||
| e7b2a1bc1e | |||
| bdf4d54e99 | |||
| 26662e1419 | |||
| f2ee981953 | |||
| eb666f6a01 | |||
| b8db103e08 | |||
| 08adc255d6 | |||
| c81ca5ee4c | |||
| 9cfe456cb9 | |||
| ad7f01e41e | |||
| c452ebff3c | |||
| a1e71488d8 | |||
| 45c8f7ec27 | |||
| 67fda15ca9 | |||
| 769ab6f72d | |||
| 1769e583d8 | |||
| 2592a1cd72 | |||
| 6dbfc5805e | |||
| 1f9ff31234 | |||
| be6cab1ab2 | |||
| 7f0fdbc6bb | |||
| e3b134e48a | |||
| 0fa26e2840 | |||
| 7a3c83f088 | |||
| adcd58dce9 | |||
| 45ca395962 | |||
| 923cebd9c9 | |||
| 98ce7410c2 | |||
| b7f65a6eeb | |||
| 70691c16e5 | |||
| 1cbfb37409 | |||
| 83d1494d4a | |||
| f8da56fe52 | |||
| bcf5b224cb | |||
| b762b06f05 | |||
| 9fedd2d61e | |||
| c81b48a0ee | |||
| 75f08c16bc | |||
| 4207b320c9 | |||
| 14a0160309 | |||
| 43654c2946 | |||
| 8dd4513997 | |||
| 1d95ffb81a | |||
| c53db46ca7 | |||
| c546e6242b | |||
| 05bb811e42 | |||
| 7615d1a1d5 | |||
| 6561e37119 | |||
| 9eea820f3b | |||
| 6024b77535 | |||
| 257fab9832 | |||
| 717e8c452d | |||
| 8fd3ca8c9a | |||
| a73194fed9 | |||
| 0572cacd28 | |||
| ecf728bc11 | |||
| 5a59f98ebc | |||
| e1d13065f8 | |||
| 5ab19d093a | |||
| 569141d227 | |||
| 48edbfdc4b | |||
| 50c62a4d3f | |||
| f4b518f806 | |||
| 7fffa45e4e | |||
| a3c53820b1 | |||
| 8cbdeb4cdc | |||
| bfa957adcd | |||
| 50d22afef8 | |||
| 29feb9223e | |||
| 7bc7749f51 | |||
| 93052529b8 | |||
| 51beed138e | |||
| faed026258 | |||
| 3af5061a79 | |||
| ddd3fb39e4 | |||
| 6ff4e13b03 | |||
| 13fc210f8b | |||
| 66eddc0345 | |||
| 27c114b801 | |||
| 936b4bbf44 | |||
| f06b17a336 | |||
| cb2edf6afb | |||
| 109684d09c | |||
| 4113b3ea57 | |||
| 760d686499 | |||
| 69e6329dea | |||
| fccb1ab4ae | |||
| 57cd69a153 | |||
| 2c6765bb5b | |||
| 30a72d9e74 | |||
| fefa6dd3de | |||
| 8785247675 | |||
| 4afb47e881 |
0
defaults/k9s/catppuccin-mocha.yaml
Normal file
0
defaults/k9s/catppuccin-mocha.yaml
Normal file
5
defaults/nvim/lua/plugins/discord.lua
Normal file
5
defaults/nvim/lua/plugins/discord.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
'andweeb/presence.nvim',
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,13 +10,12 @@ set $right l
|
|||||||
set $term alacritty
|
set $term alacritty
|
||||||
|
|
||||||
# Menu (rofi)
|
# Menu (rofi)
|
||||||
set $rofi_cmd rofi -terminal '$term'
|
set $menu wofi --term '$term'
|
||||||
set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi
|
|
||||||
|
|
||||||
### Output configuration
|
### Output configuration
|
||||||
output DP-3 pos 3840 0 res 1920x1080@59Hz
|
output DP-3 pos 1920 0 res 1920x1080@60Hz
|
||||||
output HDMI-A-1 pos 0 0 res 1920x1080@59Hz
|
output HDMI-A-1 pos 0 0 res 1920x1080@60Hz
|
||||||
output DP-2 pos 1920 0 res 1920x1080@60Hz
|
output DP-2 pos 3840 0 res 1920x1080@60Hz
|
||||||
|
|
||||||
### Wallpaper
|
### Wallpaper
|
||||||
output HDMI-A-1 bg ~/.wallpaper/.wallpaper.png fill
|
output HDMI-A-1 bg ~/.wallpaper/.wallpaper.png fill
|
||||||
@@ -26,18 +25,22 @@ output DP-3 bg ~/.wallpaper/.wallpaper.png fill
|
|||||||
### Workspace binding
|
### Workspace binding
|
||||||
|
|
||||||
## DP-3 bindings
|
## DP-3 bindings
|
||||||
workspace 1 output DP-2
|
workspace 1 output DP-3
|
||||||
workspace 2 output DP-2
|
workspace 2 output DP-3
|
||||||
|
workspace 4 output DP-3
|
||||||
|
workspace 5 output DP-3
|
||||||
|
|
||||||
## HDMI-A-1 bindings
|
## HDMI-A-1 bindings
|
||||||
workspace 3 output HDMI-A-1
|
workspace 3 output HDMI-A-1
|
||||||
|
workspace 9 output HDMI-A-1
|
||||||
|
|
||||||
## DP-2 bindings
|
## DP-2 bindings
|
||||||
workspace 6 output DP-3
|
workspace 6 output DP-2
|
||||||
workspace 7 output DP-3
|
workspace 7 output DP-2
|
||||||
|
workspace 8 output DP-2
|
||||||
|
|
||||||
### Colour options
|
### Colour options
|
||||||
set $bg #24283b
|
set $bg #24283b
|
||||||
set $bg-inactive #323232
|
set $bg-inactive #323232
|
||||||
set $bg-urgent #000000
|
set $bg-urgent #000000
|
||||||
set $text #eeeeec
|
set $text #eeeeec
|
||||||
@@ -87,8 +90,9 @@ floating_modifier $mod normal
|
|||||||
# Reload the configuration file
|
# Reload the configuration file
|
||||||
bindsym $mod+Shift+c reload
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
# Exit sway (logs you out of your Wayland session)
|
# Shutdown and reboot hotkeys
|
||||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
|
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the shutdown shortcut. Do you really want to shutdown your computer?' -b 'Yes, shutdown' 'systemctl poweroff'
|
||||||
|
bindsym $mod+Shift+r exec swaynag -t warning -m 'You pressed the reboot shortcut. Do you really want to reboot your computer?' -b 'Yes, reboot' 'systemctl reboot'
|
||||||
|
|
||||||
### Navigation
|
### Navigation
|
||||||
# Move your focus around
|
# Move your focus around
|
||||||
@@ -182,8 +186,9 @@ mode "resize" {
|
|||||||
bindsym Return mode "default"
|
bindsym Return mode "default"
|
||||||
bindsym Escape mode "default"
|
bindsym Escape mode "default"
|
||||||
}
|
}
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
|
### resize
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
### Audio and brightness keybinds
|
### Audio and brightness keybinds
|
||||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
|
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||||
@@ -196,16 +201,14 @@ bindsym XF86AudioPrev exec playerctl previous
|
|||||||
bindsym XF86MonBrightnessUp exec light -A 5
|
bindsym XF86MonBrightnessUp exec light -A 5
|
||||||
bindsym XF86MonBrightnessDown exec light -U 5
|
bindsym XF86MonBrightnessDown exec light -U 5
|
||||||
|
|
||||||
### Lock the screen so my brother
|
### Lock the screen
|
||||||
### won't dick with my computer
|
bindsym $mod+Ctrl+q 'swaylock -f -i /home/wyatt/.wallpaper/.wallpaper_lock.png'
|
||||||
bindsym $mod+Ctrl+l 'swaylock -f -i /home/wyatt/.wallpaper_lock.jpeg'
|
|
||||||
|
|
||||||
### Status Bar:
|
### Status Bar:
|
||||||
bar {
|
bar {
|
||||||
swaybar_command waybar
|
swaybar_command waybar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
### Font settings:
|
### Font settings:
|
||||||
font pango:FiraCode: 14px
|
font pango:FiraCode: 14px
|
||||||
|
|
||||||
|
|||||||
254
defaults/zellij/config.kdl
Normal file
254
defaults/zellij/config.kdl
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
keybinds clear-defaults=true {
|
||||||
|
locked {
|
||||||
|
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
pane {
|
||||||
|
bind "left" { MoveFocus "left"; }
|
||||||
|
bind "down" { MoveFocus "down"; }
|
||||||
|
bind "up" { MoveFocus "up"; }
|
||||||
|
bind "right" { MoveFocus "right"; }
|
||||||
|
bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; }
|
||||||
|
bind "d" { NewPane "down"; SwitchToMode "normal"; }
|
||||||
|
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||||
|
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||||
|
bind "h" { MoveFocus "left"; }
|
||||||
|
bind "j" { MoveFocus "down"; }
|
||||||
|
bind "k" { MoveFocus "up"; }
|
||||||
|
bind "l" { MoveFocus "right"; }
|
||||||
|
bind "n" { NewPane; SwitchToMode "normal"; }
|
||||||
|
bind "p" { SwitchFocus; }
|
||||||
|
bind "Ctrl p" { SwitchToMode "normal"; }
|
||||||
|
bind "r" { NewPane "right"; SwitchToMode "normal"; }
|
||||||
|
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||||
|
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
tab {
|
||||||
|
bind "left" { GoToPreviousTab; }
|
||||||
|
bind "down" { GoToNextTab; }
|
||||||
|
bind "up" { GoToPreviousTab; }
|
||||||
|
bind "right" { GoToNextTab; }
|
||||||
|
bind "1" { GoToTab 1; SwitchToMode "normal"; }
|
||||||
|
bind "2" { GoToTab 2; SwitchToMode "normal"; }
|
||||||
|
bind "3" { GoToTab 3; SwitchToMode "normal"; }
|
||||||
|
bind "4" { GoToTab 4; SwitchToMode "normal"; }
|
||||||
|
bind "5" { GoToTab 5; SwitchToMode "normal"; }
|
||||||
|
bind "6" { GoToTab 6; SwitchToMode "normal"; }
|
||||||
|
bind "7" { GoToTab 7; SwitchToMode "normal"; }
|
||||||
|
bind "8" { GoToTab 8; SwitchToMode "normal"; }
|
||||||
|
bind "9" { GoToTab 9; SwitchToMode "normal"; }
|
||||||
|
bind "[" { BreakPaneLeft; SwitchToMode "normal"; }
|
||||||
|
bind "]" { BreakPaneRight; SwitchToMode "normal"; }
|
||||||
|
bind "b" { BreakPane; SwitchToMode "normal"; }
|
||||||
|
bind "h" { GoToPreviousTab; }
|
||||||
|
bind "j" { GoToNextTab; }
|
||||||
|
bind "k" { GoToPreviousTab; }
|
||||||
|
bind "l" { GoToNextTab; }
|
||||||
|
bind "n" { NewTab; SwitchToMode "normal"; }
|
||||||
|
bind "r" { SwitchToMode "renametab"; TabNameInput 0; }
|
||||||
|
bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; }
|
||||||
|
bind "Ctrl t" { SwitchToMode "normal"; }
|
||||||
|
bind "x" { CloseTab; SwitchToMode "normal"; }
|
||||||
|
bind "tab" { ToggleTab; }
|
||||||
|
}
|
||||||
|
resize {
|
||||||
|
bind "left" { Resize "Increase left"; }
|
||||||
|
bind "down" { Resize "Increase down"; }
|
||||||
|
bind "up" { Resize "Increase up"; }
|
||||||
|
bind "right" { Resize "Increase right"; }
|
||||||
|
bind "+" { Resize "Increase"; }
|
||||||
|
bind "-" { Resize "Decrease"; }
|
||||||
|
bind "=" { Resize "Increase"; }
|
||||||
|
bind "H" { Resize "Decrease left"; }
|
||||||
|
bind "J" { Resize "Decrease down"; }
|
||||||
|
bind "K" { Resize "Decrease up"; }
|
||||||
|
bind "L" { Resize "Decrease right"; }
|
||||||
|
bind "h" { Resize "Increase left"; }
|
||||||
|
bind "j" { Resize "Increase down"; }
|
||||||
|
bind "k" { Resize "Increase up"; }
|
||||||
|
bind "l" { Resize "Increase right"; }
|
||||||
|
bind "Ctrl n" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
move {
|
||||||
|
bind "left" { MovePane "left"; }
|
||||||
|
bind "down" { MovePane "down"; }
|
||||||
|
bind "up" { MovePane "up"; }
|
||||||
|
bind "right" { MovePane "right"; }
|
||||||
|
bind "h" { MovePane "left"; }
|
||||||
|
bind "Ctrl h" { SwitchToMode "normal"; }
|
||||||
|
bind "j" { MovePane "down"; }
|
||||||
|
bind "k" { MovePane "up"; }
|
||||||
|
bind "l" { MovePane "right"; }
|
||||||
|
bind "n" { MovePane; }
|
||||||
|
bind "p" { MovePaneBackwards; }
|
||||||
|
bind "tab" { MovePane; }
|
||||||
|
}
|
||||||
|
scroll {
|
||||||
|
bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "normal"; }
|
||||||
|
bind "Alt down" { MoveFocus "down"; SwitchToMode "normal"; }
|
||||||
|
bind "Alt up" { MoveFocus "up"; SwitchToMode "normal"; }
|
||||||
|
bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "normal"; }
|
||||||
|
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||||
|
bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "normal"; }
|
||||||
|
bind "Alt j" { MoveFocus "down"; SwitchToMode "normal"; }
|
||||||
|
bind "Alt k" { MoveFocus "up"; SwitchToMode "normal"; }
|
||||||
|
bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "normal"; }
|
||||||
|
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||||
|
}
|
||||||
|
search {
|
||||||
|
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||||
|
bind "n" { Search "down"; }
|
||||||
|
bind "o" { SearchToggleOption "WholeWord"; }
|
||||||
|
bind "p" { Search "up"; }
|
||||||
|
bind "w" { SearchToggleOption "Wrap"; }
|
||||||
|
}
|
||||||
|
session {
|
||||||
|
bind "c" {
|
||||||
|
LaunchOrFocusPlugin "configuration" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "Ctrl o" { SwitchToMode "normal"; }
|
||||||
|
bind "p" {
|
||||||
|
LaunchOrFocusPlugin "plugin-manager" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "w" {
|
||||||
|
LaunchOrFocusPlugin "session-manager" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" {
|
||||||
|
bind "Alt +" { Resize "Increase"; }
|
||||||
|
bind "Alt -" { Resize "Decrease"; }
|
||||||
|
bind "Alt =" { Resize "Increase"; }
|
||||||
|
bind "Alt [" { PreviousSwapLayout; }
|
||||||
|
bind "Alt ]" { NextSwapLayout; }
|
||||||
|
bind "Alt f" { ToggleFloatingPanes; }
|
||||||
|
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||||
|
bind "Alt i" { MoveTab "left"; }
|
||||||
|
bind "Alt n" { NewPane; }
|
||||||
|
bind "Alt o" { MoveTab "right"; }
|
||||||
|
bind "Ctrl q" { Quit; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "move" {
|
||||||
|
bind "Ctrl h" { SwitchToMode "move"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "session" {
|
||||||
|
bind "Ctrl o" { SwitchToMode "session"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "scroll" {
|
||||||
|
bind "Alt left" { MoveFocusOrTab "left"; }
|
||||||
|
bind "Alt down" { MoveFocus "down"; }
|
||||||
|
bind "Alt up" { MoveFocus "up"; }
|
||||||
|
bind "Alt right" { MoveFocusOrTab "right"; }
|
||||||
|
bind "Alt h" { MoveFocusOrTab "left"; }
|
||||||
|
bind "Alt j" { MoveFocus "down"; }
|
||||||
|
bind "Alt k" { MoveFocus "up"; }
|
||||||
|
bind "Alt l" { MoveFocusOrTab "right"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "scroll" "search" "tmux" {
|
||||||
|
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "tab" {
|
||||||
|
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "pane" {
|
||||||
|
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "resize" {
|
||||||
|
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" "entersearch" {
|
||||||
|
bind "enter" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" "entersearch" "renametab" "renamepane" {
|
||||||
|
bind "esc" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
shared_among "pane" "tmux" {
|
||||||
|
bind "x" { CloseFocus; SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
shared_among "scroll" "search" {
|
||||||
|
bind "PageDown" { PageScrollDown; }
|
||||||
|
bind "PageUp" { PageScrollUp; }
|
||||||
|
bind "left" { PageScrollUp; }
|
||||||
|
bind "down" { ScrollDown; }
|
||||||
|
bind "up" { ScrollUp; }
|
||||||
|
bind "right" { PageScrollDown; }
|
||||||
|
bind "Ctrl b" { PageScrollUp; }
|
||||||
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||||
|
bind "d" { HalfPageScrollDown; }
|
||||||
|
bind "Ctrl f" { PageScrollDown; }
|
||||||
|
bind "h" { PageScrollUp; }
|
||||||
|
bind "j" { ScrollDown; }
|
||||||
|
bind "k" { ScrollUp; }
|
||||||
|
bind "l" { PageScrollDown; }
|
||||||
|
bind "u" { HalfPageScrollUp; }
|
||||||
|
}
|
||||||
|
entersearch {
|
||||||
|
bind "Ctrl c" { SwitchToMode "scroll"; }
|
||||||
|
bind "esc" { SwitchToMode "scroll"; }
|
||||||
|
bind "enter" { SwitchToMode "search"; }
|
||||||
|
}
|
||||||
|
renametab {
|
||||||
|
bind "esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||||
|
}
|
||||||
|
shared_among "renametab" "renamepane" {
|
||||||
|
bind "Ctrl c" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
renamepane {
|
||||||
|
bind "esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||||
|
}
|
||||||
|
shared_among "session" "tmux" {
|
||||||
|
bind "d" { Detach; }
|
||||||
|
}
|
||||||
|
tmux {
|
||||||
|
bind "left" { MoveFocus "left"; SwitchToMode "normal"; }
|
||||||
|
bind "down" { MoveFocus "down"; SwitchToMode "normal"; }
|
||||||
|
bind "up" { MoveFocus "up"; SwitchToMode "normal"; }
|
||||||
|
bind "right" { MoveFocus "right"; SwitchToMode "normal"; }
|
||||||
|
bind "space" { NextSwapLayout; }
|
||||||
|
bind "\"" { NewPane "down"; SwitchToMode "normal"; }
|
||||||
|
bind "%" { NewPane "right"; SwitchToMode "normal"; }
|
||||||
|
bind "," { SwitchToMode "renametab"; }
|
||||||
|
bind "[" { SwitchToMode "scroll"; }
|
||||||
|
bind "Ctrl b" { Write 2; SwitchToMode "normal"; }
|
||||||
|
bind "c" { NewTab; SwitchToMode "normal"; }
|
||||||
|
bind "h" { MoveFocus "left"; SwitchToMode "normal"; }
|
||||||
|
bind "j" { MoveFocus "down"; SwitchToMode "normal"; }
|
||||||
|
bind "k" { MoveFocus "up"; SwitchToMode "normal"; }
|
||||||
|
bind "l" { MoveFocus "right"; SwitchToMode "normal"; }
|
||||||
|
bind "n" { GoToNextTab; SwitchToMode "normal"; }
|
||||||
|
bind "o" { FocusNextPane; }
|
||||||
|
bind "p" { GoToPreviousTab; SwitchToMode "normal"; }
|
||||||
|
bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
compact-bar location="zellij:compact-bar"
|
||||||
|
configuration location="zellij:configuration"
|
||||||
|
filepicker location="zellij:strider" {
|
||||||
|
cwd "/"
|
||||||
|
}
|
||||||
|
plugin-manager location="zellij:plugin-manager"
|
||||||
|
session-manager location="zellij:session-manager"
|
||||||
|
status-bar location="zellij:status-bar"
|
||||||
|
strider location="zellij:strider"
|
||||||
|
tab-bar location="zellij:tab-bar"
|
||||||
|
}
|
||||||
|
|
||||||
|
load_plugins {
|
||||||
|
}
|
||||||
|
|
||||||
|
theme "catppuccin-mocha"
|
||||||
|
show_startup_tips false
|
||||||
|
show_release_notes false
|
||||||
|
default_mode "normal"
|
||||||
402
flake.lock
generated
402
flake.lock
generated
@@ -1,5 +1,27 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"aagl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774186997,
|
||||||
|
"narHash": "sha256-hyNVlhAqmwcBPl7XRkxbGcMt1BfCOdvuEfBDUf0k8Oo=",
|
||||||
|
"owner": "ezKEa",
|
||||||
|
"repo": "aagl-gtk-on-nix",
|
||||||
|
"rev": "546e95f7ec74892a31f883a10b1723c35f2c2edd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ezKEa",
|
||||||
|
"repo": "aagl-gtk-on-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -7,16 +29,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748044287,
|
"lastModified": 1772129556,
|
||||||
"narHash": "sha256-9bJzyUX5+HXYmI60WMGYXXDdhGbSh1Le6yBM4og3K7E=",
|
"narHash": "sha256-Utk0zd8STPsUJPyjabhzPc5BpPodLTXrwkpXBHYnpeg=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "2456ff5c95edfc3b197cb012b947012faed77591",
|
"rev": "ebec37af18215214173c98cf6356d0aca24a2585",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"ref": "nix-darwin-25.05",
|
"ref": "nix-darwin-25.11",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -24,11 +46,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733328505,
|
"lastModified": 1767039857,
|
||||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -37,16 +59,60 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761588595,
|
||||||
|
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-schemas": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761577921,
|
||||||
|
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
||||||
|
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
||||||
|
"revCount": 107,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-schemas_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761577921,
|
||||||
|
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
||||||
|
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
||||||
|
"revCount": 107,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1701680307,
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -55,26 +121,68 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ghostty": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-utils": "flake-utils",
|
"gitignore": "gitignore",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"go-overlay",
|
||||||
"zig": "zig",
|
"nixpkgs"
|
||||||
"zon2nix": "zon2nix"
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748207486,
|
"lastModified": 1765016596,
|
||||||
"narHash": "sha256-4kR7VyauWpNMrBePHMM8yzQvUzHHGRVkQpJ3DyoKcH0=",
|
"narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=",
|
||||||
"owner": "ghostty-org",
|
"owner": "cachix",
|
||||||
"repo": "ghostty",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "3f6c02b49e08aed51e4be85d87b79b9dbea34a85",
|
"rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "ghostty-org",
|
"owner": "cachix",
|
||||||
"repo": "ghostty",
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"go-overlay",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"go-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1775676807,
|
||||||
|
"narHash": "sha256-l7B5l6cGBZoW4bs+4Zq/FMgxaZWWJqdUDkCVuH98hMY=",
|
||||||
|
"owner": "purpleclay",
|
||||||
|
"repo": "go-overlay",
|
||||||
|
"rev": "c5bd812957211f42c207da6b1415f49de30e183f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "purpleclay",
|
||||||
|
"repo": "go-overlay",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -85,16 +193,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747556831,
|
"lastModified": 1774274588,
|
||||||
"narHash": "sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc=",
|
"narHash": "sha256-dnHvv5EMUgTzGZmA+3diYjQU2O6BEpGLEOgJ1Qe9LaY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "d0bbd221482c2713cccb80220f3c9d16a6e20a33",
|
"rev": "cf9686ba26f5ef788226843bc31fda4cf72e373b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-25.05",
|
"ref": "release-25.11",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -117,59 +225,162 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747953325,
|
"lastModified": 1744536153,
|
||||||
"narHash": "sha256-y2ZtlIlNTuVJUZCqzZAhIw5rrKP4DOSklev6c8PyCkQ=",
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "55d1f923c480dadce40f5231feb472e81b0bab48",
|
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-25.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741992157,
|
|
||||||
"narHash": "sha256-nlIfTsTrMSksEJc1f7YexXiPVuzD1gOfeN1ggwZyUoc=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "da4b122f63095ca1199bd4d526f9e26426697689",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "release-24.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-unstable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741865919,
|
|
||||||
"narHash": "sha256-4thdbnP6dlbdq+qZWTsm4ffAwoS8Tiq1YResB+RP6WE=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "573c650e8a14b2faa0041645ab18aed7e60f0c9a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1765779637,
|
||||||
|
"narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1306659b587dc277866c7b69eb97e5f07864d8c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774244481,
|
||||||
|
"narHash": "sha256-4XfMXU0DjN83o6HWZoKG9PegCvKvIhNUnRUI19vzTcQ=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "4590696c8693fea477850fe379a01544293ca4e2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744536153,
|
||||||
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766201043,
|
||||||
|
"narHash": "sha256-eplAP+rorKKd0gNjV3rA6+0WMzb1X1i16F5m5pASnjA=",
|
||||||
|
"rev": "b3aad468604d3e488d627c0b43984eb60e75e782",
|
||||||
|
"revCount": 904049,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.904049%2Brev-b3aad468604d3e488d627c0b43984eb60e75e782/019b3f6c-8b33-7edb-b858-9979590f270b/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_6": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1769089682,
|
||||||
|
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
|
||||||
|
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
|
||||||
|
"revCount": 906333,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.906333%2Brev-078d69f03934859a181e81ba987c2bb033eebfc5/019bebf2-031c-7119-8fdc-ce9d29d005fa/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"aagl": "aagl",
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"ghostty": "ghostty",
|
"go-overlay": "go-overlay",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"rust-overlay": "rust-overlay_2",
|
||||||
|
"swaytreesave": "swaytreesave",
|
||||||
|
"vintage-story": "vintage-story"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770952264,
|
||||||
|
"narHash": "sha256-CjymNrJZWBtpavyuTkfPVPaZkwzIzGaf0E/3WgcwM14=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "ec6a3d5cdf14bb5a1dd03652bd3f6351004d2188",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774321696,
|
||||||
|
"narHash": "sha256-g18xMjMNla/nsF5XyQCNyWmtb2UlZpkY0XE8KinIXAA=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "49a67e6894d4cb782842ee6faa466aa90c92812d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"swaytreesave": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-schemas": "flake-schemas",
|
||||||
|
"nixpkgs": "nixpkgs_5"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767148467,
|
||||||
|
"narHash": "sha256-W0O7SWq8ucokt4ctEAEvRvNoSM/oF7fBfb2kTN+lwTs=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "0f4bb9bb450b28aa4f29d5eb2062deac6c26687a",
|
||||||
|
"revCount": 4,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
@@ -187,58 +398,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zig": {
|
"vintage-story": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": [
|
"flake-schemas": "flake-schemas_2",
|
||||||
"ghostty"
|
"nixpkgs": "nixpkgs_6"
|
||||||
],
|
|
||||||
"flake-utils": [
|
|
||||||
"ghostty",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"ghostty",
|
|
||||||
"nixpkgs-stable"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741825901,
|
"lastModified": 1769397199,
|
||||||
"narHash": "sha256-aeopo+aXg5I2IksOPFN79usw7AeimH1+tjfuMzJHFdk=",
|
"narHash": "sha256-MSajncUGZtlpl88rqFdj42eGGyWnk2jw84VbK3AgUBA=",
|
||||||
"owner": "mitchellh",
|
"ref": "refs/heads/master",
|
||||||
"repo": "zig-overlay",
|
"rev": "4d2313c50933645040a0d12556016fc2916bfa65",
|
||||||
"rev": "0b14285e283f5a747f372fb2931835dd937c4383",
|
"revCount": 1,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "mitchellh",
|
"type": "git",
|
||||||
"repo": "zig-overlay",
|
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zon2nix": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": [
|
|
||||||
"ghostty",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"ghostty",
|
|
||||||
"nixpkgs-unstable"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742104771,
|
|
||||||
"narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=",
|
|
||||||
"owner": "jcollie",
|
|
||||||
"repo": "zon2nix",
|
|
||||||
"rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "jcollie",
|
|
||||||
"ref": "56c159be489cc6c0e73c3930bd908ddc6fe89613",
|
|
||||||
"repo": "zon2nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
138
flake.nix
138
flake.nix
@@ -1,18 +1,26 @@
|
|||||||
{
|
{
|
||||||
description = "Wyatt's nix configuration suite";
|
description = "Wyatt's nix configuration suite";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.05";
|
url = "github:nix-community/home-manager/release-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
darwin = {
|
darwin = {
|
||||||
url = "github:lnl7/nix-darwin/nix-darwin-25.05";
|
url = "github:lnl7/nix-darwin/nix-darwin-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
ghostty.url = "github:ghostty-org/ghostty";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
ucodenix.url = "github:e-tho/ucodenix";
|
go-overlay.url = "github:purpleclay/go-overlay";
|
||||||
|
aagl = {
|
||||||
|
url = "github:ezKEa/aagl-gtk-on-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# My personal flakes
|
||||||
|
swaytreesave.url = "git+https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git";
|
||||||
|
vintage-story.url = "git+https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
@@ -21,27 +29,44 @@
|
|||||||
nix-flatpak,
|
nix-flatpak,
|
||||||
darwin,
|
darwin,
|
||||||
home-manager,
|
home-manager,
|
||||||
ghostty,
|
rust-overlay,
|
||||||
ucodenix,
|
go-overlay,
|
||||||
|
aagl,
|
||||||
|
swaytreesave,
|
||||||
|
vintage-story,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
userName = "wyatt";
|
userName = "wyatt";
|
||||||
userEmail = "wyatt@wyattjmiller.com";
|
userEmail = "wyatt@wyattjmiller.com";
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit userName userEmail ghostty;
|
inherit userName userEmail swaytreesave;
|
||||||
|
};
|
||||||
|
|
||||||
|
myOverlays = { ... }: {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
rust-overlay.overlays.default
|
||||||
|
go-overlay.overlays.default
|
||||||
|
aagl.overlays.default
|
||||||
|
self.common.overlays
|
||||||
|
];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
meta = import ./meta;
|
meta = import ./meta;
|
||||||
|
|
||||||
|
common = {
|
||||||
|
overlays = import ./modules/common/overlays.nix;
|
||||||
|
};
|
||||||
|
|
||||||
# Primary laptop - MacBook Pro (2023, M3)
|
# Primary laptop - MacBook Pro (2023, M3)
|
||||||
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
|
darwinConfigurations."sephiroth" = darwin.lib.darwinSystem {
|
||||||
system = "aarch64-darwin";
|
system = "aarch64-darwin";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit userName userEmail ghostty;
|
inherit userName userEmail;
|
||||||
hostname = "sephiroth";
|
hostname = "sephiroth";
|
||||||
role = "devel";
|
role = "workstation";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
|
myOverlays
|
||||||
./modules/common
|
./modules/common
|
||||||
./modules/machine/sephiroth
|
./modules/machine/sephiroth
|
||||||
|
|
||||||
@@ -49,7 +74,9 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = false; role = "workstation"; };
|
||||||
|
# home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
home-manager.users.${userName} = import ./home;
|
home-manager.users.${userName} = import ./home;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -59,13 +86,13 @@
|
|||||||
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit userName userEmail ghostty;
|
inherit userName userEmail aagl vintage-story;
|
||||||
hostname = "cloud";
|
hostname = "cloud";
|
||||||
role = "devel";
|
role = "workstation";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
|
myOverlays
|
||||||
nix-flatpak.nixosModules.nix-flatpak
|
nix-flatpak.nixosModules.nix-flatpak
|
||||||
ucodenix.nixosModules.default
|
|
||||||
./modules/common
|
./modules/common
|
||||||
./modules/machine/cloud
|
./modules/machine/cloud
|
||||||
|
|
||||||
@@ -73,7 +100,8 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "workstation"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
home-manager.users.${userName}.imports = [
|
home-manager.users.${userName}.imports = [
|
||||||
./home
|
./home
|
||||||
];
|
];
|
||||||
@@ -90,6 +118,7 @@
|
|||||||
role = "server";
|
role = "server";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
|
myOverlays
|
||||||
./modules/common
|
./modules/common
|
||||||
./modules/machine/valefor
|
./modules/machine/valefor
|
||||||
|
|
||||||
@@ -98,6 +127,7 @@
|
|||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
home-manager.users.${userName}.imports = [
|
home-manager.users.${userName}.imports = [
|
||||||
./home
|
./home
|
||||||
];
|
];
|
||||||
@@ -114,6 +144,7 @@
|
|||||||
role = "server";
|
role = "server";
|
||||||
};
|
};
|
||||||
# modules = [
|
# modules = [
|
||||||
|
# myOverlays
|
||||||
# nix-flatpak.nixosModules.nix-flatpak
|
# nix-flatpak.nixosModules.nix-flatpak
|
||||||
# nix-ld.nixosModules.nix-ld
|
# nix-ld.nixosModules.nix-ld
|
||||||
# ./modules/nixos/hardware-configuration.nix
|
# ./modules/nixos/hardware-configuration.nix
|
||||||
@@ -126,11 +157,88 @@
|
|||||||
# home-manager.useGlobalPkgs = true;
|
# home-manager.useGlobalPkgs = true;
|
||||||
# home-manager.useUserPackages = true;
|
# home-manager.useUserPackages = true;
|
||||||
# home-manager.extraSpecialArgs = extraSpecialArgs;
|
# home-manager.extraSpecialArgs = extraSpecialArgs;
|
||||||
|
# home-manager.backupFileExtension = "bak";
|
||||||
# home-manager.users.${userName}.imports = [
|
# home-manager.users.${userName}.imports = [
|
||||||
# ./home
|
# ./home
|
||||||
# ];
|
# ];
|
||||||
# }
|
# }
|
||||||
# ];
|
# ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Vintage story server
|
||||||
|
nixosConfigurations."thancred" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail vintage-story;
|
||||||
|
hostname = "thancred";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/thancred
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Matrix and Mastodon server
|
||||||
|
nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail;
|
||||||
|
hostname = "yshtola";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/yshtola
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# generic non-NixOS Linux machine
|
||||||
|
homeConfigurations."generic" = let
|
||||||
|
hostname = builtins.getEnv "HOSTNAME";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit userName userEmail hostname;
|
||||||
|
isNixOS = false;
|
||||||
|
role = "workstation";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
rust-overlay.overlays.default
|
||||||
|
go-overlay.overlays.default
|
||||||
|
self.common.overlays
|
||||||
|
];
|
||||||
|
}
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{...}: {
|
{ pkgs, ...}: {
|
||||||
programs.atuin = {
|
programs.atuin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
|
package = pkgs.atuinLatest;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
17
home/bat.nix
Normal file
17
home/bat.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config.theme = "catppuccin";
|
||||||
|
|
||||||
|
themes.catppuccin = {
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "catppuccin";
|
||||||
|
repo = "bat";
|
||||||
|
rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
|
||||||
|
hash = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
file = "/Catppuccin-mocha.tmTheme";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
isNixOS ? true,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
programs.chromium = {
|
programs.chromium = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux && isNixOS;
|
||||||
package = pkgs.ungoogled-chromium.override {
|
package = pkgs.ungoogled-chromium.override {
|
||||||
enableWideVine = true;
|
enableWideVine = true;
|
||||||
commandLineArgs = [
|
commandLineArgs = [
|
||||||
@@ -39,13 +40,38 @@
|
|||||||
# ublock origin
|
# ublock origin
|
||||||
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
|
||||||
sha256 = "sha256:0pdh1v0vx1d5vnl1zh7nbk6j1fh4k4hhwp1ljs203icn306lahsn";
|
sha256 = "sha256:0pdh1v0vx1d5vnl1zh7nbk6j1fh4k4hhwp1ljs203icn306lahsn";
|
||||||
version = "1.63.2";
|
# sha256 = lib.fakeSha256;
|
||||||
|
version = "1.67.0";
|
||||||
})
|
})
|
||||||
(createChromiumExtension {
|
(createChromiumExtension {
|
||||||
# bitwarden
|
# bitwarden
|
||||||
id = "nngceckbapebfimnlniiiahkandclblb";
|
id = "nngceckbapebfimnlniiiahkandclblb";
|
||||||
sha256 = "sha256:0jxk3cqmgd5qj8hnw7s0k5s4bfrcmr0w0rckp3x0bmng07azw4gi";
|
sha256 = "sha256:0jxk3cqmgd5qj8hnw7s0k5s4bfrcmr0w0rckp3x0bmng07azw4gi";
|
||||||
version = "2025.3.1";
|
version = "2025.10.0";
|
||||||
|
})
|
||||||
|
(createChromiumExtension {
|
||||||
|
# react dev tools
|
||||||
|
id = "fmkadmapgofadopljbjfkapdkoienihi";
|
||||||
|
sha256 = "sha256:01vy0x7hdkj4g3m2l4kw5rwldhhpkcxmd2miy5rj2dzxdnbchw2z";
|
||||||
|
version = "7.0.1";
|
||||||
|
})
|
||||||
|
(createChromiumExtension {
|
||||||
|
# wappalyzer
|
||||||
|
id = "gppongmhjkpfnbhagpmjfkannfbllamg";
|
||||||
|
sha256 = "sha256:1mi1wpm714r8yp0zh0yg6kccnld36rj4xb8j4y0c18y9176vc6wx";
|
||||||
|
version = "6.10.86";
|
||||||
|
})
|
||||||
|
(createChromiumExtension {
|
||||||
|
# obsidian web clipper
|
||||||
|
id = "cnjifjpddelmedmihgijeibhnjfabmlf";
|
||||||
|
sha256 = "sha256:0bp6g63g9hk2xbq054lpf5hzwmn73jzh3hswyjfp9r7yqj83mzgy";
|
||||||
|
version = "0.12.0";
|
||||||
|
})
|
||||||
|
(createChromiumExtension {
|
||||||
|
# dark reader
|
||||||
|
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
|
||||||
|
sha256 = "sha256:06a9dz589i1da519kivzp7bljksl2xxsd151y7ww0hx28jd1694b";
|
||||||
|
version = "4.9.113";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,60 +1,59 @@
|
|||||||
{
|
{ lib
|
||||||
lib,
|
, pkgs
|
||||||
pkgs,
|
, userName
|
||||||
userName,
|
, swaytreesave
|
||||||
userEmail,
|
, isNixOS ? true
|
||||||
ghostty,
|
, ...
|
||||||
...
|
|
||||||
}: let
|
}: let
|
||||||
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
||||||
# or maybe I'm too lazy to do anything about it? I dunno
|
# or maybe I'm too lazy to do anything about it? I dunno
|
||||||
dirs = {
|
dirs = {
|
||||||
defaults = ../defaults;
|
defaults = ../defaults;
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
|
_module.args = {
|
||||||
|
inherit dirs;
|
||||||
|
};
|
||||||
|
|
||||||
# Import sub modules
|
# Import sub modules
|
||||||
imports = map (module: import module {inherit lib pkgs dirs userName userEmail ghostty;}) [
|
imports = [
|
||||||
./atuin.nix
|
|
||||||
./shell.nix
|
|
||||||
./packages
|
./packages
|
||||||
./git.nix
|
|
||||||
./starship.nix
|
|
||||||
./eza.nix
|
|
||||||
./neovim.nix
|
|
||||||
./direnv.nix
|
|
||||||
./sway.nix
|
|
||||||
./terminal.nix
|
|
||||||
./browser.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the
|
home = lib.mkMerge [
|
||||||
# paths it should manage.
|
{
|
||||||
home = {
|
username = userName;
|
||||||
username = userName;
|
homeDirectory =
|
||||||
homeDirectory =
|
if pkgs.stdenv.isDarwin
|
||||||
if pkgs.stdenv.isDarwin
|
then "/Users/${userName}"
|
||||||
then "/Users/${userName}"
|
else "/home/${userName}";
|
||||||
else "/home/${userName}";
|
|
||||||
|
|
||||||
sessionVariables = {
|
stateVersion = "24.11";
|
||||||
XDG_CURRENT_DESKTOP = "sway";
|
}
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
XDG_CONFIG_HOME = "$HOME/.config";
|
|
||||||
XDG_CACHE_HOME = "$HOME/.cache";
|
|
||||||
XDG_DATA_HOME = "$HOME/.local/share";
|
|
||||||
XDG_STATE_HOME = "$HOME/.local/state";
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
pointerCursor = lib.mkIf pkgs.stdenv.isLinux {
|
(lib.mkIf isNixOS {
|
||||||
gtk.enable = true;
|
sessionVariables = {
|
||||||
package = pkgs.catppuccin-cursors.mochaDark;
|
XDG_CURRENT_DESKTOP = "sway";
|
||||||
name = "catppuccin-mocha-dark-cursors";
|
XDG_SESSION_TYPE = "wayland";
|
||||||
size = 22;
|
XDG_SESSION_DESKTOP = "sway";
|
||||||
};
|
XDG_CONFIG_HOME = "$HOME/.config";
|
||||||
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||||||
|
XDG_DATA_HOME = "$HOME/.local/share";
|
||||||
|
XDG_STATE_HOME = "$HOME/.local/state";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
stateVersion = "24.11";
|
(lib.mkIf pkgs.stdenv.isLinux {
|
||||||
};
|
pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
package = pkgs.catppuccin-cursors.mochaDark;
|
||||||
|
name = "catppuccin-mocha-dark-cursors";
|
||||||
|
size = 22;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
# Let Home Manager install and manage itself.
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|||||||
@@ -15,8 +15,9 @@
|
|||||||
extraConfig = {
|
extraConfig = {
|
||||||
init.defaultBranch = "master";
|
init.defaultBranch = "master";
|
||||||
push.autoSetupRemote = true;
|
push.autoSetupRemote = true;
|
||||||
pull.merge = true;
|
pull.rebase = false;
|
||||||
merge.tool = "nvimdiff";
|
merge.tool = "nvimdiff";
|
||||||
|
mergetool.keepBackup = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
ignores = [
|
ignores = [
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
a = "add";
|
a = "add";
|
||||||
ap = "add -p";
|
ap = "add -p";
|
||||||
br = "branch";
|
br = "branch";
|
||||||
|
cb = "checkout -b";
|
||||||
co = "checkout";
|
co = "checkout";
|
||||||
st = "status -sb";
|
st = "status -sb";
|
||||||
status = "status -sb";
|
status = "status -sb";
|
||||||
@@ -39,6 +41,11 @@
|
|||||||
ca = "commit -am";
|
ca = "commit -am";
|
||||||
dc = "diff --cached";
|
dc = "diff --cached";
|
||||||
amend = "commit --amend -m";
|
amend = "commit --amend -m";
|
||||||
|
wipe = "reset --hard";
|
||||||
|
gg = "reset --hard";
|
||||||
|
ggs = "reset --hard";
|
||||||
|
sw = "switch";
|
||||||
|
r = "restore";
|
||||||
|
|
||||||
# aliases for submodules
|
# aliases for submodules
|
||||||
update = "submodule update --init --recursive";
|
update = "submodule update --init --recursive";
|
||||||
|
|||||||
32
home/k9s.nix
Normal file
32
home/k9s.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
programs.k9s = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.k9s;
|
||||||
|
settings.k9s = {
|
||||||
|
refreshRate = "2s";
|
||||||
|
liveViewAutoRefresh = false;
|
||||||
|
apiServerTimeout = "30s";
|
||||||
|
maxConnRetry = 5;
|
||||||
|
readOnly = true;
|
||||||
|
noExitOnCtrlC = false;
|
||||||
|
portForwardAddress = "localhost";
|
||||||
|
skipLatestRevCheck = false;
|
||||||
|
|
||||||
|
skin = {
|
||||||
|
catppuccin-mocha = ../defaults/k9s/catppuccin-mocha.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
|
ui = {
|
||||||
|
skin = "catppuccin-mocha";
|
||||||
|
enableMouse = true;
|
||||||
|
headless = false;
|
||||||
|
logoless = true;
|
||||||
|
crumbsless = false;
|
||||||
|
splashless = true;
|
||||||
|
reactive = false;
|
||||||
|
noIcons = false;
|
||||||
|
defaultsToFullscreen = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
14
home/krew.nix
Normal file
14
home/krew.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
with pkgs;
|
||||||
|
let
|
||||||
|
plugins = [
|
||||||
|
"krew"
|
||||||
|
"oidc-login"
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
home.activation.krew = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||||
|
${lib.concatMapStringsSep "\n" (plugin: ''
|
||||||
|
$DRY_RUN_CMD ${krew}/bin/krew install ${plugin} || true
|
||||||
|
'') plugins}
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{...}: {
|
{ pkgs, ... }: {
|
||||||
programs.lazygit = {
|
programs.lazygit = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.lazygitLatest;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
gui.theme = {
|
gui.theme = {
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{dirs, ...}: {
|
{...}: let
|
||||||
|
dirs = {
|
||||||
|
defaults = ../defaults;
|
||||||
|
};
|
||||||
|
in {
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
|
|||||||
@@ -1,11 +1,20 @@
|
|||||||
{
|
{
|
||||||
lib,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home.packages = with pkgs; [
|
imports = [
|
||||||
nnn # terminal file manager
|
../atuin.nix
|
||||||
|
../shell.nix
|
||||||
|
../git.nix
|
||||||
|
../starship.nix
|
||||||
|
../eza.nix
|
||||||
|
../neovim.nix
|
||||||
|
../bat.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
# archives
|
# archives
|
||||||
zip
|
zip
|
||||||
xz
|
xz
|
||||||
@@ -13,42 +22,21 @@
|
|||||||
p7zip
|
p7zip
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
zellij
|
yazi
|
||||||
tmux
|
tmux
|
||||||
bat
|
|
||||||
lazygit
|
|
||||||
bottom
|
bottom
|
||||||
ripgrep
|
ripgrep
|
||||||
jq
|
jq
|
||||||
yq-go
|
yq-go
|
||||||
fzf
|
fzf
|
||||||
fh
|
|
||||||
aria2
|
aria2
|
||||||
yt-dlp
|
gnupg
|
||||||
obsidian
|
|
||||||
vscode
|
|
||||||
weechat
|
|
||||||
inetutils
|
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
cowsay
|
|
||||||
file
|
file
|
||||||
which
|
which
|
||||||
tree
|
tree
|
||||||
gnutar
|
gnutar
|
||||||
gnupg
|
|
||||||
zoxide
|
|
||||||
babelfish
|
babelfish
|
||||||
|
|
||||||
# language-specific package managers
|
|
||||||
nodejs
|
|
||||||
cargo
|
|
||||||
python3
|
|
||||||
|
|
||||||
# nix specific stuff
|
|
||||||
nixd
|
|
||||||
deadnix
|
|
||||||
alejandra
|
|
||||||
statix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
{
|
{ lib, pkgs, ... }:
|
||||||
pkgs,
|
lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
lib,
|
home.packages = with pkgs; [
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = lib.mkIf pkgs.stdenv.isDarwin (with pkgs; [
|
|
||||||
discord
|
discord
|
||||||
ollama
|
ollama
|
||||||
]);
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
|
{ lib, role ? "workstation", ... }:
|
||||||
{
|
{
|
||||||
pkgs,
|
imports =
|
||||||
lib,
|
[
|
||||||
...
|
./common.nix
|
||||||
}: {
|
./darwin.nix
|
||||||
imports = [
|
./linux.nix
|
||||||
./common.nix
|
]
|
||||||
./darwin.nix
|
++ lib.optional (role == "workstation") ./workstation.nix
|
||||||
./linux.nix
|
++ lib.optional (role == "server") ./server.nix;
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
{
|
{ lib, pkgs, isNixOS ? true, ... }:
|
||||||
pkgs,
|
lib.mkIf pkgs.stdenv.isLinux {
|
||||||
lib,
|
home.packages = with pkgs; [
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [
|
|
||||||
imv
|
imv
|
||||||
betterdiscordctl
|
|
||||||
vesktop
|
|
||||||
xdg-utils
|
xdg-utils
|
||||||
mcrcon
|
] ++ lib.optionals isNixOS [
|
||||||
|
vesktop
|
||||||
xfce.thunar
|
xfce.thunar
|
||||||
pavucontrol
|
pavucontrol
|
||||||
# ungoogled-chromium
|
zathura
|
||||||
]);
|
gpu-screen-recorder
|
||||||
|
gpu-screen-recorder-gtk
|
||||||
|
inetutils
|
||||||
|
easyeffects
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
home.packages = [
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
isNixOS ? true,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../terminal.nix
|
||||||
|
../browser.nix
|
||||||
|
../zellij.nix
|
||||||
|
../lazygit.nix
|
||||||
|
../k9s.nix
|
||||||
|
../krew.nix
|
||||||
|
../direnv.nix
|
||||||
|
] ++ lib.optional isNixOS ../sway.nix;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
fh
|
||||||
|
kubectl # kube config is deliberately not included
|
||||||
|
kubectx
|
||||||
|
vscode
|
||||||
|
yt-dlp
|
||||||
|
weechat
|
||||||
|
nodejs
|
||||||
|
cargo
|
||||||
|
python3
|
||||||
|
nixd
|
||||||
|
deadnix
|
||||||
|
alejandra
|
||||||
|
statix
|
||||||
|
gh
|
||||||
|
ghDashLatest
|
||||||
|
diffNavLatest
|
||||||
|
] ++ lib.optionals isNixOS [
|
||||||
|
obsidian
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, lib, ...}: {
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# initExtra = ''
|
shellInit = ''
|
||||||
# export PATH="$PATH:$HOME/bin:$HOME/.local/bin:$HOME/go/bin"
|
if test -d $HOME/.krew/bin
|
||||||
# '';
|
set -gx PATH $HOME/.krew/bin $PATH
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
# ls aliases
|
# ls aliases
|
||||||
@@ -43,7 +45,31 @@
|
|||||||
"Can I get a waffle? Can I please get a waffle?" \
|
"Can I get a waffle? Can I please get a waffle?" \
|
||||||
"I'm lesbian. I thought you were American." \
|
"I'm lesbian. I thought you were American." \
|
||||||
"You gotta give 'em that 'hawk tuah' and spit on that thang!" \
|
"You gotta give 'em that 'hawk tuah' and spit on that thang!" \
|
||||||
"We don't do that here..."
|
"We don't do that here..." \
|
||||||
|
"What are those?! They are my crocs..." \
|
||||||
|
"It's an avocado... Thanks!" \
|
||||||
|
"I am once again asking for your financial support" \
|
||||||
|
"Is that a weed?" \
|
||||||
|
"No, this is Patrick!" \
|
||||||
|
"Come ride, heroes, ride" \
|
||||||
|
"Away with the tide" \
|
||||||
|
"Concede your mind unto the fiend" \
|
||||||
|
"Darkness come, rend the shield of light" \
|
||||||
|
"The sun is setting, darkness taking over - a date with chaos and you're dressed to the nines" \
|
||||||
|
"Now kneel overdweller, your lord commands, there's no salvation for the sons of man" \
|
||||||
|
"Snap click clank whirr whizz wham boom!" \
|
||||||
|
"Rohs an kyn ala na" \
|
||||||
|
"If you’ve brought your ivory standard, I’ll be happy to tell you where you can stick it" \
|
||||||
|
"Speeches? Oh, yes, I love them. There's nothing like a good exposition when you're having trouble sleeping!" \
|
||||||
|
"Somehow, the boy just isn't very buoyant" \
|
||||||
|
"I am...not interested, little sun. Try again when you have become a man" \
|
||||||
|
"I am rightousness! And rightousness shall previal!" \
|
||||||
|
"Ahhh such bliss!" \
|
||||||
|
"The gods themselves will be my meal. Your dear companions my dessert. Upon this world I'll feast, and death shall follow in my wake. All your hate, all your rage, you will render unto me." \
|
||||||
|
"Boring, boring, boring" \
|
||||||
|
"Would you be 'happier' had I a 'good reason'?" \
|
||||||
|
"A test of your reflexes!"
|
||||||
|
|
||||||
|
|
||||||
set choose_meme (random)"%"(count $memes)
|
set choose_meme (random)"%"(count $memes)
|
||||||
set choose_meme $memes[(math $choose_meme"+1")]
|
set choose_meme $memes[(math $choose_meme"+1")]
|
||||||
@@ -52,6 +78,27 @@
|
|||||||
'';
|
'';
|
||||||
onEvent = "fish_greeting";
|
onEvent = "fish_greeting";
|
||||||
};
|
};
|
||||||
|
} // lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
|
block = {
|
||||||
|
body = ''
|
||||||
|
systemd-inhibit --what=sleep --who="$USER" --why="manual invocation" --mode=block sleep infinity &
|
||||||
|
set -g INHIBIT_PID $last_pid
|
||||||
|
echo "Sleep inhibited. PID: $INHIBIT_PID"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
unblock = {
|
||||||
|
body = ''
|
||||||
|
if set -q INHIBIT_PID
|
||||||
|
kill $INHIBIT_PID 2>/dev/null
|
||||||
|
and echo "Sleep inhibitor removed. PID: $INHIBIT_PID"
|
||||||
|
or echo "Failed to kill process or already terminated."
|
||||||
|
set -e INHIBIT_PID
|
||||||
|
else
|
||||||
|
echo "No active sleep inhibitor found."
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
139
home/sway.nix
139
home/sway.nix
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
swaytreesave,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
dirs = {
|
dirs = {
|
||||||
@@ -15,6 +16,12 @@
|
|||||||
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
|
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
imports = [
|
||||||
|
swaytreesave.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.swaytreesave.enable = if pkgs.stdenv.isLinux then true else false;
|
||||||
|
|
||||||
wayland.windowManager.sway = {
|
wayland.windowManager.sway = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here
|
extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here
|
||||||
@@ -29,26 +36,124 @@ in {
|
|||||||
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
||||||
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
||||||
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
||||||
programs.rofi.enable = pkgs.stdenv.isLinux;
|
|
||||||
services.mako.enable = pkgs.stdenv.isLinux;
|
programs.wofi = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
settings = {
|
||||||
|
width=600;
|
||||||
|
height=350;
|
||||||
|
location="center";
|
||||||
|
show="drun";
|
||||||
|
prompt="Search...";
|
||||||
|
filter_rate=100;
|
||||||
|
allow_markup=true;
|
||||||
|
no_actions=true;
|
||||||
|
halign="fill";
|
||||||
|
orientation="vertical";
|
||||||
|
content_halign="fill";
|
||||||
|
insensitive=true;
|
||||||
|
allow_images=true;
|
||||||
|
image_size=40;
|
||||||
|
gtk_dark=true;
|
||||||
|
};
|
||||||
|
style = ''
|
||||||
|
@define-color selected-text #8caaee;
|
||||||
|
@define-color text #c6d0f5;
|
||||||
|
@define-color base #24273a;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: 'Monaspace Krypton 9', monospace;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: @base;
|
||||||
|
opacity: 0.95;
|
||||||
|
}
|
||||||
|
|
||||||
|
#inner-box {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#outer-box {
|
||||||
|
margin: 0;
|
||||||
|
padding: 20px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scroll {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input:focus {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry {
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected {
|
||||||
|
outline: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected #text {
|
||||||
|
color: @selected-text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry image {
|
||||||
|
-gtk-icon-transform: scale(0.7);
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
programs.swaylock.enable = pkgs.stdenv.isLinux;
|
||||||
|
|
||||||
|
services.mako = {
|
||||||
|
enable = pkgs.stdenv.isLinux;
|
||||||
|
settings = {
|
||||||
|
text-color="#cad3f5";
|
||||||
|
border-color="#c6d0f5";
|
||||||
|
background-color="#24273a";
|
||||||
|
width=420;
|
||||||
|
height=110;
|
||||||
|
padding=10;
|
||||||
|
border-size=2;
|
||||||
|
font="Monaspace Krypton 9";
|
||||||
|
anchor="top-right";
|
||||||
|
default-timeout=5000;
|
||||||
|
max-icon-size=32;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
|
|
||||||
package = pkgs.waybar.overrideAttrs (old: {
|
|
||||||
version = "0.11.0";
|
|
||||||
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "Alexays";
|
|
||||||
repo = "Waybar";
|
|
||||||
rev = "d56dd6ee7fdf8c5ba4e90790af62b7f7829d3a47";
|
|
||||||
sha256 = "sha256-3lc0voMU5RS+mEtxKuRayq/uJO09X7byq6Rm5NZohq8=";
|
|
||||||
fetchSubmodules = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
buildInputs = old.buildInputs ++ [ pkgs.fftw pkgs.libcava ];
|
|
||||||
# mesonFlags = (old.mesonFlags or []) ++ [ "-Dcava=disabled" ];
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, ghostty, ... }: {
|
{ pkgs, ... }: {
|
||||||
programs.alacritty = {
|
programs.alacritty = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -103,9 +103,4 @@
|
|||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = false; # TODO: to enable later
|
enable = false; # TODO: to enable later
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = if pkgs.stdenv.isLinux then
|
|
||||||
[ ghostty.packages.${pkgs.system}.default ]
|
|
||||||
else
|
|
||||||
[ ];
|
|
||||||
}
|
}
|
||||||
|
|||||||
14
home/zellij.nix
Normal file
14
home/zellij.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
dirs = {
|
||||||
|
defaults = ../defaults;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
programs.zellij = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."zellij/config.kdl".source = lib.mkForce (dirs.defaults + /zellij/config.kdl);
|
||||||
|
}
|
||||||
0
lib/checkSystem.nix
Normal file
0
lib/checkSystem.nix
Normal file
19
modules/apps/appimage.nix
Normal file
19
modules/apps/appimage.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.appimage;
|
||||||
|
in {
|
||||||
|
options.appimage = {
|
||||||
|
enable = mkEnableOption "AppImage support";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
appimageupdate
|
||||||
|
appimage-run
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,11 +1,17 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
aagl,
|
||||||
|
vintage-story,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.gaming;
|
cfg = config.gaming;
|
||||||
in {
|
in {
|
||||||
|
imports = [
|
||||||
|
aagl.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
options.gaming = {
|
options.gaming = {
|
||||||
steam = {
|
steam = {
|
||||||
enable = lib.mkEnableOption "Steam gaming platform";
|
enable = lib.mkEnableOption "Steam gaming platform";
|
||||||
@@ -62,6 +68,14 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vkbasalt = {
|
||||||
|
enable = lib.mkEnableOption "vkBasalt/ReShade/GShade post processing shaders";
|
||||||
|
};
|
||||||
|
|
||||||
|
mangohud = {
|
||||||
|
enable = lib.mkEnableOption "OpenGL/Vulkan overlay tool shown in games presenting FPS, CPU/GPU/memory utilization, load, etc.";
|
||||||
|
};
|
||||||
|
|
||||||
lutris = {
|
lutris = {
|
||||||
enable = lib.mkEnableOption "Lutris game manager and launcher";
|
enable = lib.mkEnableOption "Lutris game manager and launcher";
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
@@ -108,9 +122,38 @@ in {
|
|||||||
ffxiv = {
|
ffxiv = {
|
||||||
enable = lib.mkEnableOption "Final Fantasy XIV and it's accompanied (unofficial) launcher";
|
enable = lib.mkEnableOption "Final Fantasy XIV and it's accompanied (unofficial) launcher";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# TODO: when aagl gets it's unified launcher all finished/in a stable state, transition to that launcher
|
||||||
|
aagl = {
|
||||||
|
anime-game-launcher = {
|
||||||
|
enable = lib.mkEnableOption "Genshin Impact launcher (legacy)";
|
||||||
|
};
|
||||||
|
|
||||||
|
honkers-railway-launcher = {
|
||||||
|
enable = lib.mkEnableOption "Honkai: Star Rail launcher";
|
||||||
|
};
|
||||||
|
|
||||||
|
honkers-launcher = {
|
||||||
|
enable = lib.mkEnableOption "Honkai: Impact 3rd launcher";
|
||||||
|
};
|
||||||
|
|
||||||
|
wavey-launcher = {
|
||||||
|
enable = lib.mkEnableOption "Wuthering Waves launcher";
|
||||||
|
};
|
||||||
|
|
||||||
|
sleepy-launcher = {
|
||||||
|
enable = lib.mkEnableOption "Zenless Zone Zero (ZZZ) launcher";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vintage-story = {
|
||||||
|
enable = lib.mkEnableOption "Vintage Story client and server";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = let
|
||||||
|
agl = cfg.aagl;
|
||||||
|
in {
|
||||||
programs.steam = lib.mkIf cfg.steam.enable {
|
programs.steam = lib.mkIf cfg.steam.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
remotePlay.openFirewall = cfg.steam.firewall.remotePlay;
|
remotePlay.openFirewall = cfg.steam.firewall.remotePlay;
|
||||||
@@ -139,6 +182,26 @@ in {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.anime-game-launcher = lib.mkIf agl.anime-game-launcher.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.honkers-railway-launcher = lib.mkIf agl.honkers-railway-launcher.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.honkers-launcher = lib.mkIf agl.honkers-launcher.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.wavey-launcher = lib.mkIf agl.wavey-launcher.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.sleepy-launcher = lib.mkIf agl.sleepy-launcher.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
(lib.optionals cfg.lutris.enable (
|
(lib.optionals cfg.lutris.enable (
|
||||||
[cfg.lutris.package] ++
|
[cfg.lutris.package] ++
|
||||||
@@ -154,6 +217,20 @@ in {
|
|||||||
cfg.lutris.extraPackages
|
cfg.lutris.extraPackages
|
||||||
)) ++
|
)) ++
|
||||||
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
|
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
|
||||||
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher]);
|
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
|
||||||
|
(lib.optionals cfg.vintage-story.enable [vintage-story.packages.${pkgs.system}.default]) ++
|
||||||
|
(lib.optionals cfg.vkbasalt.enable [pkgs.vkbasalt pkgs.vkbasalt-cli]) ++
|
||||||
|
(lib.optionals cfg.mangohud.enable [pkgs.mangohud]) ++
|
||||||
|
(lib.optionals (cfg.vkbasalt.enable || cfg.mangohud.enable) [pkgs.goverlay pkgs.mesa-demos pkgs.vulkan-tools]);
|
||||||
|
|
||||||
|
nix.settings = let
|
||||||
|
inherit agl;
|
||||||
|
in (lib.mkIf
|
||||||
|
(agl.anime-game-launcher.enable || agl.honkers-railway-laucher.enable || agl.honkers-launcher.enable || agl.wavey-launcher.enable || agl.sleepy-launcher.enable)
|
||||||
|
{
|
||||||
|
substituters = [ "https://ezkea.cachix.org" ];
|
||||||
|
trusted-public-keys = [ "ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" ];
|
||||||
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,3 +7,11 @@ Licensed by the Mozilla Public License v2
|
|||||||
## Synopsis
|
## Synopsis
|
||||||
|
|
||||||
This is the directory that holds shared configuration files amongst computers that I own. They are called by the root `flake.nix` file.
|
This is the directory that holds shared configuration files amongst computers that I own. They are called by the root `flake.nix` file.
|
||||||
|
|
||||||
|
Here's a quick synopsis of each file:
|
||||||
|
|
||||||
|
- core: Sane Nix options that I set for myself
|
||||||
|
- environment: Core packages and environment variables to be set and installed
|
||||||
|
- fonts: Fonts and icons that are to be installed
|
||||||
|
- overlays: Customized packages tailored to my needs
|
||||||
|
- users: Users to be set on my system
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
|
|
||||||
# Allow unfree packages
|
# Allow unfree packages
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
"mbedtls-2.28.10"
|
||||||
|
];
|
||||||
|
|
||||||
nix.package = pkgs.nix;
|
nix.package = pkgs.nix;
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
{
|
{ ... }: {
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
./core.nix
|
./core.nix
|
||||||
|
./environment.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
|
# ./overlays.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
22
modules/common/environment.nix
Normal file
22
modules/common/environment.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ lib, pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
vim
|
||||||
|
neovim
|
||||||
|
usbutils
|
||||||
|
coreutils
|
||||||
|
pciutils
|
||||||
|
patchelf
|
||||||
|
htop
|
||||||
|
] ++
|
||||||
|
lib.optionals pkgs.stdenv.isLinux (with pkgs; [
|
||||||
|
systemd
|
||||||
|
lshw
|
||||||
|
dmidecode
|
||||||
|
]) ++
|
||||||
|
lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
|
||||||
|
# nothing here, yet ;)
|
||||||
|
]);
|
||||||
|
|
||||||
|
environment.variables.EDITOR = "nvim";
|
||||||
|
}
|
||||||
@@ -6,10 +6,14 @@
|
|||||||
fonts.packages = with pkgs;
|
fonts.packages = with pkgs;
|
||||||
[
|
[
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
liberation_ttf
|
liberation_ttf
|
||||||
noto-fonts-cjk-sans
|
noto-fonts-cjk-sans
|
||||||
monaspace
|
monaspace
|
||||||
]
|
]
|
||||||
++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
adwaita-icon-theme
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
62
modules/common/linker.nix
Normal file
62
modules/common/linker.nix
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{ pkgs, ... }: {
|
||||||
|
programs.nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
libraries = with pkgs;
|
||||||
|
[
|
||||||
|
acl
|
||||||
|
attr
|
||||||
|
bzip2
|
||||||
|
dbus
|
||||||
|
expat
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
fuse3
|
||||||
|
icu
|
||||||
|
libnotify
|
||||||
|
libsodium
|
||||||
|
libssh
|
||||||
|
libunwind
|
||||||
|
libusb1
|
||||||
|
libuuid
|
||||||
|
nspr
|
||||||
|
nss
|
||||||
|
stdenv.cc.cc
|
||||||
|
util-linux
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
|
pipewire
|
||||||
|
cups
|
||||||
|
libxkbcommon
|
||||||
|
pango
|
||||||
|
mesa
|
||||||
|
libdrm
|
||||||
|
libglvnd
|
||||||
|
libpulseaudio
|
||||||
|
atk
|
||||||
|
cairo
|
||||||
|
alsa-lib
|
||||||
|
at-spi2-atk
|
||||||
|
at-spi2-core
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
libGL
|
||||||
|
libappindicator-gtk3
|
||||||
|
vulkan-loader
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libXScrnSaver
|
||||||
|
xorg.libXcomposite
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXdamage
|
||||||
|
xorg.libXext
|
||||||
|
xorg.libXfixes
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libXrandr
|
||||||
|
xorg.libXrender
|
||||||
|
xorg.libXtst
|
||||||
|
xorg.libxcb
|
||||||
|
xorg.libxkbfile
|
||||||
|
xorg.libxshmfence
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
128
modules/common/overlays.nix
Normal file
128
modules/common/overlays.nix
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
final: prev: let
|
||||||
|
rust_latest = prev.rust-bin.stable.latest.default;
|
||||||
|
golang_latest = prev.go-bin.latestStable;
|
||||||
|
buildGoModuleLatest = prev.buildGoModule.override {
|
||||||
|
go = golang_latest;
|
||||||
|
};
|
||||||
|
myRustPlatform = prev.makeRustPlatform {
|
||||||
|
cargo = rust_latest;
|
||||||
|
rustc = rust_latest;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
|
||||||
|
version = "0.61.0";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "jesseduffield";
|
||||||
|
repo = "lazygit";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-G7JulCK9WUVWbp1V7lYuM3fehCdn1cNAJHYjr3aKDvQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = null;
|
||||||
|
subPackages = [ "." ];
|
||||||
|
ldflags = [
|
||||||
|
"-X main.version=${version}"
|
||||||
|
"-X main.buildSource=nix"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
atuinLatest = (prev.atuin.override {
|
||||||
|
rustPlatform = myRustPlatform;
|
||||||
|
}).overrideAttrs (oldAttrs: rec {
|
||||||
|
version = "18.13.6";
|
||||||
|
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "atuinsh";
|
||||||
|
repo = "atuin";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-yAw+ty6FUnFbiRTdAe2QQHzj6uU24fZ/bEIXcHl/thg=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoDeps = myRustPlatform.fetchCargoVendor {
|
||||||
|
# name = "atuin-${version}-vendor.tar.gz";
|
||||||
|
inherit src;
|
||||||
|
hash = "sha256-jirVe0+N5+UHZWioj8AipUhawMBameqEJJpa8HPTnfw=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoBuildFeatures = [
|
||||||
|
"ai"
|
||||||
|
"client"
|
||||||
|
"clipboard"
|
||||||
|
"daemon"
|
||||||
|
"hex"
|
||||||
|
"sync"
|
||||||
|
];
|
||||||
|
cargoCheckFeatures = cargoBuildFeatures;
|
||||||
|
|
||||||
|
preCheck = (oldAttrs.preCheck or "") + ''
|
||||||
|
export HOME="$TMPDIR"
|
||||||
|
export XDG_CONFIG_HOME="$TMPDIR/.config"
|
||||||
|
export XDG_DATA_HOME="$TMPDIR/.local/share"
|
||||||
|
export XDG_STATE_HOME="$TMPDIR/.local/state"
|
||||||
|
mkdir -p "$XDG_CONFIG_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME"
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
# k9sLatest = prev.k9s.overrideAttrs (oldAttrs: rec {
|
||||||
|
# version = "0.30.16";
|
||||||
|
# src = prev.fetchFromGitHub {
|
||||||
|
# owner = "derailed";
|
||||||
|
# repo = "k9s";
|
||||||
|
# rev = "v${version}";
|
||||||
|
# hash = "sha256-1z6r6v3n1p6vd2q6n4pl5q3f7q3q7q1p7j5j1k3l4m5n6o7p8q9r";
|
||||||
|
# };
|
||||||
|
# ldflags = [
|
||||||
|
# "-X github.com/derailed/k9s/version.Version=${version}"
|
||||||
|
# "-X github.com/derailed/k9s/version.BuildSource=nix"
|
||||||
|
# ];
|
||||||
|
# });
|
||||||
|
|
||||||
|
ghDashLatest = (prev.gh-dash.override {
|
||||||
|
buildGoModule = buildGoModuleLatest;
|
||||||
|
}).overrideAttrs (oldAttrs: rec {
|
||||||
|
version = "4.23.2";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "dlvhdr";
|
||||||
|
repo = "gh-dash";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-C06LPVoE23ITJpMG0x75Djgeup+eb5uYwA8wL7xxvWU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-4AbeoH0l7eIS7d0yyJxM7+woC7Q/FCh0BOJj3d1zyX4=";
|
||||||
|
doCheck = false;
|
||||||
|
checkFlags = [
|
||||||
|
"-skip=TestFullOutput"
|
||||||
|
];
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
"-X github.com/dlvhdr/gh-dash/v4/cmd.Version=${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru = (oldAttrs.passthru or {}) // {
|
||||||
|
tests = {
|
||||||
|
version = oldAttrs.testers.testVersion { package = final.ghDashLatest; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
diffNavLatest = (prev.diffnav.override {
|
||||||
|
buildGoModule = buildGoModuleLatest;
|
||||||
|
}).overrideAttrs (_: rec {
|
||||||
|
version = "0.10.0";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "dlvhdr";
|
||||||
|
repo = "diffnav";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-6VtAQzZNLQrf8QYVXxLUgb3F6xguFDbwaE9kahPhbSE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-gmmckzR0D1oFuTG5TAb6gLMoNbcZl9EsjbFjhPfJqnQ=";
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,35 +1,38 @@
|
|||||||
|
{ lib, pkgs, userName, hostname, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
userName,
|
|
||||||
hostname,
|
|
||||||
...
|
|
||||||
} @ args: {
|
|
||||||
imports = [
|
|
||||||
../security/sudo.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hostName = hostname;
|
networking.hostName = hostname;
|
||||||
|
|
||||||
# Don't forget to set a password with ‘passwd’!
|
users.users."${userName}" = {
|
||||||
users.users."${userName}" = lib.mkMerge [
|
home = if pkgs.stdenv.isDarwin
|
||||||
{
|
then "/Users/${userName}"
|
||||||
home =
|
else "/home/${userName}";
|
||||||
if pkgs.stdenv.isDarwin
|
description = userName;
|
||||||
then "/Users/${userName}"
|
} // lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
else "/home/${userName}";
|
group = "${userName}";
|
||||||
description = userName;
|
isNormalUser = true;
|
||||||
}
|
};
|
||||||
|
|
||||||
(lib.mkIf (pkgs.stdenv.isLinux) {
|
|
||||||
group = "${userName}";
|
|
||||||
isNormalUser = true;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
security.sudo.needsPassword = false;
|
|
||||||
|
|
||||||
users.groups.wyatt = {};
|
users.groups.wyatt = {};
|
||||||
|
|
||||||
nix.settings.trusted-users = [userName];
|
nix.settings.trusted-users = [userName];
|
||||||
|
|
||||||
|
security = lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
|
sudo.extraRules = [
|
||||||
|
{
|
||||||
|
groups = [ "wheel" ];
|
||||||
|
commands = [
|
||||||
|
{
|
||||||
|
command = "ALL";
|
||||||
|
options = [ "NOPASSWD" "SETENV" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = lib.optionalAttrs pkgs.stdenv.isDarwin {
|
||||||
|
etc."sudoers.d/wheel-nopasswd".text = ''
|
||||||
|
%wheel ALL=(ALL:ALL) NOPASSWD: SETENV: ALL
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ in {
|
|||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
glxinfo
|
|
||||||
vulkan-tools
|
vulkan-tools
|
||||||
mesa-demos
|
mesa-demos
|
||||||
];
|
];
|
||||||
@@ -62,9 +61,9 @@ in {
|
|||||||
|
|
||||||
(mkIf (cfg.gpuVendor == "amd") {
|
(mkIf (cfg.gpuVendor == "amd") {
|
||||||
services.xserver.videoDrivers = ["amdgpu"];
|
services.xserver.videoDrivers = ["amdgpu"];
|
||||||
hardware.graphics.extraPackages = with pkgs; [
|
# hardware.graphics.extraPackages = with pkgs; [
|
||||||
amdvlk
|
# amdvlk
|
||||||
];
|
# ];
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
radeontop
|
radeontop
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ I like Final Fantasy, alright? Isn't everyone supposed to have a hobby?
|
|||||||
|
|
||||||
These are named after Final Fantasy VII characters.
|
These are named after Final Fantasy VII characters.
|
||||||
|
|
||||||
### Servers/Network Infrastructure
|
### Servers/Network Infrastructure (bare metal)
|
||||||
|
|
||||||
These are named after Final Fantasy summons.
|
These are named after Final Fantasy summons. There is some infrastructure missing here like my routers and switches that I also name after summons.
|
||||||
|
|
||||||
|
### Servers/Network Infrastructure (virtual machines)
|
||||||
|
|
||||||
|
These are named after Final Fantasy XIV Online characters (currently, these are named after the Scions of the Seventh Dawn).
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
userName,
|
userName,
|
||||||
|
aagl,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
flatpakPackages = [
|
flatpakPackages = [
|
||||||
@@ -18,15 +18,16 @@
|
|||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(import ../../apps/flatpak.nix {
|
(import ../../apps/flatpak.nix {
|
||||||
inherit lib pkgs flatpakPackages;
|
inherit lib pkgs flatpakPackages userName aagl;
|
||||||
})
|
})
|
||||||
../../apps/gaming.nix
|
../../apps/gaming.nix
|
||||||
|
../../apps/appimage.nix
|
||||||
../../graphics
|
../../graphics
|
||||||
../../pwrMgmt
|
../../pwrMgmt
|
||||||
../../networking/core.nix
|
../../networking/core.nix
|
||||||
../../security/sudo.nix
|
|
||||||
../../sound/pipewire.nix
|
../../sound/pipewire.nix
|
||||||
../../sound/shairport.nix
|
../../sound/shairport.nix
|
||||||
|
../../sound/focusrite.nix
|
||||||
../../virtualization/podman.nix
|
../../virtualization/podman.nix
|
||||||
../../virtualization/hardware.nix
|
../../virtualization/hardware.nix
|
||||||
];
|
];
|
||||||
@@ -35,9 +36,13 @@ in {
|
|||||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
# Custom kernel/boot stuff
|
# Custom kernel/boot stuff
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot = {
|
||||||
boot.loader.systemd-boot.enable = true;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Enable Bluetooth if present
|
# Enable Bluetooth if present
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
@@ -47,40 +52,23 @@ in {
|
|||||||
|
|
||||||
# Install packages to be installed system-wide
|
# Install packages to be installed system-wide
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
vim
|
|
||||||
neovim
|
|
||||||
git
|
|
||||||
wireguard-tools
|
wireguard-tools
|
||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
playerctl
|
playerctl
|
||||||
light
|
light
|
||||||
brightnessctl
|
brightnessctl
|
||||||
firefox
|
|
||||||
wttrbar
|
wttrbar
|
||||||
cliphist
|
cliphist
|
||||||
patchelf
|
xdg-desktop-portal-gtk
|
||||||
nix-ld
|
xdg-utils
|
||||||
|
flatpak-xdg-utils
|
||||||
|
desktop-file-utils
|
||||||
|
shared-mime-info
|
||||||
|
wl-clipboard
|
||||||
|
wl-clip-persist
|
||||||
];
|
];
|
||||||
|
|
||||||
# Set the EDITOR global environment variable to neovim
|
|
||||||
environment.variables.EDITOR = "nvim";
|
|
||||||
|
|
||||||
# Enable OpenSSH
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Enable keyring
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
# Enable GnuPG
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable SUID wrappers (some programs need them)
|
|
||||||
programs.mtr.enable = true;
|
|
||||||
|
|
||||||
# Enable Polkit
|
# Enable Polkit
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
|
|
||||||
@@ -101,8 +89,10 @@ in {
|
|||||||
localNetworkGameTransfers = true;
|
localNetworkGameTransfers = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
vkbasalt.enable = true;
|
||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
gamescope.enable = true;
|
gamescope.enable = true;
|
||||||
|
mangohud.enable = true;
|
||||||
lutris = {
|
lutris = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wine = {
|
wine = {
|
||||||
@@ -112,14 +102,12 @@ in {
|
|||||||
compatibility = {
|
compatibility = {
|
||||||
protonSupport = true;
|
protonSupport = true;
|
||||||
};
|
};
|
||||||
extraPackages = with pkgs; [
|
|
||||||
gamemode
|
|
||||||
mangohud
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ffxiv.enable = true;
|
ffxiv.enable = true;
|
||||||
minecraft.enable = true;
|
minecraft.enable = true;
|
||||||
|
aagl.anime-game-launcher.enable = true;
|
||||||
|
vintage-story.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Power management (see ../../pwrMgmt/default.nix)
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
@@ -148,28 +136,54 @@ in {
|
|||||||
networkManager.enable = true;
|
networkManager.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable dconf
|
programs = {
|
||||||
programs.dconf.enable = true;
|
# Enable GnuPG
|
||||||
|
gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable dconf
|
||||||
|
dconf.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Add username to groups "wheel" and "video" - more may be added here later
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"];
|
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network" "libvirtd"];
|
||||||
|
|
||||||
# Flatpak packages (see ../../apps/flatpak.nix)
|
services = {
|
||||||
services.flatpak.packages = flatpakPackages;
|
# Enable OpenSSH
|
||||||
|
openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Flatpak packages (see ../../apps/flatpak.nix)
|
||||||
|
flatpak.packages = flatpakPackages;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Focusrite Scarlett audio interface support (see ../../sound/focusrite.nix)
|
||||||
|
sound.hardware.focusrite.enable = true;
|
||||||
|
|
||||||
|
# AppImage support
|
||||||
|
appimage.enable = true;
|
||||||
|
|
||||||
# XDG stuff
|
# XDG stuff
|
||||||
xdg = {
|
xdg = {
|
||||||
portal = {
|
portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wlr.enable = true;
|
|
||||||
config = {
|
config = {
|
||||||
|
sway = {
|
||||||
|
default = ["wlr" "gtk"];
|
||||||
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
};
|
||||||
common = {
|
common = {
|
||||||
default = [
|
default = ["gtk"];
|
||||||
"wlr"
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
xdgOpenUsePortal = true;
|
|
||||||
extraPortals = with pkgs; [
|
extraPortals = with pkgs; [
|
||||||
xdg-desktop-portal-wlr
|
xdg-desktop-portal-wlr
|
||||||
xdg-desktop-portal-gtk
|
xdg-desktop-portal-gtk
|
||||||
@@ -177,10 +191,23 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# security.sudo.needsPassword = false;
|
# sched_ext userspace CPU scheduling stuff - idk
|
||||||
|
services.scx = {
|
||||||
|
enable = true;
|
||||||
|
scheduler = "scx_bpfland";
|
||||||
|
};
|
||||||
|
|
||||||
# Enable microcode updates
|
programs.obs-studio = {
|
||||||
services.ucodenix.enable = true;
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
wlrobs
|
||||||
|
obs-backgroundremoval
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
obs-vaapi #optional AMD hardware acceleration
|
||||||
|
obs-gstreamer
|
||||||
|
obs-vkcapture
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
../../common/linker.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,24 +12,24 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "ahci" "usb_storage" "usbhid" "sd_mod"];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-label/COMPUTER";
|
device = "/dev/disk/by-uuid/f8f39aae-61d2-437d-a8e1-01066bbb3c5c";
|
||||||
fsType = "xfs";
|
fsType = "xfs";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-label/BOOT";
|
device = "/dev/disk/by-uuid/B72F-087F";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = ["fmask=0022" "dmask=0022"];
|
options = ["fmask=0022" "dmask=0022"];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{device = "/dev/disk/by-label/SWAP";}
|
{device = "/dev/disk/by-uuid/6d6bcc02-20a9-4ae8-9c1e-5124fb2b2634";}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
|||||||
121
modules/machine/thancred/configuration.nix
Normal file
121
modules/machine/thancred/configuration.nix
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
vintage-story,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
../../networking/core.nix
|
||||||
|
../../virtualization/podman.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
tcpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
udpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networkManager.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
vintage-story.packages.${pkgs.system}.default
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.vintagestory-server = {
|
||||||
|
description = "Vintage Story Server";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = userName;
|
||||||
|
WorkingDirectory = "/home/${userName}";
|
||||||
|
ExecStart = "${vintage-story.packages.${pkgs.system}.default}/bin/vintagestory-server";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users = {
|
||||||
|
groups.hazel = {};
|
||||||
|
users = {
|
||||||
|
${userName} = {
|
||||||
|
extraGroups = [ "wheel" "network" ];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"hazel" = {
|
||||||
|
home = "/home/hazel";
|
||||||
|
group = "hazel";
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
description = "hazel";
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZnyiQx+k1ygX8E1lsUCB6aTdMc+OKzlZ4admlzknc5ulj0YrtUyqhbNhkNd6pP0QDBFMnXO/rzUvHp4TAyZXKFfpcBCa4zhK97ufymAfvzAjM4vRBqRNcr2n+2iRzxtolbklfjs3ocBQVxXW+pRT5wWxTgK2fcmP2xviDVldr7qte37x5YkQb5SAhYNH8tqJRnuGPe+Q0A3oN4HyHZFnrMq/HlbL5yg/0VKPTtF/IgHf+2dDz5OQQpBx3/N9u/QLwuIm9lkyOG03s0TGmE7up/i0jX2vIqp2BbGSnwdQEL/eSVZx73qQB/J62VFafg13P5yQWDJ33WSoiwhac6bg26HPmPOnCJp5R3c+7jM8N1F1ZbtsKicHSVsRg1RQSree4lchPy7FOPkCuUrB7LNE71mbpOzZNR767S6UAPaXxRw6QNYGBaDqQBwhlU8ZDF5F7EW6ahSUMOI6ECyoibzIMb56xs9osuNeUhB/BcL5sHSFpJjIbdcDLNkEKggrBl6s="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.tailscale;
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
6
modules/machine/thancred/default.nix
Normal file
6
modules/machine/thancred/default.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
32
modules/machine/thancred/hardware-configuration.nix
Normal file
32
modules/machine/thancred/hardware-configuration.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/e2e621c1-0090-472a-99d9-61c6a87bd068";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/663E-15C0";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/60104b1a-4285-4dd1-be5e-3c3dee24515a"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
@@ -6,4 +6,4 @@ Licensed by the Mozilla Public License v2
|
|||||||
|
|
||||||
## Synopsis
|
## Synopsis
|
||||||
|
|
||||||
This directory is currently empty so, currently, there's nothing to see! However, this is where the machine-specific configuration files for hostname `valefor` live, my apartment appliance server. These files get called by the root `flake.nix` file.
|
This is where the machine-specific configuration files for hostname `valefor` live, my apartment appliance server. These files get called by the root `flake.nix` file.
|
||||||
@@ -27,18 +27,6 @@
|
|||||||
# Set your timezone
|
# Set your timezone
|
||||||
time.timeZone = "America/Detroit";
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
# Install packages to be installed system-wide
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
vim
|
|
||||||
neovim
|
|
||||||
git
|
|
||||||
patchelf
|
|
||||||
nix-ld
|
|
||||||
];
|
|
||||||
|
|
||||||
# Set the EDITOR global environment variable to neovim
|
|
||||||
environment.variables.EDITOR = "nvim";
|
|
||||||
|
|
||||||
# Enable OpenSSH
|
# Enable OpenSSH
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
|||||||
271
modules/machine/yshtola/configuration.nix
Normal file
271
modules/machine/yshtola/configuration.nix
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
# INFO: set these to your liking
|
||||||
|
matrixFqdn = "chat.wyattjmiller.com";
|
||||||
|
rtcFqdn = "rtc.wyattjmiller.com";
|
||||||
|
|
||||||
|
supportEmail = "wyatt@wyattjmiller.com";
|
||||||
|
livekitKeyFile = "/var/lib/livekit/livekit.key";
|
||||||
|
matrixRegistrationTokenFile = "/var/lib/matrix.key";
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
download-buffer-size = 134217728; # 128 MiB in bytes
|
||||||
|
};
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PermitRootLogin = "no";
|
||||||
|
settings.PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Firewall settings (fallback, upstream way of doing things)
|
||||||
|
networking.firewall = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
8448
|
||||||
|
3478
|
||||||
|
5349
|
||||||
|
7880
|
||||||
|
7881
|
||||||
|
8080
|
||||||
|
8081
|
||||||
|
];
|
||||||
|
|
||||||
|
allowedUDPPorts = [
|
||||||
|
3478
|
||||||
|
7881
|
||||||
|
8448
|
||||||
|
];
|
||||||
|
|
||||||
|
allowedUDPPortRanges =[
|
||||||
|
# TURN UDP relays
|
||||||
|
{
|
||||||
|
from = 49000;
|
||||||
|
to = 50000;
|
||||||
|
}
|
||||||
|
#
|
||||||
|
{
|
||||||
|
from = 50100;
|
||||||
|
to = 50200;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users.users.${userName} = {
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
extraGroups = ["wheel" "video" "network"];
|
||||||
|
};
|
||||||
|
|
||||||
|
# fail2ban
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Matrix server
|
||||||
|
services.matrix-tuwunel = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.matrix-tuwunel;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
server_name = matrixFqdn;
|
||||||
|
allow_encryption = true;
|
||||||
|
allow_federation = true;
|
||||||
|
allow_registration = true;
|
||||||
|
registration_token = matrixRegistrationTokenFile;
|
||||||
|
allow_unstable_room_versions = false;
|
||||||
|
allow_experimental_room_versions = false;
|
||||||
|
zstd_compression = true;
|
||||||
|
new_user_displayname_suffix = "✨";
|
||||||
|
max_request_size = 1048575600; # 100MB in bytes, for file uploads
|
||||||
|
database_backup_path = "/var/lib/tuwunel/database_backups";
|
||||||
|
database_backups_to_keep = 2;
|
||||||
|
|
||||||
|
address = [
|
||||||
|
"127.0.0.1"
|
||||||
|
"::1"
|
||||||
|
];
|
||||||
|
port = [ 8008 ];
|
||||||
|
|
||||||
|
well_known = {
|
||||||
|
client = "https://${matrixFqdn}";
|
||||||
|
server = "${matrixFqdn}:443";
|
||||||
|
support_email = supportEmail;
|
||||||
|
support_mxid = "@wymiller:${matrixFqdn}";
|
||||||
|
|
||||||
|
rtc_transports = [{
|
||||||
|
type = "livekit";
|
||||||
|
livekit_service_url = "https://${rtcFqdn}";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# LiveKit (Matrix RTC)
|
||||||
|
services.livekit = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.livekit;
|
||||||
|
openFirewall = true;
|
||||||
|
keyFile = livekitKeyFile;
|
||||||
|
settings = {
|
||||||
|
port = 7880;
|
||||||
|
room.auto_create = true;
|
||||||
|
rtc = {
|
||||||
|
use_external_ip = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Reverse proxy
|
||||||
|
services.caddy = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.caddy;
|
||||||
|
virtualHosts = {
|
||||||
|
"${matrixFqdn}" = {
|
||||||
|
extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy localhost:8008
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"${matrixFqdn}:8448" = {
|
||||||
|
extraConfig = ''
|
||||||
|
encode zstd gzip
|
||||||
|
reverse_proxy localhost:8008
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"${rtcFqdn}" = {
|
||||||
|
extraConfig = ''
|
||||||
|
@jwt_service {
|
||||||
|
path /sfu/get* /healthz*
|
||||||
|
}
|
||||||
|
|
||||||
|
handle @jwt_service {
|
||||||
|
reverse_proxy localhost:8080
|
||||||
|
}
|
||||||
|
|
||||||
|
handle {
|
||||||
|
reverse_proxy localhost:7880 {
|
||||||
|
header_up Connection "upgrade"
|
||||||
|
header_up Upgrade {http.request.header.Upgrade}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# LiveKit JWT service
|
||||||
|
services.lk-jwt-service = {
|
||||||
|
enable = true;
|
||||||
|
port = 8080;
|
||||||
|
livekitUrl = "wss://rtc.wyattjmiller.com";
|
||||||
|
keyFile = livekitKeyFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Generate LiveKit key if it doesn't exist
|
||||||
|
systemd.services = {
|
||||||
|
matrix-registration-token-gen = {
|
||||||
|
before = [ "tuwunel.service" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = with pkgs; [ coreutils openssl ];
|
||||||
|
script = ''
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ -f "${matrixRegistrationTokenFile}" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -d -m 0700 "$(dirname "${matrixRegistrationTokenFile}")"
|
||||||
|
|
||||||
|
TOKEN="$(openssl rand -hex 32)"
|
||||||
|
|
||||||
|
umask 077
|
||||||
|
printf '%s\n' "$TOKEN" > "${matrixRegistrationTokenFile}"
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
livekit-key-gen = {
|
||||||
|
before = [ "lk-jwt-service.service" "livekit.service" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = with pkgs; [ coreutils openssl ];
|
||||||
|
script = ''
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ -f "${livekitKeyFile}" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -d -m 0700 "$(dirname "${livekitKeyFile}")"
|
||||||
|
|
||||||
|
API_KEY="$(openssl rand -hex 8)"
|
||||||
|
API_SECRET="$(openssl rand -hex 32)"
|
||||||
|
|
||||||
|
umask 077
|
||||||
|
printf '%s: %s\n' "$API_KEY" "$API_SECRET" > "${livekitKeyFile}"
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "25.11";
|
||||||
|
}
|
||||||
6
modules/machine/yshtola/default.nix
Normal file
6
modules/machine/yshtola/default.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
35
modules/machine/yshtola/hardware-configuration.nix
Normal file
35
modules/machine/yshtola/hardware-configuration.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "virtio_pci" "virtio_scsi" "ahci" "sd_mod" ];
|
||||||
|
boot.kernelParams = [ "console=ttyS0,19200n8" ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
boot.loader.grub.extraConfig = ''
|
||||||
|
serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1;
|
||||||
|
terminal_input serial;
|
||||||
|
terminal_output serial;
|
||||||
|
'';
|
||||||
|
boot.loader.grub.forceInstall = true;
|
||||||
|
# boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.device = "nodev";
|
||||||
|
boot.loader.timeout = 10;
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/sda";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/sdb"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
# FIXME: this file is broken but i don't know what is wrong with it
|
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
@@ -6,7 +5,7 @@
|
|||||||
}:
|
}:
|
||||||
with lib; {
|
with lib; {
|
||||||
options = {
|
options = {
|
||||||
security.sudo = {
|
security.sudoers = {
|
||||||
needsPassword = mkOption {
|
needsPassword = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
|||||||
33
modules/sound/focusrite.nix
Normal file
33
modules/sound/focusrite.nix
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Must be paired with the pipewire Nix module, this does nothing but install packages
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.sound.hardware.focusrite;
|
||||||
|
in {
|
||||||
|
options.sound.hardware.focusrite = {
|
||||||
|
enable = mkEnableOption "Focusrite audio interface support";
|
||||||
|
guiSupport = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Enable GUI support for Focusrite Scarlett audio interface (installs alsa-scarlett-gui)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable (mkMerge [
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs;
|
||||||
|
[
|
||||||
|
scarlett2
|
||||||
|
alsa-scarlett-gui
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
if cfg.guiSupport
|
||||||
|
then [pkgs.alsa-scarlett-gui]
|
||||||
|
else []
|
||||||
|
);
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}
|
||||||
@@ -1,6 +1,11 @@
|
|||||||
{...}: {
|
# TODO: refactor into module
|
||||||
|
{ pkgs, ...}: {
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
helvum
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
{pkgs, ...}: {
|
{ lib, pkgs, userName, ...}: {
|
||||||
services.shairport-sync = {
|
services.shairport-sync = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
openFirewall = pkgs.stdenv.isLinux;
|
openFirewall = pkgs.stdenv.isLinux;
|
||||||
arguments = "-v -o pw";
|
# arguments = "-v -o pa";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.shairport-sync = {
|
||||||
|
serviceConfig = {
|
||||||
|
User = lib.mkForce "${userName}";
|
||||||
|
};
|
||||||
|
environment = {
|
||||||
|
XDG_RUNTIME_DIR = "/run/user/1000";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{...}: {
|
{ pkgs, ... }: {
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
programs.virt-manager.enable = true;
|
programs.virt-manager.enable = true;
|
||||||
|
services.qemuGuest.enable = true;
|
||||||
|
services.spice-vdagentd.enable = true;
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
qemu
|
||||||
|
quickemu
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user