Compare commits
367 Commits
elpaca-mig
...
100b8e40f9
| Author | SHA1 | Date | |
|---|---|---|---|
| 100b8e40f9 | |||
| ea4a577076 | |||
| 7d15907ee3 | |||
| 9c5dab9ecc | |||
| 8b9c71b77e | |||
| b3c3a7249c | |||
| 82f3a0eda3 | |||
| 7d603e3d4f | |||
| 612c0ef78d | |||
| db7e115542 | |||
| 7c25d8d578 | |||
| 37070171c2 | |||
| 5dc82b90e2 | |||
| 2cc0a54e07 | |||
| f9d7375f7b | |||
| 4d714d4416 | |||
| 96f35ab9d6 | |||
| f092bc782e | |||
| e84d333ea6 | |||
| 05ab80c13f | |||
| 8a972a72f3 | |||
| 01081d25c7 | |||
| 25a1afa317 | |||
| 17efe79dfa | |||
| 90f7a5dc90 | |||
| 6dc320ff1c | |||
| ff4c9c8e9a | |||
| 2bcd5dc9bd | |||
| e130df3c70 | |||
| 307710e7a5 | |||
| 4349671e14 | |||
| 33e4758389 | |||
| 0004a1d715 | |||
| abfc369407 | |||
| 9d61a15337 | |||
| 733beb094b | |||
| 4848a20a8d | |||
| 24346c9e88 | |||
| bb3ba5d702 | |||
| 77d0a8504e | |||
| 6ec03f7821 | |||
| d4db3b81a8 | |||
| 69f982526d | |||
| c952702742 | |||
| 5963113964 | |||
| 4cc07c65ae | |||
| 5c2b810a4f | |||
| 33ca6d490a | |||
| 2acc6d25c7 | |||
| a74e5ab4b6 | |||
| 39af365839 | |||
| 973c5dc134 | |||
| a244ee2223 | |||
| 1eaf5166d9 | |||
| a081f743a5 | |||
| aa19cc3204 | |||
| 8d92c45ffe | |||
| 96c74ac95e | |||
| b5ffc833fb | |||
| e18c41cf90 | |||
| 291e77b4b4 | |||
| 5cbf3ac32e | |||
| e7d06c8b91 | |||
| 07a367dc67 | |||
| a0e6ecd222 | |||
| 331ce9eec5 | |||
| 3ed35fd553 | |||
| 2df1d71367 | |||
| 5341a75a08 | |||
| d33fc584d0 | |||
| 375a7ed910 | |||
| 81e88f6610 | |||
| 3da6262856 | |||
| f8cb82fd60 | |||
| 3a3dbad845 | |||
| 017d47ca41 | |||
| 78046685f9 | |||
| 2046f360a6 | |||
| e70146fd1d | |||
| ea9d4145d4 | |||
| d1814a3072 | |||
| 08db2c3a75 | |||
| 2c384fb003 | |||
| 8ae53c14bd | |||
| b189e1fa3e | |||
| 107d3cfdb3 | |||
| e31f684f7b | |||
| ab87bb325f | |||
| fd9ceb1dda | |||
| 6fe2f72025 | |||
| 94e3c08f88 | |||
| 7138b67f59 | |||
| 1958d2ebf7 | |||
| a744a8fc2d | |||
| 30d50d72ec | |||
| a938447b8a | |||
| 9408eeff52 | |||
| 947eaad2f1 | |||
| eb6f67559e | |||
| 166c3a24ea | |||
| 3f3de17097 | |||
| d7ceec572f | |||
| 50bb8561d8 | |||
| 6ece92b75d | |||
| accb330589 | |||
| 9d8777e85c | |||
| 6b7a428145 | |||
| 6278da83fa | |||
| bf5009fdd4 | |||
| 4f573be120 | |||
| aba47c6ce9 | |||
| 14d24534f9 | |||
| e1752368b4 | |||
| ce9c752cbe | |||
| 0b1591642b | |||
| 998099ae10 | |||
| d01659c1b0 | |||
| 251f03838b | |||
| 2a303c445c | |||
| 7515a871a7 | |||
| 1ead310c05 | |||
| 76253e34ef | |||
| bbb0017bee | |||
| 718cf756b9 | |||
| 05e135d61d | |||
| 9a66f3fc5a | |||
| 0d3b15c072 | |||
| ebc7c2ede5 | |||
| 8035ae008b | |||
| a6d9bdb7a9 | |||
| 4f4168768d | |||
| eb61989a59 | |||
| 3dcb49fc1b | |||
| 442ed2aca4 | |||
| 5df6c5aecf | |||
| 884a8b31ae | |||
| fef852f4bf | |||
| 8453cc92b6 | |||
| e273e34662 | |||
| b681e4b5b4 | |||
| 24c5bb3ec6 | |||
| 70c5c011f8 | |||
| fcae542755 | |||
| 0e20737cb3 | |||
| 58ea719bed | |||
| 15ffb7355e | |||
| ca1b22ba98 | |||
| d2add34317 | |||
| 5da32bceea | |||
| 92c2d613af | |||
| c1a2c404e9 | |||
| 5b3915ad27 | |||
| 2d4c1df31f | |||
| 0f1895c5d2 | |||
| 990b7f0180 | |||
| a895c2471d | |||
| 8fd220c919 | |||
| 626d719e16 | |||
| 7873981341 | |||
| fca6d487f0 | |||
| e297235517 | |||
| 29ab9150f8 | |||
| 953d57be15 | |||
| 7b63af8aae | |||
| 697d216397 | |||
| 794f3c1eb8 | |||
| 4a8e077b5d | |||
| 7d76728651 | |||
| 957b94e1cc | |||
| 2445e6e7d6 | |||
| f5ddd2e4c5 | |||
| f071068e6d | |||
| c8ffe51c66 | |||
| e12d261a9f | |||
| 2557a2b538 | |||
| ea3cfe9604 | |||
| 8f3802a010 | |||
| 4d42e5c89d | |||
| b8872e957f | |||
| fe8b6caf3c | |||
| 3f0311b127 | |||
| 0b56680911 | |||
| 9fbdead63f | |||
| 5db03a0695 | |||
| c697b5684a | |||
| 95bd8dd280 | |||
| aa9d7b2d88 | |||
| a1b5f3838d | |||
| fe710dac80 | |||
| 18aee952be | |||
| 728e5ee02f | |||
| cb9f478cbc | |||
| 6654470109 | |||
| 4913622bad | |||
| ed9bed85d9 | |||
| 8881b704ca | |||
| 89bd7e9a4c | |||
| 354b54b772 | |||
| 7e445e7fd3 | |||
| a0f75a0f4d | |||
| 04b7672f0e | |||
| b643092237 | |||
| f4b753d750 | |||
| 0d14cc41a8 | |||
| 3904b09b8c | |||
| 36e43c3f27 | |||
| e178958e4f | |||
| e89501f139 | |||
| 7f3fe70cac | |||
| 8acb093f34 | |||
| d2ff285109 | |||
| 80c6ec0080 | |||
| af706c8f40 | |||
| 01d2d1d31b | |||
| df045e44b5 | |||
| 1c8def8999 | |||
| f40788cd15 | |||
| f077cc647b | |||
| 6428ec9f2a | |||
| a97cd99394 | |||
| 27258da627 | |||
| ce962bad1a | |||
| 1b29407793 | |||
| 81f9cb6cf9 | |||
| 37d1109bc3 | |||
| 5cb32ff923 | |||
| f972642cfa | |||
| 3e774e37f9 | |||
| 574885f327 | |||
| 46899bf76a | |||
| f7af858e16 | |||
| 5e3452c091 | |||
| bb87510a0c | |||
| 4d554f50c1 | |||
| 4d72cbc1b4 | |||
| 88d85f11b2 | |||
| be7448b710 | |||
| b742fc78cb | |||
| b703588b79 | |||
| 8e4d8ac662 | |||
| 27888a7a3e | |||
| 0d6624bc09 | |||
| 50c28d68c2 | |||
| 7e301c1452 | |||
| ad73cfebde | |||
| 2ba7a7f805 | |||
| 867ebad8ea | |||
| ebf91de2d8 | |||
| e6832e3c1e | |||
| 15499b292a | |||
| 1af9a5497b | |||
| a7b24c0fa4 | |||
| 661a6b6c2f | |||
| d4faa061dc | |||
| a2bbd4e04e | |||
| 7e62881c4d | |||
| 9f69f16471 | |||
| 5525fda4bf | |||
| ee7c0ed11c | |||
| e2875e1741 | |||
| 57e13b8319 | |||
| 1d31f870c5 | |||
| 9f3f835253 | |||
| 066902e37a | |||
| d790bc9e25 | |||
| 1ea8333994 | |||
| e464d8fec5 | |||
| 14a32c151c | |||
| bfdf5f221e | |||
| ae29832dbc | |||
| ae6ce6b19c | |||
| 8e1abde359 | |||
| c25cd05b15 | |||
| 5deba06fb0 | |||
| 7dcc785da6 | |||
| 5eb3654d0c | |||
|
|
cbcf03c784 | ||
|
|
a9d5ee5eb0 | ||
|
|
8402c6f1d2 | ||
|
|
da8b6b3b75 | ||
|
|
526bf6e2a9 | ||
|
|
04870cd682 | ||
|
|
46108ab249 | ||
|
|
a8e23460f9 | ||
|
|
a88018fe47 | ||
|
|
5757681ce0 | ||
|
|
6c393b3837 | ||
|
|
618f927cb9 | ||
|
|
bb259bf358 | ||
|
|
3f7de563db | ||
|
|
6ae5f4c503 | ||
|
|
e6c3d55fc8 | ||
|
|
36331ea60c | ||
|
|
6b18d0accf | ||
|
|
9a764fc7c8 | ||
|
|
9100167e4d | ||
|
|
e0e98bc237 | ||
|
|
4c989fcda3 | ||
|
|
35f8c10e7c | ||
|
|
ac49823b4c | ||
| daaead9c1e | |||
|
|
c5c86145b1 | ||
|
|
32755e1411 | ||
|
|
de27a133e7 | ||
|
|
f89155e4d2 | ||
|
|
f345cf8f18 | ||
|
|
4cb9c006d7 | ||
| 1dd54ba638 | |||
| 517c2f333e | |||
| d850ba999d | |||
| dd9f5ccf88 | |||
| 59da59c74f | |||
| 1f36c4942b | |||
| eaa46e7034 | |||
| f00d9bdb12 | |||
| 1003c33dee | |||
| a493a530be | |||
| 01361b7217 | |||
| cdd8ed60e9 | |||
| fd033ba72c | |||
| 9aae7c0c16 | |||
| aa9be16abf | |||
| 342fc4f4c6 | |||
| d62d538562 | |||
| ffb55c157b | |||
| cd7698bebf | |||
| 700cccfd60 | |||
| 814966b172 | |||
| c4a9a60112 | |||
| 9b9da29b7a | |||
| 6cced9dad4 | |||
| 50542d9b24 | |||
| 701e8d7d82 | |||
| 10b8f61d27 | |||
| 58432fe908 | |||
| 79908fae93 | |||
| b597b6e239 | |||
| 9e8cd58d7f | |||
| 6643428fca | |||
| 10a732ad75 | |||
| e6a75734fb | |||
| eb22968ab4 | |||
| b12f84c007 | |||
| 54645ba497 | |||
| 6cb9597df7 | |||
| 51e6116100 | |||
| 4fd99eae63 | |||
| b8f2452d11 | |||
| ddb4a257cf | |||
| 3a6c9fbb49 | |||
| f3b8a769c6 | |||
| 4a27118f24 | |||
| 7ddc215dcc | |||
| 3559edb3a5 | |||
| 0e611dbb57 | |||
| 3a71c8600c | |||
| 280debd530 | |||
| e34248ede3 | |||
| ea3ba8e2d6 | |||
| 69411c14f6 | |||
| f560d87aa3 | |||
| e188936253 | |||
| f91ff8c987 | |||
| f4b87c40eb | |||
| 26fb168ec5 | |||
| 16e6b980ba | |||
| 204569fff1 |
@@ -1,8 +0,0 @@
|
|||||||
language: generic
|
|
||||||
|
|
||||||
script: bash ./gen-gh-pages/deploy.sh
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- ENCRYPTION_LABEL: "73e6c870aa87"
|
|
||||||
- COMMIT_AUTHOR_EMAIL: "IvanMalison@gmail.com"
|
|
||||||
- COMMIT_AUTHOR_NAME: "Ivan Malison"
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import = ["/home/imalison/.config/alacritty/themes/themes/dracula.toml"]
|
[general]
|
||||||
|
import = ["~/.config/alacritty/themes/themes/dracula.toml"]
|
||||||
|
|
||||||
[font]
|
[font]
|
||||||
size = 8
|
size = 8
|
||||||
|
|||||||
294
dotfiles/config/hypr/hyprland.conf
Normal file
294
dotfiles/config/hypr/hyprland.conf
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
# Hyprland Configuration
|
||||||
|
# Based on XMonad configuration from xmonad.hs
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
monitor=,preferred,auto,auto
|
||||||
|
|
||||||
|
# Source a file (multi-file configs)
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
|
||||||
|
# Set programs that you use
|
||||||
|
$terminal = alacritty
|
||||||
|
$fileManager = dolphin
|
||||||
|
$menu = rofi -show drun -show-icons
|
||||||
|
$runMenu = rofi -show run
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = QT_QPA_PLATFORMTHEME,qt5ct
|
||||||
|
env = GDK_DPI_SCALE,1.25
|
||||||
|
env = QT_FONT_DPI,120
|
||||||
|
|
||||||
|
# Input configuration
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = no
|
||||||
|
}
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
# General settings
|
||||||
|
general {
|
||||||
|
gaps_in = 5
|
||||||
|
gaps_out = 20
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgba(edb443ee) rgba(33ccffee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
layout = master
|
||||||
|
|
||||||
|
allow_tearing = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Decoration
|
||||||
|
decoration {
|
||||||
|
rounding = 10
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Animations
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
|
animation = windows, 1, 7, myBezier
|
||||||
|
animation = windowsOut, 1, 7, default, popin 80%
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = borderangle, 1, 8, default
|
||||||
|
animation = fade, 1, 7, default
|
||||||
|
animation = workspaces, 1, 6, default
|
||||||
|
}
|
||||||
|
|
||||||
|
# Layout configuration
|
||||||
|
dwindle {
|
||||||
|
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = yes # you probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
mfact = 0.25
|
||||||
|
orientation = left
|
||||||
|
}
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = 0
|
||||||
|
disable_hyprland_logo = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Scratchpad-like windows
|
||||||
|
windowrule = float, title:^(htop)$
|
||||||
|
windowrule = size 80% 80%, title:^(htop)$
|
||||||
|
|
||||||
|
# Chrome specific rules
|
||||||
|
windowrule = float, class:^(chrome)$,title:^(.*@gmail.com.*Gmail.*)$
|
||||||
|
windowrule = float, class:^(chrome)$,title:^(Messages)$
|
||||||
|
windowrule = size 90% 90%, class:^(chrome)$,title:^(.*@gmail.com.*Gmail.*)$
|
||||||
|
windowrule = size 90% 90%, class:^(chrome)$,title:^(Messages)$
|
||||||
|
|
||||||
|
# ===== KEY BINDINGS =====
|
||||||
|
# Based on XMonad configuration
|
||||||
|
|
||||||
|
# Main modifier key (Super/Windows key equivalent to mod4Mask)
|
||||||
|
$mainMod = SUPER
|
||||||
|
|
||||||
|
# Mod+Alt combination (equivalent to modalt in XMonad)
|
||||||
|
$modAlt = SUPER_ALT
|
||||||
|
|
||||||
|
# Hyper key (equivalent to mod3Mask in XMonad)
|
||||||
|
$hyper = ALT_R
|
||||||
|
|
||||||
|
# Program launching
|
||||||
|
bind = $mainMod, P, exec, $menu
|
||||||
|
bind = $mainMod SHIFT, P, exec, $runMenu
|
||||||
|
bind = $mainMod SHIFT, Return, exec, $terminal
|
||||||
|
bind = $mainMod, Q, killactive,
|
||||||
|
bind = $mainMod SHIFT, C, killactive,
|
||||||
|
bind = $mainMod SHIFT, Q, exit,
|
||||||
|
bind = $mainMod, E, exec, emacsclient -c
|
||||||
|
bind = $mainMod, V, exec, xclip -o | xdotool type --file -
|
||||||
|
|
||||||
|
# Chrome/Browser launching (equivalent to bindBringAndRaise)
|
||||||
|
bind = $modAlt, C, exec, google-chrome-stable
|
||||||
|
|
||||||
|
# Scratchpad equivalents (toggle special workspaces)
|
||||||
|
bind = $modAlt, E, togglespecialworkspace, element
|
||||||
|
bind = $modAlt, G, togglespecialworkspace, gmail
|
||||||
|
bind = $modAlt, H, togglespecialworkspace, htop
|
||||||
|
bind = $modAlt, M, togglespecialworkspace, messages
|
||||||
|
bind = $modAlt, K, togglespecialworkspace, slack
|
||||||
|
bind = $modAlt, S, togglespecialworkspace, spotify
|
||||||
|
bind = $modAlt, T, togglespecialworkspace, transmission
|
||||||
|
bind = $modAlt, V, togglespecialworkspace, volume
|
||||||
|
|
||||||
|
# Move windows to special workspaces
|
||||||
|
bind = $modAlt SHIFT, E, movetoworkspace, special:element
|
||||||
|
bind = $modAlt SHIFT, G, movetoworkspace, special:gmail
|
||||||
|
bind = $modAlt SHIFT, H, movetoworkspace, special:htop
|
||||||
|
bind = $modAlt SHIFT, M, movetoworkspace, special:messages
|
||||||
|
bind = $modAlt SHIFT, K, movetoworkspace, special:slack
|
||||||
|
bind = $modAlt SHIFT, S, movetoworkspace, special:spotify
|
||||||
|
bind = $modAlt SHIFT, T, movetoworkspace, special:transmission
|
||||||
|
bind = $modAlt SHIFT, V, movetoworkspace, special:volume
|
||||||
|
|
||||||
|
# Directional navigation (WASD keys as in XMonad)
|
||||||
|
bind = $mainMod, W, movefocus, u
|
||||||
|
bind = $mainMod, S, movefocus, d
|
||||||
|
bind = $mainMod, A, movefocus, l
|
||||||
|
bind = $mainMod, D, movefocus, r
|
||||||
|
|
||||||
|
# Move windows directionally
|
||||||
|
bind = $mainMod SHIFT, W, movewindow, u
|
||||||
|
bind = $mainMod SHIFT, S, movewindow, d
|
||||||
|
bind = $mainMod SHIFT, A, movewindow, l
|
||||||
|
bind = $mainMod SHIFT, D, movewindow, r
|
||||||
|
|
||||||
|
# Resize windows
|
||||||
|
bind = $mainMod CTRL, W, resizeactive, 0 -50
|
||||||
|
bind = $mainMod CTRL, S, resizeactive, 0 50
|
||||||
|
bind = $mainMod CTRL, A, resizeactive, -50 0
|
||||||
|
bind = $mainMod CTRL, D, resizeactive, 50 0
|
||||||
|
|
||||||
|
# Layout control
|
||||||
|
bind = $mainMod, Space, exec, hyprctl dispatch layoutmsg cyclenext
|
||||||
|
bind = $mainMod CTRL, Space, fullscreen, 0
|
||||||
|
bind = $mainMod, slash, exec, hyprctl dispatch layoutmsg orientationcycle left top
|
||||||
|
bind = $mainMod, F, fullscreen, 0
|
||||||
|
bind = $mainMod SHIFT, F, fullscreen, 1
|
||||||
|
bind = $mainMod, T, togglefloating,
|
||||||
|
bind = $mainMod SHIFT, Y, pseudo, # dwindle pseudotile
|
||||||
|
bind = $mainMod, J, togglesplit, # dwindle split direction
|
||||||
|
bind = $mainMod, comma, exec, hyprctl dispatch splitratio -0.05
|
||||||
|
bind = $mainMod, period, exec, hyprctl dispatch splitratio +0.05
|
||||||
|
bind = $mainMod, N, exec, hyprctl dispatch layoutmsg addmaster
|
||||||
|
bind = $mainMod SHIFT, N, exec, hyprctl dispatch layoutmsg removemaster
|
||||||
|
|
||||||
|
# Focus manipulation
|
||||||
|
bind = $mainMod, Tab, exec, hyprctl dispatch focuswindow "class:$(hyprctl activewindow -j | jq -r '.class')"
|
||||||
|
bind = $mainMod, M, exec, hyprctl dispatch focuswindow "class:master"
|
||||||
|
|
||||||
|
# Monitor/Screen control
|
||||||
|
bind = $mainMod, Z, focusmonitor, +1
|
||||||
|
bind = $mainMod SHIFT, Z, movewindow, mon:+1
|
||||||
|
|
||||||
|
# Window management
|
||||||
|
bind = $mainMod, G, exec, hyprctl clients -j | jq -r '.[] | select(.workspace.id >= 0) | "\(.title) - \(.class)"' | rofi -dmenu -i -p "Go to window" | head -1 | xargs -I {} hyprctl dispatch focuswindow "title:{}"
|
||||||
|
bind = $mainMod, B, exec, SELECTION=$(hyprctl clients -j | jq -r '.[] | select(.workspace.id >= 0) | "\(.title) - \(.class) [\(.address)]"' | rofi -dmenu -i -p "Bring window"); if [ -n "$SELECTION" ]; then ADDRESS=$(echo "$SELECTION" | sed 's/.*\[\(.*\)\]/\1/'); hyprctl dispatch movetoworkspace "$(hyprctl activeworkspace -j | jq -r '.id')",address:"$ADDRESS"; fi
|
||||||
|
bind = $mainMod SHIFT, B, exec, hyprctl clients -j | jq -r '.[] | select(.workspace.id >= 0) | "\(.title) - \(.class)"' | rofi -dmenu -i -p "Replace window" | head -1 | xargs -I {} hyprctl dispatch swapwindow "title:{}"
|
||||||
|
bind = $mainMod, M, exec, hyprctl dispatch togglespecialworkspace minimized
|
||||||
|
bind = $mainMod SHIFT, M, exec, hyprctl dispatch movetoworkspace special:minimized
|
||||||
|
bind = $mainMod SHIFT, H, exec, EMPTY_WS=$(hyprctl workspaces -j | jq -r 'map(select(.windows == 0)) | .[0].id // empty'); if [ -z "$EMPTY_WS" ]; then EMPTY_WS=$(hyprctl workspaces -j | jq -r 'max_by(.id).id + 1'); fi; hyprctl dispatch movetoworkspace $EMPTY_WS && hyprctl dispatch workspace $EMPTY_WS
|
||||||
|
bind = $mainMod, X, exec, hyprctl dispatch movetoworkspace special:NSP
|
||||||
|
|
||||||
|
# Workspace switching
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move windows to workspaces
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Move and follow to workspace
|
||||||
|
bind = $mainMod CTRL, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod CTRL, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod CTRL, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod CTRL, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod CTRL, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod CTRL, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod CTRL, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod CTRL, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod CTRL, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod CTRL, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Media keys and volume control
|
||||||
|
bind = , XF86AudioRaiseVolume, exec, set_volume --unmute --change-volume +5
|
||||||
|
bind = , XF86AudioLowerVolume, exec, set_volume --unmute --change-volume -5
|
||||||
|
bind = , XF86AudioMute, exec, set_volume --toggle-mute
|
||||||
|
bind = $mainMod, I, exec, set_volume --unmute --change-volume +5
|
||||||
|
bind = $mainMod, K, exec, set_volume --unmute --change-volume -5
|
||||||
|
bind = $mainMod, U, exec, set_volume --toggle-mute
|
||||||
|
|
||||||
|
# Media player controls
|
||||||
|
bind = $mainMod, semicolon, exec, playerctl play-pause
|
||||||
|
bind = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bind = , XF86AudioPause, exec, playerctl play-pause
|
||||||
|
bind = $mainMod, L, exec, playerctl next
|
||||||
|
bind = , XF86AudioNext, exec, playerctl next
|
||||||
|
bind = $mainMod, J, exec, playerctl previous
|
||||||
|
bind = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
|
# Brightness control
|
||||||
|
bind = , XF86MonBrightnessUp, exec, brightness.sh 5
|
||||||
|
bind = , XF86MonBrightnessDown, exec, brightness.sh -5
|
||||||
|
|
||||||
|
# Utility bindings
|
||||||
|
bind = $hyper, V, exec, rofi_clipit.sh
|
||||||
|
bind = $hyper, Y, exec, rofi-pass
|
||||||
|
bind = $hyper, H, exec, rofi_shutter
|
||||||
|
bind = $hyper, C, exec, shell_command.sh
|
||||||
|
bind = $hyper, X, exec, rofi_command.sh
|
||||||
|
bind = $hyper SHIFT, L, exec, dm-tool lock
|
||||||
|
bind = $hyper, K, exec, rofi_kill_process.sh
|
||||||
|
bind = $hyper SHIFT, K, exec, rofi_kill_all.sh
|
||||||
|
bind = $hyper, R, exec, rofi-systemd
|
||||||
|
bind = $hyper, 9, exec, start_synergy.sh
|
||||||
|
bind = $hyper, slash, exec, toggle_taffybar
|
||||||
|
bind = $hyper, Space, exec, skippy-xd
|
||||||
|
bind = $hyper, I, exec, rofi_select_input.hs
|
||||||
|
bind = $hyper, O, exec, rofi_paswitch
|
||||||
|
bind = $mainMod, apostrophe, exec, load_default_map
|
||||||
|
bind = $modAlt, apostrophe, exec, load_xkb_map
|
||||||
|
bind = $mainMod, R, exec, hyprctl reload
|
||||||
|
|
||||||
|
# Workspace cycling
|
||||||
|
bind = $mainMod, backslash, workspace, previous
|
||||||
|
bind = $mainMod, Tab, workspace, previous
|
||||||
|
|
||||||
|
# Mouse bindings
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Special workspaces for "scratchpad" applications
|
||||||
|
exec-once = [workspace special:element silent] element-desktop
|
||||||
|
exec-once = [workspace special:gmail silent] google-chrome-stable --new-window https://mail.google.com/mail/u/0/#inbox
|
||||||
|
exec-once = [workspace special:htop silent] alacritty --title htop -e htop
|
||||||
|
exec-once = [workspace special:messages silent] google-chrome-stable --new-window https://messages.google.com/web/conversations
|
||||||
|
exec-once = [workspace special:slack silent] slack
|
||||||
|
exec-once = [workspace special:spotify silent] spotify
|
||||||
|
exec-once = [workspace special:transmission silent] transmission-gtk
|
||||||
|
exec-once = [workspace special:volume silent] pavucontrol
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
flake-utils.url = github:numtide/flake-utils;
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
xmonad.url = github:xmonad/xmonad/master;
|
xmonad.url = "github:xmonad/xmonad/master";
|
||||||
taffybar.url = "github:taffybar/taffybar";
|
taffybar.url = "github:taffybar/taffybar";
|
||||||
};
|
};
|
||||||
outputs = { self, flake-utils, taffybar, nixpkgs, xmonad }:
|
outputs = { self, flake-utils, taffybar, nixpkgs, xmonad }:
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
|
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
|
||||||
hpkgs = pkgs.lib.attrsets.getAttrFromPath (xmonad.lib.hpath defComp) pkgs;
|
hpkgs = pkgs.lib.attrsets.getAttrFromPath (xmonad.lib.hpath defComp) pkgs;
|
||||||
in
|
in
|
||||||
rec {
|
{
|
||||||
devShell = hpkgs.shellFor {
|
devShell = hpkgs.shellFor {
|
||||||
packages = p: [ p.imalison-taffybar p.taffybar ];
|
packages = p: [ p.imalison-taffybar p.taffybar ];
|
||||||
nativeBuildInputs = with hpkgs; [
|
nativeBuildInputs = with hpkgs; [
|
||||||
|
|||||||
Submodule dotfiles/config/taffybar/taffybar updated: 9c8540a564...41dde6e6df
@@ -218,7 +218,7 @@ main = do
|
|||||||
[ ( "uber-loaner"
|
[ ( "uber-loaner"
|
||||||
, baseConfig { endWidgets = laptopEndWidgets }
|
, baseConfig { endWidgets = laptopEndWidgets }
|
||||||
)
|
)
|
||||||
, ( "adele"
|
, ( "adell"
|
||||||
, baseConfig { endWidgets = laptopEndWidgets }
|
, baseConfig { endWidgets = laptopEndWidgets }
|
||||||
)
|
)
|
||||||
, ( "stevie-nixos"
|
, ( "stevie-nixos"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
in flake-utils.lib.eachDefaultSystem (system:
|
in flake-utils.lib.eachDefaultSystem (system:
|
||||||
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
|
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
|
||||||
in
|
in
|
||||||
rec {
|
{
|
||||||
devShell = pkgs.haskellPackages.shellFor {
|
devShell = pkgs.haskellPackages.shellFor {
|
||||||
packages = p: [ p.imalison-xmonad p.xmonad-contrib ];
|
packages = p: [ p.imalison-xmonad p.xmonad-contrib ];
|
||||||
buildInputs = with pkgs.haskellPackages; [
|
buildInputs = with pkgs.haskellPackages; [
|
||||||
|
|||||||
Submodule dotfiles/config/xmonad/xmonad updated: 5c2ba06902...8113e0fe55
Submodule dotfiles/config/xmonad/xmonad-contrib updated: 229c7baf00...1a8da46855
@@ -1059,8 +1059,8 @@ addKeys conf@XConfig { modMask = modm } =
|
|||||||
, ((hyper .|. shiftMask, xK_q), spawn "toggle_mute_current_window.sh")
|
, ((hyper .|. shiftMask, xK_q), spawn "toggle_mute_current_window.sh")
|
||||||
, ((hctrl, xK_q), spawn "toggle_mute_current_window.sh only")
|
, ((hctrl, xK_q), spawn "toggle_mute_current_window.sh only")
|
||||||
|
|
||||||
, ((0, xF86XK_MonBrightnessUp), spawn "brightness.sh 5")
|
, ((0, xF86XK_MonBrightnessUp), spawn "brightness.sh up")
|
||||||
, ((0, xF86XK_MonBrightnessDown), spawn "brightness.sh -5")
|
, ((0, xF86XK_MonBrightnessDown), spawn "brightness.sh down")
|
||||||
|
|
||||||
] ++
|
] ++
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
(setq mc/cmds-to-run-for-all
|
(setq mc/cmds-to-run-for-all
|
||||||
'(
|
'(
|
||||||
TeX-insert-backslash
|
TeX-insert-backslash
|
||||||
|
align
|
||||||
backward-sexp
|
backward-sexp
|
||||||
beginning-of-buffer
|
beginning-of-buffer
|
||||||
beginning-of-visual-line
|
beginning-of-visual-line
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,44 +0,0 @@
|
|||||||
(defvar elpaca-installer-version 0.7)
|
|
||||||
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
|
|
||||||
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
|
|
||||||
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
|
|
||||||
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
|
|
||||||
:ref nil :depth 1
|
|
||||||
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
|
|
||||||
:build (:not elpaca--activate-package)))
|
|
||||||
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
|
|
||||||
(build (expand-file-name "elpaca/" elpaca-builds-directory))
|
|
||||||
(order (cdr elpaca-order))
|
|
||||||
(default-directory repo))
|
|
||||||
(add-to-list 'load-path (if (file-exists-p build) build repo))
|
|
||||||
(unless (file-exists-p repo)
|
|
||||||
(make-directory repo t)
|
|
||||||
(when (< emacs-major-version 28) (require 'subr-x))
|
|
||||||
(condition-case-unless-debug err
|
|
||||||
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
|
|
||||||
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
|
|
||||||
,@(when-let ((depth (plist-get order :depth)))
|
|
||||||
(list (format "--depth=%d" depth) "--no-single-branch"))
|
|
||||||
,(plist-get order :repo) ,repo))))
|
|
||||||
((zerop (call-process "git" nil buffer t "checkout"
|
|
||||||
(or (plist-get order :ref) "--"))))
|
|
||||||
(emacs (concat invocation-directory invocation-name))
|
|
||||||
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
|
|
||||||
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
|
|
||||||
((require 'elpaca))
|
|
||||||
((elpaca-generate-autoloads "elpaca" repo)))
|
|
||||||
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
|
|
||||||
(error "%s" (with-current-buffer buffer (buffer-string))))
|
|
||||||
((error) (warn "%s" err) (delete-directory repo 'recursive))))
|
|
||||||
(unless (require 'elpaca-autoloads nil t)
|
|
||||||
(require 'elpaca)
|
|
||||||
(elpaca-generate-autoloads "elpaca" repo)
|
|
||||||
(load "./elpaca-autoloads")))
|
|
||||||
|
|
||||||
(add-hook 'after-init-hook #'elpaca-process-queues)
|
|
||||||
|
|
||||||
(elpaca `(,@elpaca-order))
|
|
||||||
|
|
||||||
(elpaca elpaca-use-package
|
|
||||||
;; Enable use-package :ensure support for Elpaca.
|
|
||||||
(elpaca-use-package-mode))
|
|
||||||
@@ -1,28 +1,41 @@
|
|||||||
;; -*- no-byte-compile: t -*-
|
;; -*- no-byte-compile: t -*-
|
||||||
|
|
||||||
|
(let ((bootstrap-file (concat user-emacs-directory "straight/bootstrap.el"))
|
||||||
|
(bootstrap-version 2))
|
||||||
|
(unless (file-exists-p bootstrap-file)
|
||||||
|
(with-current-buffer
|
||||||
|
(url-retrieve-synchronously
|
||||||
|
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
||||||
|
'silent 'inhibit-cookies)
|
||||||
|
(goto-char (point-max))
|
||||||
|
(eval-print-last-sexp)))
|
||||||
|
(load bootstrap-file nil 'nomessage))
|
||||||
|
|
||||||
(setq native-comp-deferred-compilation-deny-list '("magit"))
|
(setq native-comp-deferred-compilation-deny-list '("magit"))
|
||||||
(setq native-comp-always-compile t)
|
(setq native-comp-always-compile t)
|
||||||
(setq load-no-native t)
|
(setq load-no-native t)
|
||||||
(setq no-native-compile t)
|
(setq no-native-compile t)
|
||||||
(setq warning-minimum-level :emergency)
|
(setq warning-minimum-level :emergency)
|
||||||
|
(setq straight-disable-native-compile t)
|
||||||
|
|
||||||
|
;; This is a workaround for an issue in emacs28 with symlinks. See https://github.com/radian-software/straight.el/issues/701
|
||||||
|
(defun my-patch-package-find-file-visit-truename (oldfun &rest r)
|
||||||
|
(let ((find-file-visit-truename nil))
|
||||||
|
(apply oldfun r)))
|
||||||
|
|
||||||
|
(advice-add #'straight--build-autoloads :around
|
||||||
|
#'my-patch-package-find-file-visit-truename)
|
||||||
|
|
||||||
(setq package-enable-at-startup nil
|
(setq package-enable-at-startup nil
|
||||||
straight-use-package-by-default t
|
straight-use-package-by-default t
|
||||||
straight-vc-git-default-protocol 'ssh)
|
straight-vc-git-default-protocol 'ssh)
|
||||||
|
(straight-use-package 'use-package)
|
||||||
(require 'use-package)
|
(require 'use-package)
|
||||||
(setq use-package-enable-imenu-support t)
|
(setq use-package-enable-imenu-support t)
|
||||||
(setq use-package-always-ensure t)
|
(setq use-package-ensure-function 'straight-use-package-ensure-function)
|
||||||
|
|
||||||
(defvar imalison:do-benchmark nil)
|
(defvar imalison:do-benchmark nil)
|
||||||
|
|
||||||
(defun emacs-directory-filepath (filename)
|
|
||||||
(concat (file-name-directory load-file-name) filename))
|
|
||||||
|
|
||||||
(load (emacs-directory-filepath "elpaca.el"))
|
|
||||||
|
|
||||||
(setq use-package-always-ensure t)
|
|
||||||
|
|
||||||
(let ((bench-file (concat (file-name-directory user-init-file) "benchmark.el")))
|
(let ((bench-file (concat (file-name-directory user-init-file) "benchmark.el")))
|
||||||
(when (file-exists-p bench-file) (load bench-file)))
|
(when (file-exists-p bench-file) (load bench-file)))
|
||||||
|
|
||||||
@@ -42,9 +55,6 @@
|
|||||||
(setq mac-option-modifier 'meta)
|
(setq mac-option-modifier 'meta)
|
||||||
(setq mac-command-modifier 'super))
|
(setq mac-command-modifier 'super))
|
||||||
|
|
||||||
(use-package transient
|
|
||||||
:demand t)
|
|
||||||
|
|
||||||
;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken.
|
;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken.
|
||||||
(use-package magit
|
(use-package magit
|
||||||
:demand t)
|
:demand t)
|
||||||
@@ -52,56 +62,29 @@
|
|||||||
;; This seems to fix issues with helm not explicitly declaring its dependency on async
|
;; This seems to fix issues with helm not explicitly declaring its dependency on async
|
||||||
(use-package async :demand t)
|
(use-package async :demand t)
|
||||||
|
|
||||||
(use-package s :demand t)
|
|
||||||
|
|
||||||
;; Without this, org can behave very strangely
|
;; Without this, org can behave very strangely
|
||||||
(use-package org
|
(use-package org
|
||||||
:ensure
|
:straight
|
||||||
(org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org"
|
(org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org"
|
||||||
:branch "my-main"
|
:branch "my-main-2025"
|
||||||
:depth full
|
:depth full :pre-build (straight-recipes-org-elpa--build) :build
|
||||||
:build
|
|
||||||
:wait t
|
|
||||||
(:not autoloads) :files
|
(:not autoloads) :files
|
||||||
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*"))))
|
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*")))
|
||||||
|
:defer t)
|
||||||
|
|
||||||
(use-package dash :demand t)
|
(use-package dash :demand t)
|
||||||
|
|
||||||
(use-package emit
|
|
||||||
:ensure (emit :type git :host github :repo "colonelpanic8/emit")
|
|
||||||
:demand t
|
|
||||||
:config
|
|
||||||
(progn
|
|
||||||
(emit-prefix-selector imalison:mark-ring mark-ring)
|
|
||||||
(emit-prefix-selector imalison:shell-command-on-region
|
|
||||||
imalison:copy-shell-command-on-region
|
|
||||||
imalison:shell-command-on-region-replace
|
|
||||||
imalison:jq-replace)
|
|
||||||
|
|
||||||
(defun imalison:jq-replace (start end)
|
|
||||||
(interactive (region-if-active-otherwise-buffer))
|
|
||||||
(imalison:shell-command-on-region-replace start end "jq ."))
|
|
||||||
(emit-compose
|
|
||||||
imalison:copy-eval-last-sexp kill-new prin1-to-string eval-last-sexp)
|
|
||||||
|
|
||||||
(emit-prefix-selector imalison:eval-last-sexp
|
|
||||||
eval-region-or-last-sexp
|
|
||||||
imalison:copy-eval-last-sexp)))
|
|
||||||
|
|
||||||
(use-package s
|
|
||||||
:ensure (:inherit t :wait t)
|
|
||||||
:config
|
|
||||||
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat")
|
|
||||||
imalison:kat-mode)
|
|
||||||
(let ((debug-on-error t))
|
|
||||||
(org-babel-load-file
|
|
||||||
(concat (file-name-directory load-file-name) "kat-mode.org")))))
|
|
||||||
|
|
||||||
(let ((debug-on-error t))
|
(let ((debug-on-error t))
|
||||||
(org-babel-load-file
|
(org-babel-load-file
|
||||||
(concat (file-name-directory load-file-name) "README.org")))
|
(concat (file-name-directory load-file-name) "README.org")))
|
||||||
|
|
||||||
;; (when imalison:do-benchmark (benchmark-init/deactivate))
|
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat")
|
||||||
|
imalison:kat-mode)
|
||||||
|
(let ((debug-on-error t))
|
||||||
|
(org-babel-load-file
|
||||||
|
(concat (file-name-directory load-file-name) "kat-mode.org"))))
|
||||||
|
|
||||||
|
(when imalison:do-benchmark (benchmark-init/deactivate))
|
||||||
|
|
||||||
;; Local Variables:
|
;; Local Variables:
|
||||||
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)
|
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)
|
||||||
|
|||||||
@@ -58,41 +58,11 @@ This makes evil-mode play nice with org-fc
|
|||||||
(file+datetree "~/org/weekly_reviews.org")
|
(file+datetree "~/org/weekly_reviews.org")
|
||||||
(file "~/org/weekly_review_template.org")))))
|
(file "~/org/weekly_review_template.org")))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
** Journal
|
||||||
** Daily Journal Entries
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(defun imalison:journal-filepath-for-date (&optional date)
|
(setq imalison:journal-template-filepath
|
||||||
(interactive (list (org-read-date)))
|
(imalison:join-paths org-directory "templates" "daily-journal-template.org"))
|
||||||
(let ((date-str (or date (format-time-string "%Y-%m-%d"))))
|
|
||||||
(imalison:join-paths
|
|
||||||
org-directory "journal" (concat date-str ".org"))))
|
|
||||||
|
|
||||||
(defun imalison:open-todays-org-journal ()
|
|
||||||
(interactive)
|
|
||||||
(imalison:open-org-journal (format-time-string "%Y-%m-%d")))
|
|
||||||
|
|
||||||
(defun imalison:get-journal-template ()
|
|
||||||
(with-temp-buffer
|
|
||||||
(insert-file-contents (imalison:join-paths org-directory "templates" "daily-journal-template.org"))
|
|
||||||
(buffer-string)))
|
|
||||||
|
|
||||||
(defun imalison:open-org-journal (&optional date)
|
|
||||||
(interactive (list (org-read-date nil nil nil "Select a date:")))
|
|
||||||
(let* ((filepath (imalison:journal-filepath-for-date date))
|
|
||||||
(file-existed (file-exists-p filepath))
|
|
||||||
(date-str (or date (format-time-string "%Y-%m-%d")))
|
|
||||||
(time-vals (append '(0 0 0) (nthcdr 3 (parse-time-string date-str))))
|
|
||||||
(original-format-time-string (symbol-function 'format-time-string)))
|
|
||||||
(find-file filepath)
|
|
||||||
(when (not file-existed)
|
|
||||||
(cl-letf (((symbol-function 'format-time-string)
|
|
||||||
(lambda (format-string &optional _time _universal)
|
|
||||||
(funcall original-format-time-string format-string (apply #'encode-time time-vals)))))
|
|
||||||
(insert (org-capture-fill-template (imalison:get-journal-template)))))))
|
|
||||||
|
|
||||||
(bind-key "C-c j" 'imalison:open-todays-org-journal)
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Insert a link to a task selected from agenda
|
** Insert a link to a task selected from agenda
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(defun imalison:insert-link-to-agenda ()
|
(defun imalison:insert-link-to-agenda ()
|
||||||
@@ -161,6 +131,10 @@ This makes evil-mode play nice with org-fc
|
|||||||
* Packages
|
* Packages
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package org-drill)
|
(use-package org-drill)
|
||||||
|
(require 'package)
|
||||||
|
(add-to-list 'package-archives
|
||||||
|
'("melpa" . "https://melpa.org/packages/") t)
|
||||||
|
(package-initialize)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -168,3 +142,35 @@ This makes evil-mode play nice with org-fc
|
|||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq org-wild-notifier-day-wide-alert-times nil)
|
(setq org-wild-notifier-day-wide-alert-times nil)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Swift
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(require 'package)
|
||||||
|
(add-to-list 'package-archives
|
||||||
|
'("melpa" . "https://melpa.org/packages/") t)
|
||||||
|
(package-initialize)
|
||||||
|
|
||||||
|
(unless (package-installed-p 'swift-mode)
|
||||||
|
(package-refresh-contents)
|
||||||
|
(package-install 'swift-mode))
|
||||||
|
|
||||||
|
(unless (package-installed-p 'lsp-mode)
|
||||||
|
(package-refresh-contents)
|
||||||
|
(package-install 'lsp-mode))
|
||||||
|
|
||||||
|
;; Swift Mode
|
||||||
|
(require 'swift-mode)
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.swift\\'" . swift-mode))
|
||||||
|
|
||||||
|
;; LSP Mode
|
||||||
|
(require 'lsp-mode)
|
||||||
|
(add-hook 'swift-mode-hook #'lsp)
|
||||||
|
|
||||||
|
;; Set the path to SourceKit-LSP if it's not in your PATH
|
||||||
|
(setq lsp-sourcekit-executable "/path/to/sourcekit-lsp")
|
||||||
|
|
||||||
|
;; Optional: Set the path to your Swift toolchain if necessary
|
||||||
|
(setq lsp-sourcekit-executable-args '("-toolchain" "/path/to/swift-toolchain"))
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|||||||
91
dotfiles/emacs.d/org-api.el
Normal file
91
dotfiles/emacs.d/org-api.el
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
(let ((current-dir (if load-file-name (file-name-directory load-file-name) "~/.emacs.d/")))
|
||||||
|
(load (expand-file-name "init.el" current-dir)))
|
||||||
|
|
||||||
|
(use-package simple-httpd
|
||||||
|
:demand t)
|
||||||
|
|
||||||
|
(require 'simple-httpd)
|
||||||
|
|
||||||
|
(defun org-api-get-todo-elements-from-filepath (filepath)
|
||||||
|
(let ((todo-elements nil))
|
||||||
|
(with-current-buffer (find-file-noselect filepath)
|
||||||
|
(save-excursion
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (re-search-forward org-todo-regexp nil t)
|
||||||
|
(let* ((element (org-element-at-point))
|
||||||
|
(type (org-element-type element)))
|
||||||
|
(when (eq type 'headline)
|
||||||
|
(let ((todo (org-element-property :todo-keyword element)))
|
||||||
|
(when todo
|
||||||
|
(push element todo-elements))))))))
|
||||||
|
todo-elements))
|
||||||
|
|
||||||
|
(defun org-api-get-agenda-todos ()
|
||||||
|
(let* ((today (calendar-gregorian-from-absolute (org-today))))
|
||||||
|
(mapcan 'org-api-get-todo-elements-from-filepath org-agenda-files)))
|
||||||
|
|
||||||
|
(defun org-api-get-element-json (element)
|
||||||
|
(let ((todo (org-element-property :todo-keyword element))
|
||||||
|
(title (org-element-property :raw-value element))
|
||||||
|
(tags (org-element-property :tags element))
|
||||||
|
(level (org-element-property :level element))
|
||||||
|
(scheduled (org-element-property :scheduled element))
|
||||||
|
(deadline (org-element-property :deadline element)))
|
||||||
|
`(("todo" . ,todo)
|
||||||
|
("title" . ,title)
|
||||||
|
("tags" . ,tags)
|
||||||
|
("level" . ,level)
|
||||||
|
("scheduled" . ,(when scheduled (org-format-timestamp scheduled "%Y-%m-%dT%H:%M:%SZ")))
|
||||||
|
("deadline" . ,(when deadline (org-format-timestamp deadline "%Y-%m-%dT%H:%M:%SZ"))))))
|
||||||
|
|
||||||
|
(defun org-api-item-json (item)
|
||||||
|
(let* ((todo (get-text-property 0 'todo-state item))
|
||||||
|
(title (substring-no-properties item))
|
||||||
|
(tags (get-text-property 0 'tags item))
|
||||||
|
(s (get-text-property 0 'ts-date item))
|
||||||
|
(scheduled (when s
|
||||||
|
(org-format-timestamp (org-time-from-absolute s) "%Y-%m-%dT%H:%M:%SZ") )))
|
||||||
|
`(("todo" . ,todo)
|
||||||
|
("title" . ,title)
|
||||||
|
("tags" . ,tags))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-api-get-scheduled-or-deadlined (day filepath)
|
||||||
|
(with-current-buffer (find-file-noselect filepath)
|
||||||
|
(org-dlet ((date day))
|
||||||
|
(setf org-agenda-current-date date)
|
||||||
|
(nconc (org-agenda-get-deadlines) (org-agenda-get-scheduled)))))
|
||||||
|
|
||||||
|
(defun org-api-get-today-agenda ()
|
||||||
|
(let ((day (calendar-current-date)))
|
||||||
|
(mapcan (lambda (filepath) (org-api-get-scheduled-or-deadlined day filepath))
|
||||||
|
org-agenda-files)))
|
||||||
|
|
||||||
|
(defservlet get-all-todos application/json ()
|
||||||
|
(insert (json-encode (mapcar 'org-api-get-element-json (org-api-get-agenda-todos)))))
|
||||||
|
|
||||||
|
(defservlet get-todays-agenda application/json ()
|
||||||
|
(insert
|
||||||
|
(json-encode
|
||||||
|
(mapcar 'org-api-item-json
|
||||||
|
(org-api-get-today-agenda)))))
|
||||||
|
|
||||||
|
(defservlet create-todo application/json (a b c)
|
||||||
|
(org-api-capture (gethash "title" (json-parse-string (cadr (assoc "Content" c))))))
|
||||||
|
|
||||||
|
(cl-defun org-api-build-capture-template
|
||||||
|
(content &key (character "d") (heading "Dynamic"))
|
||||||
|
`(,character ,heading entry (file "~/org/inbox.org")
|
||||||
|
(function (lambda ()
|
||||||
|
(imalison:make-org-todo-template :content content)))
|
||||||
|
:immediate-finish t))
|
||||||
|
|
||||||
|
(defun org-api-capture (content)
|
||||||
|
(let* ((org-capture-templates (list (org-api-build-capture-template content))))
|
||||||
|
(org-capture nil "d")))
|
||||||
|
|
||||||
|
|
||||||
|
(message "Starting http server")
|
||||||
|
(setq httpd-port 2025)
|
||||||
|
(httpd-start)
|
||||||
|
(message "Finished starting http server")
|
||||||
@@ -62,6 +62,11 @@ We're going to use this to write separate parts of our config to different secti
|
|||||||
(imalison:join-paths imalison:shared-org-dir "ivan_orgzly.org")
|
(imalison:join-paths imalison:shared-org-dir "ivan_orgzly.org")
|
||||||
(imalison:join-paths imalison:org-dir "orgzly.org")))
|
(imalison:join-paths imalison:org-dir "orgzly.org")))
|
||||||
|
|
||||||
|
(defvar imalison:repeating-org-files
|
||||||
|
(list imalison:org-habits-file imalison:shared-habits-file imalison:shared-repeating-file))
|
||||||
|
|
||||||
|
(defvar imalison:include-repeating-in-agenda nil)
|
||||||
|
|
||||||
(defun imalison:add-to-org-agenda-files (incoming-files)
|
(defun imalison:add-to-org-agenda-files (incoming-files)
|
||||||
(setq org-agenda-files
|
(setq org-agenda-files
|
||||||
(delete-dups
|
(delete-dups
|
||||||
@@ -366,12 +371,13 @@ We're going to use this to write separate parts of our config to different secti
|
|||||||
*** Agenda Files
|
*** Agenda Files
|
||||||
#+begin_src emacs-lisp :tangle org-config-config.el
|
#+begin_src emacs-lisp :tangle org-config-config.el
|
||||||
(imalison:add-to-org-agenda-files
|
(imalison:add-to-org-agenda-files
|
||||||
(nconc (list imalison:org-gtd-file imalison:org-habits-file
|
(nconc (list imalison:org-gtd-file imalison:org-calendar-file
|
||||||
imalison:org-calendar-file imalison:org-inbox-file
|
imalison:org-inbox-file imalison:shared-org-gtd-file
|
||||||
imalison:shared-org-gtd-file imalison:shared-habits-file
|
imalison:shared-calendar-file imalison:shared-shopping-file)
|
||||||
imalison:shared-calendar-file imalison:shared-shopping-file
|
|
||||||
imalison:shared-repeating-file)
|
|
||||||
imalison:orgzly-files))
|
imalison:orgzly-files))
|
||||||
|
|
||||||
|
(when imalison:include-repeating-in-agenda
|
||||||
|
(imalison:add-to-org-agenda-files imalison:repeating-org-files))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Predicates
|
*** Predicates
|
||||||
#+begin_src emacs-lisp :tangle org-config-config.el
|
#+begin_src emacs-lisp :tangle org-config-config.el
|
||||||
@@ -588,6 +594,43 @@ specific time, they should appear in the agenda at that time!
|
|||||||
(defun imalison:make-org-linked-todo-template ()
|
(defun imalison:make-org-linked-todo-template ()
|
||||||
(imalison:make-org-todo-template "[#C] %? %A"))
|
(imalison:make-org-todo-template "[#C] %? %A"))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
*** Journal
|
||||||
|
#+begin_src emacs-lisp :tangle org-config-config.el
|
||||||
|
(defun imalison:journal-filepath-for-date (&optional date)
|
||||||
|
(interactive (list (org-read-date)))
|
||||||
|
(let ((date-str (or date (format-time-string "%Y-%m-%d"))))
|
||||||
|
(imalison:join-paths
|
||||||
|
org-directory "journal" (concat date-str ".org"))))
|
||||||
|
|
||||||
|
(defun imalison:open-todays-org-journal ()
|
||||||
|
(interactive)
|
||||||
|
(imalison:open-org-journal (format-time-string "%Y-%m-%d")))
|
||||||
|
|
||||||
|
(defvar imalison:journal-template-filepath
|
||||||
|
(imalison:join-paths org-directory "capture-templates" "journal.org"))
|
||||||
|
|
||||||
|
(defun imalison:get-journal-template ()
|
||||||
|
(with-temp-buffer
|
||||||
|
(insert-file-contents imalison:journal-template-filepath)
|
||||||
|
(buffer-string)))
|
||||||
|
|
||||||
|
(defun imalison:open-org-journal (&optional date)
|
||||||
|
(interactive (list (org-read-date nil nil nil "Select a date:")))
|
||||||
|
(let* ((filepath (imalison:journal-filepath-for-date date))
|
||||||
|
(file-existed (file-exists-p filepath))
|
||||||
|
(date-str (or date (format-time-string "%Y-%m-%d")))
|
||||||
|
(time-vals (append '(0 0 0) (nthcdr 3 (parse-time-string date-str))))
|
||||||
|
(original-format-time-string (symbol-function 'format-time-string)))
|
||||||
|
(find-file filepath)
|
||||||
|
(when (not file-existed)
|
||||||
|
(cl-letf (((symbol-function 'format-time-string)
|
||||||
|
(lambda (format-string &optional _time _universal)
|
||||||
|
(funcall original-format-time-string format-string (apply #'encode-time time-vals)))))
|
||||||
|
(insert (org-capture-fill-template (imalison:get-journal-template)))))))
|
||||||
|
|
||||||
|
(bind-key "C-c j" 'imalison:open-todays-org-journal)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Templates
|
*** Templates
|
||||||
#+begin_src emacs-lisp :tangle org-config-config.el
|
#+begin_src emacs-lisp :tangle org-config-config.el
|
||||||
(use-package org-capture
|
(use-package org-capture
|
||||||
@@ -626,7 +669,15 @@ SCHEDULED: %^t
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CREATED: %U
|
:CREATED: %U
|
||||||
:STYLE: habit
|
:STYLE: habit
|
||||||
:END:")))
|
:END:"))
|
||||||
|
(add-to-list 'org-capture-templates
|
||||||
|
'("w" "Weekly Planning and Self Assesment"
|
||||||
|
plain
|
||||||
|
(function (lambda ()
|
||||||
|
(find-file (let ((date (format-time-string "%Y-%m-%d")))
|
||||||
|
(expand-file-name (concat date ".org")
|
||||||
|
"~/org/weekly")))))
|
||||||
|
(file "~/org/capture-templates/weekly.org"))))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Babel
|
** Babel
|
||||||
#+begin_src emacs-lisp :tangle org-config-config.el
|
#+begin_src emacs-lisp :tangle org-config-config.el
|
||||||
@@ -803,7 +854,7 @@ alphanumeric characters only."
|
|||||||
** Use org-tempo to allow inserting templates using e.g. <s
|
** Use org-tempo to allow inserting templates using e.g. <s
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package org-tempo
|
(use-package org-tempo
|
||||||
:ensure nil
|
:straight nil
|
||||||
:after org)
|
:after org)
|
||||||
#+end_src
|
#+end_src
|
||||||
* Packages
|
* Packages
|
||||||
@@ -938,6 +989,9 @@ alphanumeric characters only."
|
|||||||
#+end_src
|
#+end_src
|
||||||
***** ui
|
***** ui
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
(use-package emacs-http-server
|
||||||
|
:demand t)
|
||||||
|
|
||||||
(use-package org-roam-ui
|
(use-package org-roam-ui
|
||||||
:after org-roam
|
:after org-roam
|
||||||
:custom
|
:custom
|
||||||
|
|||||||
5
dotfiles/emacs.d/snippets/python-mode/inp
Normal file
5
dotfiles/emacs.d/snippets/python-mode/inp
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# -*- mode: snippet -*-
|
||||||
|
# name: inp
|
||||||
|
# key: inp
|
||||||
|
# --
|
||||||
|
import numpy as np
|
||||||
5
dotfiles/emacs.d/snippets/python-mode/isa
Normal file
5
dotfiles/emacs.d/snippets/python-mode/isa
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# -*- mode: snippet -*-
|
||||||
|
# name: isa
|
||||||
|
# key: isa
|
||||||
|
# --
|
||||||
|
import sqlalchemy as sa
|
||||||
@@ -24,7 +24,6 @@ pom.xml
|
|||||||
TAGS
|
TAGS
|
||||||
|
|
||||||
# Vim
|
# Vim
|
||||||
*.sw*
|
|
||||||
*.tmp*
|
*.tmp*
|
||||||
|
|
||||||
# JavaScript
|
# JavaScript
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
binding "gtk-emacs-text-entry"
|
|
||||||
{
|
|
||||||
bind "<alt>BackSpace" { "delete-from-cursor" (word-ends, -1) }
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk-theme-name="Paper"
|
|
||||||
gtk-icon-theme-name="Paper"
|
|
||||||
gtk-font-name="Roboto 11"
|
|
||||||
gtk-cursor-theme-name="Paper"
|
|
||||||
gtk-cursor-theme-size=0
|
|
||||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
|
||||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
|
||||||
gtk-button-images=1
|
|
||||||
gtk-menu-images=1
|
|
||||||
gtk-enable-event-sounds=1
|
|
||||||
gtk-enable-input-feedback-sounds=1
|
|
||||||
gtk-xft-antialias=1
|
|
||||||
gtk-xft-hinting=1
|
|
||||||
gtk-xft-hintstyle="hintfull"
|
|
||||||
|
|
||||||
164
dotfiles/lib/bin/brightness.hs
Executable file
164
dotfiles/lib/bin/brightness.hs
Executable file
@@ -0,0 +1,164 @@
|
|||||||
|
#!/usr/bin/env runhaskell
|
||||||
|
|
||||||
|
import System.Environment (getArgs)
|
||||||
|
import System.Process
|
||||||
|
import System.Exit
|
||||||
|
import Data.List (isPrefixOf, isSuffixOf)
|
||||||
|
import Data.Maybe (mapMaybe, fromMaybe)
|
||||||
|
import Text.Read (readMaybe)
|
||||||
|
import Control.Monad (forM, when)
|
||||||
|
import Data.Time.Clock
|
||||||
|
import Data.Time.Format
|
||||||
|
import System.IO
|
||||||
|
|
||||||
|
-- Types
|
||||||
|
data Device = Device { deviceName :: String, deviceBrightness :: Int }
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
data BrightnessCommand = Absolute Int | Increase Int | Decrease Int | Query
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
-- Logging
|
||||||
|
logAction :: String -> IO ()
|
||||||
|
logAction arg = do
|
||||||
|
time <- getCurrentTime
|
||||||
|
let timeStr = formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" time
|
||||||
|
ppid <- readProcess "sh" ["-c", "ps -p $PPID -o comm= 2>/dev/null || echo unknown"] ""
|
||||||
|
pwd <- readProcess "pwd" [] ""
|
||||||
|
let logEntry = "[" ++ timeStr ++ "] Called with: '" ++ arg ++ "' | Parent: " ++
|
||||||
|
filter (/= '\n') ppid ++ " | PWD: " ++ filter (/= '\n') pwd ++ "\n"
|
||||||
|
appendFile "/tmp/brightness.log" logEntry
|
||||||
|
|
||||||
|
-- Parse command line argument
|
||||||
|
parseArg :: String -> BrightnessCommand
|
||||||
|
parseArg "" = Query
|
||||||
|
parseArg ('+':rest) = case readMaybe rest of
|
||||||
|
Just n -> Increase n
|
||||||
|
Nothing -> Query
|
||||||
|
parseArg ('-':rest) = case readMaybe rest of
|
||||||
|
Just n -> Decrease n
|
||||||
|
Nothing -> Query
|
||||||
|
parseArg s = case readMaybe s of
|
||||||
|
Just n -> Absolute n
|
||||||
|
Nothing -> Query
|
||||||
|
|
||||||
|
-- Get list of backlight devices
|
||||||
|
getBacklightDevices :: IO [String]
|
||||||
|
getBacklightDevices = do
|
||||||
|
output <- readProcess "brightnessctl" ["--list"] ""
|
||||||
|
return $ mapMaybe extractDevice (lines output)
|
||||||
|
where
|
||||||
|
extractDevice line
|
||||||
|
| "Device '" `isInfixOf` line && "class 'backlight'" `isInfixOf` line =
|
||||||
|
let afterDevice = drop (length "Device '") line
|
||||||
|
deviceName = takeWhile (/= '\'') afterDevice
|
||||||
|
in if null deviceName then Nothing else Just deviceName
|
||||||
|
| otherwise = Nothing
|
||||||
|
|
||||||
|
-- Get brightness percentage for a device
|
||||||
|
getDeviceBrightness :: String -> IO (Maybe Int)
|
||||||
|
getDeviceBrightness device = do
|
||||||
|
output <- readProcess "brightnessctl" ["-d", device] ""
|
||||||
|
return $ extractPercentage output
|
||||||
|
where
|
||||||
|
extractPercentage s = case dropWhile (/= '(') s of
|
||||||
|
('(':rest) -> readMaybe (takeWhile (/= '%') rest)
|
||||||
|
_ -> Nothing
|
||||||
|
|
||||||
|
-- Set brightness for a device
|
||||||
|
setDeviceBrightness :: String -> String -> IO ()
|
||||||
|
setDeviceBrightness device cmd = do
|
||||||
|
_ <- readProcess "brightnessctl" ["-d", device, "set", cmd] ""
|
||||||
|
return ()
|
||||||
|
|
||||||
|
-- Build brightness command string
|
||||||
|
buildCommand :: BrightnessCommand -> String
|
||||||
|
buildCommand (Absolute n) = show n ++ "%"
|
||||||
|
buildCommand (Increase n) = show n ++ "%+"
|
||||||
|
buildCommand (Decrease n) = show n ++ "%-"
|
||||||
|
buildCommand Query = ""
|
||||||
|
|
||||||
|
-- Apply brightness change to all devices
|
||||||
|
applyBrightness :: BrightnessCommand -> IO ()
|
||||||
|
applyBrightness Query = return ()
|
||||||
|
applyBrightness cmd = do
|
||||||
|
devices <- getBacklightDevices
|
||||||
|
let cmdStr = buildCommand cmd
|
||||||
|
|
||||||
|
-- Log what we're about to do
|
||||||
|
appendFile "/tmp/brightness.log" $
|
||||||
|
" Applying: " ++ cmdStr ++ " to devices: " ++ show devices ++ "\n"
|
||||||
|
|
||||||
|
-- Apply to all devices
|
||||||
|
mapM_ (\dev -> setDeviceBrightness dev cmdStr) devices
|
||||||
|
|
||||||
|
-- Sync devices if needed
|
||||||
|
when (length devices > 1) $ do
|
||||||
|
brightnesses <- forM devices $ \dev -> do
|
||||||
|
mbBright <- getDeviceBrightness dev
|
||||||
|
return (dev, mbBright)
|
||||||
|
|
||||||
|
let validBrightnesses = [(d, b) | (d, Just b) <- brightnesses]
|
||||||
|
when (not $ null validBrightnesses) $ do
|
||||||
|
let values = map snd validBrightnesses
|
||||||
|
maxBright = maximum values
|
||||||
|
minBright = minimum values
|
||||||
|
|
||||||
|
-- If devices are out of sync
|
||||||
|
when (maxBright /= minBright) $ do
|
||||||
|
-- Use minimum when brightness is low (15% or below)
|
||||||
|
let syncValue = if maxBright <= 15 then minBright else maxBright
|
||||||
|
-- Log sync decision for debugging
|
||||||
|
appendFile "/tmp/brightness.log" $
|
||||||
|
" Syncing: max=" ++ show maxBright ++ "%, min=" ++ show minBright ++
|
||||||
|
"%, using=" ++ show syncValue ++ "%\n"
|
||||||
|
mapM_ (\dev -> setDeviceBrightness dev (show syncValue ++ "%")) devices
|
||||||
|
|
||||||
|
-- Get average brightness across all devices
|
||||||
|
getAverageBrightness :: IO Int
|
||||||
|
getAverageBrightness = do
|
||||||
|
devices <- getBacklightDevices
|
||||||
|
if null devices
|
||||||
|
then return 50 -- Default fallback
|
||||||
|
else do
|
||||||
|
brightnesses <- forM devices getDeviceBrightness
|
||||||
|
let validValues = [b | Just b <- brightnesses]
|
||||||
|
if null validValues
|
||||||
|
then return 50
|
||||||
|
else return $ sum validValues `div` length validValues
|
||||||
|
|
||||||
|
-- Send notification using rumno if available
|
||||||
|
sendNotification :: Int -> IO ()
|
||||||
|
sendNotification brightness = do
|
||||||
|
rumnoExists <- (== ExitSuccess) <$>
|
||||||
|
rawSystem "sh" ["-c", "command -v rumno >/dev/null 2>&1"]
|
||||||
|
if rumnoExists
|
||||||
|
then do
|
||||||
|
_ <- readProcess "rumno" ["notify", "-b", show brightness] ""
|
||||||
|
return ()
|
||||||
|
else putStrLn (show brightness)
|
||||||
|
|
||||||
|
-- Check if a string contains another
|
||||||
|
isInfixOf :: String -> String -> Bool
|
||||||
|
isInfixOf needle haystack = any (isPrefixOf needle) (tails haystack)
|
||||||
|
where
|
||||||
|
tails [] = [[]]
|
||||||
|
tails xs@(_:xs') = xs : tails xs'
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
args <- getArgs
|
||||||
|
let arg = case args of
|
||||||
|
[] -> ""
|
||||||
|
(x:_) -> x
|
||||||
|
|
||||||
|
-- Log the invocation
|
||||||
|
logAction arg
|
||||||
|
|
||||||
|
-- Parse and apply command
|
||||||
|
let cmd = parseArg arg
|
||||||
|
applyBrightness cmd
|
||||||
|
|
||||||
|
-- Get current brightness and notify
|
||||||
|
brightness <- getAverageBrightness
|
||||||
|
sendNotification brightness
|
||||||
@@ -1,3 +1,92 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
volnoti-show $(sudo brightness_manager.py -c "$@" -p)
|
# Get the brightness argument (default to empty string to just show current)
|
||||||
|
ARG="${1:-}"
|
||||||
|
|
||||||
|
# Log the incoming arguments for debugging
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] brightness.sh called with: '$ARG' (all args: $@)" >> /tmp/brightness_bash.log
|
||||||
|
|
||||||
|
# Function to get current brightness percentage
|
||||||
|
get_brightness_percentage() {
|
||||||
|
# Get list of display backlight devices only (filter by class 'backlight')
|
||||||
|
local devices=$(brightnessctl --list 2>/dev/null | grep 'class.*backlight' | cut -d' ' -f2 | cut -d"'" -f2)
|
||||||
|
local device_count=$(echo "$devices" | wc -w)
|
||||||
|
|
||||||
|
if [ "$device_count" -eq 0 ]; then
|
||||||
|
echo "50" # Default fallback
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$device_count" -eq 1 ]; then
|
||||||
|
# Single device - just output its percentage
|
||||||
|
local info=$(brightnessctl 2>/dev/null | grep -oP '\d+%' | head -1 | tr -d '%')
|
||||||
|
if [ -n "$info" ]; then
|
||||||
|
echo "$info"
|
||||||
|
else
|
||||||
|
echo "50"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Multiple devices - calculate average brightness
|
||||||
|
local total=0
|
||||||
|
local count=0
|
||||||
|
for device in $devices; do
|
||||||
|
local info=$(brightnessctl -d "$device" 2>/dev/null | grep -oP '\d+%' | head -1 | tr -d '%')
|
||||||
|
if [ -n "$info" ]; then
|
||||||
|
total=$((total + info))
|
||||||
|
count=$((count + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$count" -gt 0 ]; then
|
||||||
|
echo $((total / count))
|
||||||
|
else
|
||||||
|
echo "50"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Apply brightness change if argument provided
|
||||||
|
if [ -n "$ARG" ]; then
|
||||||
|
# Determine if it's absolute or relative
|
||||||
|
if [[ "$ARG" == "up" ]]; then
|
||||||
|
# Increase by 5%
|
||||||
|
BRIGHTNESS_CMD="5%+"
|
||||||
|
elif [[ "$ARG" == "down" ]]; then
|
||||||
|
# Decrease by 5%
|
||||||
|
BRIGHTNESS_CMD="5%-"
|
||||||
|
elif [[ "$ARG" == +* ]]; then
|
||||||
|
# Relative increase (e.g., +5)
|
||||||
|
BRIGHTNESS_CMD="${ARG:1}%+"
|
||||||
|
elif [[ "$ARG" == -* ]]; then
|
||||||
|
# Relative decrease (e.g., -5)
|
||||||
|
BRIGHTNESS_CMD="${ARG:1}%-"
|
||||||
|
else
|
||||||
|
# Absolute value (e.g., 50)
|
||||||
|
BRIGHTNESS_CMD="${ARG}%"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Try to apply to all devices
|
||||||
|
# Get list of display backlight devices only (filter by class 'backlight')
|
||||||
|
DEVICES=$(brightnessctl --list 2>/dev/null | grep 'class.*backlight' | cut -d' ' -f2 | cut -d"'" -f2)
|
||||||
|
|
||||||
|
if [ -n "$DEVICES" ]; then
|
||||||
|
# Apply to each device independently without syncing
|
||||||
|
# This allows each device to maintain its own brightness range
|
||||||
|
for device in $DEVICES; do
|
||||||
|
brightnessctl -d "$device" set "$BRIGHTNESS_CMD" >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Fallback: just run brightnessctl without specifying device
|
||||||
|
brightnessctl set "$BRIGHTNESS_CMD" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get current brightness percentage for display
|
||||||
|
BRIGHTNESS=$(get_brightness_percentage)
|
||||||
|
|
||||||
|
# Show notification if rumno is available
|
||||||
|
if command -v rumno &> /dev/null; then
|
||||||
|
rumno notify -b "$BRIGHTNESS"
|
||||||
|
else
|
||||||
|
echo "$BRIGHTNESS"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
class BrightnessManager(object):
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def find_brightness(cls):
|
|
||||||
return cls.from_path(
|
|
||||||
os.path.join("/sys/class/backlight", os.listdir("/sys/class/backlight")[0])
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_path(cls, path):
|
|
||||||
return cls(
|
|
||||||
set_brightness_filepath=os.path.join(path, "brightness"),
|
|
||||||
actual_brightness_filepath=os.path.join(path, "actual_brightness"),
|
|
||||||
max_brightness_filepath=os.path.join(path, "max_brightness"),
|
|
||||||
)
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self, set_brightness_filepath, max_brightness_filepath, actual_brightness_filepath
|
|
||||||
):
|
|
||||||
self.set_brightness_filepath = set_brightness_filepath
|
|
||||||
self.max_brightness_filepath = max_brightness_filepath
|
|
||||||
self.actual_brightness_filepath = actual_brightness_filepath
|
|
||||||
|
|
||||||
@property
|
|
||||||
def current_brightness(self):
|
|
||||||
with open(self.actual_brightness_filepath) as fd:
|
|
||||||
return int(fd.read())
|
|
||||||
|
|
||||||
@property
|
|
||||||
def max_brightness(self):
|
|
||||||
with open(self.max_brightness_filepath) as fd:
|
|
||||||
return int(fd.read())
|
|
||||||
|
|
||||||
@current_brightness.setter
|
|
||||||
def current_brightness(self, brightness):
|
|
||||||
with open(self.set_brightness_filepath, 'w') as fd:
|
|
||||||
fd.write(str(brightness))
|
|
||||||
|
|
||||||
def increment_by_proportion(self, proportion):
|
|
||||||
new_brightness = self.current_brightness + int(self.max_brightness * proportion)
|
|
||||||
new_brightness = min(new_brightness, self.max_brightness)
|
|
||||||
self.current_brightness = new_brightness
|
|
||||||
|
|
||||||
@property
|
|
||||||
def current_proportion(self):
|
|
||||||
return float(self.current_brightness) / self.max_brightness
|
|
||||||
|
|
||||||
|
|
||||||
def build_parser():
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description='Interact with macbook brightness',
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--change", "-c",
|
|
||||||
help="Change volume by the given percentage",
|
|
||||||
default=0
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--print", "-p", dest="do_print",
|
|
||||||
action='store_true',
|
|
||||||
default=False
|
|
||||||
)
|
|
||||||
return parser
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
args = build_parser().parse_args()
|
|
||||||
BrightnessManager.find_brightness().increment_by_proportion(float(args.change) / 100)
|
|
||||||
if args.do_print:
|
|
||||||
print(int(IntelBrightnessManager.current_proportion * 100))
|
|
||||||
7
dotfiles/lib/functions/ns
Executable file
7
dotfiles/lib/functions/ns
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
function ns {
|
||||||
|
sk --ansi -i -c 'nix-search "{}"' | get_cols 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ns "$@"
|
||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
function pashowvolume {
|
function pashowvolume {
|
||||||
if paismuted; then
|
if paismuted; then
|
||||||
volnoti-show -m
|
rumno notify -m
|
||||||
else
|
else
|
||||||
actual=$(pavolume)
|
actual=$(pavolume)
|
||||||
max=100
|
max=100
|
||||||
show=$(( actual < max ? actual : max ))
|
show=$(( actual < max ? actual : max ))
|
||||||
volnoti-show "$show"
|
rumno notify -v "$show"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
function pavolume {
|
function pavolume {
|
||||||
pacmd list-sinks |
|
pactl get-sink-volume $(pactl get-default-sink) | FS="/" get_cols 2 | grep -oE '[0-9]*'
|
||||||
awk '/^\s+name: /{indefault = $2 == "<'"$(pasink)"'>"}
|
|
||||||
/^\s+volume: / && indefault {print $5; exit}' | grep -Eo "[0-9]*"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pavolume
|
pavolume
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
function set_volume {
|
function set_volume {
|
||||||
current_default=$(pahelper list | grep '*' | all_after_char ":" | xargs)
|
|
||||||
environment_variable_exists USE_ONLY_O_PASINK && pahelper "$current_default"
|
|
||||||
|
|
||||||
# XXX: this does not prevent volumes higher than 100
|
|
||||||
pulsemixer "$@"
|
pulsemixer "$@"
|
||||||
pashowvolume
|
pashowvolume
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ section: aliases
|
|||||||
tv:
|
tv:
|
||||||
imalison-arch
|
imalison-arch
|
||||||
imalison-desktop
|
imalison-desktop
|
||||||
imalison-home
|
imalison-home justin-bieber-creek
|
||||||
controlling:
|
controlling:
|
||||||
uber-loaner
|
uber-loaner
|
||||||
imalison-mpb-arch
|
imalison-mpb-arch
|
||||||
@@ -22,4 +22,5 @@ section: aliases
|
|||||||
kat-uber-loaner
|
kat-uber-loaner
|
||||||
Dean-PC
|
Dean-PC
|
||||||
imalison-mbp
|
imalison-mbp
|
||||||
|
strixi-minaj
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Automatically rename new sessions to the basename of the current directory
|
||||||
|
set-hook -g session-created 'run-shell "tmux rename-session -t #{session_name} $(basename #{pane_current_path})"'
|
||||||
|
|
||||||
|
# Also rename when attaching to a session (optional)
|
||||||
|
set-hook -g client-session-changed 'run-shell "tmux rename-session -t #{session_name} $(basename #{pane_current_path})"'
|
||||||
293
nix-darwin/flake.lock
generated
Normal file
293
nix-darwin/flake.lock
generated
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"agenix": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": "darwin",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"railbird-secrets",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1707830867,
|
||||||
|
"narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=",
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"brew-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1763638478,
|
||||||
|
"narHash": "sha256-n/IMowE9S23ovmTkKX7KhxXC2Yq41EAVFR2FBIXPcT8=",
|
||||||
|
"owner": "Homebrew",
|
||||||
|
"repo": "brew",
|
||||||
|
"rev": "fbfdbaba008189499958a7aeb1e2c36ab10c067d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Homebrew",
|
||||||
|
"ref": "5.0.3",
|
||||||
|
"repo": "brew",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"railbird-secrets",
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1700795494,
|
||||||
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709126324,
|
||||||
|
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767930051,
|
||||||
|
"narHash": "sha256-YXtqo8h5bAbqC64XAPMMsZdYk8XkwkyNj/7XOsIyVf8=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "297a08510894822ddd93ee2cfc66d6ac65a3cebb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"railbird-secrets",
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1703113217,
|
||||||
|
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homebrew-cask": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767937441,
|
||||||
|
"narHash": "sha256-hiGvxqI6npGOAnNwMXkF1628IkyKhhYsAqO5kmSAuqM=",
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-cask",
|
||||||
|
"rev": "cc94d21fe7abb3cc93db50671bf5048176711be9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-cask",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homebrew-core": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767948289,
|
||||||
|
"narHash": "sha256-a6s+kRHOXRq4QoA4bDLZVKpC1woi6tTRqEt8Vk0ikGo=",
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-core",
|
||||||
|
"rev": "f268dcd932823c65f8feb2cfc533300ccbcc4541",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "homebrew",
|
||||||
|
"repo": "homebrew-core",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767718503,
|
||||||
|
"narHash": "sha256-V+VkFs0aSG0ca8p/N3gib7FAf4cq9jyr5Gm+ZBrHQpo=",
|
||||||
|
"owner": "LnL7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "9f48ffaca1f44b3e590976b4da8666a9e86e6eb1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "LnL7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-homebrew": {
|
||||||
|
"inputs": {
|
||||||
|
"brew-src": "brew-src"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764473698,
|
||||||
|
"narHash": "sha256-C91gPgv6udN5WuIZWNehp8qdLqlrzX6iF/YyboOj6XI=",
|
||||||
|
"owner": "zhaofengli-wip",
|
||||||
|
"repo": "nix-homebrew",
|
||||||
|
"rev": "6a8ab60bfd66154feeaa1021fc3b32684814a62a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "zhaofengli-wip",
|
||||||
|
"repo": "nix-homebrew",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767364772,
|
||||||
|
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709703039,
|
||||||
|
"narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"railbird-secrets": {
|
||||||
|
"inputs": {
|
||||||
|
"agenix": "agenix",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1766173571,
|
||||||
|
"narHash": "sha256-iYU5oTgXkZHqkb03IDPVMHA4Yte4AFhusTem0nf7pcc=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "5b42885b7c702fb30b4678e5cb51cc8501fd7830",
|
||||||
|
"revCount": 139,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"homebrew-cask": "homebrew-cask",
|
||||||
|
"homebrew-core": "homebrew-core",
|
||||||
|
"nix-darwin": "nix-darwin",
|
||||||
|
"nix-homebrew": "nix-homebrew",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"railbird-secrets": "railbird-secrets"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
211
nix-darwin/flake.nix
Normal file
211
nix-darwin/flake.nix
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
{
|
||||||
|
description = "Example Darwin system flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
nix-darwin.url = "github:LnL7/nix-darwin";
|
||||||
|
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
railbird-secrets = {
|
||||||
|
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
|
||||||
|
};
|
||||||
|
nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew";
|
||||||
|
|
||||||
|
# Optional: Declarative tap management
|
||||||
|
homebrew-core = {
|
||||||
|
url = "github:homebrew/homebrew-core";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
homebrew-cask = {
|
||||||
|
url = "github:homebrew/homebrew-cask";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
home-manager.url = "github:nix-community/home-manager";
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, ... }:
|
||||||
|
let
|
||||||
|
libDir = ../dotfiles/lib;
|
||||||
|
configuration = { pkgs, config, ... }: {
|
||||||
|
networking.hostName = "mac-demarco-mini";
|
||||||
|
imports = [ (import ./gitea-actions-runner.nix) ];
|
||||||
|
services.gitea-actions-runner = {
|
||||||
|
user = "gitea-runner";
|
||||||
|
instances.nix = {
|
||||||
|
enable = true;
|
||||||
|
name = config.networking.hostName;
|
||||||
|
url = "https://dev.railbird.ai";
|
||||||
|
token = "H0A7YXAWsKSp9QzvMymfJI12hbxwR7UerEHpCJUe";
|
||||||
|
labels = [
|
||||||
|
"nix-darwin-${pkgs.system}:host"
|
||||||
|
"macos-aarch64-darwin"
|
||||||
|
"nix:host"
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
cache = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
|
host = {
|
||||||
|
workdir_parent = "/var/lib/gitea-runner/action-cache-dir";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hostPackages = with pkgs; [
|
||||||
|
bash
|
||||||
|
coreutils
|
||||||
|
curl
|
||||||
|
direnv
|
||||||
|
gawk
|
||||||
|
just
|
||||||
|
git-lfs
|
||||||
|
isort
|
||||||
|
gitFull
|
||||||
|
gnused
|
||||||
|
ncdu
|
||||||
|
nixVersions.stable
|
||||||
|
nodejs
|
||||||
|
openssh
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
launchd.daemons.gitea-runner-nix.serviceConfig.EnvironmentVariables = {
|
||||||
|
XDG_CONFIG_HOME = "/var/lib/gitea-runner";
|
||||||
|
XDG_CACHE_HOME = "/var/lib/gitea-runner/.cache";
|
||||||
|
XDG_RUNTIME_DIR = "/var/lib/gitea-runner/tmp";
|
||||||
|
};
|
||||||
|
|
||||||
|
system.primaryUser = "kat";
|
||||||
|
|
||||||
|
# launchd.daemons.gitea-runner-restarter = {
|
||||||
|
# serviceConfig = {
|
||||||
|
# ProgramArguments = [
|
||||||
|
# "/usr/bin/env"
|
||||||
|
# "bash"
|
||||||
|
# "-c"
|
||||||
|
# ''
|
||||||
|
# SERVICE_NAME="org.nixos.gitea-runner-nix"
|
||||||
|
# while true; do
|
||||||
|
# # Check the second column of launchctl list output for our service
|
||||||
|
# EXIT_CODE=$(sudo launchctl list | grep "$SERVICE_NAME" | awk '{print $2}')
|
||||||
|
# if [ -z "$EXIT_CODE" ]; then
|
||||||
|
# echo "$(date): $SERVICE_NAME is running correctly. Terminating the restarter."
|
||||||
|
# exit 0
|
||||||
|
# else
|
||||||
|
# echo "$(date): $SERVICE_NAME is not running or in error state. Attempting to restart..."
|
||||||
|
# sudo launchctl bootout system/$SERVICE_NAME 2>/dev/null || true
|
||||||
|
# sudo launchctl load /Library/LaunchDaemons/$SERVICE_NAME.plist
|
||||||
|
# sleep 2 # Give the service some time to start
|
||||||
|
# fi
|
||||||
|
# done
|
||||||
|
# ''
|
||||||
|
# ];
|
||||||
|
# RunAtLoad = true;
|
||||||
|
# ThrottleInterval = 300;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
launchd.daemons.does-anything-work = {
|
||||||
|
serviceConfig = {
|
||||||
|
ProgramArguments = ["/usr/bin/env" "bash" "-c" "date > /var/log/does-anything-work"];
|
||||||
|
RunAtLoad = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays = [(import ../nixos/overlay.nix)];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
#python-with-my-packages
|
||||||
|
emacs
|
||||||
|
alejandra
|
||||||
|
cocoapods
|
||||||
|
gitFull
|
||||||
|
just
|
||||||
|
tmux
|
||||||
|
htop
|
||||||
|
nodePackages.prettier
|
||||||
|
nodejs
|
||||||
|
ripgrep
|
||||||
|
slack
|
||||||
|
claude-code
|
||||||
|
typescript
|
||||||
|
vim
|
||||||
|
yarn
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
|
||||||
|
# Auto upgrade nix package and the daemon service.
|
||||||
|
launchd.user.envVariables.PATH = config.environment.systemPath;
|
||||||
|
|
||||||
|
programs.direnv.enable = true;
|
||||||
|
|
||||||
|
# Necessary for using flakes on this system.
|
||||||
|
nix.settings.experimental-features = "nix-command flakes";
|
||||||
|
|
||||||
|
|
||||||
|
# Set Git commit hash for darwin-version.
|
||||||
|
system.configurationRevision = self.rev or self.dirtyRev or null;
|
||||||
|
|
||||||
|
# Used for backwards compatibility, please read the changelog before changing
|
||||||
|
system.stateVersion = 4;
|
||||||
|
|
||||||
|
# The platform the configuration will be used on.
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||||
|
users.users.kat.openssh.authorizedKeys.keys = inputs.railbird-secrets.keys.kanivanKeys;
|
||||||
|
users.users.gitea-runner = {
|
||||||
|
name = "gitea-runner";
|
||||||
|
isHidden = false;
|
||||||
|
home = "/Users/gitea-runner";
|
||||||
|
createHome = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true;
|
||||||
|
|
||||||
|
users.users.kat = {
|
||||||
|
name = "kat";
|
||||||
|
home = "/Users/kat";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
shellInit = ''
|
||||||
|
fpath+="${libDir}/functions"
|
||||||
|
for file in "${libDir}/functions/"*
|
||||||
|
do
|
||||||
|
autoload "''${file##*/}"
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
interactiveShellInit = ''
|
||||||
|
# eval "$(register-python-argcomplete prb)"
|
||||||
|
# eval "$(register-python-argcomplete prod-prb)"
|
||||||
|
# eval "$(register-python-argcomplete railbird)"
|
||||||
|
# [ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"
|
||||||
|
|
||||||
|
autoload -Uz bracketed-paste-magic
|
||||||
|
zle -N bracketed-paste bracketed-paste-magic
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.kat = {
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
home.stateVersion = "24.05";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
darwinConfigurations."mac-demarco-mini" = nix-darwin.lib.darwinSystem {
|
||||||
|
modules = [
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
configuration
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Expose the package set, including overlays, for convenience.
|
||||||
|
darwinPackages = self.darwinConfigurations."mac-demarco-mini".pkgs;
|
||||||
|
};
|
||||||
|
}
|
||||||
176
nix-darwin/gitea-actions-runner.nix
Normal file
176
nix-darwin/gitea-actions-runner.nix
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.services.gitea-actions-runner;
|
||||||
|
|
||||||
|
settingsFormat = pkgs.formats.yaml {};
|
||||||
|
|
||||||
|
hasDockerScheme = instance:
|
||||||
|
instance.labels == [] || any (label: hasInfix ":docker:" label) instance.labels;
|
||||||
|
wantsContainerRuntime = any hasDockerScheme (attrValues cfg.instances);
|
||||||
|
|
||||||
|
hasHostScheme = instance: any (label: hasSuffix ":host" label) instance.labels;
|
||||||
|
|
||||||
|
tokenXorTokenFile = instance:
|
||||||
|
(instance.token == null && instance.tokenFile != null)
|
||||||
|
|| (instance.token != null && instance.tokenFile == null);
|
||||||
|
in {
|
||||||
|
options.services.gitea-actions-runner = {
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.gitea-actions-runner;
|
||||||
|
defaultText = literalExpression "pkgs.gitea-actions-runner";
|
||||||
|
description = "The gitea-actions-runner package to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "gitea-runner";
|
||||||
|
description = "The user account under which the Gitea Actions Runner should run.";
|
||||||
|
};
|
||||||
|
|
||||||
|
instances = mkOption {
|
||||||
|
default = {};
|
||||||
|
description = "Gitea Actions Runner instances.";
|
||||||
|
type = types.attrsOf (types.submodule {
|
||||||
|
options = {
|
||||||
|
enable = mkEnableOption "Gitea Actions Runner instance";
|
||||||
|
|
||||||
|
name = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "my-runner";
|
||||||
|
description = "The name identifying the runner instance towards the Gitea/Forgejo instance.";
|
||||||
|
};
|
||||||
|
|
||||||
|
url = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
example = "https://forge.example.com";
|
||||||
|
description = "Base URL of your Gitea/Forgejo instance.";
|
||||||
|
};
|
||||||
|
|
||||||
|
token = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = "Plain token to register at the configured Gitea/Forgejo instance.";
|
||||||
|
};
|
||||||
|
|
||||||
|
tokenFile = mkOption {
|
||||||
|
type = types.nullOr (types.either types.str types.path);
|
||||||
|
default = null;
|
||||||
|
description = "Path to a file containing the token to register at the configured Gitea/Forgejo instance.";
|
||||||
|
};
|
||||||
|
|
||||||
|
labels = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
example = ["macos:host" "x86_64:host"];
|
||||||
|
description = "Labels used to map jobs to their runtime environment.";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
description = "Configuration for `act_runner daemon`.";
|
||||||
|
type = types.submodule {
|
||||||
|
freeformType = settingsFormat.type;
|
||||||
|
};
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
hostPackages = mkOption {
|
||||||
|
type = types.listOf types.package;
|
||||||
|
default = with pkgs; [
|
||||||
|
bash
|
||||||
|
coreutils
|
||||||
|
curl
|
||||||
|
gawk
|
||||||
|
git
|
||||||
|
gnused
|
||||||
|
nodejs
|
||||||
|
wget
|
||||||
|
openssh
|
||||||
|
];
|
||||||
|
description = "List of packages available to actions when the runner is configured with a host execution label.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.instances != {}) {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = all tokenXorTokenFile (attrValues cfg.instances);
|
||||||
|
message = "Instances of gitea-actions-runner can have `token` or `tokenFile`, not both.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.${cfg.user} = {
|
||||||
|
name = cfg.user;
|
||||||
|
description = "Gitea Actions Runner user";
|
||||||
|
};
|
||||||
|
|
||||||
|
launchd.daemons =
|
||||||
|
(mapAttrs' (
|
||||||
|
name: instance:
|
||||||
|
nameValuePair "gitea-runner-${name}" {
|
||||||
|
serviceConfig = {
|
||||||
|
ProgramArguments = [
|
||||||
|
"/usr/bin/env"
|
||||||
|
"bash"
|
||||||
|
"-c"
|
||||||
|
''
|
||||||
|
cd /var/lib/gitea-runner/${name}
|
||||||
|
exec ${cfg.package}/bin/act_runner daemon --config ${settingsFormat.generate "config.yaml" instance.settings}
|
||||||
|
''
|
||||||
|
];
|
||||||
|
KeepAlive = true;
|
||||||
|
ThrottleInterval = 5;
|
||||||
|
SessionCreate = true;
|
||||||
|
UserName = cfg.user;
|
||||||
|
GroupName = "staff";
|
||||||
|
WorkingDirectory = "/var/lib/gitea-runner/${name}";
|
||||||
|
EnvironmentVariables = {
|
||||||
|
PATH = (lib.makeBinPath (instance.hostPackages ++ [cfg.package])) + ":/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cfg.instances)
|
||||||
|
// (mapAttrs' (
|
||||||
|
name: instance:
|
||||||
|
nameValuePair "gitea-runner-setup-${name}"
|
||||||
|
{
|
||||||
|
serviceConfig = {
|
||||||
|
EnvironmentVariables =
|
||||||
|
{}
|
||||||
|
// optionalAttrs (instance.token != null) {
|
||||||
|
TOKEN = instance.token;
|
||||||
|
};
|
||||||
|
RunAtLoad = true;
|
||||||
|
ProgramArguments = [
|
||||||
|
"${pkgs.writeShellScript "gitea-runner-setup-${name}" ''
|
||||||
|
mkdir -p /var/lib/gitea-runner/${name}
|
||||||
|
cd /var/lib/gitea-runner/${name}
|
||||||
|
if [ ! -e "/var/lib/gitea-runner/${name}/.runner" ]; then
|
||||||
|
${cfg.package}/bin/act_runner register --no-interactive \
|
||||||
|
--instance ${escapeShellArg instance.url} \
|
||||||
|
--token "$TOKEN" \
|
||||||
|
--name ${escapeShellArg instance.name} \
|
||||||
|
--labels ${escapeShellArg (concatStringsSep "," instance.labels)} \
|
||||||
|
--config ${settingsFormat.generate "config.yaml" instance.settings}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start the runner
|
||||||
|
chown -R ${cfg.user} /var/lib/gitea-runner
|
||||||
|
chown -R ${cfg.user} /var/log/gitea-runner
|
||||||
|
''}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
cfg.instances);
|
||||||
|
};
|
||||||
|
}
|
||||||
2
nix-darwin/justfile
Normal file
2
nix-darwin/justfile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
switch:
|
||||||
|
nix run nix-darwin -- switch --flake .#
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
{ config, pkgs, forEachUser, makeEnable, realUsers, ... }:
|
{ config, pkgs, forEachUser, makeEnable, realUsers, ... }:
|
||||||
makeEnable config "modules.base" true {
|
makeEnable config "myModules.base" true {
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
"openssl-1.0.2u"
|
|
||||||
"electron-12.2.3"
|
"electron-12.2.3"
|
||||||
"etcher"
|
|
||||||
"electron-19.1.9"
|
"electron-19.1.9"
|
||||||
"openssl-1.1.1w"
|
"electron-32.3.3"
|
||||||
|
"etcher"
|
||||||
"nix-2.16.2"
|
"nix-2.16.2"
|
||||||
|
"openssl-1.0.2u"
|
||||||
|
"openssl-1.1.1w"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Disabling these waits disables the stuck on boot up issue
|
# Disabling these waits disables the stuck on boot up issue
|
||||||
@@ -29,15 +30,26 @@ makeEnable config "modules.base" true {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
|
networking.nameservers = [ "8.8.8.8" "8.8.4.4" ];
|
||||||
networking.networkmanager = {
|
networking.networkmanager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableStrongSwan = true;
|
|
||||||
plugins = [ pkgs.networkmanager-l2tp pkgs.networkmanager-openvpn ];
|
plugins = [ pkgs.networkmanager-l2tp pkgs.networkmanager-openvpn ];
|
||||||
};
|
};
|
||||||
|
networking.resolvconf.enable = false;
|
||||||
|
services.mullvad-vpn.enable = true;
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
sound.enable = true;
|
|
||||||
hardware.pulseaudio.enable = true;
|
services.pulseaudio.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = false;
|
||||||
|
systemWide = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
jack.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
# Bluetooth
|
# Bluetooth
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
@@ -53,7 +65,7 @@ makeEnable config "modules.base" true {
|
|||||||
defaultLocale = "en_US.UTF-8";
|
defaultLocale = "en_US.UTF-8";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Update timezone automatically
|
# # Update timezone automatically
|
||||||
services.tzupdate.enable = true;
|
services.tzupdate.enable = true;
|
||||||
|
|
||||||
# TODO: Add a comment explaining what this does.
|
# TODO: Add a comment explaining what this does.
|
||||||
@@ -61,6 +73,13 @@ makeEnable config "modules.base" true {
|
|||||||
|
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
virtualisation.podman = {
|
||||||
|
enable = true;
|
||||||
|
autoPrune = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
hardware.keyboard.zsa.enable = true;
|
hardware.keyboard.zsa.enable = true;
|
||||||
|
|
||||||
services.logind.extraConfig = "RuntimeDirectorySize=5G";
|
services.logind.extraConfig = "RuntimeDirectorySize=5G";
|
||||||
@@ -71,5 +90,5 @@ makeEnable config "modules.base" true {
|
|||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
|
|
||||||
home-manager.users = forEachUser (import ./home-manager.nix);
|
home-manager.users = forEachUser (import ./home-manager.nix);
|
||||||
nix.settings.trusted-users = realUsers;
|
nix.settings.trusted-users = realUsers ++ ["gitea-runner"];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, inputs, config, makeEnable, ... }:
|
{ pkgs, inputs, config, makeEnable, ... }:
|
||||||
makeEnable config "modules.ben" true {
|
makeEnable config "myModules.ben" true {
|
||||||
home-manager.backupFileExtension = "backup"; # Add this line
|
home-manager.backupFileExtension = "backup"; # Add this line
|
||||||
home-manager.users.ben = {
|
home-manager.users.ben = {
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./essential.nix
|
./essential.nix
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
layout = "us";
|
layout = "us";
|
||||||
desktopManager = {
|
desktopManager = {
|
||||||
plasma5.enable = true;
|
plasma6.enable = true;
|
||||||
};
|
};
|
||||||
displayManager = {
|
displayManager = {
|
||||||
sddm = {
|
sddm = {
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nix = rec {
|
nix = {
|
||||||
extraOptions = ''
|
extraOptions = ''
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
with lib;
|
with lib;
|
||||||
let cfg = config.modules.cache-server;
|
let cfg = config.myModules.cache-server;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
modules.cache-server = {
|
myModules.cache-server = {
|
||||||
enable = mkEnableOption "nix cache server";
|
enable = mkEnableOption "nix cache server";
|
||||||
port = mkOption {
|
port = mkOption {
|
||||||
type = types.int;
|
type = types.int;
|
||||||
|
|||||||
@@ -1,11 +1,22 @@
|
|||||||
{ pkgs, config, makeEnable, ... }:
|
{ pkgs, config, makeEnable, ... }:
|
||||||
makeEnable config "modules.code" true {
|
makeEnable config "myModules.code" true {
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nix-direnv.enable = true;
|
nix-direnv.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
# LLM Tools
|
||||||
|
claude-code
|
||||||
|
codex
|
||||||
|
|
||||||
|
# MCP
|
||||||
|
github-mcp-server
|
||||||
|
gitea-mcp-server
|
||||||
|
mcp-nixos
|
||||||
|
playwright-mcp
|
||||||
|
mcp-language-server
|
||||||
|
|
||||||
# C
|
# C
|
||||||
clang
|
clang
|
||||||
|
|
||||||
@@ -24,6 +35,8 @@ makeEnable config "modules.code" true {
|
|||||||
# Node
|
# Node
|
||||||
nodePackages.npm
|
nodePackages.npm
|
||||||
nodejs
|
nodejs
|
||||||
|
yarn
|
||||||
|
prettier
|
||||||
|
|
||||||
# Typescript
|
# Typescript
|
||||||
typescript
|
typescript
|
||||||
@@ -43,8 +56,13 @@ makeEnable config "modules.code" true {
|
|||||||
ruby
|
ruby
|
||||||
|
|
||||||
# python
|
# python
|
||||||
poetry
|
|
||||||
black
|
black
|
||||||
|
poetry
|
||||||
|
uv
|
||||||
|
|
||||||
|
# kotlin
|
||||||
|
kotlin
|
||||||
|
kotlin-language-server
|
||||||
|
|
||||||
# dhall
|
# dhall
|
||||||
haskellPackages.dhall
|
haskellPackages.dhall
|
||||||
|
|||||||
@@ -17,12 +17,17 @@
|
|||||||
./gitea-runner.nix
|
./gitea-runner.nix
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
./gnome.nix
|
./gnome.nix
|
||||||
|
./home-assistant.nix
|
||||||
./imalison.nix
|
./imalison.nix
|
||||||
./internet-computer.nix
|
./internet-computer.nix
|
||||||
|
./k3s.nix
|
||||||
./kat.nix
|
./kat.nix
|
||||||
./keybase.nix
|
./keybase.nix
|
||||||
|
./kubelet.nix
|
||||||
|
./laptop.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
./nixified.ai.nix
|
./nixified.ai.nix
|
||||||
|
./nvidia.nix
|
||||||
./options.nix
|
./options.nix
|
||||||
./plasma.nix
|
./plasma.nix
|
||||||
./postgres.nix
|
./postgres.nix
|
||||||
@@ -30,10 +35,12 @@
|
|||||||
./secrets.nix
|
./secrets.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./syncthing.nix
|
./syncthing.nix
|
||||||
|
./tts.nix
|
||||||
./user-specific.nix
|
./user-specific.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
./vscode.nix
|
./vscode.nix
|
||||||
./wsl.nix
|
./wsl.nix
|
||||||
|
./wyoming.nix
|
||||||
./xmonad.nix
|
./xmonad.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -42,17 +49,16 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.features.full.enable {
|
config = lib.mkIf config.features.full.enable {
|
||||||
modules.base.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.desktop.enable = true;
|
myModules.desktop.enable = true;
|
||||||
modules.plasma.enable = true;
|
myModules.plasma.enable = true;
|
||||||
modules.gnome.enable = false;
|
myModules.gnome.enable = false;
|
||||||
modules.xmonad.enable = true;
|
myModules.xmonad.enable = true;
|
||||||
modules.extra.enable = true;
|
myModules.extra.enable = true;
|
||||||
modules.electron.enable = true;
|
myModules.electron.enable = true;
|
||||||
modules.code.enable = true;
|
myModules.code.enable = true;
|
||||||
modules.games.enable = true;
|
myModules.games.enable = false;
|
||||||
modules.syncthing.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
modules.fonts.enable = true;
|
myModules.fonts.enable = true;
|
||||||
modules.nixified-ai.enable = false;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ config, pkgs, makeEnable, ... }:
|
{ inputs, config, pkgs, makeEnable, ... }:
|
||||||
makeEnable config "modules.desktop" true {
|
makeEnable config "myModules.desktop" true {
|
||||||
imports = [
|
imports = [
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
];
|
];
|
||||||
@@ -21,6 +21,8 @@ makeEnable config "modules.desktop" true {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.hyprland.enable = true;
|
||||||
|
|
||||||
services.autorandr = {
|
services.autorandr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
@@ -32,9 +34,11 @@ makeEnable config "modules.desktop" true {
|
|||||||
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Visual notification manager
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# Appearance
|
# Appearance
|
||||||
gnome.adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
hicolor-icon-theme
|
hicolor-icon-theme
|
||||||
libsForQt5.breeze-gtk
|
libsForQt5.breeze-gtk
|
||||||
# materia-theme
|
# materia-theme
|
||||||
@@ -54,45 +58,48 @@ makeEnable config "modules.desktop" true {
|
|||||||
# Desktop
|
# Desktop
|
||||||
alacritty
|
alacritty
|
||||||
blueman
|
blueman
|
||||||
clipit
|
# clipit
|
||||||
d-spy
|
d-spy
|
||||||
dolphin
|
kdePackages.dolphin
|
||||||
|
# inputs.ghostty.packages."${system}".default
|
||||||
|
|
||||||
feh
|
feh
|
||||||
firefox
|
firefox
|
||||||
gnome.cheese
|
cheese
|
||||||
gnome.gpaste
|
gpaste
|
||||||
kleopatra
|
kdePackages.kleopatra
|
||||||
libnotify
|
libnotify
|
||||||
libreoffice
|
libreoffice
|
||||||
lxappearance
|
lxappearance
|
||||||
lxqt.lxqt-powermanagement
|
lxqt.lxqt-powermanagement
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
notify-osd-customizable
|
kdePackages.okular
|
||||||
okular
|
|
||||||
picom
|
|
||||||
pinentry
|
pinentry
|
||||||
psensor
|
# mission-center
|
||||||
quassel
|
quassel
|
||||||
remmina
|
remmina
|
||||||
rofi
|
rofi
|
||||||
|
wofi
|
||||||
rofi-pass
|
rofi-pass
|
||||||
rofi-systemd
|
rofi-systemd
|
||||||
shutter
|
|
||||||
simplescreenrecorder
|
simplescreenrecorder
|
||||||
skippy-xd
|
skippy-xd
|
||||||
synergy
|
synergy
|
||||||
transmission-gtk
|
# TODO: reenable
|
||||||
|
# transmission_3-gtk
|
||||||
vlc
|
vlc
|
||||||
volnoti
|
|
||||||
xfce.thunar
|
xfce.thunar
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
picard
|
picard
|
||||||
|
pavucontrol
|
||||||
playerctl
|
playerctl
|
||||||
pulsemixer
|
pulsemixer
|
||||||
espeak
|
espeak
|
||||||
|
|
||||||
|
#
|
||||||
|
brightnessctl
|
||||||
|
|
||||||
# Visualization
|
# Visualization
|
||||||
graphviz
|
graphviz
|
||||||
nodePackages.mermaid-cli
|
nodePackages.mermaid-cli
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, config, makeEnable, forEachUser, ... }:
|
{ pkgs, config, makeEnable, forEachUser, ... }:
|
||||||
makeEnable config "modules.electron" false {
|
makeEnable config "myModules.electron" false {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
element-desktop
|
element-desktop
|
||||||
# bitwarden
|
# bitwarden
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ with lib;
|
|||||||
eval "$(register-python-argcomplete prod-prb)"
|
eval "$(register-python-argcomplete prod-prb)"
|
||||||
eval "$(register-python-argcomplete railbird)"
|
eval "$(register-python-argcomplete railbird)"
|
||||||
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"
|
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"
|
||||||
|
|
||||||
|
# Enable bracketed paste
|
||||||
|
autoload -Uz bracketed-paste-magic
|
||||||
|
zle -N bracketed-paste bracketed-paste-magic
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
automake
|
automake
|
||||||
bazel
|
bazel
|
||||||
|
bento4
|
||||||
bind
|
bind
|
||||||
binutils
|
binutils
|
||||||
cachix
|
cachix
|
||||||
@@ -16,13 +17,13 @@
|
|||||||
emacs
|
emacs
|
||||||
fd
|
fd
|
||||||
ffmpeg
|
ffmpeg
|
||||||
bento4
|
|
||||||
file
|
file
|
||||||
gawk
|
gawk
|
||||||
gcc
|
gcc
|
||||||
gdb
|
gdb
|
||||||
git-lfs
|
gh
|
||||||
git-fame
|
git-fame
|
||||||
|
git-lfs
|
||||||
git-sync
|
git-sync
|
||||||
gitFull
|
gitFull
|
||||||
glxinfo
|
glxinfo
|
||||||
@@ -42,23 +43,28 @@
|
|||||||
neofetch
|
neofetch
|
||||||
neovim
|
neovim
|
||||||
nix-index
|
nix-index
|
||||||
|
nix-search-cli
|
||||||
pass
|
pass
|
||||||
patchelf
|
patchelf
|
||||||
pciutils
|
pciutils
|
||||||
pstree
|
pstree
|
||||||
|
pulseaudio
|
||||||
python-with-my-packages
|
python-with-my-packages
|
||||||
rclone
|
rclone
|
||||||
rcm
|
rcm
|
||||||
ripgrep
|
ripgrep
|
||||||
|
runc
|
||||||
silver-searcher
|
silver-searcher
|
||||||
sysz
|
skim
|
||||||
sshfs
|
sshfs
|
||||||
|
sysz
|
||||||
tmux
|
tmux
|
||||||
tzupdate
|
tzupdate
|
||||||
udiskie
|
udiskie
|
||||||
unzip
|
unzip
|
||||||
usbutils
|
usbutils
|
||||||
wget
|
wget
|
||||||
|
xkcdpass
|
||||||
yubikey-manager
|
yubikey-manager
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{ config, pkgs, makeEnable, ... }:
|
{ config, pkgs, makeEnable, ... }:
|
||||||
makeEnable config "modules.extra" false {
|
makeEnable config "myModules.extra" false {
|
||||||
services.expressvpn.enable = true;
|
|
||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
@@ -10,7 +9,6 @@ makeEnable config "modules.extra" false {
|
|||||||
asciidoctor
|
asciidoctor
|
||||||
roomeqwizard
|
roomeqwizard
|
||||||
razergenie
|
razergenie
|
||||||
expressvpn
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
gource
|
gource
|
||||||
gimp
|
gimp
|
||||||
|
|||||||
1429
nixos/flake.lock
generated
1429
nixos/flake.lock
generated
File diff suppressed because it is too large
Load Diff
126
nixos/flake.nix
126
nixos/flake.nix
@@ -1,19 +1,45 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
railbird-secrets = {
|
|
||||||
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
|
|
||||||
};
|
|
||||||
nixos-hardware = { url = "github:colonelpanic8/nixos-hardware"; };
|
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
url = "github:NixOS/nixpkgs/nixos-unstable";
|
url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
flake-utils = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:numtide/flake-utils";
|
||||||
|
inputs.systems.follows = "systems";
|
||||||
|
};
|
||||||
|
|
||||||
|
systems = { url = "github:nix-systems/default"; };
|
||||||
|
|
||||||
|
git-ignore-nix = {
|
||||||
|
url = "github:hercules-ci/gitignore.nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager/master";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos-hardware = { url = "github:colonelpanic8/nixos-hardware/my-master"; };
|
||||||
|
|
||||||
|
nixos-wsl = { url = "github:nix-community/NixOS-WSL"; };
|
||||||
|
|
||||||
|
agenix = { url = "github:ryantm/agenix"; };
|
||||||
|
|
||||||
|
railbird-secrets = {
|
||||||
|
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
|
||||||
|
};
|
||||||
|
|
||||||
|
xmonad = {
|
||||||
|
url = "github:xmonad/xmonad";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
flake-utils.follows = "flake-utils";
|
||||||
|
git-ignore-nix.follows = "git-ignore-nix";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
xmonad-contrib = {
|
xmonad-contrib = {
|
||||||
url = "github:IvanMalison/xmonad-contrib/withMyChanges";
|
url = "github:IvanMalison/xmonad-contrib/withMyChanges";
|
||||||
inputs = {
|
inputs = {
|
||||||
@@ -24,35 +50,21 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xmonad = {
|
|
||||||
url = "github:xmonad/xmonad";
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
|
||||||
flake-utils.follows = "flake-utils";
|
|
||||||
git-ignore-nix.follows = "git-ignore-nix";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
taffybar = {
|
taffybar = {
|
||||||
url = "github:taffybar/taffybar";
|
url = "github:taffybar/taffybar/old-master";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
flake-utils.follows = "flake-utils";
|
|
||||||
git-ignore-nix.follows = "git-ignore-nix";
|
|
||||||
xmonad.follows = "xmonad";
|
|
||||||
gtk-sni-tray.follows = "gtk-sni-tray";
|
|
||||||
gtk-strut.follows = "gtk-strut";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
imalison-taffybar = {
|
imalison-taffybar = {
|
||||||
url = "path:../dotfiles/config/taffybar";
|
url = "path:../dotfiles/config/taffybar";
|
||||||
inputs = {
|
# inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
# nixpkgs.follows = "nixpkgs";
|
||||||
flake-utils.follows = "flake-utils";
|
# flake-utils.follows = "flake-utils";
|
||||||
xmonad.follows = "xmonad";
|
# xmonad.follows = "xmonad";
|
||||||
taffybar.follows = "taffybar";
|
# taffybar.follows = "taffybar";
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
notifications-tray-icon = {
|
notifications-tray-icon = {
|
||||||
@@ -62,18 +74,6 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
flake-utils = {
|
|
||||||
url = "github:numtide/flake-utils";
|
|
||||||
inputs.systems.follows = "systems";
|
|
||||||
};
|
|
||||||
|
|
||||||
systems = { url = "github:nix-systems/default"; };
|
|
||||||
|
|
||||||
git-ignore-nix = {
|
|
||||||
url = "github:hercules-ci/gitignore.nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk-sni-tray = {
|
gtk-sni-tray = {
|
||||||
url = "github:taffybar/gtk-sni-tray";
|
url = "github:taffybar/gtk-sni-tray";
|
||||||
inputs = {
|
inputs = {
|
||||||
@@ -104,17 +104,13 @@
|
|||||||
|
|
||||||
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
||||||
|
|
||||||
nixpkgs-regression = { url = "github:NixOS/nixpkgs"; };
|
|
||||||
|
|
||||||
nixified-ai = { url = "github:nixified-ai/flake"; };
|
nixified-ai = { url = "github:nixified-ai/flake"; };
|
||||||
|
|
||||||
nixos-wsl = { url = "github:nix-community/NixOS-WSL"; };
|
nixtheplanet.url = "github:matthewcroughan/nixtheplanet";
|
||||||
|
|
||||||
agenix.url = "github:ryantm/agenix";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{
|
outputs = inputs@{
|
||||||
self, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad,
|
self, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad, nixtheplanet,
|
||||||
xmonad-contrib, notifications-tray-icon, nix, agenix, imalison-taffybar, ...
|
xmonad-contrib, notifications-tray-icon, nix, agenix, imalison-taffybar, ...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -126,7 +122,7 @@
|
|||||||
name = machineNameFromFilename filename;
|
name = machineNameFromFilename filename;
|
||||||
value = {
|
value = {
|
||||||
modules = [
|
modules = [
|
||||||
(machinesFilepath + ("/" + filename)) agenix.nixosModules.default
|
(machinesFilepath + ("/" + filename)) agenix.nixosModules.default nixtheplanet.nixosModules.macos-ventura
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -141,14 +137,44 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
mkConfig =
|
mkConfig =
|
||||||
args@
|
|
||||||
{ system ? "x86_64-linux"
|
{ system ? "x86_64-linux"
|
||||||
, baseModules ? []
|
, baseModules ? []
|
||||||
, modules ? []
|
, modules ? []
|
||||||
, specialArgs ? {}
|
, specialArgs ? {}
|
||||||
, ...
|
, ...
|
||||||
}:
|
}:
|
||||||
nixpkgs.lib.nixosSystem (args // {
|
let
|
||||||
|
# Bootstrap nixpkgs for this specific system
|
||||||
|
bootstrapPkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config = {};
|
||||||
|
overlays = [];
|
||||||
|
};
|
||||||
|
# Apply patches to nixpkgs source
|
||||||
|
patchedSource = bootstrapPkgs.applyPatches {
|
||||||
|
name = "nixpkgs-patched";
|
||||||
|
src = nixpkgs;
|
||||||
|
patches = [
|
||||||
|
# Rumno service PR
|
||||||
|
(bootstrapPkgs.fetchpatch {
|
||||||
|
url = "https://github.com/NixOS/nixpkgs/pull/433540.patch";
|
||||||
|
hash = "sha256-G4eJaX351/HMB0z4QNfgob+bVuqCcTEMGE7IPNcIGbw=";
|
||||||
|
})
|
||||||
|
# git-sync-rs package
|
||||||
|
(bootstrapPkgs.fetchpatch {
|
||||||
|
url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/434160.patch";
|
||||||
|
hash = "sha256-1xm75lWEKWbX0qsbeXWX3lRRZIFO3/sdrZZYJxKGD2o=";
|
||||||
|
})
|
||||||
|
(bootstrapPkgs.fetchpatch {
|
||||||
|
url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/436061.patch";
|
||||||
|
hash = "sha256-HZquaNBB+w5Hm5kdzvaGg7QAOgAf/EPBO7o7pKkIrMY=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# Get eval-config from patched source
|
||||||
|
evalConfig = import "${patchedSource}/nixos/lib/eval-config.nix";
|
||||||
|
in
|
||||||
|
evalConfig {
|
||||||
inherit system;
|
inherit system;
|
||||||
modules = baseModules ++ modules;
|
modules = baseModules ++ modules;
|
||||||
specialArgs = rec {
|
specialArgs = rec {
|
||||||
@@ -166,7 +192,7 @@
|
|||||||
mapAllKeysToValue = keys: value: builtins.listToAttrs (map (name: { inherit name value; }) keys);
|
mapAllKeysToValue = keys: value: builtins.listToAttrs (map (name: { inherit name value; }) keys);
|
||||||
forEachUser = mapAllKeysToValue realUsers;
|
forEachUser = mapAllKeysToValue realUsers;
|
||||||
} // specialArgs;
|
} // specialArgs;
|
||||||
});
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, makeEnable, config, ... }:
|
{ pkgs, makeEnable, config, ... }:
|
||||||
makeEnable config "modules.fonts" true {
|
makeEnable config "myModules.fonts" true {
|
||||||
# Enable the gtk icon cache
|
# Enable the gtk icon cache
|
||||||
gtk.iconCache.enable = true;
|
gtk.iconCache.enable = true;
|
||||||
|
|
||||||
@@ -21,13 +21,10 @@ makeEnable config "modules.fonts" true {
|
|||||||
source-sans-pro
|
source-sans-pro
|
||||||
source-serif-pro
|
source-serif-pro
|
||||||
twemoji-color-font
|
twemoji-color-font
|
||||||
(nerdfonts.override { fonts = [
|
nerd-fonts.jetbrains-mono
|
||||||
"JetBrainsMono"
|
nerd-fonts.fantasque-sans-mono
|
||||||
"FantasqueSansMono"
|
nerd-fonts.iosevka
|
||||||
"Iosevka"
|
nerd-fonts.victor-mono
|
||||||
"VictorMono"
|
|
||||||
"SourceCodePro"
|
|
||||||
]; })
|
|
||||||
];
|
];
|
||||||
fontconfig = {
|
fontconfig = {
|
||||||
hinting.autohint = true;
|
hinting.autohint = true;
|
||||||
@@ -35,7 +32,7 @@ makeEnable config "modules.fonts" true {
|
|||||||
allowBitmaps = true;
|
allowBitmaps = true;
|
||||||
useEmbeddedBitmaps = true;
|
useEmbeddedBitmaps = true;
|
||||||
defaultFonts = {
|
defaultFonts = {
|
||||||
monospace = [ "Source Code Pro" ];
|
monospace = [ "JetBrains Mono" ];
|
||||||
sansSerif = [ "Roboto" ];
|
sansSerif = [ "Roboto" ];
|
||||||
serif = [ "Source Serif Pro" ];
|
serif = [ "Source Serif Pro" ];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
{ config, pkgs, makeEnable, ... }:
|
{ config, pkgs, makeEnable, ... }:
|
||||||
makeEnable config "modules.games" false {
|
makeEnable config "myModules.games" false {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
steam
|
steam
|
||||||
# heroic
|
heroic
|
||||||
];
|
|
||||||
boot.extraModulePackages = with pkgs; [
|
|
||||||
xboxdrv
|
|
||||||
];
|
];
|
||||||
hardware.xone.enable = true;
|
hardware.xone.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{ ... }: {
|
{ pkgs, ... }: {
|
||||||
home-manager.users.imalison = ({ config, ... }: {
|
home-manager.users.imalison = ({ config, ... }: {
|
||||||
services.git-sync = {
|
services.git-sync = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = pkgs.git-sync-rs;
|
||||||
repositories = {
|
repositories = {
|
||||||
config = {
|
config = {
|
||||||
path = config.home.homeDirectory + "/config";
|
path = config.home.homeDirectory + "/config";
|
||||||
@@ -18,7 +19,7 @@
|
|||||||
};
|
};
|
||||||
katnivan = {
|
katnivan = {
|
||||||
path = config.home.homeDirectory + "/katnivan";
|
path = config.home.homeDirectory + "/katnivan";
|
||||||
uri = "ssh://gitea@1896Folsom.duckdns.org:1123/colonelpanic/katnivan.git";
|
uri = "ssh://gitea@dev.railbird.ai:1123/colonelpanic/katnivan.git";
|
||||||
interval = 30;
|
interval = 30;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ pkgs, config, makeEnable, ... }:
|
{ pkgs, config, makeEnable, ... }:
|
||||||
makeEnable config "modules.gitea-runner" false {
|
makeEnable config "myModules.gitea-runner" false {
|
||||||
age.secrets.gitea-runner-token = {
|
age.secrets.gitea-runner-token = {
|
||||||
file = ./secrets/gitea-runner-token.${config.networking.hostName}.age;
|
file = ./secrets/gitea-runner-token.age;
|
||||||
group = "docker";
|
group = "docker";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -21,16 +21,17 @@ makeEnable config "modules.gitea-runner" false {
|
|||||||
};
|
};
|
||||||
hostPackages = with pkgs; [
|
hostPackages = with pkgs; [
|
||||||
bash
|
bash
|
||||||
direnv
|
|
||||||
coreutils
|
coreutils
|
||||||
curl
|
curl
|
||||||
|
direnv
|
||||||
|
docker
|
||||||
gawk
|
gawk
|
||||||
git-lfs
|
git-lfs
|
||||||
nixFlakes
|
|
||||||
gitFull
|
gitFull
|
||||||
gnused
|
gnused
|
||||||
|
just
|
||||||
|
nixVersions.stable
|
||||||
nodejs
|
nodejs
|
||||||
docker
|
|
||||||
openssh
|
openssh
|
||||||
wget
|
wget
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ config, makeEnable, ... }:
|
{ config, makeEnable, ... }:
|
||||||
makeEnable config "modules.gitea" false {
|
makeEnable config "myModules.gitea" false {
|
||||||
|
|
||||||
services.gitea = {
|
services.gitea = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -8,11 +8,15 @@ makeEnable config "modules.gitea" false {
|
|||||||
enable = true;
|
enable = true;
|
||||||
interval = "23:05";
|
interval = "23:05";
|
||||||
};
|
};
|
||||||
|
settings.service = {
|
||||||
|
DISABLE_REGISTRATION = true;
|
||||||
|
};
|
||||||
settings.server = {
|
settings.server = {
|
||||||
DOMAIN = "dev.railbird.ai";
|
DOMAIN = "dev.railbird.ai";
|
||||||
SSH_PORT = 1123;
|
SSH_PORT = 1123;
|
||||||
HTTP_PORT = 3001;
|
HTTP_PORT = 3001;
|
||||||
ROOT_URL = "https://dev.railbird.ai";
|
ROOT_URL = "https://dev.railbird.ai";
|
||||||
|
DISABLE_REGISTRATION = true;
|
||||||
};
|
};
|
||||||
settings.actions = {
|
settings.actions = {
|
||||||
ENABLED = true;
|
ENABLED = true;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ config, makeEnable, ... }:
|
{ config, makeEnable, ... }:
|
||||||
makeEnable config "modules.gnome" false {
|
makeEnable config "myModules.gnome" false {
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
desktopManager.gnome.enable = true;
|
desktopManager.gnome.enable = true;
|
||||||
displayManager.gdm.enable = true;
|
displayManager.gdm.enable = true;
|
||||||
|
|||||||
119
nixos/home-assistant.nix
Normal file
119
nixos/home-assistant.nix
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
{ pkgs, config, lib, makeEnable, realUsers, ... }:
|
||||||
|
makeEnable config "myModules.home-assistant" false {
|
||||||
|
boot.kernel.sysctl = {
|
||||||
|
# For all interfaces (e.g. if you want to accept RA on all):
|
||||||
|
"net.ipv6.conf.all.accept_ra" = lib.mkForce "1";
|
||||||
|
"net.ipv6.conf.all.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
||||||
|
"net.ipv6.conf.default.accept_ra" = lib.mkForce "1";
|
||||||
|
"net.ipv6.conf.default.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
||||||
|
"net.ipv6.conf.wlo1.accept_ra" = lib.mkForce "1";
|
||||||
|
"net.ipv6.conf.wlo1.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
||||||
|
|
||||||
|
# Ensure forwarding is off on all interfaces unless needed
|
||||||
|
"net.ipv6.conf.all.forwarding" = lib.mkForce "0";
|
||||||
|
};
|
||||||
|
|
||||||
|
# services.matter-server = {
|
||||||
|
# enable = true;
|
||||||
|
# logLevel = "debug";
|
||||||
|
# extraArgs = let cert-dir = pkgs.fetchFromGitHub {
|
||||||
|
# repo = "connectedhomeip";
|
||||||
|
# owner = "project-chip";
|
||||||
|
# rev = "6e8676be6142bb541fa68048c77f2fc56a21c7b1";
|
||||||
|
# hash = "sha256-QwPKn2R4mflTKMyr1k4xF04t0PJIlzNCOdXEiQwX5wk=";
|
||||||
|
# }; in
|
||||||
|
# [
|
||||||
|
# # "--bluetooth-adapter=0"
|
||||||
|
# "--paa-root-cert-dir=${cert-dir}/credentials/production/paa-root-certs"
|
||||||
|
# "--enable-test-net-dcl"
|
||||||
|
# "--ota-provider-dir=/var/lib/matter-server/ota-provider"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# age.secrets.google-service-account = {
|
||||||
|
# file = ../secrets/google-assistant-integration-service-key.age;
|
||||||
|
# owner = "hass";
|
||||||
|
# };
|
||||||
|
|
||||||
|
age.secrets.zwave-js-config-filepath = {
|
||||||
|
file = ./secrets/zwave-js.json.age;
|
||||||
|
owner = "imalison";
|
||||||
|
group = "users";
|
||||||
|
mode = "777";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.zwave-js = {
|
||||||
|
enable = true;
|
||||||
|
serialPort = "/dev/serial/by-id/usb-Silicon_Labs_Zooz_ZST10_700_Z-Wave_Stick_fec41d5809caec11843b63a341be1031-if00-port0";
|
||||||
|
secretsConfigFile = config.age.secrets.zwave-js-config-filepath.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.zwave-js = {
|
||||||
|
serviceConfig = {
|
||||||
|
# DynamicUser = lib.mkForce false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.zwave-js-ui = {
|
||||||
|
enable = true;
|
||||||
|
serialPort = "/dev/serial/by-id/usb-Silicon_Labs_Zooz_ZST10_700_Z-Wave_Stick_fec41d5809caec11843b63a341be1031-if00-port0";
|
||||||
|
settings = {
|
||||||
|
HOST = "::";
|
||||||
|
PORT = "8091";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.home-assistant = {
|
||||||
|
enable = true;
|
||||||
|
extraComponents = [
|
||||||
|
"anthropic"
|
||||||
|
"cast"
|
||||||
|
"dlna_dmr"
|
||||||
|
"esphome"
|
||||||
|
"google_assistant"
|
||||||
|
"google_translate"
|
||||||
|
"homeassistant_hardware"
|
||||||
|
"homeassistant_sky_connect"
|
||||||
|
"homekit_controller"
|
||||||
|
"hue"
|
||||||
|
"ibeacon"
|
||||||
|
"isal"
|
||||||
|
"kef"
|
||||||
|
"kegtron"
|
||||||
|
"matter"
|
||||||
|
"met"
|
||||||
|
"opensky"
|
||||||
|
"otbr"
|
||||||
|
"piper"
|
||||||
|
"radio_browser"
|
||||||
|
"roomba"
|
||||||
|
"spotify"
|
||||||
|
"samsungtv"
|
||||||
|
"thread"
|
||||||
|
"wake_word"
|
||||||
|
"webostv"
|
||||||
|
"whisper"
|
||||||
|
"wyoming"
|
||||||
|
"yale"
|
||||||
|
"zwave_js"
|
||||||
|
];
|
||||||
|
extraPackages = python3Packages: with python3Packages; [
|
||||||
|
numpy
|
||||||
|
python-matter-server
|
||||||
|
universal-silabs-flasher
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
http = {
|
||||||
|
use_x_forwarded_for = true;
|
||||||
|
trusted_proxies = ["0.0.0.0" "127.0.0.1" "::1" "192.168.50.1"];
|
||||||
|
};
|
||||||
|
# google_assistant = {
|
||||||
|
# project_id = "canyon-run-b104-home-assistant";
|
||||||
|
# service_account = "!include ${config.age.secrets.google-service-account.path}";
|
||||||
|
# report_state = true;
|
||||||
|
# exposed_domains = ["switch" "light"];
|
||||||
|
# };
|
||||||
|
default_config = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, config, specialArgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
xsession = {
|
xsession = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ switch *args:
|
|||||||
sudo nixos-rebuild switch --flake '.#' --impure {{args}}
|
sudo nixos-rebuild switch --flake '.#' --impure {{args}}
|
||||||
|
|
||||||
fix-local-path-issue:
|
fix-local-path-issue:
|
||||||
nix flake lock --update-input imalison-taffybar
|
nix flake update imalison-taffybar
|
||||||
|
|
||||||
|
|
||||||
expire-home-manager-generations:
|
expire-home-manager-generations:
|
||||||
|
|||||||
165
nixos/k3s.nix
Normal file
165
nixos/k3s.nix
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.myModules.railbird-k3s;
|
||||||
|
mount-path = "/var/lib/railbird/bucket";
|
||||||
|
bucket-name = "railbird-dev-videos";
|
||||||
|
plugins-path = pkgs.buildEnv {
|
||||||
|
name = "combined-cni-plugins";
|
||||||
|
paths = [
|
||||||
|
pkgs.cni-plugins
|
||||||
|
pkgs.calico-cni-plugin
|
||||||
|
pkgs.calico-kube-controllers
|
||||||
|
pkgs.cni-plugin-flannel
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
myModules.railbird-k3s = {
|
||||||
|
enable = mkEnableOption "railbird k3s";
|
||||||
|
serverAddr = mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
extraFlags = mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
age.secrets."1896Folsom-k3s-token.age".file = ./secrets/1896Folsom-k3s-token.age;
|
||||||
|
age.secrets."k3s-registry.yaml.age".file = ./secrets/k3s-registry.yaml.age;
|
||||||
|
age.secrets.api-service-key = {
|
||||||
|
file = ./secrets/api_service_account_key.json.age;
|
||||||
|
owner = "railbird";
|
||||||
|
group = "users";
|
||||||
|
};
|
||||||
|
environment.etc."rancher/k3s/registries.yaml".source = config.age.secrets."k3s-registry.yaml.age".path;
|
||||||
|
services.dockerRegistry = {
|
||||||
|
enable = true;
|
||||||
|
listenAddress = "0.0.0.0";
|
||||||
|
port = 5279;
|
||||||
|
enableDelete = true;
|
||||||
|
enableGarbageCollect = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.containerd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
plugins."io.containerd.cri.v1.runtime" = {
|
||||||
|
enable_cdi = true;
|
||||||
|
cdi_spec_dirs = [ "/var/run/cdi" ];
|
||||||
|
};
|
||||||
|
plugins."io.containerd.grpc.v1.cri" = {
|
||||||
|
enable_cdi = true;
|
||||||
|
cdi_spec_dirs = [ "/var/run/cdi" ];
|
||||||
|
cni.bin_dir = "${plugins-path}/bin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.nvidia-container-toolkit.enable = true;
|
||||||
|
virtualisation.containers = {
|
||||||
|
containersConf.cniPlugins = [
|
||||||
|
pkgs.cni-plugins
|
||||||
|
pkgs.calico-cni-plugin
|
||||||
|
pkgs.calico-kube-controllers
|
||||||
|
pkgs.cni-plugin-flannel
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services = {
|
||||||
|
nvidia-container-toolkit-cdi-generator = {
|
||||||
|
# Even with `--library-search-path`, `nvidia-ctk` won't find the libs
|
||||||
|
# unless I bodge their path into the environment.
|
||||||
|
environment.LD_LIBRARY_PATH = "${config.hardware.nvidia.package}/lib";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.mount-railbird-bucket = {
|
||||||
|
after = ["agenix.service"];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
description = "Mount railbird bucket";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
Restart = "on-failure"; # Restart the service on failure
|
||||||
|
RestartSec = 5; # Wait 5 seconds before restarti
|
||||||
|
TimeoutStopSec = 2;
|
||||||
|
ExecStartPre = [
|
||||||
|
"-${pkgs.util-linux}/bin/umount -f ${mount-path}"
|
||||||
|
"${pkgs.coreutils}/bin/mkdir -p ${mount-path}"
|
||||||
|
"${pkgs.coreutils}/bin/chown railbird:users ${mount-path}"
|
||||||
|
"${pkgs.coreutils}/bin/chmod 0775 ${mount-path}"
|
||||||
|
];
|
||||||
|
ExecStart = let
|
||||||
|
key-file = config.age.secrets.api-service-key.path;
|
||||||
|
in
|
||||||
|
pkgs.writeShellScript "mount-railbird-bucket" ''
|
||||||
|
while true; do
|
||||||
|
if ${pkgs.util-linux}/bin/mount | grep -q "${mount-path}" && [ -d "${mount-path}/dev" ]; then
|
||||||
|
echo "Mount path ${mount-path} is mounted and valid (contains directory 'dev')."
|
||||||
|
else
|
||||||
|
echo "Mount path is not valid or not mounted, attempting remount."
|
||||||
|
${pkgs.util-linux}/bin/umount -f "${mount-path}" || true
|
||||||
|
${pkgs.gcsfuse}/bin/gcsfuse --implicit-dirs --key-file "${key-file}" "${bucket-name}" "${mount-path}"
|
||||||
|
fi
|
||||||
|
echo "Sleeping"
|
||||||
|
sleep 30
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.k3s = {
|
||||||
|
enable = true;
|
||||||
|
clusterInit = cfg.serverAddr == "";
|
||||||
|
serverAddr = cfg.serverAddr;
|
||||||
|
configPath = pkgs.writeTextFile {
|
||||||
|
name = "k3s-config.yaml";
|
||||||
|
text = ''
|
||||||
|
kubelet-arg:
|
||||||
|
- "eviction-hard=nodefs.available<2Gi"
|
||||||
|
- "eviction-soft=nodefs.available<5Gi"
|
||||||
|
- "eviction-soft-grace-period=nodefs.available=5m"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
tokenFile = config.age.secrets."1896Folsom-k3s-token.age".path;
|
||||||
|
extraFlags =
|
||||||
|
[
|
||||||
|
"--tls-san ryzen-shine.local"
|
||||||
|
"--tls-san nixquick.local"
|
||||||
|
"--tls-san biskcomp.local"
|
||||||
|
"--tls-san jimi-hendnix.local"
|
||||||
|
"--tls-san dev.railbird.ai"
|
||||||
|
"--node-label nixos-nvidia-cdi=enabled"
|
||||||
|
"--etcd-arg=quota-backend-bytes=8589934592"
|
||||||
|
]
|
||||||
|
++ cfg.extraFlags;
|
||||||
|
containerdConfigTemplate = ''
|
||||||
|
{{ template "base" . }}
|
||||||
|
|
||||||
|
plugins."io.containerd.grpc.v1.cri".cdi_spec_dirs = [ "/var/run/cdi" ]
|
||||||
|
plugins."io.containerd.grpc.v1.cri".enable_cdi = true
|
||||||
|
|
||||||
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
|
||||||
|
runtime_type = "io.containerd.runc.v2"
|
||||||
|
|
||||||
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
|
||||||
|
BinaryName = "/run/current-system/sw/bin/nvidia-container-runtime.cdi"
|
||||||
|
|
||||||
|
[debug]
|
||||||
|
level = "trace"
|
||||||
|
'';
|
||||||
|
gracefulNodeShutdown = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
{ pkgs, inputs, config, makeEnable, ... }:
|
{ pkgs, config, makeEnable, ... }:
|
||||||
makeEnable config "modules.kat" false {
|
makeEnable config "myModules.kat" false {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
bitwarden
|
|
||||||
obsidian
|
obsidian
|
||||||
obs-studio
|
bitwarden
|
||||||
ffmpeg
|
code-cursor
|
||||||
|
obsidian
|
||||||
|
windsurf
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.extraInit = ''
|
environment.extraInit = ''
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ rec {
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIoHW29TmS5FgK12N+bCXhGWASDdmzqSEA0QxbyGaJ+j nixquick.local"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIoHW29TmS5FgK12N+bCXhGWASDdmzqSEA0QxbyGaJ+j nixquick.local"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIaA0tRVTqwBDxY6X03wx+50pbB37y5e8gqFpFMDa/Bj adele.local"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIaA0tRVTqwBDxY6X03wx+50pbB37y5e8gqFpFMDa/Bj adele.local"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4j70BoksIEiX+OMBCsSG8wvMIEwoRQf5Gz5ppbm7Iy jimi-hendnix.local"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4j70BoksIEiX+OMBCsSG8wvMIEwoRQf5Gz5ppbm7Iy jimi-hendnix.local"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYAoN3l15Avweu5fcfcnlRzmFPHtlYIpo02sxBHANZ+ strixy-minaj.local"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFTYwBuQ3CNbkj6gAQ0oqxhPlKZ+X6tUaZotccowzjCW justin-bieber-creek.local"
|
||||||
];
|
];
|
||||||
kanivanKeys = [
|
kanivanKeys = [
|
||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUSkj7587e+MAUNyU/KRpw9Vk++53Wv5nB+0V1QgiTO3rMQe6HJt0Tm2wi/o/T8GNjueT2D69YgkqOIF1FQwsj2EFLObcMzeBgs5gTSglqggA2I91BIc1vvgjCDpogOMAzAQGlTxRnqrEXhqG0jJtw8KIzLr9WrvWLdTT4rHtWS8RoOBgkQ8oxbggZ4vtbMBIwoIAYGRr70KBRNCsLTPLa8yEf+DDQxq1entzxSjHXHgyeBSVVpPCrBVmhjandk+lIFInjvAiAE1ZkJHSRccL73ORmgb1crwH7xlD9NwBPmypowMi8UIRMKfL2lNehT0AQIlEAikUBLMDzPIPhnwLZ imalison@ivanm-dfinity-razer.local"
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUSkj7587e+MAUNyU/KRpw9Vk++53Wv5nB+0V1QgiTO3rMQe6HJt0Tm2wi/o/T8GNjueT2D69YgkqOIF1FQwsj2EFLObcMzeBgs5gTSglqggA2I91BIc1vvgjCDpogOMAzAQGlTxRnqrEXhqG0jJtw8KIzLr9WrvWLdTT4rHtWS8RoOBgkQ8oxbggZ4vtbMBIwoIAYGRr70KBRNCsLTPLa8yEf+DDQxq1entzxSjHXHgyeBSVVpPCrBVmhjandk+lIFInjvAiAE1ZkJHSRccL73ORmgb1crwH7xlD9NwBPmypowMi8UIRMKfL2lNehT0AQIlEAikUBLMDzPIPhnwLZ imalison@ivanm-dfinity-razer.local"
|
||||||
@@ -23,6 +25,8 @@ rec {
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOVGIGnpkU7HNQ/zl/Ffi562M+laWY9/yIjB63BCMiTS kat@nixcomp.local"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOVGIGnpkU7HNQ/zl/Ffi562M+laWY9/yIjB63BCMiTS kat@nixcomp.local"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3tlMePru6ZlSuf8yUii3N1dy3WwJnSQAt3EgETkctK kat@jay-lenovo.local"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3tlMePru6ZlSuf8yUii3N1dy3WwJnSQAt3EgETkctK kat@jay-lenovo.local"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrOYD3ReFc2+xFUylBFHREcm1lO7BRJGW5JrOoY3I8s ivanm@strixi-minaj"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrOYD3ReFc2+xFUylBFHREcm1lO7BRJGW5JrOoY3I8s ivanm@strixi-minaj"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYy93265G59aA1ksckjqlfeHq0vpEpzC8BwqCrpeXdh kat@Kats-Mac-mini.local"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG60q//rVd2JESQT59XLvLdsH9AdYfQXTkXMjx9pH3xp imalison@justin-bieber-creek"
|
||||||
];
|
];
|
||||||
deanKeys = [
|
deanKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICDvbEVL+y7eV4+mtxOuHwyomBBQ6uYMesctstua20+e deanwenstrand@deans-mbp-2.lan"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICDvbEVL+y7eV4+mtxOuHwyomBBQ6uYMesctstua20+e deanwenstrand@deans-mbp-2.lan"
|
||||||
@@ -38,6 +42,7 @@ rec {
|
|||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqBnDZXcZIMtOTPxg4pJWyMyNp84kpU2uH88aCkrhMBY2TI4dqAXGY4h1DOyOEyQo9nTgyvdlv4M1Hlp5tzfbuapdTWtt36gb+FKpsTUy8dz45fhKJerUszNbVQ+SpZu4ZFN4Nv9eP3AHO+Mzjcvbf666VMDEzZWu2totd7jxyI9PdK78TD5AOi+kGTtbEgqMpJCcZmJlzJ9NJJ2ejhPCRwcfDrShHcfMeEwWL5MmnzT+WstkRwJAM0f9/ks77jWDnB1Eu55rQykU8zVZ1nz1GiXZcxUpm6B0IRhwn8NGH6nVzSLITtO5eJ7LPQR9XNUODpbrsVGNK6jgGql9gZpYp andy@nixos"
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqBnDZXcZIMtOTPxg4pJWyMyNp84kpU2uH88aCkrhMBY2TI4dqAXGY4h1DOyOEyQo9nTgyvdlv4M1Hlp5tzfbuapdTWtt36gb+FKpsTUy8dz45fhKJerUszNbVQ+SpZu4ZFN4Nv9eP3AHO+Mzjcvbf666VMDEzZWu2totd7jxyI9PdK78TD5AOi+kGTtbEgqMpJCcZmJlzJ9NJJ2ejhPCRwcfDrShHcfMeEwWL5MmnzT+WstkRwJAM0f9/ks77jWDnB1Eu55rQykU8zVZ1nz1GiXZcxUpm6B0IRhwn8NGH6nVzSLITtO5eJ7LPQR9XNUODpbrsVGNK6jgGql9gZpYp andy@nixos"
|
||||||
];
|
];
|
||||||
willKeys = [
|
willKeys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDqBw9QBC0t1TGu7JdryJ6vX3hkBjNnDLe4GFptN2Y3k willgester@gmail.com"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgLjW6R+dTEmlUoPfE4GA8gRn93UlcSJqlJP1xw0KWl willgester@gmail.com"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgLjW6R+dTEmlUoPfE4GA8gRn93UlcSJqlJP1xw0KWl willgester@gmail.com"
|
||||||
];
|
];
|
||||||
loewyKeys = [
|
loewyKeys = [
|
||||||
@@ -55,4 +60,6 @@ rec {
|
|||||||
benKeys = [
|
benKeys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAJ6lD0c+frh2vzQjvsrsmJpwM1ovaY59m5NNPml5G+E benjamin.j.corner@gmail.com"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAJ6lD0c+frh2vzQjvsrsmJpwM1ovaY59m5NNPml5G+E benjamin.j.corner@gmail.com"
|
||||||
];
|
];
|
||||||
|
interviewKeys = [
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
23
nixos/kubelet-client.crt
Normal file
23
nixos/kubelet-client.crt
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDyTCCAjGgAwIBAgIRAMQBZiVjA5BGSkDldScI9cMwDQYJKoZIhvcNAQELBQAw
|
||||||
|
LzEtMCsGA1UEAxMkM2I2N2M2NzgtNzI5My00YTIzLTg3ZWItY2NiMTZjYWFkMzFm
|
||||||
|
MB4XDTI0MDkyOTIwNTAzNloXDTI5MDkyODIwNTIzNlowOTEVMBMGA1UEChMMc3lz
|
||||||
|
dGVtOm5vZGVzMSAwHgYDVQQDExdzeXN0ZW06bm9kZTpyeXplbi1zaGluZTCCASIw
|
||||||
|
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANIOfbq05IIdgX2jXYLaEt66rkXp
|
||||||
|
NlqPNfh6v9nL1Aw6PSM3DEIWXVko8AyduRF4kXNO6xc6l/Rzk03w3qSvJpWpALGD
|
||||||
|
JjslgRL4VJWUC6/QydsCO9io7SoUEmXFtDcsW6DftFejosr+56ZnVFrz5MMzfUAL
|
||||||
|
Ix6n83NJvXZ8f9oHSX8TFW34ZClLxDq2fprFIs+D2QlFRE50Jr/Q8gPI2OSQDUBW
|
||||||
|
DFdQrjt81bLs6doQipUqvHb4/Ms49agHek1ceWIMf+KZWoao5KNQTBe6XL2BUgA/
|
||||||
|
MS3ZvQppDDTygA0QkgdtOJyG2lsrAmd7LEXTr9ilsqLV3YQMMKhCifwINa0CAwEA
|
||||||
|
AaNWMFQwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAwGA1Ud
|
||||||
|
EwEB/wQCMAAwHwYDVR0jBBgwFoAUjvcbOeZ4QIk53EkATOaOFiAZUq0wDQYJKoZI
|
||||||
|
hvcNAQELBQADggGBAELWgmdmg9TKjDDqmF6pYr1j43gZYclXW4sB509itSiIeltX
|
||||||
|
Isrvn5R5ok0W5Jcl+7QMhpntqIKJi26OqbcdBhqlaVURkBkbrx8aegkWJfPO+Fzz
|
||||||
|
NyyiIpk7KQzGy6N5//jfMPZtJfQEQZwMenW0cj7F0QHOdVZy90+JNr2P3uV3Ad7u
|
||||||
|
WZuYpbOFjOeQg1hJsX8wEU4KJyptn/kXhM+CqAnQ4S+k2wpjECD8KpWKAmpJWZg0
|
||||||
|
RaBPyHZSmWnbXqs4LU6ERaZJxZQG0ODuA18DmGfaAkUUUvE2J0ploc2Y8Xl4zUWW
|
||||||
|
Ivwslyx30YO3J9qI30d9tTQw/A0vHCoDNDbCg7lorZqP3TiTG9ANLndPqqg6inYU
|
||||||
|
yfj612//JrO8w/4qh7cxR03P35aK0paLC74FaKLtZ5CwPK3BAW/0Zhv5fH4io6hE
|
||||||
|
rfJmcjhbKD0Cwr9Dn6wVFz/a33H+0vMohHrVlDk4bSDIymbuJcZpYgR8n5WNQbGu
|
||||||
|
nwjiLXCnVxcVjkcj2w==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
22
nixos/kubelet.nix
Normal file
22
nixos/kubelet.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ config, pkgs, makeEnable, ... }:
|
||||||
|
makeEnable config "myModules.kubelet" false {
|
||||||
|
age.secrets."api_service_account_key.json.age".file = ./secrets/api_service_account_key.json.age;
|
||||||
|
services.kubernetes.kubelet = {
|
||||||
|
enable = true;
|
||||||
|
kubeconfig = {
|
||||||
|
server = "https://34.31.205.230";
|
||||||
|
caFile = ./railbird-kubernetes.crt;
|
||||||
|
certFile = ./kubelet-client.crt;
|
||||||
|
keyFile = config.age.secrets."api_service_account_key.json.age".path;
|
||||||
|
};
|
||||||
|
registerNode = true;
|
||||||
|
cni = {
|
||||||
|
packages = [ pkgs.cni-plugins pkgs.calico-cni-plugin ];
|
||||||
|
};
|
||||||
|
extraOpts = ''
|
||||||
|
--fail-swap-on=false
|
||||||
|
# --container-runtime=remote
|
||||||
|
# --container-runtime-endpoint=unix:///run/containerd/containerd.sock
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
6
nixos/laptop.nix
Normal file
6
nixos/laptop.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ makeEnable, config, ... }:
|
||||||
|
makeEnable config "myModules.laptop" true {
|
||||||
|
services.logind = {
|
||||||
|
lidSwitchExternalPower = "ignore";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,21 +1,29 @@
|
|||||||
{ config, lib, pkgs, inputs, forEachUser, ... }:
|
{ lib, pkgs, inputs, forEachUser, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
inputs.nixos-hardware.nixosModules.dell-xps-17-9700-nvidia
|
inputs.nixos-hardware.nixosModules.dell-xps-17-9700-nvidia
|
||||||
];
|
];
|
||||||
|
|
||||||
modules.base.enable = true;
|
# services.tts.servers.coqui = {
|
||||||
modules.desktop.enable = true;
|
# enable = false;
|
||||||
modules.xmonad.enable = true;
|
# useCuda = false;
|
||||||
modules.extra.enable = false;
|
# port = 11400;
|
||||||
modules.code.enable = true;
|
# };
|
||||||
modules.games.enable = false;
|
|
||||||
modules.syncthing.enable = true;
|
myModules.wyoming.enable = false;
|
||||||
modules.fonts.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.nixified-ai.enable = false;
|
myModules.desktop.enable = true;
|
||||||
modules.gitea-runner.enable = false;
|
myModules.xmonad.enable = true;
|
||||||
|
myModules.extra.enable = false;
|
||||||
|
myModules.code.enable = true;
|
||||||
|
myModules.games.enable = false;
|
||||||
|
myModules.syncthing.enable = true;
|
||||||
|
myModules.fonts.enable = true;
|
||||||
|
myModules.nixified-ai.enable = false;
|
||||||
|
myModules.gitea-runner.enable = false;
|
||||||
|
hardware.nvidia.open = true;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
@@ -23,7 +31,7 @@
|
|||||||
android-studio
|
android-studio
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
@@ -33,7 +41,7 @@
|
|||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
services.xserver.libinput = {
|
services.libinput = {
|
||||||
enable = true;
|
enable = true;
|
||||||
touchpad.tapping = true;
|
touchpad.tapping = true;
|
||||||
};
|
};
|
||||||
@@ -59,7 +67,7 @@
|
|||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
networking.hostName = "adele";
|
networking.hostName = "adell";
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||||
|
|
||||||
@@ -8,10 +8,10 @@
|
|||||||
sublime
|
sublime
|
||||||
vlc
|
vlc
|
||||||
];
|
];
|
||||||
modules.desktop.enable = false;
|
myModules.desktop.enable = false;
|
||||||
modules.plasma.enable = false;
|
myModules.plasma.enable = false;
|
||||||
imalison.nixOverlay.enable = false;
|
imalison.nixOverlay.enable = false;
|
||||||
modules.wsl.enable = true;
|
myModules.wsl.enable = true;
|
||||||
|
|
||||||
networking.hostName = "bencbox";
|
networking.hostName = "bencbox";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ forEachUser, ... }:
|
{ pkgs, lib, forEachUser, config, ... }:
|
||||||
let biskcomp-nginx-hostnames = "192.168.1.44 railbird.ai 1896Folsom.duckdns.org biskcomp.local 0.0.0.0 67.162.131.71";
|
let biskcomp-nginx-hostnames = "192.168.1.44 railbird.ai 1896Folsom.duckdns.org biskcomp.local 0.0.0.0 67.162.131.71";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -13,28 +13,42 @@ in
|
|||||||
extraGroups = ["syncthing"];
|
extraGroups = ["syncthing"];
|
||||||
};
|
};
|
||||||
|
|
||||||
modules.raspberry-pi.enable = true;
|
myModules.home-assistant.enable = true;
|
||||||
|
myModules.raspberry-pi.enable = true;
|
||||||
modules.base.enable = true;
|
myModules.plasma.enable = false;
|
||||||
modules.desktop.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.xmonad.enable = false;
|
myModules.desktop.enable = false;
|
||||||
modules.extra.enable = false;
|
myModules.xmonad.enable = false;
|
||||||
modules.code.enable = true;
|
myModules.extra.enable = false;
|
||||||
modules.games.enable = false;
|
myModules.code.enable = true;
|
||||||
modules.syncthing.enable = true;
|
myModules.games.enable = false;
|
||||||
modules.fonts.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
modules.nixified-ai.enable = false;
|
myModules.fonts.enable = true;
|
||||||
modules.cache-server = {
|
myModules.nixified-ai.enable = false;
|
||||||
|
myModules.cache-server = {
|
||||||
enable = false;
|
enable = false;
|
||||||
host-string = biskcomp-nginx-hostnames;
|
host-string = biskcomp-nginx-hostnames;
|
||||||
port = 80;
|
port = 80;
|
||||||
path = "/nix-cache";
|
path = "/nix-cache";
|
||||||
};
|
};
|
||||||
modules.gitea.enable = true;
|
myModules.gitea.enable = true;
|
||||||
modules.gitea-runner.enable = false;
|
myModules.gitea-runner.enable = false;
|
||||||
|
|
||||||
|
myModules.railbird-k3s = {
|
||||||
|
enable = false;
|
||||||
|
serverAddr = "https://dev.railbird.ai:6443";
|
||||||
|
};
|
||||||
|
services.k3s.disableAgent = true;
|
||||||
|
|
||||||
|
age.secrets.vaultwarden-environment-file = {
|
||||||
|
file = ../secrets/vaultwarden-environment-file.age;
|
||||||
|
owner = "vaultwarden";
|
||||||
|
};
|
||||||
|
|
||||||
services.vaultwarden = {
|
services.vaultwarden = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
backupDir = "/var/backup/vaultwarden";
|
||||||
|
environmentFile = config.age.secrets.vaultwarden-environment-file.path;
|
||||||
config = {
|
config = {
|
||||||
ROCKET_ADDRESS = "::1";
|
ROCKET_ADDRESS = "::1";
|
||||||
ROCKET_PORT = 8222;
|
ROCKET_PORT = 8222;
|
||||||
@@ -46,14 +60,62 @@ in
|
|||||||
defaults.email = "IvanMalison@gmail.com";
|
defaults.email = "IvanMalison@gmail.com";
|
||||||
};
|
};
|
||||||
|
|
||||||
# services.nextcloud = {
|
services.gitlab = {
|
||||||
# enable = true;
|
enable = true;
|
||||||
# hostName = "nextcloud.railbird.ai";
|
databasePasswordFile = pkgs.writeText "dbPassword" "zgvcyfwsxzcwr85l";
|
||||||
# config = {
|
initialRootPasswordFile = pkgs.writeText "rootPassword" "dakqdvp4ovhksxer";
|
||||||
# dbtype = "pgsql";
|
host = "gitlab.railbird.ai";
|
||||||
# database.createLocally = true;
|
secrets = {
|
||||||
# };
|
secretFile = pkgs.writeText "secret" "Aig5zaic";
|
||||||
# };
|
otpFile = pkgs.writeText "otpsecret" "Riew9mue";
|
||||||
|
dbFile = pkgs.writeText "dbsecret" "we2quaeZ";
|
||||||
|
jwsFile = pkgs.runCommand "oidcKeyBase" {} "${pkgs.openssl}/bin/openssl genrsa 2048 > $out";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.discourse-admin-password = {
|
||||||
|
file = ../secrets/discourse-admin-password.age;
|
||||||
|
mode = "770";
|
||||||
|
owner = "discourse";
|
||||||
|
group = "users";
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.discourse-secret-key-base = {
|
||||||
|
file = ../secrets/discourse-secret-key-base.age;
|
||||||
|
group = "users";
|
||||||
|
owner = "discourse";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.discourse = {
|
||||||
|
enable = false;
|
||||||
|
enableACME = true;
|
||||||
|
hostname = "discourse.railbird.ai";
|
||||||
|
admin = {
|
||||||
|
passwordFile = config.age.secrets.discourse-admin-password.path;
|
||||||
|
email = "support@railbird.ai";
|
||||||
|
fullName = "Admin";
|
||||||
|
username = "admin";
|
||||||
|
};
|
||||||
|
secretKeyBaseFile = config.age.secrets.discourse-secret-key-base.path;
|
||||||
|
database.ignorePostgresqlVersion = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.emacs-org-api = {
|
||||||
|
description = "Emacs org api";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = ''${pkgs.runtimeShell} -l -c "${lib.getExe' pkgs.emacs "emacs"} --load /home/imalison/.emacs.d/org-api.el --daemon=org-api"'';
|
||||||
|
RemainAfterExit = true;
|
||||||
|
Restart = "on-failure";
|
||||||
|
User = "imalison";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.org-api-passwords = {
|
||||||
|
file = ../secrets/org-api-passwords.age;
|
||||||
|
owner = "nginx";
|
||||||
|
};
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -61,6 +123,23 @@ in
|
|||||||
recommendedGzipSettings = true;
|
recommendedGzipSettings = true;
|
||||||
recommendedTlsSettings = true;
|
recommendedTlsSettings = true;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
|
"org-mode.1896Folsom.duckdns.org" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:2025";
|
||||||
|
basicAuthFile = config.age.secrets.org-api-passwords.path;
|
||||||
|
extraConfig = ''
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Allow-Methods' 'POST, PUT, DELETE, GET, PATCH, OPTIONS' always;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"gitlab.railbird.ai" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
|
||||||
|
};
|
||||||
"vaultwarden.railbird.ai" = {
|
"vaultwarden.railbird.ai" = {
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
@@ -68,13 +147,6 @@ in
|
|||||||
proxyPass = "http://[::1]:8222";
|
proxyPass = "http://[::1]:8222";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"cache.railbird.ai" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://192.168.1.20:3090";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"syncthing.railbird.ai" = {
|
"syncthing.railbird.ai" = {
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
@@ -85,6 +157,16 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"docs.railbird.ai" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
root = "/var/lib/syncthing/railbird/docs";
|
||||||
|
locations."/" = {
|
||||||
|
extraConfig = ''
|
||||||
|
autoindex on;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -97,20 +179,6 @@ in
|
|||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.home-assistant = {
|
|
||||||
enable = false;
|
|
||||||
extraComponents = [
|
|
||||||
# Components required to complete the onboarding
|
|
||||||
"met"
|
|
||||||
"radio_browser"
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
# Includes dependencies for a basic setup
|
|
||||||
# https://www.home-assistant.io/integrations/default_config/
|
|
||||||
default_config = {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
{ device = "/swapfile"; size = 8192; } # size is in MiB
|
{ device = "/swapfile"; size = 8192; } # size is in MiB
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
../configuration.nix
|
../configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
modules.base.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.desktop.enable = true;
|
myModules.desktop.enable = true;
|
||||||
modules.xmonad.enable = false;
|
myModules.xmonad.enable = false;
|
||||||
modules.extra.enable = false;
|
myModules.extra.enable = false;
|
||||||
modules.code.enable = true;
|
myModules.code.enable = true;
|
||||||
modules.games.enable = false;
|
myModules.games.enable = false;
|
||||||
modules.syncthing.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
modules.fonts.enable = true;
|
myModules.fonts.enable = true;
|
||||||
modules.nixified-ai.enable = false;
|
myModules.nixified-ai.enable = false;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
];
|
];
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
environment.systemPackages = with pkgs; [sublime];
|
environment.systemPackages = with pkgs; [sublime];
|
||||||
modules.desktop.enable = false;
|
myModules.desktop.enable = false;
|
||||||
modules.plasma.enable = false;
|
myModules.plasma.enable = false;
|
||||||
imalison.nixOverlay.enable = false;
|
imalison.nixOverlay.enable = false;
|
||||||
modules.wsl.enable = true;
|
myModules.wsl.enable = true;
|
||||||
|
|
||||||
networking.hostName = "dean-zephyrus";
|
networking.hostName = "dean-zephyrus";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
imalison.nixOverlay.enable = false;
|
imalison.nixOverlay.enable = false;
|
||||||
modules.wsl.enable = true;
|
myModules.wsl.enable = true;
|
||||||
|
|
||||||
networking.hostName = "jay-lenovo-wsl";
|
networking.hostName = "jay-lenovo-wsl";
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,14 @@
|
|||||||
../configuration.nix
|
../configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
myModules.wyoming.enable = true;
|
||||||
features.full.enable = true;
|
features.full.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
android-studio
|
android-studio
|
||||||
linuxPackages_latest.perf
|
linuxPackages_latest.perf
|
||||||
zenmonitor
|
zenmonitor
|
||||||
|
code-cursor
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
@@ -26,8 +28,8 @@
|
|||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
modules.postgres.enable = true;
|
myModules.postgres.enable = true;
|
||||||
|
myModules.kat.enable = true;
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
|
|||||||
@@ -5,23 +5,23 @@
|
|||||||
../configuration.nix
|
../configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
modules.base.enable = true;
|
myModules.railbird-k3s = {
|
||||||
modules.desktop.enable = true;
|
enable = true;
|
||||||
modules.xmonad.enable = true;
|
serverAddr = "https://ryzen-shine.local:6443";
|
||||||
modules.extra.enable = false;
|
};
|
||||||
modules.code.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.games.enable = false;
|
myModules.desktop.enable = true;
|
||||||
modules.syncthing.enable = true;
|
myModules.xmonad.enable = true;
|
||||||
modules.fonts.enable = true;
|
myModules.extra.enable = false;
|
||||||
modules.nixified-ai.enable = false;
|
myModules.code.enable = true;
|
||||||
modules.gitea-runner.enable = true;
|
myModules.games.enable = false;
|
||||||
modules.postgres.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
|
myModules.fonts.enable = true;
|
||||||
|
myModules.gitea-runner.enable = true;
|
||||||
|
myModules.postgres.enable = true;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
myModules.nvidia.enable = true;
|
||||||
# install nvidia drivers in addition to intel one
|
|
||||||
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
|
|
||||||
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
|||||||
207
nixos/machines/justin-bieber-creek.nix
Normal file
207
nixos/machines/justin-bieber-creek.nix
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
{ config, lib, pkgs, forEachUser, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services.synergy.server = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
myModules.fonts.enable = true;
|
||||||
|
myModules.base.enable = true;
|
||||||
|
myModules.desktop.enable = true;
|
||||||
|
myModules.xmonad.enable = true;
|
||||||
|
myModules.wyoming.enable = true;
|
||||||
|
|
||||||
|
networking.enableIPv6 = true;
|
||||||
|
|
||||||
|
services.synergy.client = {
|
||||||
|
enable = true;
|
||||||
|
serverAddress = "strixi-minaj.local:24800";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.kernel.sysctl = {
|
||||||
|
# For all interfaces (e.g. if you want to accept RA on all):
|
||||||
|
"net.ipv6.conf.all.accept_ra" = lib.mkForce "1";
|
||||||
|
"net.ipv6.conf.all.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
||||||
|
"net.ipv6.conf.default.accept_ra" = lib.mkForce "1";
|
||||||
|
"net.ipv6.conf.default.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
||||||
|
"net.ipv6.conf.wlo1.accept_ra" = lib.mkForce "1";
|
||||||
|
"net.ipv6.conf.wlo1.accept_ra_rt_info_max_plen" = lib.mkForce "64";
|
||||||
|
|
||||||
|
# Ensure forwarding is off on all interfaces unless needed
|
||||||
|
"net.ipv6.conf.all.forwarding" = lib.mkForce "0";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.otbr-agent = {
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openthread-border-router = {
|
||||||
|
enable = true;
|
||||||
|
backboneInterface = "wpan0";
|
||||||
|
logLevel = "debug";
|
||||||
|
radio = {
|
||||||
|
device = "/dev/serial/by-id/usb-Nabu_Casa_Home_Assistant_Connect_ZBT-1_0cd053abfa38ef119c66e1d154516304-if00-port0";
|
||||||
|
baudRate = 460800;
|
||||||
|
flowControl = true;
|
||||||
|
};
|
||||||
|
web = {
|
||||||
|
listenPort = 8087;
|
||||||
|
};
|
||||||
|
rest = {
|
||||||
|
listenPort = 8089;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.matter-server = {
|
||||||
|
enable = true;
|
||||||
|
logLevel = "debug";
|
||||||
|
extraArgs = let cert-dir = pkgs.fetchFromGitHub {
|
||||||
|
repo = "connectedhomeip";
|
||||||
|
owner = "project-chip";
|
||||||
|
rev = "6e8676be6142bb541fa68048c77f2fc56a21c7b1";
|
||||||
|
hash = "sha256-QwPKn2R4mflTKMyr1k4xF04t0PJIlzNCOdXEiQwX5wk=";
|
||||||
|
}; in
|
||||||
|
[
|
||||||
|
"--bluetooth-adapter=0"
|
||||||
|
"--paa-root-cert-dir=${cert-dir}/credentials/production/paa-root-certs"
|
||||||
|
"--enable-test-net-dcl"
|
||||||
|
"--ota-provider-dir=/var/lib/matter-server/ota-provider"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets.google-service-account = {
|
||||||
|
file = ../secrets/google-assistant-integration-service-key.age;
|
||||||
|
owner = "hass";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.home-assistant = {
|
||||||
|
enable = true;
|
||||||
|
extraComponents = [
|
||||||
|
"anthropic"
|
||||||
|
"cast"
|
||||||
|
"dlna_dmr"
|
||||||
|
"esphome"
|
||||||
|
"google_assistant"
|
||||||
|
"homeassistant_hardware"
|
||||||
|
"homeassistant_sky_connect"
|
||||||
|
"homekit_controller"
|
||||||
|
"ibeacon"
|
||||||
|
"isal"
|
||||||
|
"kef"
|
||||||
|
"kegtron"
|
||||||
|
"matter"
|
||||||
|
"met"
|
||||||
|
"opensky"
|
||||||
|
"otbr"
|
||||||
|
"piper"
|
||||||
|
"radio_browser"
|
||||||
|
"roomba"
|
||||||
|
"samsungtv"
|
||||||
|
"thread"
|
||||||
|
"wake_word"
|
||||||
|
"webostv"
|
||||||
|
"whisper"
|
||||||
|
"wyoming"
|
||||||
|
"yale"
|
||||||
|
];
|
||||||
|
extraPackages = python3Packages: with python3Packages; [
|
||||||
|
numpy
|
||||||
|
python-matter-server
|
||||||
|
universal-silabs-flasher
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
http = {
|
||||||
|
use_x_forwarded_for = true;
|
||||||
|
trusted_proxies = ["0.0.0.0" "127.0.0.1" "::1" "192.168.50.1"];
|
||||||
|
};
|
||||||
|
google_assistant = {
|
||||||
|
project_id = "canyon-run-b104-home-assistant";
|
||||||
|
service_account = "!include ${config.age.secrets.google-service-account.path}";
|
||||||
|
report_state = true;
|
||||||
|
exposed_domains = ["switch" "light"];
|
||||||
|
};
|
||||||
|
default_config = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
defaults.email = "IvanMalison@gmail.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
|
||||||
|
virtualHosts = {
|
||||||
|
"homeassistant.canyonrunb104.duckdns.org" = {
|
||||||
|
enableACME = true;
|
||||||
|
addSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8123";
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"ha.canyonrunb104.duckdns.org" = {
|
||||||
|
enableACME = true;
|
||||||
|
addSSL = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8123";
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 3;
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
|
# Add Intel Wi-Fi firmware
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
hardware.enableAllFirmware = true;
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/453d28a1-26f2-4b25-ac72-c6d301fd0bb8";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/184E-E5E8";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
networking.hostName = "justin-bieber-creek";
|
||||||
|
|
||||||
|
networking.useDHCP = false;
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
|
home-manager.users = forEachUser {
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,13 +4,25 @@
|
|||||||
../configuration.nix
|
../configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
services.macos-ventura = {
|
||||||
|
enable = false;
|
||||||
|
openFirewall = true;
|
||||||
|
vncListenAddr = "0.0.0.0";
|
||||||
|
};
|
||||||
|
|
||||||
features.full.enable = true;
|
features.full.enable = true;
|
||||||
modules.cache-server = {
|
myModules.cache-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 3090;
|
port = 3090;
|
||||||
};
|
};
|
||||||
modules.gitea-runner.enable = true;
|
myModules.gitea-runner.enable = true;
|
||||||
modules.vscode.enable = true;
|
myModules.vscode.enable = true;
|
||||||
|
myModules.kat.enable = true;
|
||||||
|
myModules.nvidia.enable = true;
|
||||||
|
myModules.railbird-k3s = {
|
||||||
|
enable = true;
|
||||||
|
serverAddr = "https://dev.railbird.ai:6443";
|
||||||
|
};
|
||||||
|
|
||||||
networking.hostName = "nixquick";
|
networking.hostName = "nixquick";
|
||||||
|
|
||||||
@@ -21,15 +33,6 @@
|
|||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
# install nvidia drivers in addition to intel one
|
|
||||||
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
|
|
||||||
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
|
|
||||||
services.xserver = {
|
|
||||||
videoDrivers = [ "nvidia" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.opengl.driSupport32Bit = true;
|
|
||||||
|
|
||||||
hardware.nvidia.modesetting.enable = true;
|
hardware.nvidia.modesetting.enable = true;
|
||||||
|
|
||||||
# This also enables v4l2loopback
|
# This also enables v4l2loopback
|
||||||
|
|||||||
@@ -12,58 +12,37 @@
|
|||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
myModules.postgres.enable = true;
|
||||||
|
features.full.enable = true;
|
||||||
|
|
||||||
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
|
services.k3s.role = "agent";
|
||||||
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
|
services.k3s.extraFlags = lib.mkForce ["--node-label nixos-nvidia-cdi=enabled"];
|
||||||
services.xserver = {
|
|
||||||
videoDrivers = [ "nvidia" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable OpenGL
|
|
||||||
hardware.opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.nvidia = {
|
hardware.nvidia = {
|
||||||
|
|
||||||
# Modesetting is required.
|
|
||||||
modesetting.enable = true;
|
|
||||||
|
|
||||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
|
||||||
powerManagement.enable = false;
|
powerManagement.enable = false;
|
||||||
# Fine-grained power management. Turns off GPU when not in use.
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
powerManagement.finegrained = false;
|
powerManagement.finegrained = false;
|
||||||
|
|
||||||
# Use the NVidia open source kernel module (not to be confused with the
|
|
||||||
# independent third-party "nouveau" open source driver).
|
|
||||||
# Support is limited to the Turing and later architectures. Full list of
|
|
||||||
# supported GPUs is at:
|
|
||||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
|
||||||
# Only available from driver 515.43.04+
|
|
||||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
|
||||||
open = false;
|
|
||||||
|
|
||||||
# Enable the Nvidia settings menu,
|
# Enable the Nvidia settings menu,
|
||||||
# accessible via `nvidia-settings`.
|
# accessible via `nvidia-settings`.
|
||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
|
|
||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
features.full.enable = false;
|
features.full.enable = false;
|
||||||
modules.base.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.desktop.enable = true;
|
myModules.desktop.enable = true;
|
||||||
modules.xmonad.enable = false;
|
myModules.xmonad.enable = false;
|
||||||
modules.gnome.enable = true;
|
myModules.code.enable = true;
|
||||||
modules.code.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
modules.syncthing.enable = true;
|
myModules.fonts.enable = true;
|
||||||
modules.fonts.enable = true;
|
myModules.plasma.enable = true;
|
||||||
modules.plasma.enable = false;
|
myModules.nvidia.enable = true;
|
||||||
modules.gitea-runner.enable = true;
|
myModules.gitea-runner.enable = true;
|
||||||
|
myModules.railbird-k3s = {
|
||||||
|
enable = false;
|
||||||
|
serverAddr = "https://dev.railbird.ai:6443";
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{ device = "/dev/disk/by-uuid/a317d456-6f84-41ee-a149-8e466e414aae";
|
{ device = "/dev/disk/by-uuid/a317d456-6f84-41ee-a149-8e466e414aae";
|
||||||
|
|||||||
101
nixos/machines/ryzen-shine-original.nix
Normal file
101
nixos/machines/ryzen-shine-original.nix
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
{ lib, pkgs, forEachUser, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
features.full.enable = true;
|
||||||
|
myModules.kubelet.enable = false;
|
||||||
|
myModules.nvidia.enable = true;
|
||||||
|
# Needed for now because monitors have different refresh rates
|
||||||
|
myModules.xmonad.picom.vSync.enable = false;
|
||||||
|
myModules.cache-server = {
|
||||||
|
enable = true;
|
||||||
|
port = 3090;
|
||||||
|
};
|
||||||
|
myModules.gitea-runner.enable = true;
|
||||||
|
myModules.postgres.enable = true;
|
||||||
|
myModules.railbird-k3s = {
|
||||||
|
enable = true;
|
||||||
|
# extraFlags = ["--node-taint preferNoSchedule=true:NoSchedule"];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 5;
|
||||||
|
|
||||||
|
networking.hostName = "ryzen-shine";
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
linuxPackages_latest.perf
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.systemd.enable = true;
|
||||||
|
boot.plymouth = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.autorandr = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
networking.interfaces.enp5s0.useDHCP = true;
|
||||||
|
networking.interfaces.wlp4s0.useDHCP = true;
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.luks.devices."cryptroot".device = "/dev/nvme0n1p5";
|
||||||
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
|
|
||||||
|
# install nvidia drivers in addition to intel one
|
||||||
|
hardware.graphics.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
|
||||||
|
hardware.graphics.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
|
||||||
|
services.xserver = {
|
||||||
|
videoDrivers = [ "nvidia" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.nvidia.modesetting.enable = true;
|
||||||
|
|
||||||
|
hardware.graphics.enable32Bit = true;
|
||||||
|
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/356173ab-d076-43e0-aeb6-6a6829c4402b";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/B270-C7E6";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/shared" = {
|
||||||
|
device = "/dev/disk/by-uuid/D4009CE8009CD33A";
|
||||||
|
fsType = "ntfs";
|
||||||
|
options = [ "nofail" "uid=0" "gid=users" "umask=002" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{ device = "/dev/disk/by-uuid/f719b44e-295a-4909-9a60-84f87acb7f77"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# nix.settings.maxJobs = lib.mkDefault 16;
|
||||||
|
# High-DPI console
|
||||||
|
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
|
||||||
|
|
||||||
|
# services.xrdp.enable = true;
|
||||||
|
# services.xrdp.defaultWindowManager = "startplasma-x11";
|
||||||
|
# services.xrdp.openFirewall = true;
|
||||||
|
|
||||||
|
system.stateVersion = "20.03";
|
||||||
|
home-manager.users = forEachUser {
|
||||||
|
home.stateVersion = "21.05";
|
||||||
|
};
|
||||||
|
|
||||||
|
# users.extraUsers.dean.home = "/shared/dean";
|
||||||
|
}
|
||||||
24
nixos/machines/ryzen-shine-wsl.nix
Normal file
24
nixos/machines/ryzen-shine-wsl.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{ lib, pkgs, config, inputs, forEachUser, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../configuration.nix
|
||||||
|
];
|
||||||
|
services.xserver.enable = true;
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
sublime
|
||||||
|
vlc
|
||||||
|
];
|
||||||
|
myModules.desktop.enable = false;
|
||||||
|
myModules.plasma.enable = false;
|
||||||
|
imalison.nixOverlay.enable = false;
|
||||||
|
myModules.wsl.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "ryzen-shine-wsl";
|
||||||
|
|
||||||
|
wsl.defaultUser = "imalison";
|
||||||
|
system.stateVersion = "22.05";
|
||||||
|
|
||||||
|
home-manager.users = forEachUser {
|
||||||
|
home.stateVersion = "22.05";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, inputs, forEachUser, ... }:
|
{ lib, pkgs, forEachUser, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -6,14 +6,23 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
features.full.enable = true;
|
features.full.enable = true;
|
||||||
|
myModules.kubelet.enable = false;
|
||||||
|
myModules.nvidia.enable = true;
|
||||||
# Needed for now because monitors have different refresh rates
|
# Needed for now because monitors have different refresh rates
|
||||||
modules.xmonad.picom.vSync.enable = false;
|
myModules.xmonad.picom.vSync.enable = false;
|
||||||
modules.cache-server = {
|
myModules.cache-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 3090;
|
port = 3090;
|
||||||
};
|
};
|
||||||
modules.gitea-runner.enable = true;
|
myModules.gitea-runner.enable = true;
|
||||||
modules.postgres.enable = true;
|
myModules.postgres.enable = true;
|
||||||
|
myModules.railbird-k3s = {
|
||||||
|
enable = true;
|
||||||
|
serverAddr = "https://jimi-hendnix.local:6443";
|
||||||
|
# extraFlags = ["--node-taint preferNoSchedule=true:NoSchedule"];
|
||||||
|
};
|
||||||
|
myModules.nixified-ai.enable = true;
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
boot.loader.systemd-boot.configurationLimit = 5;
|
boot.loader.systemd-boot.configurationLimit = 5;
|
||||||
|
|
||||||
@@ -41,43 +50,30 @@
|
|||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
boot.initrd.luks.devices."cryptroot".device = "/dev/nvme0n1p5";
|
|
||||||
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
|
||||||
|
|
||||||
# install nvidia drivers in addition to intel one
|
|
||||||
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
|
|
||||||
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
|
|
||||||
services.xserver = {
|
|
||||||
videoDrivers = [ "nvidia" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.nvidia.modesetting.enable = true;
|
hardware.nvidia.modesetting.enable = true;
|
||||||
|
|
||||||
hardware.opengl.driSupport32Bit = true;
|
hardware.graphics.enable32Bit = true;
|
||||||
|
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/356173ab-d076-43e0-aeb6-6a6829c4402b";
|
device = "/dev/disk/by-uuid/9bd06145-8151-4f7b-bcfe-f1809e0db1ea";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/B270-C7E6";
|
device = "/dev/disk/by-uuid/E1E1-909E";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/shared" = {
|
fileSystems."/shared" = {
|
||||||
device = "/dev/disk/by-uuid/D4009CE8009CD33A";
|
device = "/dev/disk/by-uuid/D4009CE8009CD33A";
|
||||||
fsType = "ntfs";
|
fsType = "ntfs";
|
||||||
options = [ "nofail" ];
|
options = [ "nofail" "uid=0" "gid=users" "umask=002" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{ device = "/dev/disk/by-uuid/f719b44e-295a-4909-9a60-84f87acb7f77"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# nix.settings.maxJobs = lib.mkDefault 16;
|
# nix.settings.maxJobs = lib.mkDefault 16;
|
||||||
# High-DPI console
|
# High-DPI console
|
||||||
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
|
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
|
||||||
@@ -91,5 +87,5 @@
|
|||||||
home.stateVersion = "21.05";
|
home.stateVersion = "21.05";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.extraUsers.dean.home = "/shared/dean";
|
# users.extraUsers.dean.home = "/shared/dean";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
../configuration.nix
|
../configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
modules.wsl.enable = true;
|
myModules.wsl.enable = true;
|
||||||
|
|
||||||
networking.hostName = "strixi-minaj-wsl";
|
networking.hostName = "strixi-minaj-wsl";
|
||||||
|
|
||||||
@@ -30,5 +30,6 @@
|
|||||||
"electron-19.1.9"
|
"electron-19.1.9"
|
||||||
"openssl-1.1.1w"
|
"openssl-1.1.1w"
|
||||||
"nix-2.16.2"
|
"nix-2.16.2"
|
||||||
|
"electron-32.3.3"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,64 +3,77 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
|
inputs.nixos-hardware.nixosModules.asus-rog-strix-g834jzr
|
||||||
];
|
];
|
||||||
|
|
||||||
modules.base.enable = true;
|
hardware.nvidia.open = true;
|
||||||
modules.desktop.enable = true;
|
myModules.base.enable = true;
|
||||||
modules.xmonad.enable = true;
|
myModules.desktop.enable = true;
|
||||||
modules.extra.enable = false;
|
myModules.xmonad.enable = true;
|
||||||
modules.code.enable = true;
|
myModules.extra.enable = false;
|
||||||
modules.games.enable = false;
|
myModules.code.enable = true;
|
||||||
modules.syncthing.enable = true;
|
myModules.games.enable = false;
|
||||||
modules.fonts.enable = true;
|
myModules.syncthing.enable = true;
|
||||||
modules.nixified-ai.enable = false;
|
myModules.fonts.enable = true;
|
||||||
modules.gitea-runner.enable = false;
|
myModules.gitea-runner.enable = false;
|
||||||
|
myModules.nvidia.enable = true;
|
||||||
|
myModules.electron.enable = true;
|
||||||
|
myModules.wyoming.enable = false;
|
||||||
|
myModules.tts.enable = false;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
# nixpkgs.config.cudaSupport = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
android-studio
|
android-studio
|
||||||
];
|
];
|
||||||
|
|
||||||
|
services.synergy.server = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
configFile = ../../dotfiles/synergy.conf;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.matter-server = {
|
||||||
|
enable = true;
|
||||||
|
logLevel = "debug";
|
||||||
|
extraArgs = ["--bluetooth-adapter=0" "--enable-test-net-dcl"];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
virtualisation.libvirtd.enable = true;
|
||||||
|
virtualisation.spiceUSBRedirection.enable = true;
|
||||||
|
|
||||||
services.xserver.dpi = 96;
|
services.xserver.dpi = 96;
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ "nvidia" "nvidia_drm" "nvidia_uvm" "nvidia_modeset" ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
services.xserver = {
|
hardware.nvidia.powerManagement.enable = true;
|
||||||
videoDrivers = [ "nvidia" ];
|
|
||||||
};
|
|
||||||
hardware.opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.production;
|
|
||||||
hardware.nvidia.modesetting.enable = true;
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
services.asusd.enable = true;
|
services.asusd.enable = true;
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
|
device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/B28A-829A";
|
device = "/dev/disk/by-uuid/B28A-829A";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [
|
||||||
[ { device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9"; }
|
{ device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "strixi-minaj";
|
networking.hostName = "strixi-minaj";
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.users = forEachUser {
|
||||||
home.stateVersion = "23.05";
|
home.stateVersion = "23.05";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ inputs, specialArgs, config, lib, ... }:
|
{ inputs, specialArgs, config, lib, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModule
|
inputs.home-manager.nixosModules.home-manager
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
};
|
};
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.backupFileExtension = "backup";
|
||||||
|
|
||||||
nix = rec {
|
nix = rec {
|
||||||
extraOptions = ''
|
extraOptions = ''
|
||||||
@@ -30,10 +31,12 @@
|
|||||||
substituters = [
|
substituters = [
|
||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
"https://cuda-maintainers.cachix.org"
|
"https://cuda-maintainers.cachix.org"
|
||||||
|
"https://ai.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"cache.railbird.ai:KhnvcouxtIU2zxUcjJsm4bUK3o1S3p8xMf9qfZGF7/A="
|
"cache.railbird.ai:KhnvcouxtIU2zxUcjJsm4bUK3o1S3p8xMf9qfZGF7/A="
|
||||||
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
|
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
|
||||||
|
"ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc="
|
||||||
];
|
];
|
||||||
nix-path = nixPath;
|
nix-path = nixPath;
|
||||||
};
|
};
|
||||||
@@ -44,6 +47,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
|
# (import ./nvidia-container-toolkit-overlay.nix)
|
||||||
|
(import ./runc-overlay.nix)
|
||||||
(import ./overlay.nix)
|
(import ./overlay.nix)
|
||||||
] ++ (if config.imalison.nixOverlay.enable then [ inputs.nix.overlays.default ] else []);
|
] ++ (if config.imalison.nixOverlay.enable then [ inputs.nix.overlays.default ] else []);
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,11 @@
|
|||||||
{ inputs, config, specialArgs, ... }:
|
{ inputs, config, specialArgs, ... }:
|
||||||
specialArgs.makeEnable config "modules.nixified-ai" false {
|
specialArgs.makeEnable config "myModules.nixified-ai" false {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixified-ai.nixosModules.invokeai
|
inputs.nixified-ai.nixosModules.comfyui
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [
|
services.comfyui = {
|
||||||
inputs.nixified-ai.packages.${config.nixpkgs.system}.invokeai-nvidia
|
enable = true;
|
||||||
];
|
host = "0.0.0.0";
|
||||||
|
};
|
||||||
services.invokeai = {
|
|
||||||
enable = false;
|
|
||||||
host = "0.0.0.0";
|
|
||||||
package = inputs.nixified-ai.packages.${config.nixpkgs.system}.invokeai-nvidia;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
nixos/notification-sound.wav
Normal file
BIN
nixos/notification-sound.wav
Normal file
Binary file not shown.
140
nixos/nvidia-container-toolkit-overlay.nix
Normal file
140
nixos/nvidia-container-toolkit-overlay.nix
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
final: prev: {
|
||||||
|
nvidia-container-toolkit = final.stdenv.mkDerivation {
|
||||||
|
pname = "nvidia-container-toolkit-debug";
|
||||||
|
version = prev.nvidia-container-toolkit.version;
|
||||||
|
|
||||||
|
# This is key: multiple outputs, so you can reference them later as:
|
||||||
|
# $out -> for main
|
||||||
|
# $tools -> for the 'tools' output in your new derivation
|
||||||
|
outputs = [ "out" "tools" ];
|
||||||
|
|
||||||
|
# No source required for a pure wrap
|
||||||
|
src = null;
|
||||||
|
dontUnpack = true;
|
||||||
|
dontPatchShell = true;
|
||||||
|
nativeBuildInputs = [ final.installShellFiles ] ++ final.lib.optionals final.stdenv.hostPlatform.isLinux [ final.makeWrapper ];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
prev.nvidia-container-toolkit
|
||||||
|
prev.nvidia-container-toolkit.tools
|
||||||
|
final.glibc
|
||||||
|
final.coreutils
|
||||||
|
final.bash
|
||||||
|
];
|
||||||
|
|
||||||
|
# Create wrapper scripts for each set of binaries
|
||||||
|
buildPhase = ''
|
||||||
|
# --- Wrap binaries from the main output of the original toolkit ---
|
||||||
|
mkdir -p wrapper-out
|
||||||
|
if [ -d "${prev.nvidia-container-toolkit}/bin" ]; then
|
||||||
|
for exe in $(ls ${prev.nvidia-container-toolkit}/bin); do
|
||||||
|
cat > wrapper-out/$exe <<EOF
|
||||||
|
#!${final.bash}/bin/bash
|
||||||
|
|
||||||
|
if [ "\$(id -u)" -eq 0 ]; then
|
||||||
|
mkdir -p /var/log/nvidia-container-toolkit
|
||||||
|
chown root:users /var/log/nvidia-container-toolkit
|
||||||
|
chmod 2777 /var/log/nvidia-container-toolkit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- STARTUP LOG ---
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe started" \
|
||||||
|
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
|
||||||
|
|
||||||
|
# --- COMMAND INVOCATION LOG ---
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Executing $exe with args: \$@" \
|
||||||
|
>> /var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
|
||||||
|
|
||||||
|
# --- Run the real tool, piping stdout+stderr to tee ---
|
||||||
|
${prev.nvidia-container-toolkit}/bin/$exe "\$@" > \
|
||||||
|
>(tee -a /var/log/nvidia-container-toolkit/$exe.stdout.log) \
|
||||||
|
2> >(tee -a /var/log/nvidia-container-toolkit/$exe.stderr.log >&2)
|
||||||
|
|
||||||
|
exit_code=\$?
|
||||||
|
|
||||||
|
# --- FINISHED LOG ---
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Finished $exe with exit code: \$exit_code" >> \
|
||||||
|
/var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe finished" \
|
||||||
|
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
|
||||||
|
EOF
|
||||||
|
chmod +x wrapper-out/$exe
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Wrap binaries from the 'tools' output of the original toolkit ---
|
||||||
|
mkdir -p wrapper-tools
|
||||||
|
if [ -d "${prev.nvidia-container-toolkit.tools}/bin" ]; then
|
||||||
|
for exe in $(ls ${prev.nvidia-container-toolkit.tools}/bin); do
|
||||||
|
cat > wrapper-tools/$exe <<EOF
|
||||||
|
#!${final.bash}/bin/bash
|
||||||
|
|
||||||
|
echo "STARTING TOOL"
|
||||||
|
|
||||||
|
if [ "\$(id -u)" -eq 0 ]; then
|
||||||
|
mkdir -p /var/log/nvidia-container-toolkit
|
||||||
|
chown root:users /var/log/nvidia-container-toolkit
|
||||||
|
chmod 2777 /var/log/nvidia-container-toolkit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- STARTUP LOG ---
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe started" \
|
||||||
|
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
|
||||||
|
|
||||||
|
# --- COMMAND INVOCATION LOG ---
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Executing $exe with args: \$@" \
|
||||||
|
>> /var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
|
||||||
|
|
||||||
|
debug_flag="$([[ $exe = "nvidia-cdi-hook" ]] && echo "--debug")"
|
||||||
|
|
||||||
|
|
||||||
|
ldd ${prev.nvidia-container-toolkit.tools}/bin/$exe
|
||||||
|
|
||||||
|
set +e
|
||||||
|
# --- Run the real tool, piping stdout+stderr to tee ---
|
||||||
|
${prev.nvidia-container-toolkit.tools}/bin/$exe $debug_flag "\$@" > \
|
||||||
|
>(tee -a /var/log/nvidia-container-toolkit/$exe.stdout.log) \
|
||||||
|
2> >(tee -a /var/log/nvidia-container-toolkit/$exe.stderr.log >&2) || true
|
||||||
|
|
||||||
|
exit_code=\$?
|
||||||
|
|
||||||
|
# --- FINISHED LOG ---
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Finished $exe with exit code: \$exit_code" >> \
|
||||||
|
/var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
|
||||||
|
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe finished" \
|
||||||
|
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
|
||||||
|
EOF
|
||||||
|
chmod +x wrapper-tools/$exe
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
# For the main output of our wrapper derivation
|
||||||
|
mkdir -p $out/bin
|
||||||
|
|
||||||
|
if [ -d wrapper-out ]; then
|
||||||
|
cp wrapper-out/* $out/bin/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For the 'tools' output of our wrapper derivation
|
||||||
|
mkdir -p $tools/bin
|
||||||
|
|
||||||
|
if [ -d wrapper-tools ]; then
|
||||||
|
cp wrapper-tools/* $tools/bin/
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
# If you need runtime dependencies, inherit them from the original package
|
||||||
|
propagatedBuildInputs = prev.nvidia-container-toolkit.propagatedBuildInputs or [];
|
||||||
|
propagatedUserEnvPkgs = prev.nvidia-container-toolkit.propagatedUserEnvPkgs or [];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Debug-wrapped NVIDIA Container Toolkit with separate tools output.";
|
||||||
|
homepage = prev.nvidia-container-toolkit.meta.homepage;
|
||||||
|
license = prev.nvidia-container-toolkit.meta.license;
|
||||||
|
maintainers = prev.nvidia-container-toolkit.meta.maintainers;
|
||||||
|
platforms = prev.nvidia-container-toolkit.meta.platforms;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
nixos/nvidia.nix
Normal file
25
nixos/nvidia.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{ config, pkgs, makeEnable, lib, ... }:
|
||||||
|
|
||||||
|
makeEnable config "myModules.nvidia" false {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nvidia-container-toolkit
|
||||||
|
nvidia-container-toolkit.tools
|
||||||
|
];
|
||||||
|
hardware.nvidia-container-toolkit = {
|
||||||
|
enable = true;
|
||||||
|
mount-nvidia-executables = true;
|
||||||
|
# additionalEdit = ''
|
||||||
|
# ${lib.getExe pkgs.jq} '
|
||||||
|
# .devices |= map(
|
||||||
|
# .containerEdits.hooks |= map(select(.args | index("nvidia-cdi-hook") < 0))
|
||||||
|
# )' | ${lib.getExe pkgs.jq} '.containerEdits.hooks |= map(select(.args | index("nvidia-cdi-hook") < 0 ))' '';
|
||||||
|
};
|
||||||
|
hardware.nvidia.open = true;
|
||||||
|
hardware.graphics.enable32Bit = true;
|
||||||
|
hardware.graphics.extraPackages = [ config.boot.kernelPackages.nvidia_x11.out ];
|
||||||
|
hardware.graphics.extraPackages32 = [ config.boot.kernelPackages.nvidia_x11.lib32 ];
|
||||||
|
services.xserver = {
|
||||||
|
videoDrivers = [ "nvidia" ];
|
||||||
|
};
|
||||||
|
# nixpkgs.config.cudaSupport = true;
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ lib, ... }: {
|
{ lib, ... }: {
|
||||||
options = {
|
options = {
|
||||||
modules.xmonad.picom.vSync.enable = lib.mkOption {
|
myModules.xmonad.picom.vSync.enable = lib.mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,68 @@
|
|||||||
final: prev: {
|
final: prev:
|
||||||
|
{
|
||||||
|
# nvidia-container-toolkit = prev.nvidia-container-toolkit.overrideAttrs(old: {
|
||||||
|
# postInstall = ''
|
||||||
|
# ${old.postInstall or ""}
|
||||||
|
# mv $tools/bin/nvidia-cdi-hook $tools/bin/.nvidia-cdi-hook-wrapped
|
||||||
|
# cat > $tools/bin/nvidia-cdi-hook <<EOF
|
||||||
|
# #!${final.bash}/bin/bash
|
||||||
|
# # Trap any errors, including crashes
|
||||||
|
# trap 'exit 0' ERR
|
||||||
|
# set +e
|
||||||
|
# $tools/bin/.nvidia-cdi-hook-wrapped "\$@" || true
|
||||||
|
# EOF
|
||||||
|
# chmod +x $tools/bin/nvidia-cdi-hook
|
||||||
|
# '';
|
||||||
|
# });
|
||||||
|
runc = final.stdenv.mkDerivation {
|
||||||
|
pname = "runc-with-logging";
|
||||||
|
version = builtins.getAttr "version" prev.runc or "unknown";
|
||||||
|
|
||||||
|
# No sources; we're only wrapping
|
||||||
|
src = null;
|
||||||
|
dontUnpack = true;
|
||||||
|
dontPatchShell = true;
|
||||||
|
dontBuild = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [final.installShellFiles];
|
||||||
|
buildInputs = [];
|
||||||
|
outputs = ["out" "man"];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/bin"
|
||||||
|
|
||||||
|
cat > "$out/bin/runc" <<EOF
|
||||||
|
#!${final.stdenv.shell}
|
||||||
|
|
||||||
|
# If we're running as root, ensure the /var/log/debug/runc directory exists
|
||||||
|
# with the desired permissions.
|
||||||
|
if [ "\$(id -u)" -eq 0 ]; then
|
||||||
|
mkdir -p /var/log/debug/runc
|
||||||
|
chown root:users /var/log/debug/runc
|
||||||
|
chmod 2777 /var/log/debug/runc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Log this invocation to /var/log/debug/runc/invocations.log
|
||||||
|
echo "\$(date) - runc invoked with: \$@" >> /var/log/debug/runc/invocations.log
|
||||||
|
|
||||||
|
# Hand off control to the original runc from prev.runc.
|
||||||
|
${prev.runc}/bin/runc --debug "\$@" > \
|
||||||
|
>(tee -a /var/log/debug/runc/stdout.log) \
|
||||||
|
2> >(tee -a /var/log/debug/runc/stderr.log >&2)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$out/bin/runc"
|
||||||
|
|
||||||
|
installManPage ${prev.runc.man}/*/*.[1-9]
|
||||||
|
mkdir -p $man
|
||||||
|
touch $man/afile
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Optionally inherit original metadata
|
||||||
|
meta = prev.runc.meta // {};
|
||||||
|
};
|
||||||
|
|
||||||
rofi-systemd = prev.rofi-systemd.overrideAttrs (_: {
|
rofi-systemd = prev.rofi-systemd.overrideAttrs (_: {
|
||||||
src = prev.fetchFromGitHub {
|
src = prev.fetchFromGitHub {
|
||||||
repo = "rofi-systemd";
|
repo = "rofi-systemd";
|
||||||
@@ -8,6 +72,20 @@ final: prev: {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
wyoming-satellite = prev.wyoming-satellite.overridePythonAttrs (oldAttrs: {
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "colonelpanic8";
|
||||||
|
repo = "wyoming-satellite";
|
||||||
|
rev = "509628a9be2cf61116b6d0475e19c0b92a855e0b";
|
||||||
|
hash = "sha256-ewSxVv+8r2VGYNOoj8jiMogXtp1GPApcRc2BH3Q+8W8=";
|
||||||
|
};
|
||||||
|
build-system = with final.python3.pkgs; [ poetry-core setuptools ];
|
||||||
|
pythonImportsCheck = [
|
||||||
|
"wyoming_satellite"
|
||||||
|
];
|
||||||
|
propagatedBuildInputs = [];
|
||||||
|
});
|
||||||
|
|
||||||
git-sync = prev.git-sync.overrideAttrs (_: {
|
git-sync = prev.git-sync.overrideAttrs (_: {
|
||||||
src = prev.fetchFromGitHub {
|
src = prev.fetchFromGitHub {
|
||||||
repo = "git-sync";
|
repo = "git-sync";
|
||||||
@@ -24,7 +102,11 @@ final: prev: {
|
|||||||
rev = "51b21355696add83f39ccdb8dd82ff5009ba0ae5";
|
rev = "51b21355696add83f39ccdb8dd82ff5009ba0ae5";
|
||||||
sha256 = "sha256-crCwRJd859DCIC0pEerpDqdX2j8ZrNAzVaSSB3mTPN8==";
|
sha256 = "sha256-crCwRJd859DCIC0pEerpDqdX2j8ZrNAzVaSSB3mTPN8==";
|
||||||
};
|
};
|
||||||
nativeBuildInputs = old.nativeBuildInputs ++ [final.pcre];
|
nativeBuildInputs = old.nativeBuildInputs ++ [final.pcre final.gnugrep.pcre2 final.asciidoc];
|
||||||
|
buildInputs = old.buildInputs ++ [final.pcre];
|
||||||
|
nativeInstallCheckInputs = [];
|
||||||
|
doCheck = false;
|
||||||
|
dontCheck = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
expressvpn = prev.expressvpn.overrideAttrs (_: {
|
expressvpn = prev.expressvpn.overrideAttrs (_: {
|
||||||
@@ -44,36 +126,61 @@ final: prev: {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
emacs = prev.emacs29.override {
|
emacs = prev.emacs30.override {
|
||||||
withNativeCompilation = true;
|
withNativeCompilation = true;
|
||||||
withTreeSitter = true;
|
withTreeSitter = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
python-with-my-packages = let
|
python-with-my-packages = let
|
||||||
my-python-packages = python-packages:
|
my-python-packages = python-packages:
|
||||||
with python-packages; [
|
with python-packages; [
|
||||||
argcomplete
|
universal-silabs-flasher
|
||||||
appdirs
|
argcomplete
|
||||||
ipdb
|
appdirs
|
||||||
ipython
|
ipdb
|
||||||
numpy
|
ipython
|
||||||
openpyxl
|
numpy
|
||||||
pip
|
openpyxl
|
||||||
requests
|
pip
|
||||||
tox
|
requests
|
||||||
virtualenv
|
tox
|
||||||
virtualenvwrapper
|
];
|
||||||
];
|
|
||||||
in
|
in
|
||||||
final.python311.withPackages my-python-packages;
|
final.python311.withPackages my-python-packages;
|
||||||
|
|
||||||
# gitea = prev.gitea.overrideAttrs(_: {
|
claude-code = prev.claude-code.overrideAttrs (oldAttrs: rec {
|
||||||
# src = prev.fetchFromGitHub {
|
version = "1.0.86";
|
||||||
# repo = "gitea";
|
src = prev.fetchzip {
|
||||||
# owner = "colonelpanic8";
|
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
|
||||||
# rev = "40e15b12bf104f8018f56e5b826d8a2f8e2587ea";
|
hash = "sha256-mVXS75KgeKgD7EI5t9X6+TkwjBFyBLOo4/m50sS9XdA=";
|
||||||
# sha256 = "sha256-VXP8Ga681rcKn548rOZq9I19abY0GzXRpdiYGpwyMJ4=";
|
};
|
||||||
# };
|
npmDepsHash = "";
|
||||||
# go = final.buildPackages.go_1_21;
|
});
|
||||||
# });
|
|
||||||
|
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
|
||||||
|
(
|
||||||
|
python-final: python-prev: {
|
||||||
|
pysilero-vad = python-prev.pysilero-vad.overridePythonAttrs (_: {
|
||||||
|
src = final.fetchFromGitHub {
|
||||||
|
owner = "colonelpanic8";
|
||||||
|
repo = "pysilero-vad";
|
||||||
|
rev = "846caf4aa6c5f5319b87d3127dfe0aa9e88b338e";
|
||||||
|
hash = "sha256-SjoyiHm2RiLDFbwduKsoPK4/AvQiwZ39ZsPj2etXRV0=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
home-assistant-chip-wheels = python-prev.home-assistant-chip-wheels.overrideAttrs
|
||||||
|
(oldAttrs: rec {
|
||||||
|
bypassAttestationVerificationPatch = final.fetchpatch {
|
||||||
|
url = "https://raw.githubusercontent.com/tronikos/chip-wheels/8a5ec21d114010723cf428ffe79e244da7562390/8766-Bypass-attestation-verification.patch";
|
||||||
|
sha256 = "sha256-RgmlPRSfw1PPMdHBzpoK2Drrb8nEagATY8Y5ngi7x0k=";
|
||||||
|
};
|
||||||
|
postPatch = ''
|
||||||
|
pushd connectedhomeip
|
||||||
|
patch -p1 < ${bypassAttestationVerificationPatch}
|
||||||
|
popd
|
||||||
|
'' + oldAttrs.postPatch;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,22 @@
|
|||||||
{ config, makeEnable, ... }:
|
{ pkgs, config, makeEnable, ... }:
|
||||||
makeEnable config "modules.plasma" true {
|
makeEnable config "myModules.plasma" true {
|
||||||
services.displayManager.sddm.enable = true;
|
services.accounts-daemon.enable = true;
|
||||||
|
services.displayManager.sddm = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
Users = {
|
||||||
|
# Show a maximum number of users
|
||||||
|
MaximumUid = 60000;
|
||||||
|
MinimumUid = 1000;
|
||||||
|
# Enable user icons
|
||||||
|
RememberLastUser = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
# sddm-astronaut
|
||||||
|
];
|
||||||
|
};
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
desktopManager.plasma5.enable = true;
|
desktopManager.plasma6.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, config, makeEnable, realUsers, ... }:
|
{ pkgs, config, makeEnable, realUsers, ... }:
|
||||||
makeEnable config "modules.postgres" true {
|
makeEnable config "myModules.postgres" true {
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.postgresql_15;
|
package = pkgs.postgresql_15;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, config, makeEnable, realUsers, ... }:
|
{ pkgs, config, makeEnable, realUsers, ... }:
|
||||||
makeEnable config "modules.rabbitmq" true {
|
makeEnable config "myModules.rabbitmq" false {
|
||||||
services.rabbitmq = {
|
services.rabbitmq = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|||||||
25
nixos/railbird-kubernetes.crt
Normal file
25
nixos/railbird-kubernetes.crt
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIELTCCApWgAwIBAgIRALNxOT7J7N/eK6edp9LbKAIwDQYJKoZIhvcNAQELBQAw
|
||||||
|
LzEtMCsGA1UEAxMkM2I2N2M2NzgtNzI5My00YTIzLTg3ZWItY2NiMTZjYWFkMzFm
|
||||||
|
MCAXDTIzMTIyOTE5NTQ0MloYDzIwNTMxMjIxMjA1NDQyWjAvMS0wKwYDVQQDEyQz
|
||||||
|
YjY3YzY3OC03MjkzLTRhMjMtODdlYi1jY2IxNmNhYWQzMWYwggGiMA0GCSqGSIb3
|
||||||
|
DQEBAQUAA4IBjwAwggGKAoIBgQCUYUuTrpDbwUS2B3SYUoa7LI5mi8NNr0lDe1w4
|
||||||
|
3yPpVnu6ubvnTNm2j/v88HYwEjlppEg4HjhP7YEJ8gsGdgUCpIaPWTpifVmA7E4o
|
||||||
|
2DbJDiePkkUGkNL0whCClOOcO0hyxdk9Pol5wRzci0l6zSalE6DB4rJrmB5Ppl/A
|
||||||
|
t2KAVVqpwbynmbijr4yZh7Bp7LfaIrFthlv2ZPEjLfPLz7YthBw9/iUt94mLMyWZ
|
||||||
|
BpygA5y/CocQQnnFMnU1o0eUd37YL7zErfIxx/AmL10Sq0qdFXiYOJJqubURbdS8
|
||||||
|
DZ6dyHdX+UlxPls2Rlx9nDaiNGFJdzqHJzDdOlzN3kkdDQoO8xUdH9ekFU7rOwkP
|
||||||
|
5NpubSwrd1FOGHh+EknugnEQD4Oip/YQ7IUj3Afm5Ag2la9k4WJRgjACbkQ2+k9I
|
||||||
|
sFmPmmMVHn9nepCMiYQMjX7ApZw0isDPeVK5EuQeImgu7uNoV8R5VwG0XoBCXz4S
|
||||||
|
UqYv11uEsMqFu07Zwlznsxnm0uECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgIEMA8G
|
||||||
|
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI73GznmeECJOdxJAEzmjhYgGVKtMA0G
|
||||||
|
CSqGSIb3DQEBCwUAA4IBgQAm19zlm3WVePflA6Zh/FxvE8MirrJF6jmJzRrBCEM5
|
||||||
|
DwkSmY3dvONqCYeeNb4+xWXWQ8eVKVlPdkoW3V7H5xnJ63dXRNN2lQ3JpSTG3+yP
|
||||||
|
Omp6XGY9mmatdHwyV7N4h10aKEWAuRhy148sdJZLYj0LbR42pCVYhEP4D3Qj7KjN
|
||||||
|
PJe+cR8NSpiYmDH5y88Jqubztj5NVcDj/iN9h/7/GajbU6lCgN/SxZgi9cNGjxSb
|
||||||
|
JHFHE2Mp3z9sjsieTXMplLqK045TQ2IBqnJyMdKkvSNkRUCbz2yXdiIOKtvU4ly0
|
||||||
|
h884z9P5JQ9bxe+6cwYC4ky3G5WYMn++RUsuCk4ScsrbZtM9jpKnz/TygMdVTC5w
|
||||||
|
Siq6OHKtAnh8Ax1LEKicg9FLd6ODxR3OVKu+fUPV4XHAWJnmvElGlivjneHiE+OL
|
||||||
|
dzgb/CfBEGHYBVc2PDIhwBmUdoEZ/t3UjvmSI46ZblYpWodJvLFwge2HxSivRlLW
|
||||||
|
Uh/oPWX5N/CH9I34HTAhI48=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{ config, pkgs, inputs, makeEnable, ... }:
|
{ config, pkgs, inputs, makeEnable, ... }:
|
||||||
|
|
||||||
makeEnable config "modules.raspberry-pi" false {
|
makeEnable config "myModules.raspberry-pi" false {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
inputs.nixos-hardware.nixosModules.raspberry-pi-4
|
||||||
];
|
];
|
||||||
@@ -12,6 +12,7 @@ makeEnable config "modules.raspberry-pi" false {
|
|||||||
# hardware.raspberry-pi."4".audio.enable = true;
|
# hardware.raspberry-pi."4".audio.enable = true;
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
initrd.systemd.tpm2.enable = false;
|
||||||
initrd.availableKernelModules = [
|
initrd.availableKernelModules = [
|
||||||
"usbhid"
|
"usbhid"
|
||||||
"usb_storage"
|
"usb_storage"
|
||||||
|
|||||||
10
nixos/runc-overlay.nix
Normal file
10
nixos/runc-overlay.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
final: prev: {
|
||||||
|
runc = prev.runc.overrideAttrs (_: {
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
repo = "runc";
|
||||||
|
owner = "colonelpanic8";
|
||||||
|
rev = "4b809881415e99247d8dea2eda862491dbc9acd2";
|
||||||
|
sha256 = "sha256-XOslGNu+ix52938SnnhmWKUaZaTQx9+/o74tnAjmo3I=";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
BIN
nixos/secrets/1896Folsom-k3s-token.age
Normal file
BIN
nixos/secrets/1896Folsom-k3s-token.age
Normal file
Binary file not shown.
BIN
nixos/secrets/api_service_account_key.json.age
Normal file
BIN
nixos/secrets/api_service_account_key.json.age
Normal file
Binary file not shown.
@@ -1,48 +1,56 @@
|
|||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 ZgrTqA O0XHnLd6cH/2OZyZWRvB028wmx8x8b4ojoqzidpANQM
|
-> ssh-ed25519 ZgrTqA +u18TitbmPrZLwLNMT5C9wbkXPeROgHrh3Tb1RpE52s
|
||||||
tQXIb/FsHcXwBet9icQrU1gYxpWUXOMFnxhHq+pJegc
|
WcIdsXKxuTOEeja8mh5qoZ38hSlyS2K0WFS4sB/yKv8
|
||||||
-> ssh-ed25519 ZaBdSg dXtxOGI6j+NyJadTzlhTkb+6/rf5BEtUeZCnH4SjpA4
|
-> ssh-ed25519 ZaBdSg f9kJeTDYYwQLbfL0lfSZjAkRj/8i7MOzp9MQ8ojEl0s
|
||||||
UCqDgtXh3tMFGz0xDyWn5I81S91CRrEJ9j4LAUN14vI
|
Ez8Pmw5sLZUNWE6nIswzE6mQxZiAhKERLbD7MT/RTN4
|
||||||
-> ssh-ed25519 MHZylw GGmyYlC28NKCP+uuAQBO3EIqB+XY63SCkDN4e/WdGkY
|
-> ssh-ed25519 MHZylw P/KulIF/w8YmSUpXObabu0El/rGAuETPvMGHLdfpR10
|
||||||
GVzmq2tmIJvFnmMnvO12Ok8gOofTRBt20HH586tNzps
|
Mz9S83bVirlz+pjOrEsJP8oRIBz6PdneMopEshYbj/I
|
||||||
-> ssh-ed25519 sIUg6g +VSuYouQxNM8Ch9xTIdokrtAK6RU5NoMNN6nUAr+rQQ
|
-> ssh-ed25519 sIUg6g mobkna3lBZAMq7IwqR4uV5Bg6c353po4/+YY8Iqg/Bg
|
||||||
GDRltKHjD6D4d9Z0vq04M6ELi53GdZZFAZde/V6YzuE
|
rCyfVkXKoPotBEEb6r3T56sRdjn9fC+taxrnRZuUSvc
|
||||||
-> ssh-ed25519 TnanwQ HeLm9uq5waI09epfKCsRLFO0Ll/V9Rg6y7LAOjGKLmc
|
-> ssh-ed25519 TnanwQ hCPpi8mAGltRM8bpl5OoFGVToPy58Pia9ElyCIi1enM
|
||||||
jjpTs70FeSaxBH3OyvEfGl71kpVRZmtaCkS29VXehVw
|
o9m5Zzl+8kDPEFkQ/evupeGJG6S4aiZk+PaUxlvMTSU
|
||||||
|
-> ssh-ed25519 cH4aug mR6lvjeeWSUmK50rsOjGGG6ccwzTpGVt97dW1rEEqQo
|
||||||
|
AQvUomG2XgQo6dFIkZ24N97l8/B3F9WnN/KVGzITcz8
|
||||||
|
-> ssh-ed25519 ggrAFQ lYeue71aHAhUsy/LOgDPCNmavQEl9VIVnOVC/W/VoWk
|
||||||
|
SwYzh1DpS5WHSdX2e16wkDUwm1Sa3ARHPF9UBycdHUg
|
||||||
-> ssh-rsa gwJx0Q
|
-> ssh-rsa gwJx0Q
|
||||||
a6q+jlWud5INiCOwPH570EdyrEOahksIsz5ehCwi21xUpsw8uDAJvwJZ4LTUk7Pp
|
fbU+nVFbxpVC0D1rxouGi8aOirZ5CYaMlmm+pLmpI81WZRweyi/8j16IvRSqV9CB
|
||||||
rgCu56ndd0LBqNAsqCO0NeP6rHj11Y9gVI1VAe8JZwQAd9uxP1wCFSamGPBAG3qU
|
T4uLqBcpsYKVroPIvkIzy1LBUE0LrYj4tVAoAtPWUOk+Z3+pSs9MpTf4nhxjj2UJ
|
||||||
6K7tSWxUJg5E5N8xn0UVasdC49PSadEBpvWOw7gxUcZSZk+zdXZkmNNJOJjblp48
|
xXw+Kjw0rlAIy48cG8UssI3MAvF17m3JUG4xJxDmM/69J428tE1xa0JMjMXf/E7s
|
||||||
BzjLiFs/NEapIrpx80nXurSiyN5IV97vK3owXqqYSKOoBR2JWbVeYVO47cR9UN8G
|
g/RSO7cx+Pcn2ClrFdMOVEkVNIKUkJdpymRSdOpwQnwzgOo4NNwBowFv/6OpfFdP
|
||||||
df43ozz2wrG3tfVgy23JfRUPinDxPkUJ0AbkpD7aBuEJfFmQSDjyl+wGevf5GAOI
|
tS9zX9ZgpcOLKdCV463afYCbZ9z6lsw4KnEUL+bg0QAz8PtlRpF56LUnmBRSWPNN
|
||||||
rTNpOz31YvchkiynnXLhyg
|
nl002m6a+uZZQl1HizgR9Q
|
||||||
-> ssh-ed25519 YFIoHA 9Sx54ArYGvWtaM64vIuh/xNfC00Kn/6OiIL7zkK/IBI
|
-> ssh-ed25519 YFIoHA Q8+eEd7maA4f64SGQfyk0pRuxY2WiD3UzHuLmzIPvVc
|
||||||
cHLc5wccimYC6ICqnz3e1hs+4XAHzRd32dj0/g+4q6s
|
XWV6IuKDftDStCgj4brPMaTvea+kIlYg7JGnkyX1+Ps
|
||||||
-> ssh-ed25519 KQfiow p7igfY7SkJe2k9EZMy+VEr+uYnEZZSosmAJKOWwopDU
|
-> ssh-ed25519 KQfiow rra4AZqxS0duGI0GrMAGt1KnUVRyBbnGcZhsu2QeCxM
|
||||||
z3HZmOrrhK6Ns5z5EOtlgoo6IROMuo2elRrnX/I9YvI
|
jaIThcqxxxh9atSgrVEzMFsDip5aNTxWaekgIw+lLKw
|
||||||
-> ssh-ed25519 kScIxg de1921H/EqUtCsmjytrGa/9vx41qKO/jiTTNRXRK/xg
|
-> ssh-ed25519 kScIxg NBVuAT7UXhPMu1THkAXJ1QYNwSnFIgvjQB6jYD7t4AI
|
||||||
IzjtdSwv/FwgGyl6qumTvDi5imcUKolt5upP0hNDd1g
|
xs+x0xP/jRBsvr2IMhEBrpP0o1Ian9Guw1yuMT0b5XA
|
||||||
-> ssh-ed25519 HzX1zw u7OB64Wzd4siphc3kyRbPwYswc/vn0eqtUiId5byuVE
|
-> ssh-ed25519 HzX1zw yyjdUbfty0hE0jIc2MMYvRkq/c/DABHJczH/CqyOkRw
|
||||||
t8CF85/o71ra6IAgXAfcoCZHs4VN/ejOQVsdUZaaLqo
|
c5lkqMwaxsojqx/jYJhMbgWuN0qdgf3VlBYnUHpc/OE
|
||||||
-> ssh-ed25519 KQfiow uzyI3JXAF3twmqSKDZAgNEMv/Su832geK/y46hKiJCg
|
-> ssh-ed25519 KQfiow 70CAriiLnPXfh3a7HJnjRk0K5vYPc24AKjEWjiD/bSM
|
||||||
qpbPTkQYUcPSuFEXoOnYmGLcAL2TH2XpkBOqeVvUVVk
|
Sp/hULrynhI79p/zh96sD3rIYMTMzGD6CvN+6Dmxhhg
|
||||||
-> ssh-ed25519 1o2X0w u9pY09CQumynSF+9z59nuEuZFPwdVld8XQOLG0N4llw
|
-> ssh-ed25519 1o2X0w +xLXrJLT2PITsHGkhak6M6/1ifd32sEHcNtI9xdTNTE
|
||||||
i1HrE7Nk5O/h9eYGeq+nx5UCIgO2c0ROHcwUDiFFxoM
|
PI80gCMGaR24FRiOmNeReTXrUecgCNJZMInKGNfQHic
|
||||||
-> ssh-ed25519 KQ5iUA zpOP9fMu7Mqm0LbkA78KInXworz+LGpovjk5mIOOfVM
|
-> ssh-ed25519 KQ5iUA J2rBvdYjd9RYlQtVfaV50ZN0naHT58e3rZrnhgEszkg
|
||||||
Q2y9sMSgwIahs+7ceXY6bYha87uXcD28irc4zRYbOSE
|
/iG3OU/HVraqegvrTgZz5/gp1HZwyGgGkXhjGYJXAoY
|
||||||
-> ssh-ed25519 AKGkDw mLi5T/ia2gQ9z357LYQUbgUQ37DLPhbRlR3LkPvOPk8
|
-> ssh-ed25519 AKGkDw 7gJhihE5rASMzycK4rzrSj3oll5hHqzXNQo1qzoqnwE
|
||||||
rPUwUtTwDAbn49GgLO9vfW/P8hfrhf4znvrmHiiPXLE
|
zlisCc+y2x028mosTHDQjrMDAX2lF3HAJ8LLtzuwwZ4
|
||||||
-> ssh-ed25519 0eS5+A DomPBIFcr3Wxi1sfGzEBKTpRruHijRX5CDh7xk/mQgg
|
-> ssh-ed25519 0eS5+A sLIAQR51fxFZatgc7CCJYgjCtfdqYFLBnL4Qs9WmbyM
|
||||||
u9hQHSq3w/NBv3zpIpbX3bMk2vYaNn8dl079zz4cRmE
|
CgeHGN6+/ZE/RrQoPlaizGtu3bEz8lPfWEfFYY9wzrA
|
||||||
-> ssh-ed25519 9/4Prw kczIhptmCQmYolhBX+omXqbtTuqqEeL8Mnx2k/1c3Wg
|
-> ssh-ed25519 9/4Prw uytvwSpCRE/5xDu/Og60k6jBF3wyBanyZMWhEjzcf1E
|
||||||
3QBDp0WfYP8Ni3zZ3xk8yC5WscRa+niwjO+6Q2MR9Is
|
CM37OOCnORhdGDPXLJ7VIRYJhvMXKxfs6oK9WnHycV4
|
||||||
-> ssh-ed25519 gAk3+Q HhCggnhkMhbZG1VyyjtibA7eAnnhS+ZVDMuKmFW+fiQ
|
-> ssh-ed25519 gAk3+Q hqrzZ+KHXT7mfI/6332ZymbDTQmjS2m7jDhtqNQ44no
|
||||||
7URzpfoMkgD/Jn0N2FV5WJxLpDOPkmI3W7yA5G+MyQg
|
n/k8+t4BcmPy5Tgkl9e8/CSoCcmVp2lkU8rCRlSGfZU
|
||||||
-> ssh-ed25519 X6eGtQ KBzu6+tTigAYC+ifRi5rGyocU0l1PfBj2KuK9yasUiw
|
-> ssh-ed25519 X6eGtQ kO2cKtxVcAIRA3xC4zLLuj2cfZ6CKlOq3aTrB9cqhg8
|
||||||
ShtvUv9tuuvYf7dHDnBIQtLWVkN9gaP6ryyeCVoNVIU
|
tG5GtTne/45DqNkJ8XjOlfbbDGLfTxweUKG1+f7aXNU
|
||||||
-> ssh-ed25519 0ma8Cw 4kkPaMRoYuYflcHDAzBAaWd9+Q3CXV97Hs7d8sFIU3w
|
-> ssh-ed25519 0ma8Cw /PwKBNkRtj0mWkG3fJZOIjdLkhWlxxtowVABKjxShG0
|
||||||
7JQH4QYVnnxhjfr0wQTqLieGc3G5ymEBdivqO2/vEWM
|
OSfm0wSpyrd8bb836wbFi1BrWHkuZ4DuWw9ZwfMP5b0
|
||||||
-> ssh-ed25519 Tp0Z1Q 3GL4a2CUqmbEK0POxjUADiUtnA96enIKavGEJBr4QTM
|
-> ssh-ed25519 Tp0Z1Q qJqv47mimbpQkdiYO5sDqj+Qyi7Nq+y9Bb/EuxneXQg
|
||||||
RP5mZ7PKqB29cU5ir3wiX7CDM6KuqBysO2g9HyONlKE
|
F+b8rEY9rxDdPe+mVy0h7AggugMvGi9lvwKDfe/rjJs
|
||||||
--- hLdA7jp69UiOM2LP3bMxOCNnHUWwcgL2BbSsz3+D8lM
|
-> ssh-ed25519 ePNWZQ MO3gceW2gDffFS/Tr2F2BkMSKD6Ydn/mRXHqYckGOnU
|
||||||
2<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>Q><12><><EFBFBD><1A><>2-<2D><><EFBFBD><13><><EFBFBD><EFBFBD>R<EFBFBD>><3E><12>B<EFBFBD><42><EFBFBD>(<28>^~<7E>(<28>ۻ<1D><><EFBFBD>?<3F><>n*T<><54>MK;oN<6F>W<EFBFBD><57><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD>;K븬=.<2E><><EFBFBD>Ȑ<EFBFBD>J<EFBFBD>U+<2B>a<19><>Q<EFBFBD>Zr<><72>g^<5E><EFBFBD>"R<>0<14><18>J<EFBFBD><4A>c<EFBFBD><63>4d?<3F>Ȧ3<C8A6>,<2C>O<EFBFBD><4F><EFBFBD>
|
3CxqL9EwDQ99T7pN6b/NU0NQungyh2EHE56L8Stuj/U
|
||||||
|
-> ssh-ed25519 hILzzA AIf5pdaRPGOtKKV/gY5GM/PNtqSXVhoxB69t5JEgUlA
|
||||||
|
d6TC0L2OpbhvaREkVc+rNzY7U8VIQMG0in0UHFsGSUY
|
||||||
|
--- 6QUiesVdF1mNKhzpT/tPTMDvL7MAkEbXR2CHau5/SHE
|
||||||
|
<EFBFBD>ڙM<EFBFBD><EFBFBD> x<>0<EFBFBD><30>_<EFBFBD><5F>v<EFBFBD><76><EFBFBD><EFBFBD>uA<75><41>u1ON<4F>*ݩQJ<14><>E@<40>ϚȬ<0E><><EFBFBD>b<EFBFBD>Clg<6C><67><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD>ǘ<EFBFBD><C798>F+6"C<><43><EFBFBD><EFBFBD><08>/Ya<59>#<23>l<EFBFBD>p<EFBFBD><08><18><>E4w<34>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<>i<><11>L<EFBFBD>?<3F><>v:2<><1C>ߖY<><59>l<EFBFBD><6C>s<EFBFBD><73><EFBFBD>
|
||||||
BIN
nixos/secrets/discourse-admin-password.age
Normal file
BIN
nixos/secrets/discourse-admin-password.age
Normal file
Binary file not shown.
BIN
nixos/secrets/discourse-secret-key-base.age
Normal file
BIN
nixos/secrets/discourse-secret-key-base.age
Normal file
Binary file not shown.
@@ -1,48 +1,52 @@
|
|||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 ZgrTqA iez83NCzN7sb/O+bYHDWB/420SYC6Wz++js1clRvSyk
|
-> ssh-ed25519 ZgrTqA iW7mNP6ZLuX+VH9RQykM/kD/xYhuZ/req0K977h+0G8
|
||||||
pkOvxmV4JJLHrzNjF8bpwVxmcH06JF1jUuB+7Hy5QX4
|
N8IfXH9wGB4W3cc/t/dMXvpiuA467sYpbSJ1FbNK1nM
|
||||||
-> ssh-ed25519 ZaBdSg ib4g0QcRi6MPHDLvTgoksKjra3L3PLmIcHZFu332Qnk
|
-> ssh-ed25519 ZaBdSg xHC5cGTqglVLNtX9Eq9c1+puKticyX3tC3yJ7XhTCWY
|
||||||
TQTrIrHUv/xmN/kwsAlgOqmj9HAB72ubjiD+zz8JcUI
|
wAIVpjfcTtthyYiLUr4ZeIMr3R6a9sZKQLBlwGd0JgU
|
||||||
-> ssh-ed25519 MHZylw SxdlNrD7U4QSXsxOmXDteKpvJ9WGpLrZZjYHnxI3yjc
|
-> ssh-ed25519 MHZylw xDm+4POwUcPFS16M0EbXcwCY1MCwLodvp5KXINN5dQU
|
||||||
6EmdU8LPyanusjmszO3mdDJozxZuLyN7N52kxH0SA40
|
sBxSYj8reNgfwpUpbRfQHsD9cZxVcv/14d9PPjWkMLg
|
||||||
-> ssh-ed25519 sIUg6g 4pxG9NrxTmoOkKvt/J0LNPG2c0DmbDYe1suvYORTFm4
|
-> ssh-ed25519 sIUg6g 5CF+k/ZnWrI85qzWgs93NiPL7XeA7xtt0NikXjdopkc
|
||||||
eT1/an3xE6iqn0ewms8d6T2tpn5wpeEhC1pab2jb/MY
|
jn/MxKBCkV3TZKzHWoK85BPYDyKWZrz2dvnSvmMBJds
|
||||||
-> ssh-ed25519 TnanwQ VR8oO8fW7YK85eXxmVJWUysdPOTuy3d0ymLDLOcJnVE
|
-> ssh-ed25519 TnanwQ dPvxr2PF2huQjuDMm8u9Jtt9qHOGANe8PFTmk9C5MDk
|
||||||
ATNa9yjmsVpeMuJx+RhhfN18a8p501xkb5cnCaWAqaU
|
C3mdAy04NHA6GvxkHY0/mJimmlakqEaM5nQj0yNRR2k
|
||||||
-> ssh-rsa gwJx0Q
|
-> ssh-rsa gwJx0Q
|
||||||
ReyIQtExcQR/pmOYGamTgTxz1JoyzFgLiJYu02SNGZRyjqNSFeCpQuowjJyYApJM
|
arxGqHS2sOD+m05Ce0kw6DMDiK+0Go1t74m6yuJf1/mH2F7uw8sgrZQxdWon+r8t
|
||||||
aJUpSsyK4vJ1X+2+bbzPTZrp9S2BgmO/3ebCKCm2Y4EhIXZCvffcno8TaoJRysWw
|
ZyroQGRwMAWaya+bL9waDGV6j+MCyIcUa25dQHbGIGUnpKZVoYn8YVFLyiySTkLW
|
||||||
34EwLZ/30r4iLBscDIQB2oat7hWLJQoLiDreBRS90JZOock9FfGP4SfXirBRfDgr
|
S5ve3HQNu4pp0EbL/+e3l2E7XPe1ssb4LGbbHZHXm7V4hKwgJqfnX8VUVTlWCHRd
|
||||||
gh817YZvIhpTzU8/0gLrsQ9hnN6eNre22N9rLdZSXWFfkeD01723sJMr6w/ntXxb
|
6Gsd1Wezg4Qz8bnghjaaagWSKDhf8/iZL7B/+8NniZtMsY0Ajeqf6OpJuPdXnmCc
|
||||||
gmzuC8JEhicxPkTzwVBeSPzeopHiUrqld5EGe3ZWDHAoYtmQCjN2H0BHQe/B5YJU
|
OnWZHriEhSqB+oEg4vGPU1iuo6WXwDW8oMNZ+2uHHV/UE7hgLfkvZaRUSGfcsK6m
|
||||||
YFU4MZdgUykhrnxM26byDw
|
EMnarBbUfsbsEmzEMMZ0lw
|
||||||
-> ssh-ed25519 YFIoHA 2Yv2+qhYd74prfDyu0osYbpXFmE+wMJK6W0JHjgqOGM
|
-> ssh-ed25519 YFIoHA wxFUFWCoLZ5TroHAVB4ffcwNx5vShL8pZZyhNB8P8kA
|
||||||
HSHHQOx/COo0s+dAtMITGIfrCcdYUYNzjLuiU+pGccM
|
4Zl9WdtTlFRf6N45Ib6zdaQup5BfcDIEXPDnLUvG45A
|
||||||
-> ssh-ed25519 KQfiow cMKtLUkUMxFeEJdGmmHuRha93zCBNimQadaGZFVc+Bo
|
-> ssh-ed25519 KQfiow x177D9cUo3jd+RzaLaPD/S3GDTE6j+8+V/3qYHkMeyE
|
||||||
jgaenccqng03pj4WTNlIpmoDL9ZgVHSF0EmYLZ61GRk
|
PPnb3/lDia87oycMStdMjns2bDQt4wFln5+SnAAYs+A
|
||||||
-> ssh-ed25519 kScIxg 9vBKRKl4cFUhAsnmu5hW6s1SWe/vjPEJVrAvL/N7DCA
|
-> ssh-ed25519 kScIxg aol/G1Qs/QbDkPBCqfrLdWCuk1JrIiIV+vGoAQoaWTQ
|
||||||
pPI7ZZPEZNlmR/44AE5WNATCJstiYgEkJQI7sZMtf9c
|
8XziIW+ST8De384wav/s8DIenM1oMdnDt7m33K+Fr5I
|
||||||
-> ssh-ed25519 HzX1zw 3aq/89MOxaQyDls41D3My6CWKmrzbP16XWRFnxSkqUs
|
-> ssh-ed25519 HzX1zw sHNG8nyVp+YQuWvsyTGGVROGtQwuaWwt2vdgrnMY8F0
|
||||||
wS6sHCOZUV8bn6z4sfhR9q5vVGGKeiFR2x6EmBi5A8g
|
oB96+Cy0BUUJvWyr79x0BvVvE6PGjAWZQ4F5M8tcvfI
|
||||||
-> ssh-ed25519 KQfiow mPERPckf5u2yDfdN9rYOKRWMKiNoOBpZUFePccYh7D4
|
-> ssh-ed25519 KQfiow mAmkvvvUV/Q5uNBlCzbd9pssRfrmVL2j/FdS7b87wSg
|
||||||
92HxFjBC97bDWo+zfZNUYBEauSQWvxbAla4AYmhs0xI
|
4NvE6fhb9nDzZAAFZ8V7TH7HlI8pneB44miqS6u1Eew
|
||||||
-> ssh-ed25519 1o2X0w MGFx77Vg+nydzZqTC/+ohfN/6z6SDuO5ZgzplleGMRY
|
-> ssh-ed25519 1o2X0w 6BVN/+6QeL+kfP4InEY+jS6khB6NDBWAXnqxUEMFAT0
|
||||||
ked3VPIEk6QISpBemBNyNdV8a6a4b1KvMi3T8etojvs
|
y/nSLtF+ViQftlahBPQcGDKcJpDNva3drF6cKC6kdZY
|
||||||
-> ssh-ed25519 KQ5iUA CrDNvZYJNgfHnRCD+wiTuMnlZh4XT++FASlPfuTpOAY
|
-> ssh-ed25519 KQ5iUA U8mS+gIc0tXxuPbObNsd1D1hs55JGGcI5loPqrSA+38
|
||||||
GQKpp+6QKG+0nr2JFWtq87o7Eg9tol64JOkx8g7USpM
|
od25qdUN3i3TW82r/I0ASH2TcdedB5fx8bIruiRFvTE
|
||||||
-> ssh-ed25519 AKGkDw uEF+jr3sCN3JsMRJrgeV0rJqdhDZog3fjrAe0tsLpjY
|
-> ssh-ed25519 AKGkDw PYy1rFbiygNpHGvLLjpdL576kBK4ZrJMw2xfgYobUks
|
||||||
xLpw7Q7YgTw6D7JhqlNV3uSiT4Bt5ARWpo+6RiDd/iI
|
VBPTCvuR2sU0jxK+R7PuV32EOuCUL0I7t1GkVeHhsxc
|
||||||
-> ssh-ed25519 0eS5+A +37WnrBGsf6CJ4Yro/RScEIQpaodiK3tbWr8736ADHg
|
-> ssh-ed25519 0eS5+A gOl/bjYvFdjKqumiQqSEXgi50Q/WFhDcE9avn2IhT2Q
|
||||||
4wG1HKA/96vOGO9jCJc/JkK/7KNWr1ovx078kStHH/Y
|
O8tSrAwn4rFwgAeKEvBtsjotsQLL1YnUP+Pdv+h+nJI
|
||||||
-> ssh-ed25519 9/4Prw e/mMP+AMG4HMhQcJ2uzfHHXQhmVjE7xoY13Di74OU08
|
-> ssh-ed25519 9/4Prw 8nFSnwnJK2Zmowndn4+oHcZB3lnnc+ftwzulMMLDVig
|
||||||
1JUAd7FEXhncnNP5Ddt0o4vpZ4oj/omIs2aEwtVc0Xw
|
BSnOn7wQ/wzeP1BU7aOYkq38yP8oxlxwJ/NP4xAkQyc
|
||||||
-> ssh-ed25519 gAk3+Q pe+2dfMK4o5e/qabl42cSMSkkw0MrZIHKZaUCmFt6mQ
|
-> ssh-ed25519 gAk3+Q 4874w13segiQbbAIN9qOMOG8/ZJJsw/Cbk8r6x6wHiU
|
||||||
CM8qOOE3/BYAyt/3igyBEhSmFIfhdI27N0zwfmvOGrE
|
hiDoRDUe668+nMEeJAmRqqMXvURsm5IZdgejUZ01dx8
|
||||||
-> ssh-ed25519 X6eGtQ q6vwAZm4onKe4/G8sw/stsgmrikNw1yUsxiiBFYxMlM
|
-> ssh-ed25519 X6eGtQ EDpZRMJFeVi9frrLX90RdgY9I5OhDZiL/mUqLjNYcg4
|
||||||
/hCXkTHiMe2AX0BZAmPuP1EnDtrKL9lb0kmErJueTbQ
|
+Pl91UhUK6JCB7qNHCm16b7pzzWPbyJJ9RwbItorMLk
|
||||||
-> ssh-ed25519 0ma8Cw NNuXxI5c3Bjs3XBn/GSMkn2K1F+X4WAStOWGZpD/lj4
|
-> ssh-ed25519 0ma8Cw r/yyr38mx1CRWbrcws+CzFQIcDInpqqhhXi0IwlUPn8
|
||||||
kVxDinO7MAieUAZ0AoUE0560gXlh6QvIl5SO8qkrfU8
|
7MfAXxEt6TYNCglqV1JPvfrotXXFR98UUp0D8iVjg2E
|
||||||
-> ssh-ed25519 Tp0Z1Q G/sxerwQ0vdiC3Evvevy6pkt/lWaIQJ3QVNoX2tIOjs
|
-> ssh-ed25519 Tp0Z1Q vuqbPEbx+M5BeXNvdV4MW61BqTqmATXP41krZYrqGlw
|
||||||
8+zWd1lUpOhknOJcABI1TKPNlBQheZD9aNDlGnF4Fkk
|
FxRpxiYob2OrdL7KmWfExCsxqj7F6rGc83H5xkokKwE
|
||||||
--- BjAZNIHU5U4toPAlQqLCB5vXP0MtpeK4zceu+dTdf/k
|
-> ssh-ed25519 ePNWZQ sZV5J+AbDKJY3JCfMMv4Ar+6dZsfvrUJLuwzq8ZF0zw
|
||||||
S<17>wf<77>D<15>Ѿ<><D1BE>V<EFBFBD>
|
yA85IpelgbbdklaFTkBJhs8KVCqi6gbFwOPplZXPcDQ
|
||||||
|
-> ssh-ed25519 hILzzA dUPwyiJPkVnXA/9rfY8a5CQTDYaG+bWJBmWNXbI551Y
|
||||||
|
l7XxSTndJ1/OheLTHg4NzkKmFQmUljttxqTt+SWcQiQ
|
||||||
|
--- T0uccGgB2l7+horZsw91HVYl2FA1bZo8gJZiXzgTzlU
|
||||||
|
<EFBFBD><EFBFBD>"<22>#Qi<51><69>q^<5E>+<2B>$<24>1<15>4<EFBFBD><34>GqY<71><59><EFBFBD><EFBFBD>G<EFBFBD>'<13><><EFBFBD><EFBFBD><F28EA096>.
|
||||||
BIN
nixos/secrets/gitea-runner-token.age
Normal file
BIN
nixos/secrets/gitea-runner-token.age
Normal file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user