1 Commits

Author SHA1 Message Date
d9231c3a0e Elpaca migration WIP 2024-06-25 03:00:19 -06:00
127 changed files with 2058 additions and 5411 deletions

8
.travis.yml Normal file
View File

@@ -0,0 +1,8 @@
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"

View File

@@ -1,5 +1,4 @@
[general]
import = ["~/.config/alacritty/themes/themes/dracula.toml"]
import = ["/home/imalison/.config/alacritty/themes/themes/dracula.toml"]
[font]
size = 8

View File

@@ -1,294 +0,0 @@
# 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

View File

@@ -3,11 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
@@ -21,11 +21,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@@ -39,11 +39,11 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
@@ -57,11 +57,11 @@
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1685518550,
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"type": "github"
},
"original": {
@@ -70,16 +70,80 @@
"type": "github"
}
},
"git-ignore-nix": {
"flake-utils_4": {
"inputs": {
"nixpkgs": "nixpkgs_3"
"systems": "systems_4"
},
"locked": {
"lastModified": 1762808025,
"narHash": "sha256-XmjITeZNMTQXGhhww6ed/Wacy2KzD6svioyCX7pkUu4=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fourmolu-011": {
"flake": false,
"locked": {
"narHash": "sha256-g/yDZXeLCHq/iXoZTaTYSb8l9CMny3AKsRQgWElagZI=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/fourmolu-0.11.0.0/fourmolu-0.11.0.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/fourmolu-0.11.0.0/fourmolu-0.11.0.0.tar.gz"
}
},
"fourmolu-012": {
"flake": false,
"locked": {
"narHash": "sha256-yru8ls67DMM6WSeVU6xDmmwa48I8S9CUv9NBaxSQ29M=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/fourmolu-0.12.0.0/fourmolu-0.12.0.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/fourmolu-0.12.0.0/fourmolu-0.12.0.0.tar.gz"
}
},
"git-ignore-nix": {
"inputs": {
"nixpkgs": [
"taffybar",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"ref": "master",
"repo": "gitignore.nix",
"type": "github"
}
},
"git-ignore-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1703887061,
"narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
"type": "github"
},
"original": {
@@ -90,20 +154,13 @@
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"taffybar",
"weeder-nix",
"pre-commit-hooks",
"nixpkgs"
]
},
"flake": false,
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
@@ -113,13 +170,30 @@
}
},
"gtk-sni-tray": {
"flake": false,
"inputs": {
"flake-utils": [
"taffybar",
"flake-utils"
],
"git-ignore-nix": [
"taffybar",
"git-ignore-nix"
],
"nixpkgs": [
"taffybar",
"nixpkgs"
],
"status-notifier-item": [
"taffybar",
"status-notifier-item"
]
},
"locked": {
"lastModified": 1760550917,
"narHash": "sha256-oELopLiVb7D1fzYHAiw/cbfNPHLQcOJ3Rz/I1gbk8IY=",
"lastModified": 1663379298,
"narHash": "sha256-m18+G7V1N+g/pPeKJG9hkblGA5c8QTnUYnsU5t14sOw=",
"owner": "taffybar",
"repo": "gtk-sni-tray",
"rev": "f6d1bf5dd64ac0f532b03ae01f5e1cc051116f09",
"rev": "1927d86308d34b5d21a709cf8ff5332ec5d37de4",
"type": "github"
},
"original": {
@@ -130,13 +204,26 @@
}
},
"gtk-strut": {
"flake": false,
"inputs": {
"flake-utils": [
"taffybar",
"flake-utils"
],
"git-ignore-nix": [
"taffybar",
"git-ignore-nix"
],
"nixpkgs": [
"taffybar",
"nixpkgs"
]
},
"locked": {
"lastModified": 1760550944,
"narHash": "sha256-S0saDsCA3aosU23jO5+jSXkbyrv7/C48o8GjsZrqF0I=",
"lastModified": 1663377859,
"narHash": "sha256-UrBd+R3NaJIDC2lt5gMafS3KBeLs83emm2YorX2cFCo=",
"owner": "taffybar",
"repo": "gtk-strut",
"rev": "5e0bf7f4b93b931a9c4b4a48b5d39de3ca8f02ae",
"rev": "d946eb230cdccf5afc063642b3215723e555990b",
"type": "github"
},
"original": {
@@ -146,39 +233,197 @@
"type": "github"
}
},
"nixpkgs": {
"haskell-hie-bios": {
"flake": false,
"locked": {
"lastModified": 1764252443,
"narHash": "sha256-U4G4dUSYWZYKtrF7/ozebD1B96at08SIhY4R9OaK1nw=",
"lastModified": 1686930638,
"narHash": "sha256-gfcxxHtZ2jUsiKNn/O4jEkfWF/2H04aTnaIvPDbtNlQ=",
"owner": "haskell",
"repo": "hie-bios",
"rev": "3d4fadfb0dc44cb287db9897ecfb503899d33513",
"type": "github"
},
"original": {
"owner": "haskell",
"repo": "hie-bios",
"type": "github"
}
},
"haskell-implicit-hie-cradle": {
"flake": false,
"locked": {
"lastModified": 1686495518,
"narHash": "sha256-OAe+zOkMZuoTfVEMnxnCT1cmPgRF/riAR8nVdomnwxo=",
"owner": "smunix",
"repo": "implicit-hie-cradle",
"rev": "d6aa00355898469af56cfd5e62f7fc8bd9959ded",
"type": "github"
},
"original": {
"owner": "smunix",
"ref": "smunix-patch-hls-0.5-1",
"repo": "implicit-hie-cradle",
"type": "github"
}
},
"haskell-language-server": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_3",
"fourmolu-011": "fourmolu-011",
"fourmolu-012": "fourmolu-012",
"gitignore": "gitignore",
"haskell-hie-bios": "haskell-hie-bios",
"haskell-implicit-hie-cradle": "haskell-implicit-hie-cradle",
"hiedb": "hiedb",
"hlint-35": "hlint-35",
"hlint-36": "hlint-36",
"lsp": "lsp",
"lsp-test": "lsp-test",
"lsp-types": "lsp-types",
"nixpkgs": "nixpkgs_2",
"ormolu-052": "ormolu-052",
"ormolu-07": "ormolu-07",
"stylish-haskell-0145": "stylish-haskell-0145"
},
"locked": {
"lastModified": 1693851896,
"narHash": "sha256-799JUHpBd2iMRCrTYDme5RsROKnIwSKBe2xYxgVN7QI=",
"owner": "colonelpanic8",
"repo": "nixpkgs",
"rev": "e1fc6c25b91d3d49dd02a156237721f12dbd86b2",
"repo": "haskell-language-server",
"rev": "ea368cef0673059fff95e953ef983109b5979dbc",
"type": "github"
},
"original": {
"owner": "colonelpanic8",
"ref": "remove-gi-gtk-hs-patch",
"repo": "nixpkgs",
"ref": "goto-dependency-definition-2",
"repo": "haskell-language-server",
"type": "github"
}
},
"hiedb": {
"flake": false,
"locked": {
"lastModified": 1691542357,
"narHash": "sha256-90ftphhoIo0CklJrjfCGQrZIUKZfdMJ2Og6tep9dmJ8=",
"owner": "nlander",
"repo": "HieDb",
"rev": "4eebfcf8fab54f24808e6301227d77ae64d2509c",
"type": "github"
},
"original": {
"owner": "nlander",
"ref": "all-new-functions",
"repo": "HieDb",
"type": "github"
}
},
"hlint-35": {
"flake": false,
"locked": {
"narHash": "sha256-qQNUlQQnahUGEO92Lm0RwjTGBGr2Yaw0KRuFRMoc5No=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/hlint-3.5/hlint-3.5.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/hlint-3.5/hlint-3.5.tar.gz"
}
},
"hlint-36": {
"flake": false,
"locked": {
"narHash": "sha256-fH4RYnWeuBqJI5d3Ba+Xs0BxYr0IYFH1OWO3k2iHGlU=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/hlint-3.6.1/hlint-3.6.1.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/hlint-3.6.1/hlint-3.6.1.tar.gz"
}
},
"lsp": {
"flake": false,
"locked": {
"narHash": "sha256-HcEfdYUrCHufEa+10M2wESjnK41xM/msd+t6r6JwQO0=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/lsp-2.2.0.0/lsp-2.2.0.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/lsp-2.2.0.0/lsp-2.2.0.0.tar.gz"
}
},
"lsp-test": {
"flake": false,
"locked": {
"narHash": "sha256-E1D3X2+I9ZTZLpHDEDTXexQFYpyG5byOFRIvRTeBsn8=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/lsp-test-0.16.0.0/lsp-test-0.16.0.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/lsp-test-0.16.0.0/lsp-test-0.16.0.0.tar.gz"
}
},
"lsp-types": {
"flake": false,
"locked": {
"narHash": "sha256-Oa5HuKdsdTSQUKtuSt06zVAq19Qxq5IJZObrnPwlB6s=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/lsp-types-2.0.2.0/lsp-types-2.0.2.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/lsp-types-2.0.2.0/lsp-types-2.0.2.0.tar.gz"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1702312524,
"narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=",
"path": "/nix/store/4fgs7yzsy2dqnjw8j42qlp9i1vgarzy0-source",
"rev": "a9bf124c46ef298113270b1f84a164865987a91c",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1730768919,
"narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=",
"lastModified": 1686874404,
"narHash": "sha256-u2Ss8z+sGaVlKtq7sCovQ8WvXY+OoXJmY1zmyxITiaY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc",
"rev": "efc10371d5c5b8d2d58bab6c1100753efacfe550",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"ref": "haskell-updates",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1689098530,
"narHash": "sha256-fxc/9f20wRyo/5ydkmZkX/Sh/ULa7RcT8h+cUv8p/44=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f2406198ea0e4e37d4380d0e20336c575b8f8ef9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1666603677,
"narHash": "sha256-apAEIj+z1iwMaMJ4tB21r/VTetfGDLDzuhXRHJknIAU=",
@@ -192,38 +437,41 @@
"type": "indirect"
}
},
"nixpkgs_4": {
"nixpkgs_5": {
"locked": {
"lastModified": 1764230294,
"narHash": "sha256-Z63xl5Scj3Y/zRBPAWq1eT68n2wBWGCIEF4waZ0bQBE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0d59e0290eefe0f12512043842d7096c4070f30e",
"type": "github"
"lastModified": 1702312524,
"narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=",
"path": "/nix/store/4fgs7yzsy2dqnjw8j42qlp9i1vgarzy0-source",
"rev": "a9bf124c46ef298113270b1f84a164865987a91c",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": "nixpkgs_2"
},
"ormolu-052": {
"flake": false,
"locked": {
"lastModified": 1747372754,
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
"type": "github"
"narHash": "sha256-H7eqId488RBRxcf7flgJefAZmRgFJASJva+Oy7GG4q4=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/ormolu-0.5.2.0/ormolu-0.5.2.0.tar.gz"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
"type": "tarball",
"url": "https://hackage.haskell.org/package/ormolu-0.5.2.0/ormolu-0.5.2.0.tar.gz"
}
},
"ormolu-07": {
"flake": false,
"locked": {
"narHash": "sha256-5M5gNzSvsiQH1+0oexRByzf5EIET+0BFwR4fLIr2P7g=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/ormolu-0.7.1.0/ormolu-0.7.1.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/ormolu-0.7.1.0/ormolu-0.7.1.0.tar.gz"
}
},
"root": {
@@ -231,11 +479,24 @@
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"taffybar": "taffybar",
"xmonad": "xmonad"
"xmonad": "xmonad_2"
}
},
"status-notifier-item": {
"flake": false,
"inputs": {
"flake-utils": [
"taffybar",
"flake-utils"
],
"git-ignore-nix": [
"taffybar",
"git-ignore-nix"
],
"nixpkgs": [
"taffybar",
"nixpkgs"
]
},
"locked": {
"lastModified": 1641783528,
"narHash": "sha256-wJymJfYPFj4/r1e4kT/wt9FEsyCXo5JkkcOoozpuhag=",
@@ -250,6 +511,18 @@
"type": "github"
}
},
"stylish-haskell-0145": {
"flake": false,
"locked": {
"narHash": "sha256-EE7RFQ6q4Ek8daRgOpNMGepYLa9o8cM4OLjTNUSHQf0=",
"type": "tarball",
"url": "https://hackage.haskell.org/package/stylish-haskell-0.14.5.0/stylish-haskell-0.14.5.0.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://hackage.haskell.org/package/stylish-haskell-0.14.5.0/stylish-haskell-0.14.5.0.tar.gz"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
@@ -295,42 +568,53 @@
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"taffybar": {
"inputs": {
"flake-utils": "flake-utils_2",
"git-ignore-nix": "git-ignore-nix",
"gtk-sni-tray": "gtk-sni-tray",
"gtk-strut": "gtk-strut",
"nixpkgs": [
"nixpkgs"
],
"haskell-language-server": "haskell-language-server",
"nixpkgs": "nixpkgs_3",
"status-notifier-item": "status-notifier-item",
"weeder-nix": "weeder-nix",
"xmonad": [
"xmonad"
]
"xmonad": "xmonad"
},
"locked": {
"lastModified": 1760591109,
"narHash": "sha256-O21ayp5v2eccXdcwNjTK5ZB99ruK0Zt9CUaw5Rye42g=",
"lastModified": 1696612500,
"narHash": "sha256-Q19F91yVQviqxgY+FkvEwtX2vcw414eVtK8erim0NrU=",
"owner": "taffybar",
"repo": "taffybar",
"rev": "b256a711416036ca124fc9b3f89e7c957535e465",
"rev": "46eba89c2a4d4ffefe42c3ee4506d1b74c8e61fd",
"type": "github"
},
"original": {
"owner": "taffybar",
"ref": "master",
"repo": "taffybar",
"type": "github"
}
},
"unstable": {
"locked": {
"lastModified": 1764242076,
"narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=",
"lastModified": 1689098530,
"narHash": "sha256-fxc/9f20wRyo/5ydkmZkX/Sh/ULa7RcT8h+cUv8p/44=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4",
"rev": "f2406198ea0e4e37d4380d0e20336c575b8f8ef9",
"type": "github"
},
"original": {
@@ -340,41 +624,66 @@
"type": "github"
}
},
"weeder-nix": {
"inputs": {
"nixpkgs": [
"taffybar",
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks"
},
"unstable_2": {
"locked": {
"lastModified": 1748252779,
"narHash": "sha256-kSyD/VDUX2m9c2vcuLBT2wnpYiVSHHlP9vuDTtsAtD8=",
"owner": "NorfairKing",
"repo": "weeder-nix",
"rev": "388df7a6f00220d1960118e1ad37cd86150d2c5a",
"lastModified": 1704538339,
"narHash": "sha256-1734d3mQuux9ySvwf6axRWZRBhtcZA9Q8eftD6EZg6U=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "46ae0210ce163b3cba6c7da08840c1d63de9c701",
"type": "github"
},
"original": {
"owner": "NorfairKing",
"repo": "weeder-nix",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"xmonad": {
"inputs": {
"flake-utils": "flake-utils_3",
"git-ignore-nix": "git-ignore-nix",
"nixpkgs": "nixpkgs_4",
"flake-utils": [
"taffybar",
"flake-utils"
],
"git-ignore-nix": [
"taffybar",
"git-ignore-nix"
],
"nixpkgs": [
"taffybar",
"nixpkgs"
],
"unstable": "unstable"
},
"locked": {
"lastModified": 1763949843,
"narHash": "sha256-aJXmGPWKjXs7cagVzUE3fd2Fpc+sXnknM446AxHgvH0=",
"lastModified": 1687976934,
"narHash": "sha256-hUZmKy3jJ1+5rTGeQzfNR+LxgzmLaaeRVnbsJMEVw0Q=",
"owner": "xmonad",
"repo": "xmonad",
"rev": "97edef37a3ae10012272d692b5e1bc9b7013fc14",
"rev": "1aac6611d82065c9198e5584176058a9483fcbb0",
"type": "github"
},
"original": {
"owner": "xmonad",
"ref": "master",
"repo": "xmonad",
"type": "github"
}
},
"xmonad_2": {
"inputs": {
"flake-utils": "flake-utils_4",
"git-ignore-nix": "git-ignore-nix_2",
"nixpkgs": "nixpkgs_5",
"unstable": "unstable_2"
},
"locked": {
"lastModified": 1702895348,
"narHash": "sha256-ADRTw4DTfDCmsSFFWZKmvdmIjnEVY7pjjUxYytKXy1E=",
"owner": "xmonad",
"repo": "xmonad",
"rev": "c4cf4715f736fed77fb2af622c0760259ac2cf43",
"type": "github"
},
"original": {

View File

@@ -1,30 +1,15 @@
{
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:colonelpanic8/nixpkgs/remove-gi-gtk-hs-patch";
xmonad.url = "github:xmonad/xmonad/master";
taffybar = {
url = "github:taffybar/taffybar/master";
inputs.nixpkgs.follows = "nixpkgs";
inputs.xmonad.follows = "xmonad";
};
flake-utils.url = github:numtide/flake-utils;
xmonad.url = github:xmonad/xmonad/master;
taffybar.url = "github:taffybar/taffybar";
};
outputs = { self, flake-utils, taffybar, nixpkgs, xmonad }:
let
hoverlay = final: prev: hself: hsuper:
{
taffybar = prev.haskell.lib.overrideCabal hsuper.taffybar (oa: {
hoverlay = final: prev: hself: hsuper: {
taffybar = hsuper.taffybar.overrideAttrs (old: {
doHaddock = false;
doCheck = false;
# Fix for GHC 9.4 where liftA2 is not in Prelude
postPatch = (oa.postPatch or "") + ''
substituteInPlace src/System/Taffybar/DBus/Client/Util.hs \
--replace-fail "import Control.Monad (forM)" \
"import Control.Monad (forM)
import Control.Applicative (liftA2)"
'';
});
# gi-gtk-hs patching is now handled by taffybar's fixVersionNamePackages overlay
imalison-taffybar = prev.haskell.lib.addPkgconfigDepends (
hself.callCabal2nix "imalison-taffybar"
(
@@ -49,12 +34,12 @@ import Control.Applicative (liftA2)"
};
defComp = { compiler = "ghc94"; };
overlay = xmonad.lib.fromHOL hoverlay defComp;
overlayList = [ taffybar.overlays.default overlay ];
overlays = [ taffybar.overlay overlay ];
in flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system; overlays = overlayList; config.allowBroken = true; };
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
hpkgs = pkgs.lib.attrsets.getAttrFromPath (xmonad.lib.hpath defComp) pkgs;
in
{
rec {
devShell = hpkgs.shellFor {
packages = p: [ p.imalison-taffybar p.taffybar ];
nativeBuildInputs = with hpkgs; [
@@ -63,11 +48,5 @@ import Control.Applicative (liftA2)"
];
};
defaultPackage = hpkgs.imalison-taffybar;
}) // {
inherit overlay;
overlays = {
default = overlay;
taffybar = taffybar.overlays.default;
};
} ;
}) // { inherit overlay overlays; } ;
}

View File

@@ -21,7 +21,7 @@ executable taffybar
, containers
, directory
, filepath
, gi-gtk3
, gi-gtk
, gtk-sni-tray
, gtk-strut
, haskell-gi-base

View File

@@ -218,7 +218,7 @@ main = do
[ ( "uber-loaner"
, baseConfig { endWidgets = laptopEndWidgets }
)
, ( "adell"
, ( "adele"
, baseConfig { endWidgets = laptopEndWidgets }
)
, ( "stevie-nixos"

View File

@@ -17,7 +17,7 @@
in flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
in
{
rec {
devShell = pkgs.haskellPackages.shellFor {
packages = p: [ p.imalison-xmonad p.xmonad-contrib ];
buildInputs = with pkgs.haskellPackages; [

View File

@@ -1059,8 +1059,8 @@ addKeys conf@XConfig { modMask = modm } =
, ((hyper .|. shiftMask, xK_q), spawn "toggle_mute_current_window.sh")
, ((hctrl, xK_q), spawn "toggle_mute_current_window.sh only")
, ((0, xF86XK_MonBrightnessUp), spawn "brightness.sh up")
, ((0, xF86XK_MonBrightnessDown), spawn "brightness.sh down")
, ((0, xF86XK_MonBrightnessUp), spawn "brightness.sh 5")
, ((0, xF86XK_MonBrightnessDown), spawn "brightness.sh -5")
] ++

View File

@@ -4,7 +4,6 @@
(setq mc/cmds-to-run-for-all
'(
TeX-insert-backslash
align
backward-sexp
beginning-of-buffer
beginning-of-visual-line

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
(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))

View File

@@ -1,41 +1,28 @@
;; -*- 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-always-compile t)
(setq load-no-native t)
(setq no-native-compile t)
(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
straight-use-package-by-default t
straight-vc-git-default-protocol 'ssh)
(straight-use-package 'use-package)
(require 'use-package)
(setq use-package-enable-imenu-support t)
(setq use-package-ensure-function 'straight-use-package-ensure-function)
(setq use-package-always-ensure t)
(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")))
(when (file-exists-p bench-file) (load bench-file)))
@@ -55,6 +42,9 @@
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'super))
(use-package transient
:demand t)
;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken.
(use-package magit
:demand t)
@@ -62,29 +52,56 @@
;; This seems to fix issues with helm not explicitly declaring its dependency on async
(use-package async :demand t)
(use-package s :demand t)
;; Without this, org can behave very strangely
(use-package org
:straight
:ensure
(org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org"
:branch "my-main-2025"
:depth full :pre-build (straight-recipes-org-elpa--build) :build
:branch "my-main"
:depth full
:build
:wait t
(:not autoloads) :files
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*")))
:defer t)
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*"))))
(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))
(org-babel-load-file
(concat (file-name-directory load-file-name) "README.org")))
(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))
;; (when imalison:do-benchmark (benchmark-init/deactivate))
;; Local Variables:
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)

View File

@@ -58,11 +58,41 @@ This makes evil-mode play nice with org-fc
(file+datetree "~/org/weekly_reviews.org")
(file "~/org/weekly_review_template.org")))))
#+end_src
** Journal
** Daily Journal Entries
#+begin_src emacs-lisp
(setq imalison:journal-template-filepath
(imalison:join-paths org-directory "templates" "daily-journal-template.org"))
(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")))
(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
** Insert a link to a task selected from agenda
#+begin_src emacs-lisp
(defun imalison:insert-link-to-agenda ()
@@ -131,10 +161,6 @@ This makes evil-mode play nice with org-fc
* Packages
#+begin_src emacs-lisp
(use-package org-drill)
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
#+end_src
@@ -142,35 +168,3 @@ This makes evil-mode play nice with org-fc
#+begin_src emacs-lisp
(setq org-wild-notifier-day-wide-alert-times nil)
#+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

View File

@@ -1,91 +0,0 @@
(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")

View File

@@ -62,11 +62,6 @@ 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: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)
(setq org-agenda-files
(delete-dups
@@ -204,35 +199,6 @@ We're going to use this to write separate parts of our config to different secti
((current-time (&rest args) time))
(funcall fn)))
#+end_src
** Reschedule Past Items to Today
This function finds all incomplete items in the agenda files that are scheduled
in the past and reschedules them to today. Useful for catching up on tasks that
have slipped past their original scheduled date.
#+begin_src emacs-lisp :tangle org-config-config.el
(defun imalison:reschedule-past-to-today ()
"Reschedule all incomplete items scheduled in the past to today.
Iterates through all org-agenda files and reschedules any TODO items
that have a SCHEDULED date before today to the current date."
(interactive)
(let* ((today-time (org-time-string-to-time (format-time-string "<%Y-%m-%d>")))
(rescheduled-count 0))
(org-map-entries
(lambda ()
(let* ((scheduled (org-entry-get nil "SCHEDULED"))
(scheduled-time (when scheduled (org-time-string-to-time scheduled))))
(when (and scheduled-time
(not (org-entry-is-done-p))
(time-less-p scheduled-time today-time))
(org-schedule nil ".")
(cl-incf rescheduled-count))))
nil
'agenda)
(message "Rescheduled %d items to today" rescheduled-count)))
#+end_src
#+RESULTS:
: imalison:reschedule-past-to-today
** Miscellaneous
#+begin_src emacs-lisp :tangle org-config-config.el
(add-to-list 'org-show-context-detail '(org-goto . lineage))
@@ -400,13 +366,12 @@ that have a SCHEDULED date before today to the current date."
*** Agenda Files
#+begin_src emacs-lisp :tangle org-config-config.el
(imalison:add-to-org-agenda-files
(nconc (list imalison:org-gtd-file imalison:org-calendar-file
imalison:org-inbox-file imalison:shared-org-gtd-file
imalison:shared-calendar-file imalison:shared-shopping-file)
(nconc (list imalison:org-gtd-file imalison:org-habits-file
imalison:org-calendar-file imalison:org-inbox-file
imalison:shared-org-gtd-file imalison:shared-habits-file
imalison:shared-calendar-file imalison:shared-shopping-file
imalison:shared-repeating-file)
imalison:orgzly-files))
(when imalison:include-repeating-in-agenda
(imalison:add-to-org-agenda-files imalison:repeating-org-files))
#+end_src
*** Predicates
#+begin_src emacs-lisp :tangle org-config-config.el
@@ -623,43 +588,6 @@ specific time, they should appear in the agenda at that time!
(defun imalison:make-org-linked-todo-template ()
(imalison:make-org-todo-template "[#C] %? %A"))
#+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
#+begin_src emacs-lisp :tangle org-config-config.el
(use-package org-capture
@@ -698,15 +626,7 @@ SCHEDULED: %^t
:PROPERTIES:
:CREATED: %U
:STYLE: habit
: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:")))
#+end_src
** Babel
#+begin_src emacs-lisp :tangle org-config-config.el
@@ -883,7 +803,7 @@ alphanumeric characters only."
** Use org-tempo to allow inserting templates using e.g. <s
#+begin_src emacs-lisp
(use-package org-tempo
:straight nil
:ensure nil
:after org)
#+end_src
* Packages
@@ -1018,9 +938,6 @@ alphanumeric characters only."
#+end_src
***** ui
#+begin_src emacs-lisp
(use-package emacs-http-server
:demand t)
(use-package org-roam-ui
:after org-roam
:custom

View File

@@ -1,5 +0,0 @@
# -*- mode: snippet -*-
# name: inp
# key: inp
# --
import numpy as np

View File

@@ -1,5 +0,0 @@
# -*- mode: snippet -*-
# name: isa
# key: isa
# --
import sqlalchemy as sa

View File

@@ -24,6 +24,7 @@ pom.xml
TAGS
# Vim
*.sw*
*.tmp*
# JavaScript

20
dotfiles/gtkrc-2.0 Normal file
View File

@@ -0,0 +1,20 @@
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"

View File

@@ -1,164 +0,0 @@
#!/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

View File

@@ -1,92 +1,3 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
# 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
volnoti-show $(sudo brightness_manager.py -c "$@" -p)

View File

@@ -0,0 +1,76 @@
#!/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))

View File

@@ -1,7 +0,0 @@
#!/usr/bin/env sh
function ns {
sk --ansi -i -c 'nix-search "{}"' | get_cols 1
}
ns "$@"

View File

@@ -2,12 +2,12 @@
function pashowvolume {
if paismuted; then
rumno notify -m
volnoti-show -m
else
actual=$(pavolume)
max=100
show=$(( actual < max ? actual : max ))
rumno notify -v "$show"
volnoti-show "$show"
fi
}

View File

@@ -1,7 +1,9 @@
#!/usr/bin/env sh
function pavolume {
pactl get-sink-volume $(pactl get-default-sink) | FS="/" get_cols 2 | grep -oE '[0-9]*'
pacmd list-sinks |
awk '/^\s+name: /{indefault = $2 == "<'"$(pasink)"'>"}
/^\s+volume: / && indefault {print $5; exit}' | grep -Eo "[0-9]*"
}
pavolume

View File

@@ -1,6 +1,10 @@
#!/usr/bin/env sh
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 "$@"
pashowvolume
}

View File

@@ -13,7 +13,7 @@ section: aliases
tv:
imalison-arch
imalison-desktop
imalison-home justin-bieber-creek
imalison-home
controlling:
uber-loaner
imalison-mpb-arch
@@ -22,5 +22,4 @@ section: aliases
kat-uber-loaner
Dean-PC
imalison-mbp
strixi-minaj
end

View File

@@ -1,5 +0,0 @@
# 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
View File

@@ -1,293 +0,0 @@
{
"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
}

View File

@@ -1,211 +0,0 @@
{
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;
};
}

View File

@@ -1,176 +0,0 @@
{
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);
};
}

View File

@@ -1,2 +0,0 @@
switch:
nix run nix-darwin -- switch --flake .#

View File

@@ -3,6 +3,9 @@
options = {
};
config = {
environment.systemPackages = with pkgs; [
android-udev-rules
];
nixpkgs.config.android_sdk.accept_license = true;
programs.adb.enable = true;
};

View File

@@ -1,13 +1,12 @@
{ config, pkgs, forEachUser, makeEnable, realUsers, ... }:
makeEnable config "myModules.base" true {
makeEnable config "modules.base" true {
nixpkgs.config.permittedInsecurePackages = [
"electron-12.2.3"
"electron-19.1.9"
"electron-32.3.3"
"etcher"
"nix-2.16.2"
"openssl-1.0.2u"
"electron-12.2.3"
"etcher"
"electron-19.1.9"
"openssl-1.1.1w"
"nix-2.16.2"
];
# Disabling these waits disables the stuck on boot up issue
@@ -30,26 +29,15 @@ makeEnable config "myModules.base" true {
'';
networking.firewall.enable = false;
networking.nameservers = [ "8.8.8.8" "8.8.4.4" ];
networking.networkmanager = {
enable = true;
enableStrongSwan = true;
plugins = [ pkgs.networkmanager-l2tp pkgs.networkmanager-openvpn ];
};
networking.resolvconf.enable = false;
services.mullvad-vpn.enable = true;
# Audio
services.pulseaudio.enable = true;
services.pipewire = {
enable = false;
systemWide = true;
alsa.enable = true;
alsa.support32Bit = true;
jack.enable = true;
pulse.enable = true;
};
sound.enable = true;
hardware.pulseaudio.enable = true;
# Bluetooth
hardware.bluetooth.enable = true;
@@ -65,29 +53,23 @@ makeEnable config "myModules.base" true {
defaultLocale = "en_US.UTF-8";
};
# # Update timezone automatically
# Update timezone automatically
services.tzupdate.enable = true;
# TODO: Add a comment explaining what this does.
services.locate.enable = true;
virtualisation.docker.enable = true;
services.orca.enable = false;
virtualisation.podman = {
enable = true;
autoPrune = {
enable = true;
};
};
hardware.keyboard.zsa.enable = true;
services.logind.extraConfig = "RuntimeDirectorySize=5G";
# For supporting gnome stuff
services.dbus.packages = [ pkgs.gcr ];
programs.dconf.enable = true;
home-manager.users = forEachUser (import ./home-manager.nix);
nix.settings.trusted-users = realUsers ++ ["gitea-runner"];
nix.settings.trusted-users = realUsers;
}

View File

@@ -1,5 +1,5 @@
{ pkgs, inputs, config, makeEnable, ... }:
makeEnable config "myModules.ben" true {
makeEnable config "modules.ben" true {
home-manager.backupFileExtension = "backup"; # Add this line
home-manager.users.ben = {
programs.zsh = {

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }:
{ pkgs, config, lib, ... }:
{
imports = [
./essential.nix
@@ -21,7 +21,7 @@
enable = true;
layout = "us";
desktopManager = {
plasma6.enable = true;
plasma5.enable = true;
};
displayManager = {
sddm = {
@@ -36,7 +36,7 @@
'';
};
};
nix = {
nix = rec {
extraOptions = ''
experimental-features = nix-command flakes
'';

View File

@@ -1,10 +1,10 @@
{ config, lib, ... }:
with lib;
let cfg = config.myModules.cache-server;
let cfg = config.modules.cache-server;
in
{
options = {
myModules.cache-server = {
modules.cache-server = {
enable = mkEnableOption "nix cache server";
port = mkOption {
type = types.int;

View File

@@ -1,22 +1,11 @@
{ pkgs, config, makeEnable, ... }:
makeEnable config "myModules.code" true {
makeEnable config "modules.code" true {
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
environment.systemPackages = with pkgs; [
# LLM Tools
antigravity
claude-code
codex
gemini-cli
# MCP
github-mcp-server
gitea-mcp-server
playwright-mcp
# C
clang
@@ -35,8 +24,6 @@ makeEnable config "myModules.code" true {
# Node
nodePackages.npm
nodejs
yarn
prettier
# Typescript
typescript
@@ -47,7 +34,6 @@ makeEnable config "myModules.code" true {
# Rust
rustup
cargo-sweep
# Clojure
boot
@@ -57,13 +43,8 @@ makeEnable config "myModules.code" true {
ruby
# python
black
poetry
uv
# kotlin
kotlin
kotlin-language-server
black
# dhall
haskellPackages.dhall

View File

@@ -17,17 +17,12 @@
./gitea-runner.nix
./gitea.nix
./gnome.nix
./home-assistant.nix
./imalison.nix
./internet-computer.nix
./k3s.nix
./kat.nix
./keybase.nix
./kubelet.nix
./laptop.nix
./nix.nix
./nixified.ai.nix
./nvidia.nix
./options.nix
./plasma.nix
./postgres.nix
@@ -35,12 +30,10 @@
./secrets.nix
./ssh.nix
./syncthing.nix
./tts.nix
./user-specific.nix
./users.nix
./vscode.nix
./wsl.nix
./wyoming.nix
./xmonad.nix
];
@@ -49,16 +42,17 @@
};
config = lib.mkIf config.features.full.enable {
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.plasma.enable = true;
myModules.gnome.enable = false;
myModules.xmonad.enable = true;
myModules.extra.enable = true;
myModules.electron.enable = true;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
modules.base.enable = true;
modules.desktop.enable = true;
modules.plasma.enable = true;
modules.gnome.enable = false;
modules.xmonad.enable = true;
modules.extra.enable = true;
modules.electron.enable = true;
modules.code.enable = true;
modules.games.enable = true;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
};
}

View File

@@ -1,5 +1,5 @@
{ inputs, config, pkgs, makeEnable, ... }:
makeEnable config "myModules.desktop" true {
{ config, pkgs, makeEnable, ... }:
makeEnable config "modules.desktop" true {
imports = [
./fonts.nix
];
@@ -21,8 +21,6 @@ makeEnable config "myModules.desktop" true {
};
};
programs.hyprland.enable = true;
services.autorandr = {
enable = true;
};
@@ -34,13 +32,11 @@ makeEnable config "myModules.desktop" true {
services.gnome.gnome-keyring.enable = true;
# Visual notification manager
environment.systemPackages = with pkgs; [
# Appearance
adwaita-icon-theme
gnome.adwaita-icon-theme
hicolor-icon-theme
# libsForQt5.breeze-gtk
libsForQt5.breeze-gtk
# materia-theme
numix-icon-theme-circle
papirus-icon-theme
@@ -58,48 +54,45 @@ makeEnable config "myModules.desktop" true {
# Desktop
alacritty
blueman
# clipit
clipit
d-spy
kdePackages.dolphin
# inputs.ghostty.packages."${system}".default
dolphin
feh
firefox
cheese
gpaste
kdePackages.kleopatra
gnome.cheese
gnome.gpaste
kleopatra
libnotify
libreoffice
lxappearance
lxqt.lxqt-powermanagement
networkmanagerapplet
kdePackages.okular
pinentry-gnome3
# mission-center
notify-osd-customizable
okular
picom
pinentry
psensor
quassel
remmina
rofi
wofi
rofi-pass
rofi-systemd
shutter
simplescreenrecorder
skippy-xd
synergy
# TODO: reenable
# transmission_3-gtk
transmission-gtk
vlc
volnoti
xfce.thunar
# Audio
picard
pavucontrol
playerctl
pulsemixer
espeak
#
brightnessctl
# Visualization
graphviz
nodePackages.mermaid-cli
@@ -109,7 +102,7 @@ makeEnable config "myModules.desktop" true {
slack
spicetify-cli
spotify
tor-browser
tor-browser-bundle-bin
vscode
zulip
] else []);

View File

@@ -1,5 +1,5 @@
{ pkgs, config, makeEnable, forEachUser, ... }:
makeEnable config "myModules.electron" false {
makeEnable config "modules.electron" false {
environment.systemPackages = with pkgs; [
element-desktop
# bitwarden

View File

@@ -34,10 +34,6 @@ with lib;
eval "$(register-python-argcomplete prod-prb)"
eval "$(register-python-argcomplete railbird)"
[ -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
'';
};

View File

@@ -5,7 +5,6 @@
environment.systemPackages = with pkgs; [
automake
bazel
bento4
bind
binutils
cachix
@@ -17,15 +16,16 @@
emacs
fd
ffmpeg
bento4
file
gawk
gcc
gdb
gh
git-fame
git-lfs
git-fame
git-sync
gitFull
glxinfo
gnumake
gparted
home-manager
@@ -38,33 +38,27 @@
lshw
lsof
magic-wormhole-rs
mesa-demos
ncdu
neofetch
neovim
nix-index
nix-search-cli
pass
patchelf
pciutils
pstree
pulseaudio
python-with-my-packages
rclone
rcm
ripgrep
runc
silver-searcher
skim
sshfs
sysz
sshfs
tmux
tzupdate
udiskie
unzip
usbutils
wget
xkcdpass
yubikey-manager
];
}

View File

@@ -1,5 +1,6 @@
{ config, pkgs, makeEnable, ... }:
makeEnable config "myModules.extra" false {
makeEnable config "modules.extra" false {
services.expressvpn.enable = true;
programs.hyprland.enable = true;
environment.systemPackages = with pkgs; [
@@ -9,6 +10,7 @@ makeEnable config "myModules.extra" false {
asciidoctor
roomeqwizard
razergenie
expressvpn
signal-desktop
gource
gimp

1243
nixos/flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,48 +1,19 @@
{
inputs = {
railbird-secrets = {
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
};
nixos-hardware = { url = "github:colonelpanic8/nixos-hardware"; };
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
};
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";
};
home-manager = {
url = "github:nix-community/home-manager/master";
url = "github:nix-community/home-manager";
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";
};
# 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 = {
url = "github:IvanMalison/xmonad-contrib/withMyChanges";
inputs = {
@@ -53,21 +24,35 @@
};
};
taffybar = {
url = "github:taffybar/taffybar/old-master";
xmonad = {
url = "github:xmonad/xmonad";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
};
};
taffybar = {
url = "github:taffybar/taffybar";
inputs = {
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 = {
url = "path:../dotfiles/config/taffybar";
# inputs = {
# nixpkgs.follows = "nixpkgs";
# flake-utils.follows = "flake-utils";
# xmonad.follows = "xmonad";
# taffybar.follows = "taffybar";
# };
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
xmonad.follows = "xmonad";
taffybar.follows = "taffybar";
};
};
notifications-tray-icon = {
@@ -77,6 +62,18 @@
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 = {
url = "github:taffybar/gtk-sni-tray";
inputs = {
@@ -107,86 +104,20 @@
vscode-server.url = "github:nix-community/nixos-vscode-server";
nixified-ai = {url = "github:nixified-ai/flake";};
nixpkgs-regression = { url = "github:NixOS/nixpkgs"; };
nixtheplanet.url = "github:matthewcroughan/nixtheplanet";
nixified-ai = { url = "github:nixified-ai/flake"; };
nixos-wsl = { url = "github:nix-community/NixOS-WSL"; };
agenix.url = "github:ryantm/agenix";
};
outputs = inputs @ {
self,
nixpkgs,
nixos-hardware,
home-manager,
taffybar,
xmonad,
nixtheplanet,
xmonad-contrib,
notifications-tray-icon,
nix,
agenix,
imalison-taffybar,
...
}: let
# Nixpkgs PR patches - just specify PR number and hash
nixpkgsPRPatches = [
{
pr = 434160; # git-sync-rs package
hash = "sha256-zjzjmC1XJmwfHr/YXFyYsqUFR5MHSoxWWyxIR35YNbM=";
}
# claude-code
# {
# pr = 464698;
# hash = "sha256-Pe9G6b/rI0874mM7FIOSEKiaubk95NcFhTQ7paAeLTU=";
# }
# {
# pr = 464816;
# hash = "sha256-bKEoRy4dzP5TyRBjYskwEzr7tj8/ez/Y1XHiQgu5q5I=";
# }
];
# Custom patches that don't fit the PR template
nixpkgsCustomPatches = [
];
# Home-manager PR patches - just specify PR number and hash
homeManagerPRPatches = [
# Example:
# {
# pr = 1234;
# hash = "sha256-...";
# }
];
# Custom home-manager patches that don't fit the PR template
homeManagerCustomPatches = [
{
url = "https://github.com/colonelpanic8/home-manager/commit/92f4b7aa5254f8bcddc9ef86e04ea5314410d10b.patch";
hash = "sha256-RQl5daVpCqQi05l9QfTEz2PpQxmsv/HYnXrgXbqbwWk=";
}
];
# Convert PR patches to full patch format for nixpkgs
nixpkgsPrPatchesToPatches = prPatches:
map (p: {
url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/${toString p.pr}.patch";
hash = p.hash;
})
prPatches;
# Convert PR patches to full patch format for home-manager
homeManagerPrPatchesToPatches = prPatches:
map (p: {
url = "https://patch-diff.githubusercontent.com/raw/nix-community/home-manager/pull/${toString p.pr}.patch";
hash = p.hash;
})
prPatches;
# Combine all nixpkgs patches
allNixpkgsPatches = (nixpkgsPrPatchesToPatches nixpkgsPRPatches) ++ nixpkgsCustomPatches;
# Combine all home-manager patches
allHomeManagerPatches = (homeManagerPrPatchesToPatches homeManagerPRPatches) ++ homeManagerCustomPatches;
outputs = inputs@{
self, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad,
xmonad-contrib, notifications-tray-icon, nix, agenix, imalison-taffybar, ...
}:
let
machinesFilepath = ./machines;
machineFilenames = builtins.attrNames (builtins.readDir machinesFilepath);
machineNameFromFilename = filename: builtins.head (builtins.split "\\." filename);
@@ -195,9 +126,7 @@
name = machineNameFromFilename filename;
value = {
modules = [
(machinesFilepath + ("/" + filename))
agenix.nixosModules.default
nixtheplanet.nixosModules.macos-ventura
(machinesFilepath + ("/" + filename)) agenix.nixosModules.default
];
};
};
@@ -211,87 +140,35 @@
system = "aarch64-linux";
};
};
mkConfig = {
system ? "x86_64-linux",
baseModules ? [],
modules ? [],
specialArgs ? {},
...
}: 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 = map bootstrapPkgs.fetchpatch allNixpkgsPatches;
prePatch = ''
mkdir -p pkgs/by-name/an/antigravity
'';
};
# Get eval-config from patched source
evalConfig = import "${patchedSource}/nixos/lib/eval-config.nix";
# Apply patches to home-manager source (only if there are patches)
patchedHomeManagerSource =
if allHomeManagerPatches == []
then home-manager
else
bootstrapPkgs.applyPatches {
name = "home-manager-patched";
src = home-manager;
patches = map bootstrapPkgs.fetchpatch allHomeManagerPatches;
};
# Import the patched home-manager flake
patchedHomeManager =
if allHomeManagerPatches == []
then home-manager
else import "${patchedHomeManagerSource}/flake.nix";
# Get the NixOS module from the patched source
patchedHomeManagerModule =
if allHomeManagerPatches == []
then home-manager.nixosModules.home-manager
else import "${patchedHomeManagerSource}/nixos";
# Create a modified inputs with patched home-manager
patchedInputs = inputs // {
home-manager = inputs.home-manager // {
nixosModules = inputs.home-manager.nixosModules // {
home-manager = patchedHomeManagerModule;
};
# Also provide the patched source path for any direct imports
outPath = patchedHomeManagerSource.outPath or "${patchedHomeManagerSource}";
mkConfig =
args@
{ system ? "x86_64-linux"
, baseModules ? []
, modules ? []
, specialArgs ? {}
, ...
}:
nixpkgs.lib.nixosSystem (args // {
inherit system;
modules = baseModules ++ modules;
specialArgs = rec {
inherit inputs machineNames;
makeEnable = (import ./make-enable.nix) nixpkgs.lib;
keys = (import ./keys.nix);
usersInfo = (import ./users.nix) {
pkgs = { zsh = "zsh"; };
inherit keys inputs system;
};
};
in
evalConfig {
inherit system;
modules = baseModules ++ modules;
specialArgs =
rec {
inputs = patchedInputs;
inherit machineNames;
makeEnable = (import ./make-enable.nix) nixpkgs.lib;
keys = import ./keys.nix;
usersInfo = (import ./users.nix) {
pkgs = {zsh = "zsh";};
inherit keys system;
inputs = patchedInputs;
};
realUsers = (
builtins.attrNames
(nixpkgs.lib.filterAttrs
(_: value: (builtins.elem "isNormalUser" (builtins.attrNames value)) && value.isNormalUser)
usersInfo.users.users)
);
mapAllKeysToValue = keys: value: builtins.listToAttrs (map (name: {inherit name value;}) keys);
forEachUser = mapAllKeysToValue realUsers;
}
// specialArgs;
};
in {
realUsers = (builtins.attrNames
(nixpkgs.lib.filterAttrs
(_: value: (builtins.elem "isNormalUser" (builtins.attrNames value)) && value.isNormalUser) usersInfo.users.users)
);
mapAllKeysToValue = keys: value: builtins.listToAttrs (map (name: { inherit name value; }) keys);
forEachUser = mapAllKeysToValue realUsers;
} // specialArgs;
});
in
{
nixConfig = {
substituters = [
"https://cache.nixos.org/"
@@ -301,23 +178,17 @@
];
extra-substituters = [
"http://192.168.1.26:5050"
"https://cache.flox.dev"
];
extra-trusted-public-keys = [
"1896Folsom.duckdns.org:U2FTjvP95qwAJo0oGpvmUChJCgi5zQoG1YisoI08Qoo="
"flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs="
];
};
nixosConfigurations =
builtins.mapAttrs (
machineName: params: let
machineParams =
if builtins.hasAttr machineName customParams
then (builtins.getAttr machineName customParams)
else {};
in
mkConfig (params // machineParams)
)
defaultConfigurationParams;
nixosConfigurations = builtins.mapAttrs (machineName: params:
let machineParams =
if builtins.hasAttr machineName customParams
then (builtins.getAttr machineName customParams)
else {};
in mkConfig (params // machineParams)
) defaultConfigurationParams;
};
}

View File

@@ -1,5 +1,5 @@
{ pkgs, makeEnable, config, ... }:
makeEnable config "myModules.fonts" true {
makeEnable config "modules.fonts" true {
# Enable the gtk icon cache
gtk.iconCache.enable = true;
@@ -15,16 +15,19 @@ makeEnable config "myModules.fonts" true {
fira-mono
font-awesome
noto-fonts-color-emoji
noto-fonts-emoji
roboto
source-code-pro
source-sans-pro
source-serif-pro
twemoji-color-font
nerd-fonts.jetbrains-mono
nerd-fonts.fantasque-sans-mono
nerd-fonts.iosevka
nerd-fonts.victor-mono
(nerdfonts.override { fonts = [
"JetBrainsMono"
"FantasqueSansMono"
"Iosevka"
"VictorMono"
"SourceCodePro"
]; })
];
fontconfig = {
hinting.autohint = true;
@@ -32,7 +35,7 @@ makeEnable config "myModules.fonts" true {
allowBitmaps = true;
useEmbeddedBitmaps = true;
defaultFonts = {
monospace = [ "JetBrains Mono" ];
monospace = [ "Source Code Pro" ];
sansSerif = [ "Roboto" ];
serif = [ "Source Serif Pro" ];
};

View File

@@ -1,8 +1,11 @@
{ config, pkgs, makeEnable, ... }:
makeEnable config "myModules.games" false {
makeEnable config "modules.games" false {
environment.systemPackages = with pkgs; [
steam
heroic
# heroic
];
boot.extraModulePackages = with pkgs; [
xboxdrv
];
hardware.xone.enable = true;
}

View File

@@ -1,8 +1,7 @@
{ pkgs, ... }: {
{ ... }: {
home-manager.users.imalison = ({ config, ... }: {
services.git-sync = {
enable = true;
package = pkgs.git-sync-rs;
repositories = {
config = {
path = config.home.homeDirectory + "/config";
@@ -19,7 +18,7 @@
};
katnivan = {
path = config.home.homeDirectory + "/katnivan";
uri = "ssh://gitea@dev.railbird.ai:1123/colonelpanic/katnivan.git";
uri = "ssh://gitea@1896Folsom.duckdns.org:1123/colonelpanic/katnivan.git";
interval = 30;
};
};

View File

@@ -1,7 +1,7 @@
{ pkgs, config, makeEnable, ... }:
makeEnable config "myModules.gitea-runner" false {
makeEnable config "modules.gitea-runner" false {
age.secrets.gitea-runner-token = {
file = ./secrets/gitea-runner-token.age;
file = ./secrets/gitea-runner-token.${config.networking.hostName}.age;
group = "docker";
};
@@ -21,17 +21,16 @@ makeEnable config "myModules.gitea-runner" false {
};
hostPackages = with pkgs; [
bash
direnv
coreutils
curl
direnv
docker
gawk
git-lfs
nixFlakes
gitFull
gnused
just
nixVersions.stable
nodejs
docker
openssh
wget
];
@@ -45,13 +44,11 @@ makeEnable config "myModules.gitea-runner" false {
];
};
systemd.services.gitea-runner-nix = {
environment = let gitea-runner-directory = "/var/lib/gitea-runner"; in {
systemd.services.gitea-runner-nix.environment =
let gitea-runner-directory = "/var/lib/gitea-runner"; in {
XDG_CONFIG_HOME = gitea-runner-directory;
XDG_CACHE_HOME = "${gitea-runner-directory}/.cache";
};
serviceConfig.PrivateTmp = false;
};
users.groups.gitea-runner = {};
users.users.gitea-runner = {
isSystemUser = true;

View File

@@ -1,5 +1,5 @@
{ config, makeEnable, ... }:
makeEnable config "myModules.gitea" false {
makeEnable config "modules.gitea" false {
services.gitea = {
enable = true;
@@ -8,15 +8,11 @@ makeEnable config "myModules.gitea" false {
enable = true;
interval = "23:05";
};
settings.service = {
DISABLE_REGISTRATION = true;
};
settings.server = {
DOMAIN = "dev.railbird.ai";
SSH_PORT = 1123;
HTTP_PORT = 3001;
ROOT_URL = "https://dev.railbird.ai";
DISABLE_REGISTRATION = true;
};
settings.actions = {
ENABLED = true;

View File

@@ -1,5 +1,5 @@
{ config, makeEnable, ... }:
makeEnable config "myModules.gnome" false {
makeEnable config "modules.gnome" false {
services.xserver = {
desktopManager.gnome.enable = true;
displayManager.gdm.enable = true;

View File

@@ -1,119 +0,0 @@
{ 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 = {};
};
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }:
{ pkgs, config, specialArgs, ... }:
{
xsession = {
enable = true;
@@ -11,22 +11,7 @@
programs.home-manager.enable = true;
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
forwardAgent = true;
addKeysToAgent = "no";
compression = false;
serverAliveInterval = 0;
serverAliveCountMax = 3;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no";
};
};
forwardAgent = true;
};
services.gpg-agent = {
@@ -64,7 +49,7 @@
};
font = {
package = pkgs.noto-fonts-color-emoji;
package = pkgs.noto-fonts-emoji;
name = "Noto Sans";
size = 10;
};

View File

@@ -2,7 +2,7 @@ switch *args:
sudo nixos-rebuild switch --flake '.#' --impure {{args}}
fix-local-path-issue:
nix flake update imalison-taffybar
nix flake lock --update-input imalison-taffybar
expire-home-manager-generations:

View File

@@ -1,165 +0,0 @@
{
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;
};
};
};
}

View File

@@ -1,11 +1,10 @@
{ pkgs, config, makeEnable, ... }:
makeEnable config "myModules.kat" false {
{ pkgs, inputs, config, makeEnable, ... }:
makeEnable config "modules.kat" false {
environment.systemPackages = with pkgs; [
obsidian
bitwarden
code-cursor
obsidian
windsurf
obs-studio
ffmpeg
];
environment.extraInit = ''

View File

@@ -6,8 +6,6 @@ rec {
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIoHW29TmS5FgK12N+bCXhGWASDdmzqSEA0QxbyGaJ+j nixquick.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIaA0tRVTqwBDxY6X03wx+50pbB37y5e8gqFpFMDa/Bj adele.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4j70BoksIEiX+OMBCsSG8wvMIEwoRQf5Gz5ppbm7Iy jimi-hendnix.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYAoN3l15Avweu5fcfcnlRzmFPHtlYIpo02sxBHANZ+ strixy-minaj.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFTYwBuQ3CNbkj6gAQ0oqxhPlKZ+X6tUaZotccowzjCW justin-bieber-creek.local"
];
kanivanKeys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUSkj7587e+MAUNyU/KRpw9Vk++53Wv5nB+0V1QgiTO3rMQe6HJt0Tm2wi/o/T8GNjueT2D69YgkqOIF1FQwsj2EFLObcMzeBgs5gTSglqggA2I91BIc1vvgjCDpogOMAzAQGlTxRnqrEXhqG0jJtw8KIzLr9WrvWLdTT4rHtWS8RoOBgkQ8oxbggZ4vtbMBIwoIAYGRr70KBRNCsLTPLa8yEf+DDQxq1entzxSjHXHgyeBSVVpPCrBVmhjandk+lIFInjvAiAE1ZkJHSRccL73ORmgb1crwH7xlD9NwBPmypowMi8UIRMKfL2lNehT0AQIlEAikUBLMDzPIPhnwLZ imalison@ivanm-dfinity-razer.local"
@@ -25,8 +23,6 @@ rec {
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOVGIGnpkU7HNQ/zl/Ffi562M+laWY9/yIjB63BCMiTS kat@nixcomp.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3tlMePru6ZlSuf8yUii3N1dy3WwJnSQAt3EgETkctK kat@jay-lenovo.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrOYD3ReFc2+xFUylBFHREcm1lO7BRJGW5JrOoY3I8s ivanm@strixi-minaj"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYy93265G59aA1ksckjqlfeHq0vpEpzC8BwqCrpeXdh kat@Kats-Mac-mini.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG60q//rVd2JESQT59XLvLdsH9AdYfQXTkXMjx9pH3xp imalison@justin-bieber-creek"
];
deanKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICDvbEVL+y7eV4+mtxOuHwyomBBQ6uYMesctstua20+e deanwenstrand@deans-mbp-2.lan"
@@ -42,7 +38,6 @@ rec {
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqBnDZXcZIMtOTPxg4pJWyMyNp84kpU2uH88aCkrhMBY2TI4dqAXGY4h1DOyOEyQo9nTgyvdlv4M1Hlp5tzfbuapdTWtt36gb+FKpsTUy8dz45fhKJerUszNbVQ+SpZu4ZFN4Nv9eP3AHO+Mzjcvbf666VMDEzZWu2totd7jxyI9PdK78TD5AOi+kGTtbEgqMpJCcZmJlzJ9NJJ2ejhPCRwcfDrShHcfMeEwWL5MmnzT+WstkRwJAM0f9/ks77jWDnB1Eu55rQykU8zVZ1nz1GiXZcxUpm6B0IRhwn8NGH6nVzSLITtO5eJ7LPQR9XNUODpbrsVGNK6jgGql9gZpYp andy@nixos"
];
willKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDqBw9QBC0t1TGu7JdryJ6vX3hkBjNnDLe4GFptN2Y3k willgester@gmail.com"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgLjW6R+dTEmlUoPfE4GA8gRn93UlcSJqlJP1xw0KWl willgester@gmail.com"
];
loewyKeys = [
@@ -60,6 +55,4 @@ rec {
benKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAJ6lD0c+frh2vzQjvsrsmJpwM1ovaY59m5NNPml5G+E benjamin.j.corner@gmail.com"
];
interviewKeys = [
];
}

View File

@@ -1,23 +0,0 @@
-----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-----

View File

@@ -1,22 +0,0 @@
{ 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
'';
};
}

View File

@@ -1,4 +0,0 @@
{ makeEnable, config, ... }:
makeEnable config "myModules.laptop" true {
services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore";
}

View File

@@ -1,29 +1,21 @@
{ lib, pkgs, inputs, forEachUser, ... }:
{ config, lib, pkgs, inputs, forEachUser, ... }:
{
imports = [
imports = [
../configuration.nix
inputs.nixos-hardware.nixosModules.dell-xps-17-9700-nvidia
];
# services.tts.servers.coqui = {
# enable = false;
# useCuda = false;
# port = 11400;
# };
myModules.wyoming.enable = false;
myModules.base.enable = true;
myModules.desktop.enable = true;
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;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = true;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.gitea-runner.enable = false;
hardware.enableRedistributableFirmware = true;
@@ -31,7 +23,7 @@
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.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
@@ -41,7 +33,7 @@
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
services.libinput = {
services.xserver.libinput = {
enable = true;
touchpad.tapping = true;
};
@@ -67,7 +59,7 @@
swapDevices = [ ];
networking.hostName = "adell";
networking.hostName = "adele";
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";

View File

@@ -8,10 +8,10 @@
sublime
vlc
];
myModules.desktop.enable = false;
myModules.plasma.enable = false;
modules.desktop.enable = false;
modules.plasma.enable = false;
imalison.nixOverlay.enable = false;
myModules.wsl.enable = true;
modules.wsl.enable = true;
networking.hostName = "bencbox";

View File

@@ -1,4 +1,4 @@
{ pkgs, lib, forEachUser, config, ... }:
{ forEachUser, ... }:
let biskcomp-nginx-hostnames = "192.168.1.44 railbird.ai 1896Folsom.duckdns.org biskcomp.local 0.0.0.0 67.162.131.71";
in
{
@@ -13,42 +13,28 @@ in
extraGroups = ["syncthing"];
};
myModules.home-assistant.enable = true;
myModules.raspberry-pi.enable = true;
myModules.plasma.enable = false;
myModules.base.enable = true;
myModules.desktop.enable = false;
myModules.xmonad.enable = false;
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.cache-server = {
modules.raspberry-pi.enable = true;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = false;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.cache-server = {
enable = false;
host-string = biskcomp-nginx-hostnames;
port = 80;
path = "/nix-cache";
};
myModules.gitea.enable = true;
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";
};
modules.gitea.enable = true;
modules.gitea-runner.enable = false;
services.vaultwarden = {
enable = true;
backupDir = "/var/backup/vaultwarden";
environmentFile = config.age.secrets.vaultwarden-environment-file.path;
config = {
ROCKET_ADDRESS = "::1";
ROCKET_PORT = 8222;
@@ -60,62 +46,14 @@ in
defaults.email = "IvanMalison@gmail.com";
};
services.gitlab = {
enable = true;
databasePasswordFile = pkgs.writeText "dbPassword" "zgvcyfwsxzcwr85l";
initialRootPasswordFile = pkgs.writeText "rootPassword" "dakqdvp4ovhksxer";
host = "gitlab.railbird.ai";
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.nextcloud = {
# enable = true;
# hostName = "nextcloud.railbird.ai";
# config = {
# dbtype = "pgsql";
# database.createLocally = true;
# };
# };
services.nginx = {
enable = true;
@@ -123,23 +61,6 @@ in
recommendedGzipSettings = true;
recommendedTlsSettings = true;
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" = {
enableACME = true;
forceSSL = true;
@@ -147,6 +68,13 @@ in
proxyPass = "http://[::1]:8222";
};
};
"cache.railbird.ai" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://192.168.1.20:3090";
};
};
"syncthing.railbird.ai" = {
enableACME = true;
forceSSL = true;
@@ -157,16 +85,6 @@ in
'';
};
};
"docs.railbird.ai" = {
enableACME = true;
forceSSL = true;
root = "/var/lib/syncthing/railbird/docs";
locations."/" = {
extraConfig = ''
autoindex on;
'';
};
};
};
};
@@ -179,6 +97,20 @@ in
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 = [
{ device = "/swapfile"; size = 8192; } # size is in MiB
];

View File

@@ -5,15 +5,15 @@
../configuration.nix
];
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = false;
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;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = false;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
hardware.enableRedistributableFirmware = true;

View File

@@ -5,10 +5,10 @@
];
services.xserver.enable = true;
environment.systemPackages = with pkgs; [sublime];
myModules.desktop.enable = false;
myModules.plasma.enable = false;
modules.desktop.enable = false;
modules.plasma.enable = false;
imalison.nixOverlay.enable = false;
myModules.wsl.enable = true;
modules.wsl.enable = true;
networking.hostName = "dean-zephyrus";

View File

@@ -5,7 +5,7 @@
];
imalison.nixOverlay.enable = false;
myModules.wsl.enable = true;
modules.wsl.enable = true;
networking.hostName = "jay-lenovo-wsl";

View File

@@ -5,14 +5,12 @@
../configuration.nix
];
myModules.wyoming.enable = true;
features.full.enable = true;
environment.systemPackages = with pkgs; [
android-studio
linuxPackages_latest.perf
zenmonitor
code-cursor
];
hardware.enableRedistributableFirmware = true;
@@ -28,8 +26,8 @@
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
myModules.postgres.enable = true;
myModules.kat.enable = true;
modules.postgres.enable = true;
networking.networkmanager.enable = true;
services.xserver = {

View File

@@ -5,80 +5,23 @@
../configuration.nix
];
myModules.railbird-k3s = {
enable = true;
serverAddr = "https://ryzen-shine.local:6443";
};
myModules.base.enable = true;
myModules.desktop.enable = true;
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.gitea-runner.enable = true;
myModules.postgres.enable = true;
myModules.gitea.enable = true;
age.secrets.vaultwarden-environment-file = {
file = ../secrets/vaultwarden-environment-file.age;
owner = "vaultwarden";
};
services.vaultwarden = {
enable = true;
backupDir = "/var/backup/vaultwarden";
environmentFile = config.age.secrets.vaultwarden-environment-file.path;
config = {
ROCKET_ADDRESS = "::1";
ROCKET_PORT = 8222;
};
};
services.nginx = {
enable = true;
recommendedProxySettings = true;
recommendedGzipSettings = true;
recommendedTlsSettings = true;
virtualHosts = {
"vaultwarden.railbird.ai" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://[::1]:8222";
};
};
"syncthing.railbird.ai" = {
enableACME = true;
forceSSL = true;
root = "/var/lib/syncthing/railbird";
locations."/" = {
extraConfig = ''
autoindex on;
'';
};
};
"docs.railbird.ai" = {
enableACME = true;
forceSSL = true;
root = "/var/lib/syncthing/railbird/docs";
locations."/" = {
extraConfig = ''
autoindex on;
'';
};
};
};
};
security.acme = {
acceptTerms = true;
defaults.email = "IvanMalison@gmail.com";
};
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = true;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.gitea-runner.enable = true;
modules.postgres.enable = 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.kernelModules = [ "kvm-intel" ];

View File

@@ -1,207 +0,0 @@
{ 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";
};
}

View File

@@ -4,25 +4,13 @@
../configuration.nix
];
services.macos-ventura = {
enable = false;
openFirewall = true;
vncListenAddr = "0.0.0.0";
};
features.full.enable = true;
myModules.cache-server = {
modules.cache-server = {
enable = true;
port = 3090;
};
myModules.gitea-runner.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";
};
modules.gitea-runner.enable = true;
modules.vscode.enable = true;
networking.hostName = "nixquick";
@@ -33,6 +21,15 @@
boot.extraModulePackages = [ ];
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;
# This also enables v4l2loopback

View File

@@ -12,35 +12,58 @@
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
myModules.postgres.enable = true;
features.full.enable = true;
services.k3s.role = "agent";
services.k3s.extraFlags = lib.mkForce ["--node-label nixos-nvidia-cdi=enabled"];
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
# Enable OpenGL
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
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,
# accessible via `nvidia-settings`.
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.code.enable = true;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.plasma.enable = true;
myModules.nvidia.enable = true;
myModules.gitea-runner.enable = true;
myModules.railbird-k3s = {
enable = false;
serverAddr = "https://dev.railbird.ai:6443";
};
features.full.enable = false;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = false;
modules.gnome.enable = true;
modules.code.enable = true;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.plasma.enable = false;
modules.gitea-runner.enable = true;
fileSystems."/" =
{ device = "/dev/disk/by-uuid/a317d456-6f84-41ee-a149-8e466e414aae";
@@ -64,7 +87,7 @@
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
home-manager.users = forEachUser {
home.stateVersion = "23.11";
};

View File

@@ -1,101 +0,0 @@
{ 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";
}

View File

@@ -1,24 +0,0 @@
{ 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";
};
}

View File

@@ -1,4 +1,4 @@
{ lib, pkgs, forEachUser, ... }:
{ config, lib, pkgs, inputs, forEachUser, ... }:
{
imports = [
@@ -6,23 +6,14 @@
];
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 = {
modules.xmonad.picom.vSync.enable = false;
modules.cache-server = {
enable = true;
port = 3090;
};
myModules.gitea-runner.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;
modules.gitea-runner.enable = true;
modules.postgres.enable = true;
boot.loader.systemd-boot.configurationLimit = 5;
@@ -50,30 +41,43 @@
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.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.graphics.enable32Bit = true;
hardware.opengl.driSupport32Bit = true;
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/9bd06145-8151-4f7b-bcfe-f1809e0db1ea";
device = "/dev/disk/by-uuid/356173ab-d076-43e0-aeb6-6a6829c4402b";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/E1E1-909E";
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" ];
options = [ "nofail" ];
};
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";
@@ -87,5 +91,5 @@
home.stateVersion = "21.05";
};
# users.extraUsers.dean.home = "/shared/dean";
users.extraUsers.dean.home = "/shared/dean";
}

View File

@@ -4,7 +4,7 @@
../configuration.nix
];
myModules.wsl.enable = true;
modules.wsl.enable = true;
networking.hostName = "strixi-minaj-wsl";
@@ -30,6 +30,5 @@
"electron-19.1.9"
"openssl-1.1.1w"
"nix-2.16.2"
"electron-32.3.3"
];
}

View File

@@ -3,81 +3,64 @@
{
imports = [
../configuration.nix
inputs.nixos-hardware.nixosModules.asus-rog-strix-g834jzr
];
myModules.base.enable = true;
myModules.desktop.enable = true;
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.gitea-runner.enable = false;
myModules.nvidia.enable = true;
myModules.electron.enable = true;
myModules.wyoming.enable = false;
myModules.tts.enable = false;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = true;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.gitea-runner.enable = false;
hardware.enableRedistributableFirmware = true;
# nixpkgs.config.cudaSupport = true;
boot.loader.systemd-boot.configurationLimit = 5;
environment.systemPackages = with pkgs; [
android-studio
];
services.synergy.server = {
enable = true;
autoStart = true;
configFile = ../../dotfiles/synergy.conf;
};
services.matter-server = {
enable = false;
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;
boot.kernelPackages = pkgs.linuxPackages_latest;
# See https://github.com/NixOS/nixpkgs/issues/467814 for why this was needed
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.beta;
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "nvidia" "nvidia_drm" "nvidia_uvm" "nvidia_modeset" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
hardware.nvidia.powerManagement.enable = true;
services.xserver = {
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.efi.canTouchEfiVariables = true;
services.asusd.enable = true;
fileSystems."/" = {
device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
fsType = "ext4";
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B28A-829A";
fsType = "vfat";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/B28A-829A";
fsType = "vfat";
};
swapDevices = [
{ device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9"; }
];
swapDevices =
[ { device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9"; }
];
networking.hostName = "strixi-minaj";
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
home-manager.users = forEachUser {
home.stateVersion = "23.05";

View File

@@ -1,7 +1,7 @@
{ inputs, specialArgs, config, lib, ... }:
{
imports = [
inputs.home-manager.nixosModules.home-manager
inputs.home-manager.nixosModule
];
options = {
@@ -18,7 +18,6 @@
};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
nix = rec {
extraOptions = ''
@@ -31,12 +30,10 @@
substituters = [
"https://cache.nixos.org"
"https://cuda-maintainers.cachix.org"
"https://ai.cachix.org"
];
trusted-public-keys = [
"cache.railbird.ai:KhnvcouxtIU2zxUcjJsm4bUK3o1S3p8xMf9qfZGF7/A="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc="
];
nix-path = nixPath;
};
@@ -47,8 +44,6 @@
};
nixpkgs.overlays = [
# (import ./nvidia-container-toolkit-overlay.nix)
(import ./runc-overlay.nix)
(import ./overlay.nix)
] ++ (if config.imalison.nixOverlay.enable then [ inputs.nix.overlays.default ] else []);

View File

@@ -1,11 +1,16 @@
{ inputs, config, specialArgs, ... }:
specialArgs.makeEnable config "myModules.nixified-ai" false {
imports = [
inputs.nixified-ai.nixosModules.comfyui
];
specialArgs.makeEnable config "modules.nixified-ai" false {
imports = [
inputs.nixified-ai.nixosModules.invokeai
];
services.comfyui = {
enable = true;
host = "0.0.0.0";
};
environment.systemPackages = [
inputs.nixified-ai.packages.${config.nixpkgs.system}.invokeai-nvidia
];
services.invokeai = {
enable = false;
host = "0.0.0.0";
package = inputs.nixified-ai.packages.${config.nixpkgs.system}.invokeai-nvidia;
};
}

Binary file not shown.

View File

@@ -1,140 +0,0 @@
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;
};
};
}

View File

@@ -1,25 +0,0 @@
{ 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.hardware.nvidia.package.out ];
hardware.graphics.extraPackages32 = [ config.hardware.nvidia.package.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
# nixpkgs.config.cudaSupport = true;
}

View File

@@ -1,6 +1,6 @@
{ lib, ... }: {
options = {
myModules.xmonad.picom.vSync.enable = lib.mkOption {
modules.xmonad.picom.vSync.enable = lib.mkOption {
default = true;
type = lib.types.bool;
};

View File

@@ -1,83 +1,4 @@
final: prev:
let
# Claude Code version override - update these values to bump the version
claudeCodeVersion = {
version = "2.0.67";
hash = "sha256-HwT9YfoX44b18Sr1VdXMo0X7nIBrai1AAGPbV9l0zv8=";
npmDepsHash = "sha256-DNdRkN/rpCsN8fnZbz18r2KRUTl5HCur+GyrofH+T/Y=";
};
in
{
# claude-code = prev.claude-code.overrideAttrs (oldAttrs: {
# inherit (claudeCodeVersion) version npmDepsHash;
# src = prev.fetchurl {
# url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${claudeCodeVersion.version}.tgz";
# inherit (claudeCodeVersion) hash;
# };
# });
# 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 // {};
};
final: prev: {
rofi-systemd = prev.rofi-systemd.overrideAttrs (_: {
src = prev.fetchFromGitHub {
repo = "rofi-systemd";
@@ -87,20 +8,6 @@ in
};
});
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 (_: {
src = prev.fetchFromGitHub {
repo = "git-sync";
@@ -117,11 +24,7 @@ in
rev = "51b21355696add83f39ccdb8dd82ff5009ba0ae5";
sha256 = "sha256-crCwRJd859DCIC0pEerpDqdX2j8ZrNAzVaSSB3mTPN8==";
};
nativeBuildInputs = old.nativeBuildInputs ++ [final.pcre final.gnugrep.pcre2 final.asciidoc];
buildInputs = old.buildInputs ++ [final.pcre];
nativeInstallCheckInputs = [];
doCheck = false;
dontCheck = true;
nativeBuildInputs = old.nativeBuildInputs ++ [final.pcre];
});
expressvpn = prev.expressvpn.overrideAttrs (_: {
@@ -141,51 +44,36 @@ in
};
});
emacs = prev.emacs30.override {
emacs = prev.emacs29.override {
withNativeCompilation = true;
withTreeSitter = true;
};
python-with-my-packages = let
my-python-packages = python-packages:
with python-packages; [
# universal-silabs-flasher
argcomplete
appdirs
ipdb
ipython
numpy
openpyxl
pip
requests
];
with python-packages; [
argcomplete
appdirs
ipdb
ipython
numpy
openpyxl
pip
requests
tox
virtualenv
virtualenvwrapper
];
in
final.python3.withPackages my-python-packages;
final.python311.withPackages my-python-packages;
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 = (oldAttrs.postPatch or "") + ''
pushd connectedhomeip
patch -p1 < ${bypassAttestationVerificationPatch}
popd
'';
});
}
)
];
# gitea = prev.gitea.overrideAttrs(_: {
# src = prev.fetchFromGitHub {
# repo = "gitea";
# owner = "colonelpanic8";
# rev = "40e15b12bf104f8018f56e5b826d8a2f8e2587ea";
# sha256 = "sha256-VXP8Ga681rcKn548rOZq9I19abY0GzXRpdiYGpwyMJ4=";
# };
# go = final.buildPackages.go_1_21;
# });
}

View File

@@ -1,20 +1,7 @@
{ pkgs, config, makeEnable, ... }:
makeEnable config "myModules.plasma" 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
];
{ config, makeEnable, ... }:
makeEnable config "modules.plasma" true {
services.displayManager.sddm.enable = true;
services.xserver = {
desktopManager.plasma5.enable = true;
};
services.desktopManager.plasma6.enable = true;
}

View File

@@ -1,5 +1,5 @@
{ pkgs, config, makeEnable, realUsers, ... }:
makeEnable config "myModules.postgres" true {
makeEnable config "modules.postgres" true {
services.postgresql = {
enable = true;
package = pkgs.postgresql_15;

View File

@@ -1,5 +1,5 @@
{ pkgs, config, makeEnable, realUsers, ... }:
makeEnable config "myModules.rabbitmq" false {
makeEnable config "modules.rabbitmq" true {
services.rabbitmq = {
enable = true;
};

View File

@@ -1,25 +0,0 @@
-----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-----

View File

@@ -1,6 +1,6 @@
{ config, pkgs, inputs, makeEnable, ... }:
makeEnable config "myModules.raspberry-pi" false {
makeEnable config "modules.raspberry-pi" false {
imports = [
inputs.nixos-hardware.nixosModules.raspberry-pi-4
];
@@ -12,7 +12,6 @@ makeEnable config "myModules.raspberry-pi" false {
# hardware.raspberry-pi."4".audio.enable = true;
boot = {
initrd.systemd.tpm2.enable = false;
initrd.availableKernelModules = [
"usbhid"
"usb_storage"

View File

@@ -1,10 +0,0 @@
final: prev: {
runc = prev.runc.overrideAttrs (_: {
src = prev.fetchFromGitHub {
repo = "runc";
owner = "colonelpanic8";
rev = "4b809881415e99247d8dea2eda862491dbc9acd2";
sha256 = "sha256-XOslGNu+ix52938SnnhmWKUaZaTQx9+/o74tnAjmo3I=";
};
});
}

View File

@@ -1,56 +1,48 @@
age-encryption.org/v1
-> ssh-ed25519 ZgrTqA +u18TitbmPrZLwLNMT5C9wbkXPeROgHrh3Tb1RpE52s
WcIdsXKxuTOEeja8mh5qoZ38hSlyS2K0WFS4sB/yKv8
-> ssh-ed25519 ZaBdSg f9kJeTDYYwQLbfL0lfSZjAkRj/8i7MOzp9MQ8ojEl0s
Ez8Pmw5sLZUNWE6nIswzE6mQxZiAhKERLbD7MT/RTN4
-> ssh-ed25519 MHZylw P/KulIF/w8YmSUpXObabu0El/rGAuETPvMGHLdfpR10
Mz9S83bVirlz+pjOrEsJP8oRIBz6PdneMopEshYbj/I
-> ssh-ed25519 sIUg6g mobkna3lBZAMq7IwqR4uV5Bg6c353po4/+YY8Iqg/Bg
rCyfVkXKoPotBEEb6r3T56sRdjn9fC+taxrnRZuUSvc
-> ssh-ed25519 TnanwQ hCPpi8mAGltRM8bpl5OoFGVToPy58Pia9ElyCIi1enM
o9m5Zzl+8kDPEFkQ/evupeGJG6S4aiZk+PaUxlvMTSU
-> ssh-ed25519 cH4aug mR6lvjeeWSUmK50rsOjGGG6ccwzTpGVt97dW1rEEqQo
AQvUomG2XgQo6dFIkZ24N97l8/B3F9WnN/KVGzITcz8
-> ssh-ed25519 ggrAFQ lYeue71aHAhUsy/LOgDPCNmavQEl9VIVnOVC/W/VoWk
SwYzh1DpS5WHSdX2e16wkDUwm1Sa3ARHPF9UBycdHUg
-> ssh-ed25519 ZgrTqA O0XHnLd6cH/2OZyZWRvB028wmx8x8b4ojoqzidpANQM
tQXIb/FsHcXwBet9icQrU1gYxpWUXOMFnxhHq+pJegc
-> ssh-ed25519 ZaBdSg dXtxOGI6j+NyJadTzlhTkb+6/rf5BEtUeZCnH4SjpA4
UCqDgtXh3tMFGz0xDyWn5I81S91CRrEJ9j4LAUN14vI
-> ssh-ed25519 MHZylw GGmyYlC28NKCP+uuAQBO3EIqB+XY63SCkDN4e/WdGkY
GVzmq2tmIJvFnmMnvO12Ok8gOofTRBt20HH586tNzps
-> ssh-ed25519 sIUg6g +VSuYouQxNM8Ch9xTIdokrtAK6RU5NoMNN6nUAr+rQQ
GDRltKHjD6D4d9Z0vq04M6ELi53GdZZFAZde/V6YzuE
-> ssh-ed25519 TnanwQ HeLm9uq5waI09epfKCsRLFO0Ll/V9Rg6y7LAOjGKLmc
jjpTs70FeSaxBH3OyvEfGl71kpVRZmtaCkS29VXehVw
-> ssh-rsa gwJx0Q
fbU+nVFbxpVC0D1rxouGi8aOirZ5CYaMlmm+pLmpI81WZRweyi/8j16IvRSqV9CB
T4uLqBcpsYKVroPIvkIzy1LBUE0LrYj4tVAoAtPWUOk+Z3+pSs9MpTf4nhxjj2UJ
xXw+Kjw0rlAIy48cG8UssI3MAvF17m3JUG4xJxDmM/69J428tE1xa0JMjMXf/E7s
g/RSO7cx+Pcn2ClrFdMOVEkVNIKUkJdpymRSdOpwQnwzgOo4NNwBowFv/6OpfFdP
tS9zX9ZgpcOLKdCV463afYCbZ9z6lsw4KnEUL+bg0QAz8PtlRpF56LUnmBRSWPNN
nl002m6a+uZZQl1HizgR9Q
-> ssh-ed25519 YFIoHA Q8+eEd7maA4f64SGQfyk0pRuxY2WiD3UzHuLmzIPvVc
XWV6IuKDftDStCgj4brPMaTvea+kIlYg7JGnkyX1+Ps
-> ssh-ed25519 KQfiow rra4AZqxS0duGI0GrMAGt1KnUVRyBbnGcZhsu2QeCxM
jaIThcqxxxh9atSgrVEzMFsDip5aNTxWaekgIw+lLKw
-> ssh-ed25519 kScIxg NBVuAT7UXhPMu1THkAXJ1QYNwSnFIgvjQB6jYD7t4AI
xs+x0xP/jRBsvr2IMhEBrpP0o1Ian9Guw1yuMT0b5XA
-> ssh-ed25519 HzX1zw yyjdUbfty0hE0jIc2MMYvRkq/c/DABHJczH/CqyOkRw
c5lkqMwaxsojqx/jYJhMbgWuN0qdgf3VlBYnUHpc/OE
-> ssh-ed25519 KQfiow 70CAriiLnPXfh3a7HJnjRk0K5vYPc24AKjEWjiD/bSM
Sp/hULrynhI79p/zh96sD3rIYMTMzGD6CvN+6Dmxhhg
-> ssh-ed25519 1o2X0w +xLXrJLT2PITsHGkhak6M6/1ifd32sEHcNtI9xdTNTE
PI80gCMGaR24FRiOmNeReTXrUecgCNJZMInKGNfQHic
-> ssh-ed25519 KQ5iUA J2rBvdYjd9RYlQtVfaV50ZN0naHT58e3rZrnhgEszkg
/iG3OU/HVraqegvrTgZz5/gp1HZwyGgGkXhjGYJXAoY
-> ssh-ed25519 AKGkDw 7gJhihE5rASMzycK4rzrSj3oll5hHqzXNQo1qzoqnwE
zlisCc+y2x028mosTHDQjrMDAX2lF3HAJ8LLtzuwwZ4
-> ssh-ed25519 0eS5+A sLIAQR51fxFZatgc7CCJYgjCtfdqYFLBnL4Qs9WmbyM
CgeHGN6+/ZE/RrQoPlaizGtu3bEz8lPfWEfFYY9wzrA
-> ssh-ed25519 9/4Prw uytvwSpCRE/5xDu/Og60k6jBF3wyBanyZMWhEjzcf1E
CM37OOCnORhdGDPXLJ7VIRYJhvMXKxfs6oK9WnHycV4
-> ssh-ed25519 gAk3+Q hqrzZ+KHXT7mfI/6332ZymbDTQmjS2m7jDhtqNQ44no
n/k8+t4BcmPy5Tgkl9e8/CSoCcmVp2lkU8rCRlSGfZU
-> ssh-ed25519 X6eGtQ kO2cKtxVcAIRA3xC4zLLuj2cfZ6CKlOq3aTrB9cqhg8
tG5GtTne/45DqNkJ8XjOlfbbDGLfTxweUKG1+f7aXNU
-> ssh-ed25519 0ma8Cw /PwKBNkRtj0mWkG3fJZOIjdLkhWlxxtowVABKjxShG0
OSfm0wSpyrd8bb836wbFi1BrWHkuZ4DuWw9ZwfMP5b0
-> ssh-ed25519 Tp0Z1Q qJqv47mimbpQkdiYO5sDqj+Qyi7Nq+y9Bb/EuxneXQg
F+b8rEY9rxDdPe+mVy0h7AggugMvGi9lvwKDfe/rjJs
-> ssh-ed25519 ePNWZQ MO3gceW2gDffFS/Tr2F2BkMSKD6Ydn/mRXHqYckGOnU
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>
a6q+jlWud5INiCOwPH570EdyrEOahksIsz5ehCwi21xUpsw8uDAJvwJZ4LTUk7Pp
rgCu56ndd0LBqNAsqCO0NeP6rHj11Y9gVI1VAe8JZwQAd9uxP1wCFSamGPBAG3qU
6K7tSWxUJg5E5N8xn0UVasdC49PSadEBpvWOw7gxUcZSZk+zdXZkmNNJOJjblp48
BzjLiFs/NEapIrpx80nXurSiyN5IV97vK3owXqqYSKOoBR2JWbVeYVO47cR9UN8G
df43ozz2wrG3tfVgy23JfRUPinDxPkUJ0AbkpD7aBuEJfFmQSDjyl+wGevf5GAOI
rTNpOz31YvchkiynnXLhyg
-> ssh-ed25519 YFIoHA 9Sx54ArYGvWtaM64vIuh/xNfC00Kn/6OiIL7zkK/IBI
cHLc5wccimYC6ICqnz3e1hs+4XAHzRd32dj0/g+4q6s
-> ssh-ed25519 KQfiow p7igfY7SkJe2k9EZMy+VEr+uYnEZZSosmAJKOWwopDU
z3HZmOrrhK6Ns5z5EOtlgoo6IROMuo2elRrnX/I9YvI
-> ssh-ed25519 kScIxg de1921H/EqUtCsmjytrGa/9vx41qKO/jiTTNRXRK/xg
IzjtdSwv/FwgGyl6qumTvDi5imcUKolt5upP0hNDd1g
-> ssh-ed25519 HzX1zw u7OB64Wzd4siphc3kyRbPwYswc/vn0eqtUiId5byuVE
t8CF85/o71ra6IAgXAfcoCZHs4VN/ejOQVsdUZaaLqo
-> ssh-ed25519 KQfiow uzyI3JXAF3twmqSKDZAgNEMv/Su832geK/y46hKiJCg
qpbPTkQYUcPSuFEXoOnYmGLcAL2TH2XpkBOqeVvUVVk
-> ssh-ed25519 1o2X0w u9pY09CQumynSF+9z59nuEuZFPwdVld8XQOLG0N4llw
i1HrE7Nk5O/h9eYGeq+nx5UCIgO2c0ROHcwUDiFFxoM
-> ssh-ed25519 KQ5iUA zpOP9fMu7Mqm0LbkA78KInXworz+LGpovjk5mIOOfVM
Q2y9sMSgwIahs+7ceXY6bYha87uXcD28irc4zRYbOSE
-> ssh-ed25519 AKGkDw mLi5T/ia2gQ9z357LYQUbgUQ37DLPhbRlR3LkPvOPk8
rPUwUtTwDAbn49GgLO9vfW/P8hfrhf4znvrmHiiPXLE
-> ssh-ed25519 0eS5+A DomPBIFcr3Wxi1sfGzEBKTpRruHijRX5CDh7xk/mQgg
u9hQHSq3w/NBv3zpIpbX3bMk2vYaNn8dl079zz4cRmE
-> ssh-ed25519 9/4Prw kczIhptmCQmYolhBX+omXqbtTuqqEeL8Mnx2k/1c3Wg
3QBDp0WfYP8Ni3zZ3xk8yC5WscRa+niwjO+6Q2MR9Is
-> ssh-ed25519 gAk3+Q HhCggnhkMhbZG1VyyjtibA7eAnnhS+ZVDMuKmFW+fiQ
7URzpfoMkgD/Jn0N2FV5WJxLpDOPkmI3W7yA5G+MyQg
-> ssh-ed25519 X6eGtQ KBzu6+tTigAYC+ifRi5rGyocU0l1PfBj2KuK9yasUiw
ShtvUv9tuuvYf7dHDnBIQtLWVkN9gaP6ryyeCVoNVIU
-> ssh-ed25519 0ma8Cw 4kkPaMRoYuYflcHDAzBAaWd9+Q3CXV97Hs7d8sFIU3w
7JQH4QYVnnxhjfr0wQTqLieGc3G5ymEBdivqO2/vEWM
-> ssh-ed25519 Tp0Z1Q 3GL4a2CUqmbEK0POxjUADiUtnA96enIKavGEJBr4QTM
RP5mZ7PKqB29cU5ir3wiX7CDM6KuqBysO2g9HyONlKE
--- hLdA7jp69UiOM2LP3bMxOCNnHUWwcgL2BbSsz3+D8lM
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>

Some files were not shown because too many files have changed in this diff Show More