Compare commits

..

27 commits

Author SHA1 Message Date
9e29339de8
->.conf 2024-04-23 10:35:21 +00:00
a6d7a7b04c
try new thing 2024-04-23 10:31:35 +00:00
159b4f4826
try user changes 2024-04-21 19:23:18 +00:00
5ad595d525
why can't pulse die gracefully 2024-04-21 18:03:11 +00:00
f170364400
please 2024-04-20 10:14:18 +00:00
38cb13e81e
die pulse 2024-04-20 09:37:16 +00:00
c2012c8ccf
read the file? 2024-04-20 09:31:04 +00:00
846f6fdbc3
try again pipewire 2024-04-20 09:14:45 +00:00
0fe0536073
try wireplumber thingy 2024-04-18 09:29:41 +00:00
c8f468585a
hwa? 2024-04-10 06:03:34 +00:00
d5714a3e84
enable qualcom quirks 2024-04-10 05:52:52 +00:00
eb10c1c3af
jacky 2024-04-07 05:30:28 +00:00
d73fca4bf2
boot 2024-04-07 04:52:03 +00:00
7d4d14795f
add necessary packages 2024-04-07 04:30:43 +00:00
4091d2aeab
finally steam dead? 2024-04-07 03:04:05 +00:00
6404b1e356
bad steam 2024-04-07 02:56:53 +00:00
4469ec41f7
asdf 2024-04-07 01:47:14 +00:00
d31d3beb06
alsjkdf 2024-04-07 01:44:49 +00:00
e64ef40ed3
thyingy 2024-04-07 01:43:19 +00:00
73a035567c
flake update 2024-04-07 01:39:54 +00:00
11fb88b3cc
I hade phone keyboards 2024-04-01 21:49:04 +00:00
f5bff2f354
user changes 2024-04-01 21:47:00 +00:00
615dce3e41
need to import user config 2024-04-01 21:37:49 +00:00
a66a3015cd
enable some config only on desktop systems 2024-04-01 21:32:50 +00:00
ba4ac7f1f4
change this for better bat 2024-04-01 21:11:51 +00:00
ed6489c559
Update framework config 2024-04-01 21:11:10 +00:00
a8b23e0189
scarab init 2024-03-31 08:40:08 +00:00
45 changed files with 717 additions and 2048 deletions

5
.gitignore vendored
View file

@ -1,5 +0,0 @@
temp/
result
*.png
*.jpg
*.bak

View file

@ -1,6 +1,6 @@
### Dotfiles for Me - Migrating to Nix ### Dotfiles for Me - Migrating to Nix
Heavy wip, not ready for use. Heavy wip, not ready for use.
Will eventually manage my servers and computers. Will eventually manage my servers and computers.

View file

@ -11,10 +11,10 @@ if [[ "$mute" == "" ]]; then
# Change the volume # Change the volume
$(wpctl set-volume @DEFAULT_AUDIO_SINK@ $@) $(wpctl set-volume @DEFAULT_AUDIO_SINK@ $@)
# Query Pipewire and Parse Volume as an Int # Query Pipewire and Parse Volume as an Int
volume="$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print $2}')" volume="$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print $2}')"
vol=${volume//.} vol=${volume//.}
# Send the notification # Send the notification
$(dunstify -h int:value:"$vol" Volume: $vol -h string:x-dunst-stack-tag:volume) $(dunstify -h int:value:"$vol" Volume: $vol -h string:x-dunst-stack-tag:volume)
$(echo $vol > ${XDG_CACHE_HOME:-~/.cache}/eww/vol) $(echo $vol > ${XDG_CACHE_HOME:-~/.cache}/eww/vol)

View file

@ -1,63 +1,60 @@
$color-primary: #c6a0f6;
$color-sec: #f5bde6;
$color-bg: #24273a;
$color-plane: #5a2d85;
$color-light: #5b6078;
.bar { .bar {
background-color: $color-bg;
border-radius: 12px; border-radius: 12px;
border: 3px solid $color-light;
} }
.bat { .bat {
color: $color-primary; color: #cac;
} }
.circle { .circle {
margin-top: -2.5rem; margin-top: -2.5rem;
color: $color-primary; color: #cac;
} }
.workspace-entry { .workspace-entry {
border: 2px solid $color-primary;
border-radius: 20px; border-radius: 20px;
border-width: 2px;
border-style: solid;
border-color: #cac;
margin: 2px; margin: 2px;
&.empty {
&.empty {} }
&.occupied{ &.occupied{
background-color: $color-light;
} }
&.current { &.current {
background-color: $color-plane; background-color: #536;
} }
} }
.power { .power {
color: $color-primary; color: #cac;
font-size: 18; font-size: 20;
padding-right: 3px; padding-top: 2px;
padding-bottom: 2px; padding-right: 4px;
padding-left: 0px;
padding-bottom: 4px;
margin-bottom: 5px; margin-bottom: 5px;
// margin-left: 1px; margin-left: 1px;
margin: 5px 2px; background-color: #515;
background-color: $color-plane;
border: 2px solid;
border-radius: 15px; border-radius: 15px;
} }
.cal {
background-color: $color-primary;
border-radius: 8px;
padding: 5px;
}
.clock { .clock {
color: $color-primary; background-color: #536;
background-color: $color-plane; border-width: 2px;
border: 2px solid $color-primary; border-style: solid;
border-radius: 3px; border-color: #cac;
border-radius: 5px;
color: #cac;
padding: 2px; padding: 2px;
margin: 2px; margin: 2px;
border-radius: 3px;
} }

View file

@ -1,11 +1,13 @@
;; VARIABLE DEFINITIONS ;;;; (defpoll time :interval "1s" 'date +%s')
(defwidget clock []
(box :orientation "vertical"
:halign "center"
:valign "end"
(box :class "clock" {formattime(EWW_TIME, "%H")})
(box :class "clock" {formattime(EWW_TIME, "%M")})
))
;; Audio
(deflisten vol "cat ~/.cache/eww/vol && inotifywait -q -m -e close_write ~/.cache/eww/vol | while read -r filename event; do cat ~/.cache/eww/vol; done")
(defpoll micvol :interval "1m" "wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}'")
;; Workspace Stuff
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces") (deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces")
(deflisten current_workspace :initial "..." "bash ~/.config/eww/scripts/get-active-workspace") (deflisten current_workspace :initial "..." "bash ~/.config/eww/scripts/get-active-workspace")
(deflisten urgent_workspace :initial "..." "bash ~/.config/eww/scripts/get-urgent-workspaces") (deflisten urgent_workspace :initial "..." "bash ~/.config/eww/scripts/get-urgent-workspaces")
@ -19,28 +21,13 @@
(label :text "${workspace.id}") (label :text "${workspace.id}")
)))))) ))))))
;; Screen
(deflisten backlight "brightnessctl g && inotifywait -q -m -e modify /sys/class/backlight/intel_backlight/actual_brightness | while read -r filename event; do cat /sys/class/backlight/intel_backlight/actual_brightness; done")
(defwidget circle [val prog sty char]
;; Widgets
(defwidget clock []
(eventbox
:onhover "eww open cal"
(box :orientation "vertical"
:halign "center"
:valign "end"
(box :class "clock" {formattime(EWW_TIME, "%H")})
(box :class "clock" {formattime(EWW_TIME, "%M")})
)))
(defwidget circle [val prog sty char]
(box :halign "center" (box :halign "center"
:orientation "vertical" :orientation "vertical"
:valign "end" :valign "end"
(circular-progress :value prog (circular-progress :value prog
:start-at 10 :start-at 10
:clockwise false :clockwise false
:thickness 3 :thickness 3
:width 30 :width 30
@ -51,88 +38,60 @@
(box :class "circle" :style sty char))) (box :class "circle" :style sty char)))
(defwidget battery [] (defwidget battery []
(circle :prog {EWW_BATTERY.BAT1.capacity * (77778 /100000)} (circle :prog {EWW_BATTERY.BAT1.capacity * (77778 /100000)}
:sty "color: ${EWW_BATTERY.BAT1.status == 'Charging' ? '#1a1': EWW_BATTERY.BAT1.capacity < 20 ? '#a11': '#cac'};" :sty "color: ${EWW_BATTERY.BAT1.status == 'Charging' ? '#1a1': EWW_BATTERY.BAT1.capacity < 20 ? '#a11': '#cac'};"
:val {EWW_BATTERY.BAT1.capacity} :val {EWW_BATTERY.BAT1.capacity}
:char "󱐋")) :char "󱐋"))
(defwidget volume [] (deflisten vol "cat ~/.cache/eww/vol && inotifywait -q -m -e close_write ~/.cache/eww/vol | while read -r filename event; do cat ~/.cache/eww/vol; done")
(eventbox
:onclick "hyprctl dispatch exec 'pavucontrol -t 3'" (defwidget volume []
:onscroll "if [ {} == 'up' ]; then /etc/nixos/config/dunst/scripts/volumeNotify.sh 1%+; else /etc/nixos/config/dunst/scripts/volumeNotify.sh 1%-; fi" (circle :prog {vol * 7/10}
(circle :prog {vol * 7/10} :sty "font-size: 12; margin-right: 2px;"
:sty "font-size: 12; margin-right: 2px;" :val {vol + 1 - 1}
:val {vol + 1 - 1} :char ""))
:char "")))
(defpoll micvol :interval "1m" "wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}'")
(defwidget mic [] (defwidget mic []
(eventbox (circle :prog {micvol * 70}
:onclick "hyprctl dispatch exec 'pavucontrol -t 4'" :sty "margin-left: 1px;"
:onscroll "if [ {} == 'up' ]; then wpctl set-volume -l 1 @DEFAULT_SOURCE@ 1%+; else wpctl set-volume @DEFAULT_SOURCE@ 1%-; fi" :val {micvol *100}
(circle :prog {micvol * 70} :char "󰍬"))
:sty "margin-left: 1px;"
:val {micvol *100} (deflisten backlight "brightnessctl g && inotifywait -q -m -e modify /sys/class/backlight/intel_backlight/actual_brightness | while read -r filename event; do cat /sys/class/backlight/intel_backlight/actual_brightness; done")
:char "󰍬")))
(defwidget brightness [] (defwidget brightness []
(eventbox (circle :prog {(backlight / 960) * 7/10}
:onscroll "if [ {} == 'up' ]; then brightnessctl -d intel_backlight set 1%+; else brightnessctl -d intel_backlight set 1%-; fi" :sty "font-size: 12; margin-right: 3px;"
(circle :prog {(backlight / 960) * 7/10} :val {round( backlight / 960, 0) - 1}
:sty "font-size: 12; margin-right: 3px;" :char "󰃠"))
:val {round( backlight / 960, 0) - 1}
:char "󰃠")))
(defwidget power [] (defwidget power []
(eventbox (box :class "power" :valign "end" "⏻"))
:onclick "hyprctl dispatch exec 'wlogout'"
(box :class "power" :valign "end" "⏻")))
(defwidget tray []
(systray :orientation "v" :icon-size 20))
;; Upper Level Widgets
(defwidget bar [] (defwidget bar []
(centerbox :orientation "vertical" (centerbox :orientation "vertical"
:halign "center" :halign "center"
:space-evenly false :space-evenly false
(_workspaces) (_workspaces)
(clock) (clock)
(box :orientation "vertical" :spacing -25 :valign "end" (box :orientation "vertical" :spacing -25 :valign "end"
(brightness) (brightness)
(mic) (mic)
(volume) (volume)
(battery) (battery)
(tray) (power))))
(power))))
(defwidget cal []
(box
:class "cal"
(eventbox
:onhoverlost "eww close cal"
(calendar))))
;; Windows
(defwindow bar (defwindow bar
:monitor 0 :monitor 0
:geometry (geometry :x "4px" :geometry (geometry :x "4px"
:height "98%" :y "1%"
:anchor "left center") :width "2.5%"
:stacking "fg" :height "98%"
:exclusive true :anchor "left center")
:class "bar" :stacking "fg"
:exclusive true
:class "bar"
(bar)) (bar))
(defwindow cal
:monitor 0
:geometry (geometry :x "4px"
:anchor "left center")
:stacking "fg"
:exclusive false
:class "bar"
(cal))

View file

@ -2,5 +2,5 @@
hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id' hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id'
socat -u UNIX-CONNECT:/run/user/1000/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}' stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'

View file

@ -1,37 +0,0 @@
[cursor]
color=181926 f4dbd6
[colors]
foreground=cad3f5
background=24273a
regular0=494d64
regular1=ed8796
regular2=a6da95
regular3=eed49f
regular4=8aadf4
regular5=f5bde6
regular6=8bd5ca
regular7=b8c0e0
bright0=5b6078
bright1=ed8796
bright2=a6da95
bright3=eed49f
bright4=8aadf4
bright5=f5bde6
bright6=8bd5ca
bright7=a5adcb
16=f5a97f
17=f4dbd6
18=c6a0f6
selection-foreground=cad3f5
selection-background=454a5f
search-box-no-match=181926 ed8796
search-box-match=cad3f5 363a4f
jump-labels=181926 f5a97f
urls=8aadf4

View file

@ -1,18 +0,0 @@
# -*- conf -*-
[main]
include=~/.config/foot/catppuccin-macchiato.ini
font=monospace:size=10
[colors]
alpha = .65
[key-bindings]
spawn-terminal=Control+Shift+n
# Fixes the SHIFT+ENTER escape sequence from showing
# Git Issue: https://codeberg.org/dnkl/foot/issues/1358
[text-bindings]
\x0d = Control+Return Shift+Return Control+Shift+Return
\x20 = Shift+space

View file

@ -1,39 +1,32 @@
# Binding Config File for Hyprland # Binding Config File for Hyprland
# Main Bindings # Main Bindings
#
# Foot, you done goofed
bind=ALT,RETURN,exec,foot
#bind=ALT,RETURN,exec,kitty
# Programs
bind=ALT,A,exec,footclient nvim
bind=ALT,B,exec,swaylock
bind=ALT,E,exec,dolphin
bind=ALT,G,exec,${XDG_CONFIG_HOME:-~/.config}/hypr/plumbing.sh
bind=ALT,C,exec,${XDG_CONFIG_HOME:-~/.config}/hypr/plumbing.sh clip
bind=ALT,RETURN,exec,footclient
bindr=ALTSHIFT,RETURN,exec,pkill wofi || wofi -S drun --allow-images
# Basic Actions
bind=ALT,Q,killactive, bind=ALT,Q,killactive,
bind=ALT,V,togglefloating,
bind=ALTSHIFT,M,fullscreen,0
bind=SUPER,M,exec,hyprctl dispatch exit 0 bind=SUPER,M,exec,hyprctl dispatch exit 0
bind=ALT,E,exec,dolphin
# Screenshots bind=ALT,V,togglefloating,
bind=,Print,exec,slurp | grim -t jpeg -g - - | wl-copy bindr=ALTSHIFT,RETURN,exec,pkill wofi || wofi -S drun --allow-images
bind=SHIFT,Print,exec,slurp | grim -t jpeg -g - Downloads/screenshot.jpeg bind=ALTSHIFT,F,fullscreen,1
bind=SHIFTSUPER,Print,exec,hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -t jpeg -g - - | wl-copy bind=ALTSHIFT,M,fullscreen,0
bind=SUPER,Print,exec,hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - Downloads/screenshot.jpeg bind=,Print,exec,grim -g "$(slurp)" -t jpeg - | wl-copy
bind=SHIFT,Print,exec,grim -g "$(slurp)" -t jpeg Downloads/screenshot.jpeg
# trigger when the switch is toggled # trigger when the switch is toggled
bindl=,switch:Lid Switch,exec,swaylock bindl=,switch:Lid Switch,exec,swaylock --effect-greyscale
# Games # Games
bind=ALTSHIFT,C,exec,steam-run "~/Documents/Games/Celeste/Celeste" bind=ALTSHIFT,T,exec,gamescope -w 1280 -h 960 -F fsr -f -r 60 wine "/home/flyingstitchman/Documents/Games/Touhou 15 - Legacy of Lunatic Kingdom/th15.exe"
bind=ALTSHIFT,O,exec,osu\! bind=ALTSHIFT,O,exec,osu-lazer
bind=ALTSHIFT,R,exec,steam-run "~/Documents/Games/factorio/bin/x64/factorio" bind=ALTSHIFT,C,exec,"/home/flyingstitchman/Documents/Games/Celeste/Celeste"
bind=ALTSHIFT,S,exec,steam-run "~/Documents/Games/Stardew Valley/StardewValley" bind=ALTSHIFT,S,exec,"/home/flyingstitchman/Documents/Games/Stardew Valley/StardewValley"
bind=ALTSHIFT,T,exec,gamescope -w 1280 -h 960 -f -r 60 wine "~/Documents/Games/Touhou 15 - Legacy of Lunatic Kingdom/th15.exe" bind=ALTSHIFT,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio"
# Window Moving # Window Moving
@ -42,7 +35,7 @@ bindm=SUPER,mouse:273,resizewindow
# Quick Bindings # Quick Bindings
bindle=,XF86MonBrightnessDown,exec,brightnessctl -d intel_backlight set 1%- bindle=,XF86MonBrightnessDown,exec,brightnessctl -d intel_backlight set 1%-
bindle=,XF86MonBrightnessUp,exec,brightnessctl -d intel_backlight set +1% bindle=,XF86MonBrightnessUp,exec,brightnessctl -d intel_backlight set +1%
bindle=,XF86AudioRaiseVolume,exec,${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/volumeNotify.sh 1%+ bindle=,XF86AudioRaiseVolume,exec,${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/volumeNotify.sh 1%+
bindle=,XF86AudioLowerVolume,exec,${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/volumeNotify.sh 1%- bindle=,XF86AudioLowerVolume,exec,${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/volumeNotify.sh 1%-
@ -65,16 +58,6 @@ bind=ALTSHIFT,k,swapwindow, u
bind=ALTSHIFT,h,swapwindow, l bind=ALTSHIFT,h,swapwindow, l
bind=ALTSHIFT,l,swapwindow, r bind=ALTSHIFT,l,swapwindow, r
## Special Workspaces ##
# Firefox
bind=ALT,F,togglespecialworkspace,firefox
bind=ALTSHIFT,F,movetoworkspace,special:firefox
# Chat Programs
bind=ALT,S,togglespecialworkspace,chat
bind=ALTSHIFT,S,movetoworkspace,special:chat
# Switch Workspace Bindings # Switch Workspace Bindings
bind=ALT,1,workspace,1 bind=ALT,1,workspace,1
bind=ALT,2,workspace,2 bind=ALT,2,workspace,2
@ -99,16 +82,24 @@ bind=ALTSHIFT,8,movetoworkspace,8
bind=ALTSHIFT,9,movetoworkspace,9 bind=ALTSHIFT,9,movetoworkspace,9
bind=ALTSHIFT,10,movetoworkspace,0 bind=ALTSHIFT,10,movetoworkspace,0
## Resizing Windows ## # Submap for resizing windows
binde=SUPER,L,resizeactive,10 0 bind=ALT,R,submap,resize # will switch to a submap called resize
binde=SUPER,H,resizeactive,-10 0
binde=SUPER,K,resizeactive,0 -10
binde=SUPER,J,resizeactive,0 10
binde=SUPERSHIFT,L,resizeactive,50 0 submap=resize # will start a submap called "resize"
binde=SUPERSHIFT,H,resizeactive,-50 0
binde=SUPERSHIFT,K,resizeactive,0 -50 binde=,L,resizeactive,10 0
binde=SUPERSHIFT,J,resizeactive,0 50 binde=,H,resizeactive,-10 0
binde=,K,resizeactive,0 -10
binde=,J,resizeactive,0 10
binde=SHIFT,L,resizeactive,50 0
binde=SHIFT,H,resizeactive,-50 0
binde=SHIFT,K,resizeactive,0 -50
binde=SHIFT,J,resizeactive,0 50
bind=ALT,R,submap,reset # use reset to go back to the global submap
submap=reset # will reset the submap, meaning end the current one and return to the global one.
# Submap to disable all keybinds (for blender) # Submap to disable all keybinds (for blender)
bind=ALT,U,submap,clean bind=ALT,U,submap,clean

View file

@ -1,24 +1,13 @@
# Executable Startup File for Hyprland # Executable Startup File for Hyprland
#exec-once=uclampset -M 10 waybar
# Activity Watch
exec-once=aw-server
exec-once=awatcher
# Copy and Paste
exec-once=wl-paste -t text --watch clipman store --no-persist
# Desktop Rice
exec-once=eww open bar exec-once=eww open bar
exec-once=fcitx5
exec-once=hyprpaper
exec-once=swayidle exec-once=swayidle
exec-once=hyprpaper
# Notifications exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus
exec-once=dunst exec-once=dunst
exec-once=${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/low-battery.sh exec-once=${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/low-battery.sh
exec-once=fcitx5
# Terminal #exec-once=~/.config/hypr/portal.sh
exec-once=foot -s exec-once=systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=wl-paste -p --watch wl-copy -pc
# Systemdeeznuts
exec-once=dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus

View file

@ -26,8 +26,8 @@ input {
sensitivity=.4 sensitivity=.4
accel_profile=adaptive accel_profile=adaptive
touchpad { touchpad {
natural_scroll=false natural_scroll=false
disable_while_typing=false disable_while_typing=false
} }
@ -36,9 +36,9 @@ input {
general { general {
gaps_in=3 gaps_in=3
gaps_out=5 gaps_out=5
border_size=4 border_size=3
col.active_border=0xffcc6a0f6 col.active_border=0xff7733cc
col.inactive_border=0xff494d64 col.inactive_border=0xff333333
layout=dwindle layout=dwindle
} }
@ -51,30 +51,34 @@ decoration {
passes=3 passes=3
ignore_opacity=false ignore_opacity=false
new_optimizations=true new_optimizations=true
noise=.03
vibrancy=.2
vibrancy_darkness=0.5
input_methods=true
} }
# Other # Shadow
rounding=15 drop_shadow=0
inactive_opacity=.8 shadow_range=15
fullscreen_opacity=1 multiplier shadow_render_power=2
shadow_ignore_window=1
col.shadow=0xdb331153
col.shadow_inactive=0x99333333
shadow_offset=3 2
# Other
rounding=15
inactive_opacity=.8
fullscreen_opacity=1 multiplier
} }
animations { animations {
enabled=true enabled=true
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
bezier = fast, 0.41, 0.6, 0.02, 0.93 animation = windows, 1, 7, myBezier
animation = windows, 1, 1, fast
animation = windowsOut, 1, 7, default, popin 80% animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default animation = border, 1, 10, default
animation = borderangle, 1, 8, default animation = borderangle, 1, 8, default
animation = fade, 1, 3, default animation = fade, 1, 7, default
animation = workspaces, 1, 1, fast animation = workspaces, 1, 6, default
animation = specialWorkspace, 0
} }
dwindle { dwindle {
@ -82,9 +86,12 @@ dwindle {
preserve_split=true preserve_split=true
} }
master {
new_is_master=true
}
misc { misc {
layers_hog_keyboard_focus=true layers_hog_keyboard_focus=true
middle_click_paste=true
vfr=1 vfr=1
vrr=on vrr=on
disable_hyprland_logo=true disable_hyprland_logo=true

View file

@ -6,6 +6,5 @@ wallpaper = DP-1,~/.config/wallpapers/current_wallpaper.png
wallpaper = DP-2,~/.config/wallpapers/current_wallpaper.png wallpaper = DP-2,~/.config/wallpapers/current_wallpaper.png
wallpaper = DP-3,~/.config/wallpapers/current_wallpaper.png wallpaper = DP-3,~/.config/wallpapers/current_wallpaper.png
wallpaper = DP-4,~/.config/wallpapers/current_wallpaper.png wallpaper = DP-4,~/.config/wallpapers/current_wallpaper.png
wallpaper = HDMI-A-1,~/.config/wallpapers/current_wallpaper.png
splash=false splash=false
ipc = off ipc = off

View file

@ -1,18 +1,19 @@
# Configure Monitor Setup for Hyprland # Configure Monitor Setup for Hyprland
# Assign Monitors # Assign Monitors
monitor=eDP-1,preferred,auto,1.5 #monitor=DP-2,3440x1440@100,0x0,1
#monitor=HDMI-A-1,1920x1080@60,3440x160,1
#monitor=DP-3,disable
# Set Default Workspaces
#workspace=HDMI-A-1,7
#workspace=DP-2,1
monitor=eDP-1,2256x1504@60,0x0,1.5
#monitor=DP-2,1024x786,2256x0,1
workspace=eDP-1,1 workspace=eDP-1,1
#monitor=DP-1,preferred,auto,1
## CRT Fun ## #monitor=DP-2,preferred,auto,1
# Good Middle Ground #monitor=DP-3,preferred,auto,1
# monitor=DP-1,1280x1024@150,auto,1 #monitor=DP-4,preferred,auto,1
# High Rez
# monitor=DP-1,2500x2000@30,auto,1
# Fast As FUK BOIZ - doesn't work well maybe adaptor
#monitor=DP-1,640x480@240,auto,1
# Auto Monitor Rule
monitor = , preferred, auto, 1

8
config/hypr/portal.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
sleep 1
killall xdg-desktop-portal-hyprland
killall xdg-desktop-portal-wlr
killall xdg-desktop-portal
/usr/lib/xdg-desktop-portal-hyprland &
sleep 2
/usr/lib/xdg-desktop-portal &

View file

@ -1,13 +1,10 @@
# Window Rule Config File # Window Rule Config File
# Application Fixes
# Foot Fullscreen Transparency Fix
windowrulev2 = syncfullscreen 0, initialClass:(footclient), initialTitle:(foot)
windowrule=nofocus,ibus,^(Ibus-ui-gtk3)$
# WLogout Configuration # WLogout Configuration
# Might move to separate file cause screen resolutions whack # Might move to separate file cause screen resolutions whack
windowrule=nofocus,ibus,^(Ibus-ui-gtk3)$
windowrule=move 720 222,wlogout windowrule=move 720 222,wlogout
windowrule=size 2000 1000,wlogout windowrule=size 2000 1000,wlogout
windowrule=tile,xyz windowrule=tile,xyz
@ -16,12 +13,10 @@ windowrule=pseudo,abc
windowrule=monitor 0,wlogout windowrule=monitor 0,wlogout
# Don't blur performance intensive applications # Don't blur performance intensive applications
windowrulev2 = noblur,class:osu! windowrule=noblur,osu!
windowrulev2 = noblur,class:firefox windowrule=noblur,^(firefox)$
windowrulev2 = noblur,class:librewolf windowrule=noblur,^(librewolf)$
windowrulev2 = noblur,class:blender windowrule=noblur,Blender
windowrulev2 = noblur,class:steam windowrule=noblur,Steam
windowrule=noblur,nheko
#windowrulev2=noblur,fullscreen:1 #windowrulev2=noblur,fullscreen:1
# Funny Opacity
windowrulev2 = opacity .8, class:nheko

View file

@ -1,118 +0,0 @@
# vim: filetype=neomuttrc
# General Settings
set send_charset="us-ascii:utf-8"
set mime_type_query_command = "file --mime-type -b %s"
set date_format="%y/%m/%d %I:%M%p"
set index_format="%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)"
set sort = 'reverse-date'
set smtp_authenticators = 'gssapi:login'
set query_command = "abook --mutt-query '%s'"
set rfc2047_parameters = yes
set sleep_time = 0 # Pause 0 seconds for informational messages
set markers = no # Disables the `+` displayed at line wraps
set mark_old = no # Unread mail stay unread until read
set mime_forward = no # mail body is forwarded as text
set forward_attachments = yes # attachments are forwarded with mail
set wait_key = no # mutt won't ask "press key to continue"
set fast_reply # skip to compose when replying
set fcc_attach # save attachments with the body
set forward_format = "Fwd: %s" # format of subject when forwarding
set forward_quote # include message in forwards
set reverse_name # reply as whomever it was to
set include # include message in replies
# set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example)
# set use_threads=threads sort=reverse-date sort_aux=date
# HTML Viewing
auto_view text/html # automatically show html (mailcap uses lynx)
auto_view application/pgp-encrypted
alternative_order text/html text/plain text/enriched
# Change Header Cache to faster
set header_cache_backend = "lmdb"
set header_cache_compress_method = "zstd"
set header_cache_compress_level = 18
set mailcap_path = $XDG_CONFIG_HOME/mutt/mailcap
bind index,pager i noop
bind index,pager g noop
bind index \Cf noop
bind index,pager M noop
bind index,pager C noop
# General rebindings
bind index gg first-entry
bind index j next-entry
bind index k previous-entry
bind attach <return> view-mailcap
bind attach l view-mailcap
bind editor <space> noop
bind index G last-entry
bind pager,attach h exit
bind pager j next-line
bind pager k previous-line
bind pager l view-attachments
bind index D delete-message
bind index U undelete-message
bind index L limit
bind index h noop
bind index l display-message
bind index,query <space> tag-entry
#bind browser h goto-parent
macro browser h '<change-dir><kill-line>..<enter>' "Go to parent folder"
bind index,pager H view-raw-message
bind browser l select-entry
bind browser gg top-page
bind browser G bottom-page
bind pager gg top
bind pager G bottom
bind index,pager,browser d half-down
bind index,pager,browser u half-up
bind index,pager S sync-mailbox
bind index,pager R group-reply
bind index \031 previous-undeleted # Mouse wheel
bind index \005 next-undeleted # Mouse wheel
bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel
bind editor <Tab> complete-query
macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox"
macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox"
macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox"
macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts"
macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts"
macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts"
macro index,pager gj "<change-folder>=Junk<enter>" "go to junk"
macro index,pager Mj ";<save-message>=Junk<enter>" "move mail to junk"
macro index,pager Cj ";<copy-message>=Junk<enter>" "copy mail to junk"
macro index,pager gt "<change-folder>=Trash<enter>" "go to trash"
macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash"
macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash"
macro index,pager gs "<change-folder>=Sent<enter>" "go to sent"
macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent"
macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent"
macro index,pager ga "<change-folder>=Archive<enter>" "go to archive"
macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive"
macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive"
macro index,pager a "<enter-command>set my_pipe_decode=\$pipe_decode pipe_decode<return><pipe-message>abook --add-email<return><enter-command>set pipe_decode=\$my_pipe_decode; unset my_pipe_decode<return>" "add the sender address to abook"
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
macro index O "<shell-escape>mailsync<enter>" "run mailsync to sync all mail"
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>printf 'Enter a search term to find with notmuch: '; read x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"<enter>" "show only messages matching a notmuch pattern"
macro index A "<limit>all\n" "show all messages (undo limit)"
# Sidebar mappings
set sidebar_visible = yes
set sidebar_width = 20
set sidebar_short_path = yes
set sidebar_next_new_wrap = yes
set mail_check_stats
set sidebar_format = '%D%?F? [%F]?%* %?N?%N/? %?S?%S?'
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible

View file

@ -1,10 +0,0 @@
text/plain; $EDITOR %s ;
text/html; xdg-open %s ; nametemplate=%s.html
text/html; lynx -assume_charset=%{charset} -display_charset=utf-8 -dump -width=1024 %s; nametemplate=%s.html; copiousoutput;
image/*; xdg-open %s ;
video/*; setsid mpv --quiet %s &; copiousoutput
audio/*; mpv %s ;
application/pdf; xdg-open %s ;
application/pgp-encrypted; gpg -d '%s'; copiousoutput;
application/pgp-keys; gpg --import '%s'; copiousoutput;
application/x-subrip; $EDITOR %s ;

View file

@ -1,163 +0,0 @@
# vim: filetype=neomuttrc
# Adapted from https://github.com/ceuk/mutt_dotfiles/
# Formatting ----------------------------------------------------------------------
set date_format = "%a %d %h %H:%M"
set index_format=" %{$date_format} %zc %zs %zt | %-30.30L | %-30.80s %> %?Y?%Y ? "
set pager_format="%n %T %s%*  %{!%d %b · %H:%M} %?X? %X?%P"
set status_format = " %D %?u? %u ?%?R?󰗯 %R ?%?d? %d ?%?t? %t ?%?F? %F ?%?p? %p? \n \n"
set compose_format="-- NeoMutt: Compose [Approx. msg size: %l Atts: %a]%>-"
set vfolder_format = "%N %?n?%3n& ? %8m  · %f"
set attach_format = "%u%D  %T%-75.75d %?T?& ? %5s · %m/%M"
set sidebar_format = '%D%?Z? [%Z]?%* %?S?%S?'
index-format-hook attachment_info '=B text/calendar ~X 1' ' '
index-format-hook attachment_info '=B text/calendar' " "
index-format-hook attachment_info '~X 1' " "
index-format-hook attachment_info '~A' " "
# General Colors ------------------------------------------------------------------
color normal default default # general text
color error color231 color212 # error messages
color message default default # messages at the bottom
color prompt default default # prompt text
color search black color10 # search highlight
# Statusbar Colors ----------------------------------------------------------------
color status color141 default
color status color0 default '(|)' # statusline "bubbles"
color status yellow color0 '' # Flagged icon
color status green color0 '' # Unread messages count
color status blue color0 '󰗯' # Read messages count icon
color status red color8 '' # Pending delete icon
color status color7 color0 '([a-zA-Z0-9\.,]|\[|\])(\s)' # bubble content 1
color status color7 color0 '(\s)([a-zA-Z0-9\.,]|\[|\])' # bubble content 2
color status color7 color0 '(\% )' # % symbol
color status color7 color0 '(\S)' # empty spaces
# color status color69 black '(\` )' # bubble account variation
color status white color69 '([a-zA-Z0-9\.]+)()' # account text
# Index Colors --------------------------------------------------------------------
color index color4 default '~N' # new messages
color index color15 default '~R' # read messages
color index color8 default '~Q' # messages which have been replied to
color index_collapsed color4 default # collapsed thread (message count text)
# color index color5 default '!~Q^~p' # sent only to me and haven't been replied to
color index color22 default '~h X-Label..' # messages with a complete label
color index color5 default '~F' # flagged messages
color index color6 default '~F~N' # flagged messages (new)
color index color6 default '~F~R' # flagged messages (read)
color index color1 default '~D' # deleted messages
color index color1 default '~D~N' # deleted messages (new)
color index color9 default '~D~R' # deleted messages (read)
color index color3 default '~T' # tagged messages
color index color3 default '~T~N' # tagged messages (new)
color index color11 default '~T~R' # tagged messages (read)
color tree color8 color8 # thread tree lines/arrow
color indicator default color8 # selection indicator
color index_date color14 default # date is always the same colour
color index_label color6 default # label is always the same colour
# Sidebar Colors ------------------------------------------------------------------
color sidebar_indicator color14 black # currently selected mailbox
color sidebar_highlight white color8 # highlighted, but not open, mailbox.
color sidebar_ordinary color8 default # Color to give mailboxes by default
color sidebar_divider color8 black # divider between sidebar & content
color sidebar_flagged red black # mailboxes containing flagged mail
color sidebar_new green black # mailboxes containing new mail
color sidebar_unread color7 default # mailboxes containing unread mail
color sidebar_unread color7 default # mailboxes containing unread mail
# Message Headers -----------------------------------------------------------------
color hdrdefault color8 default
# Message Body --------------------------------------------------------------------
# Attachments
color attachment color8 default
# Signature
color signature color8 default
# emails
# color body color14 default '[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+'
# hide "mailto"
color body color0 color0 '<mailto:[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+>'
# URLs
color body color3 default '(https?|ftp)://[-\.,/%~_:?&=\#a-zA-Z0-9\+]+'
# Dividers
color body color8 default '(^[-_]*$)'
# Important info in calendar invites
color body color6 default '^(Date\/Time|Location|Organiser|Invitees|Teams Meeting)(:| \~\~)'
# Quotes
color quoted color61 default
color quoted1 color117 default
color quoted2 color84 default
color quoted3 color215 default
color quoted4 color212 default
# Forward/reply headers
color body color8 default '(^(To|From|Sent|Subject):.*)'
# Patch syntax highlighting
# color body brightwhite default '^[[:space:]].*'
# color body yellow default ^(diff).*
# color body white default ^[\-\-\-].*
# color body white default ^[\+\+\+].*
# color body green default ^[\+].*
# color body red default ^[\-].*
# color body brightblue default [@@].*
# color body cyan default ^(Signed-off-by).*
# color body brightwhite default ^(Cc)
# color body yellow default "^diff \-.*"
# color body brightwhite default "^index [a-f0-9].*"
# color body brightblue default "^---$"
# color body white default "^\-\-\- .*"
# color body white default "^[\+]{3} .*"
# color body green default "^[\+][^\+]+.*"
# color body red default "^\-[^\-]+.*"
# color body brightblue default "^@@ .*"
# color body green default "LGTM"
# color body brightmagenta default "-- Commit Summary --"
# color body brightmagenta default "-- File Changes --"
# color body brightmagenta default "-- Patch Links --"
# color body green default "^Merged #.*"
# color body red default "^Closed #.*"
# color body brightblue default "^Reply to this email.*"
# Misc -----------------------------------------------------------------------------
# no addressed to me, to me, group, cc, sent by me, mailing list
set to_chars=" "
# unchanged mailbox, changed, read only, attach mode
set status_chars = " "
ifdef crypt_chars set crypt_chars = " "
set flag_chars = " "
# hide some tags
set hidden_tags = "unread,draft,flagged,passed,replied,attachment,signed,encrypted"
tag-transforms "replied" "↻ " \
"encrytpted" "" \
"signed" "" \
"attachment" "" \
# The formats must start with 'G' and the entire sequence is case sensitive.
tag-formats "replied" "GR" \
"encrypted" "GE" \
"signed" "GS" \
"attachment" "GA" \
# don't put '+' at the beginning of wrapped lines
set markers=no

View file

@ -1,10 +0,0 @@
# vim: filetype=neomuttrc
# This is an embarrassing and hacky file that unbinds a bunch of binds between
# switching accounts. It is called each time an account is changed.
unset hostname
unmy_hdr Organization
unmailboxes *
unalternates *
unset signature

View file

@ -1,9 +1,155 @@
" (Neo)vim Configuration " (Neo)vim Configuration
" By Flying_Stitchman 4 Jan 2022 " By Flying_Stitchman
" 4 Jan 2022
" nvim builtin option config " Basic Configuration
luafile /etc/nixos/config/nvim/lua/options.lua
" nvim keymapping syntax on
luafile /etc/nixos/config/nvim/lua/keymap.lua set spell
" Main Config stuffs set hlsearch
luafile /etc/nixos/config/nvim/nvim.lua set ignorecase
set number relativenumber
set noswapfile
inoremap jk <ESC>
xnoremap gy "+y
let mapleader = "`"
" Good indents "
set tabstop=2
set shiftwidth=2
set expandtab
" Make Lines Wrap Properly
set linebreak
set wrap
" True Color Support
if has('nvim')
set t_8f=[38;2;%lu;%lu;%lum
set t_8b=[48;2;%lu;%lu;%lum
set termguicolors
endif
"colorscheme cwcolors
" Highlight Trailing Spaces
let c_space_errors=1
set noincsearch
" Plugs
"call plug#begin()
"Plug 'neovim/nvim-lspconfig'
"Plug 'jackguo380/vim-lsp-cxx-highlight'
"Plug 'folke/tokyonight.nvim', { 'branch': 'main' }
"Plug 'tribela/vim-transparent'
"Plug 'hrsh7th/nvim-cmp'
"Plug 'hrsh7th/cmp-nvim-lsp'
"Plug 'saadparwaiz1/cmp_luasnip'
"Plug 'L3MON4D3/LuaSnip'
"call plug#end()
let g:airline#extensions#wordcount#filetypes = '\vasciidoc|help|mail|markdown|markdown.pandoc|org|rst|tex|text'
set laststatus=2 " enables vim-airline.
" C Syntax highlighting
lua << EOF
require'lspconfig'.rust_analyzer.setup{}
require'lspconfig'.texlab.setup{}
require'lspconfig'.svls.setup{}
require'lspconfig'.pylsp.setup{
settings = {
pylsp = {
plugins = {
pycodestyle = {
ignore = {'W391'},
maxLineLength = 100
},
pylint = {
enabled = false
},
pyflakes = {
enabled = true
}
}
}
}
}
require'lspconfig'.ccls.setup{
init_options = {
highlight = {
lsRanges = true;
}
}
}
-- Add additional capabilities supported by nvim-cmp
local capabilities = require("cmp_nvim_lsp").default_capabilities()
local lspconfig = require('lspconfig')
-- Enable some language servers with the additional completion capabilities offered by nvim-cmp
local servers = { 'clangd', 'rust_analyzer', 'tsserver' }
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
-- on_attach = my_custom_on_attach,
capabilities = capabilities,
}
end
-- luasnip setup
local luasnip = require 'luasnip'
-- nvim-cmp setup
local cmp = require 'cmp'
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
['<C-u>'] = cmp.mapping.scroll_docs(-4), -- Up
['<C-d>'] = cmp.mapping.scroll_docs(4), -- Down
-- C-b (back) C-f (forward) for snippet placeholder navigation.
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
}),
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
EOF
" Color Themes
colorscheme tokyonight
hi Comment guifg=#e69dc5
hi Linenr guifg=#a672f3

View file

@ -1,159 +0,0 @@
-- Keymap File
local map = vim.keymap.set
-- jk exit from insert mode
map("i", "jk", "<cmd>noh<cr><Esc>", { silent = true })
map({"n", "x"}, "<Esc>", "<cmd>noh<cr><Esc>", { silent = true })
-- Append and Prepend Newline
map("n", "<Leader>[", "<cmd>call append(line('.')-1, '')<CR>", { desc = "Prepend Newline"})
map("n", "<Leader>]", "<cmd>call append(line('.'), '')<CR>", { desc = "Append Newline"})
----
-- Movements
----
-- More powerful J and K (use 6j/6k)
-- Via Pseudometa (https://nanotipsforvim.prose.sh/motion-setup--hjkl-as-amplified-hjkl)
map({ "n", "x" }, "<S-j>", "6j")
map({ "n", "x" }, "<S-k>", "6k")
-- And fix the keys to other ones
map({ "n", "x" }, "M", "J", { desc = "Merge" }) -- Replace the join command
map("n", "gh", vim.lsp.buf.hover, { desc = "Hover" }) -- Code action hover
-- Move to window using the <ctrl> hjkl keys
map("n", "<C-h>", "<C-w>h", { desc = "Go to left window", remap = true })
map("n", "<C-j>", "<C-w>j", { desc = "Go to lower window", remap = true })
map("n", "<C-k>", "<C-w>k", { desc = "Go to upper window", remap = true })
map("n", "<C-l>", "<C-w>l", { desc = "Go to right window", remap = true })
-- Move between buffers
map("n", "<S-h>", "<cmd>BufferLineCyclePrev<CR>", { desc = "Move buffer left", silent = true })
map("n", "<S-l>", "<cmd>BufferLineCycleNext<CR>", { desc = "Move buffer right", silent = true })
map("n", "<leader><", "<cmd>BufferLineMovePrev<CR>", { desc = "Move buffer left", silent = true })
map("n", "<leader>>", "<cmd>BufferLineMoveNext<CR>", { desc = "Move buffer right", silent = true })
-- ToggleTerm Bindings
map("n", "<leader>a", "<cmd>ToggleTerm name=main<CR>", { desc = "Floating Terminal", silent = true })
map("n", "<leader>g", "<cmd>lua _lazygit_toggle()<CR>", {noremap = true, silent = true})
-- Undotree
map("n", "<leader>fu", "<cmd>Telescope undo<cr>")
----
-- Cool Macros
----
-- Quit All
map("n", "<leader>qq", "<cmd>qa<cr>", { desc = "Quit all" })
-- Copy and paste from system clipboard
map({ "n", "x" }, "<Leader>y", '"+y', { desc = "Yank to system clipboard", silent = true })
map({ "n", "x" }, "<Leader>p", '"+p', { desc = "Paste after from system clipboard", silent = true })
map({ "n", "x" }, "<Leader>P", '"+P', { desc = "Paste before from system clipboard", silent = true })
-- Neotree
map("n", "<leader>e", function()
require("neo-tree.command").execute({ action = "show", position = "right", toggle = true, dir = vim.loop.cwd() })
end, { desc = "Open Neotree", remap = true })
-- Conform Formatting
map({ "n", "v" }, "<leader>mp", function()
require("conform").format({
lsp_fallback = true,
async = false,
timeout_ms = 500,
})
end, { desc = "Format file or range (in visual mode)" })
-- diagnostic
---@param next "f"|"b"
---@param severity "ERROR"|"WARN"?
local diagnostic_goto = function(next, severity)
local go = (next == "f") and vim.diagnostic.goto_next or vim.diagnostic.goto_prev
local severity_index = severity and vim.diagnostic.severity[severity] or nil
return function()
go({ severity = severity_index })
end
end
map("n", "<leader>cd", vim.diagnostic.open_float, { desc = "Line Diagnostics" })
map("n", "]d", diagnostic_goto("f"), { desc = "Next Diagnostic" })
map("n", "[d", diagnostic_goto("b"), { desc = "Prev Diagnostic" })
map("n", "]e", diagnostic_goto("f", "ERROR"), { desc = "Next Error" })
map("n", "[e", diagnostic_goto("b", "ERROR"), { desc = "Prev Error" })
map("n", "]w", diagnostic_goto("f", "WARN"), { desc = "Next Warning" })
map("n", "[w", diagnostic_goto("b", "WARN"), { desc = "Prev Warning" })
----
-- Plugins
----
-- Telescope (fuzzy finder)
local function telescope_git_fallback()
vim.fn.system("git rev-parse --is-inside-work-tree")
local is_git_repo = vim.v.shell_error == 0
if is_git_repo then
require("telescope.builtin").git_files()
else
require("telescope.builtin").find_files()
end
end
local function telescope_files()
require("telescope.builtin").find_files({ cwd = vim.uv.cwd() })
end
local function telescope_oldfiles()
require("telescope.builtin").oldfiles({ cwd = vim.uv.cwd() })
end
local function telescope_live_grep()
vim.fn.system("git rev-parse --is-inside-work-tree")
local is_git_repo = vim.v.shell_error == 0
local git_root = vim.fn.fnamemodify(vim.fn.finddir(".git", ".;"), ":h")
require("telescope.builtin").live_grep({
cwd = is_git_repo and git_root or vim.uv.cwd(),
})
end
map("n", "<leader><space>", telescope_git_fallback, { desc = "Find files (git/fallback, cwd)" })
map("n", "<leader>ff", telescope_files, { desc = "Find files (cwd)" })
map("n", "<leader>fo", telescope_oldfiles, { desc = "Find files (cwd)" })
map("n", "<leader>/", telescope_live_grep, { desc = "Live grep (cwd)" })
map("n", "<leader>,", require("telescope.builtin").buffers, { desc = "Find buffers" })
map("n", "<leader>\"", require("telescope.builtin").registers, { desc = "Find registers" })
----
-- Fixes
----
-- Proper Wrap Navigation
map({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
map({ "n", "x" }, "<Down>", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
map({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
map({ "n", "x" }, "<Up>", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
-- Auto Re-highlight After Indent
map("v", "<", "<gv")
map("v", ">", ">gv")
-- Saner Movement of nN
map("n", "n", "'Nn'[v:searchforward].'zv'.'zz'", { expr = true, desc = "Next search result" })
map("x", "n", "'Nn'[v:searchforward].'zz'", { expr = true, desc = "Next search result" })
map("o", "n", "'Nn'[v:searchforward].'zz'", { expr = true, desc = "Next search result" })
map("n", "N", "'nN'[v:searchforward].'zv'.'zz'", { expr = true, desc = "Prev search result" })
map("x", "N", "'nN'[v:searchforward].'zz'", { expr = true, desc = "Prev search result" })
map("o", "N", "'nN'[v:searchforward].'zz'", { expr = true, desc = "Prev search result" })
-- Terminal Mappings
map("t", "<esc><esc>", "<c-\\><c-n>", { desc = "Enter Normal Mode" })
map("t", "<C-h>", "<cmd>wincmd h<cr>", { desc = "Go to left window" })
map("t", "<C-j>", "<cmd>wincmd j<cr>", { desc = "Go to lower window" })
map("t", "<C-k>", "<cmd>wincmd k<cr>", { desc = "Go to upper window" })
map("t", "<C-l>", "<cmd>wincmd l<cr>", { desc = "Go to right window" })
map("t", "<C-/>", "<cmd>close<cr>", { desc = "Hide Terminal" })
map("t", "<c-_>", "<cmd>close<cr>", { desc = "which_key_ignore" })

View file

@ -1,51 +0,0 @@
-- Options File
local opt = vim.opt
-- Leader key
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Basic Options I like
opt.hlsearch = true
opt.ignorecase = true
opt.relativenumber = true
opt.number = true
opt.spell = true
opt.swapfile = false
opt.syntax = "on"
opt.scrolloff = 15
-- Had this disabled before might not like
opt.incsearch = true
-- 24-bit color
opt.termguicolors = true
-- Good indents
opt.tabstop = 2
opt.shiftwidth = 0 -- Use tabstop
opt.expandtab = true
-- Show trailing whitespace but fancy
opt.list = true
opt.listchars = {
tab = "",
trail = "",
nbsp = "",
}
-- Make Lines Wrap Properly
opt.linebreak = true
opt.wrap = true
-- Colors
require("tokyonight").setup({
transparent = true,
styles = {
floats = "transparent"
}
})
vim.cmd("colorscheme tokyonight")
vim.cmd("hi Comment guifg=#e69dc5")
vim.cmd("hi Linenr guifg=#a672f3")

View file

@ -1,189 +0,0 @@
-- This will need some refactoring as it is mostly a
-- copy and paste from the previous single-file .vim config
require'lspconfig'.pylsp.setup{
settings = {
formatCommand = {"black"},
pylsp = {
plugins = {
jedai_completion = {
fuzzy = true
},
pyflakes = {
enabled = true
},
pylsp_mypy = {
enabled = true
}
}
}
}
}
require'nvim-treesitter.configs'.setup {
ensure_installed = { },
auto_install = false,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
}
-- Add additional capabilities supported by nvim-cmp
local capabilities = require("cmp_nvim_lsp").default_capabilities()
local lspconfig = require('lspconfig')
-- Enable some language servers with the additional completion capabilities offered by nvim-cmp
local servers = { 'clangd', 'glsl_analyzer', 'nixd', 'rust_analyzer', 'texlab', 'tinymist', 'verible', 'vhdl_ls', 'vtsls' }
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
-- on_attach = my_custom_on_attach,
capabilities = capabilities,
settings = {
['rust-analyzer'] = {
cargo = {
allFeatures = true;
}
}
}
}
end
-- luasnip setup
local luasnip = require 'luasnip'
-- nvim-cmp setup
local cmp = require 'cmp'
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
['<C-u>'] = cmp.mapping.scroll_docs(-4), -- Up
['<C-d>'] = cmp.mapping.scroll_docs(4), -- Down
-- C-b (back) C-f (forward) for snippet placeholder navigation.
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
}),
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
--[[
u.-*'M'*-.u
x` _____ `x
o` _| ___| `o
, | |___ ,
3 |_ | E
' | _ | '
o, |_| |_| ,o
x". ."x
n"--.W.--"n
Kiloroy Was Here
]]
-- Funky plugins
require("conform").setup({
formatters_by_ft = {
C = { "clang-format"},
css = { "prettier", },
html = { "prettier", },
javascript = { "prettier", },
python = { "black" },
typst = { "prettypst" },
verilog = { "verible", "trim_whitespace" },
systemverilog = { "verible", "trim_whitespace" }
},
formatters = {
prettypst = {
args = { "--use-std-in", "--use-std-out" }
}
},
format_on_save = {
timeout_ms = 500,
lsp_format = "fallback",
},
})
require("bufferline").setup({ options = {
always_show_bufferline = true,
show_buffer_close_icons = false,
separator_style = "slope",
style_preset = {
require("bufferline").style_preset.no_italic,
},
offsets = {
{
filetype = "neo-tree",
text = "File Explorer",
highlight = "Directory",
text_align = "left",
},
},
},})
require("gitsigns").setup()
require("ibl").setup()
require("mini.pairs").setup()
require("mini.comment").setup()
require("mini.icons").setup()
require("neo-tree").setup()
require("nvim-web-devicons").setup()
require("render-markdown").setup()
require("telescope").setup()
require("toggleterm").setup{
direction = 'float',
float_opts = {
border = 'curved',
},
}
require("which-key").setup({ global = false })
require("spaceman").setup({
workspaces = {
"/etc/nixos",
{ "config", "/etc/nixos/config/" },
{ "home", "~/" },
"/opt/www/stitchy.moe" ,
},
directories = {
"~/Documents/Classes",
"~/Documents/Repos",
"~/Documents/Repos/ExtremeHeatTransfer",
"/opt/docker-containers/",
},
use_default_keymaps = true,
hooks = {
before_move = "Neotree close",
}
})
-- Lazygit Panel
local Terminal = require('toggleterm.terminal').Terminal
local lazygit = Terminal:new({ cmd = "lazygit", hidden = true })
function _lazygit_toggle()
lazygit:toggle()
end

View file

@ -1,39 +1,15 @@
## Default Settings ## screenshots
clock clock
datestr=%a, %b %e %Y
image=~/.config/wallpapers/girls-last-tour-chibi-eepi.jpg
grace-no-mouse
## Text Settings ##
text-color=8aadf4
font=IPAGothic
## Indicator Settings ##
indicator indicator
indicator-radius=140 indicator-radius=100
indicator-thickness=7 indicator-thickness=7
indicator-x-position=1200 effect-blur=7x5
indicator-y-position=500 effect-vignette=0.5:0.5
ring-color=bb00cc
## Ring Colors ## key-hl-color=880033
ring-color=a6da95
ring-clear-color=eed49f
ring-ver-color=8aadf4
ring-wrong-color=ed8796
line-color=00000000 line-color=00000000
separator-color=00000000 inside-color 00000088
key-hl-color=c6a0f6 separator-color 00000000
fade-in=0.2
bs-hl-color=ed8796 datestr="%a, %b %e %Y"
greyscale
## Inside Colors ##
inside-color=00000088
inside-clear-color=eed49f
inside-ver-color=8aadf4
inside-wrong-color=ed8796

View file

@ -8,29 +8,31 @@ unsetopt PROMPT_SP
bindkey -v bindkey -v
# End of lines configured by zsh-newuser-install # End of lines configured by zsh-newuser-install
# Temporary Rebuild shortcut
alias re-scarab="sudo nixos-rebuild --flake '/etc/nixos#scarab'"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
# Aliases # Aliases
alias c='clear'
alias cd="z"
alias find="fd"
alias gdb="gdb -x /usr/share/pwndbg/gdbinit.py" #pwntools for GDB
alias ghidra="_JAVA_AWT_WM_NONREPARENTING=1 ghidra"
alias icat="kitty +kitten icat"
alias kon="ncmpcpp -b ~/.config/ncmpcpp/bindings" alias kon="ncmpcpp -b ~/.config/ncmpcpp/bindings"
alias l='ls -l'
alias la='ls -la'
alias lg='lazygit'
alias ll='ls -l'
alias lla='ls -la'
alias ls='eza'
alias make="make -j 20"
alias mountUSB="mount ~/ExternalDrive" # Automagically mount and unmount my flashdrive
alias myip="curl ifconfig.me" alias myip="curl ifconfig.me"
alias qsus="NIXPKGS_ALLOW_UNFREE=1 nix-shell -p quartus-prime-lite -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/fe7ab74a86d78ba00d144aa7a8da8c71a200c563.tar.gz" alias ghidra="_JAVA_AWT_WM_NONREPARENTING=1 ghidra"
alias ssh="TERM=xterm ssh" #Fix foot issue in ssh alias ls='eza'
alias tree="eza --tree"
alias umountUSB="umount ~/ExternalDrive"
alias unityAvi="~/Documents/Unity/Editors/2019.4.31f1/Editor/Unity -projectPath ~/ExternalDrive/Unity\ Projects/Avatar\ 3.0\ 2019"
alias v="nvim" # Launch neovim with 'v' alias v="nvim" # Launch neovim with 'v'
alias mountUSB="mount /home/flyingstitchman/ExternalDrive" # Automagically mount and unmount my flashdrive
alias umountUSB="umount /home/flyingstitchman/ExternalDrive"
alias unityAvi="/home/flyingstitchman/Documents/Unity/Editors/2019.4.31f1/Editor/Unity -projectPath ~/ExternalDrive/Unity\ Projects/Avatar\ 3.0\ 2019"
alias ssh="TERM=xterm ssh" #Fix foot issue in ssh
alias gdb="gdb -x /usr/share/pwndbg/gdbinit.py" #pwntools for GDB
alias make="make -j 20"
alias cd="z"
alias imv="imv -b aa77bb"
alias find="fd"
alias tree="eza --tree"
alias icat="kitty +kitten icat"
# Automatically get new programs for autocompletion # Automatically get new programs for autocompletion
@ -38,19 +40,6 @@ zshcache_time="$(date +%s%N)"
autoload -Uz add-zsh-hook autoload -Uz add-zsh-hook
function osc7-pwd() {
emulate -L zsh # also sets localoptions for us
setopt extendedglob
local LC_ALL=C
printf '\e]2;%s%s\e\' ${PWD//(#m)([^@-Za-z&-;_~])/%${(l:2::0:)$(([##16]#MATCH))}}
}
function chpwd-osc7-pwd() {
(( ZSH_SUBSHELL )) || osc7-pwd
}
add-zsh-hook -Uz chpwd chpwd-osc7-pwd
rehash_precmd() { rehash_precmd() {
if [[ -a /var/cache/zsh/pacman ]]; then if [[ -a /var/cache/zsh/pacman ]]; then
local paccache_time="$(date -r /var/cache/zsh/pacman +%s%N)" local paccache_time="$(date -r /var/cache/zsh/pacman +%s%N)"
@ -90,44 +79,52 @@ compinit
# End of lines added by compinstall # End of lines added by compinstall
eval "$(zoxide init zsh)" eval "$(zoxide init zsh)"
# Default Programs
export EDITOR=nvim
# Needed for pam_gnupg for ssh keys TO DO
#export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export PATH="${PATH}:/home/flyingstitchman/.cargo/bin" export PATH="${PATH}:/home/flyingstitchman/.cargo/bin"
# Ibus
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# Clean Up # Clean Up
export MBSYNCRC=$XDG_CONFIG_HOME/mbsync/config export QT_QPA_PLATFORM=wayland
export PASSWORD_STORE_DIR=$XDG_CONFIG_HOME/password_store export QT_QPA_PLATFORMTHEME=qt5ct
export NOTMUCH_CONFIG=$XDG_CONFIG_HOME/notmuch/config # Fuck Gnome Devs, All my homies Hate Gnome Devs
#export GDK_DEBUG=1
export MBSYNCRC=${XDG_CONFIG_HOME:-~/.config}/mbsync/config
export PASSWORD_STORE_DIR=${XDG_CONFIG_HOME:-~/.config}/password_store
export GNUPGHOME=${XDG_DATA_HOME-~/.config}/gnupg
export NOTMUCH_CONFIG=${XDG_CONFIG_HOME-~/.config}/notmuch/config
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
export KDEHOME="$XDG_CONFIG_HOME"/kde export KDEHOME="$XDG_CONFIG_HOME"/kde
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export GNUPGHOME=$XDG_DATA_HOME/gnupg export GPG_TTY=$(tty)
export SDL_VIDEODRIVER=wayland
export GOPATH="$XDG_DATA_HOME" export GOPATH="$XDG_DATA_HOME"
export GOMODCACHE="$XDG_CACHE_HOME" export GOMODCACHE="$XDG_CACHE_HOME"
export GPG_TTY=$(tty)
export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default
export DOTNET_CLI_HOME="$XDG_CONFIG_HOME"/dotnet export DOTNET_CLI_HOME="$XDG_CONFIG_HOME"/dotnet
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
export CARGO_HOME="$XDG_DATA_HOME"/cargo export CARGO_HOME="$XDG_DATA_HOME"/cargo
# Nvidia moment
export WLR_NO_HARDWARE_CURSORS=1
alias dosbox="dosbox -conf $XDG_CONFIG_HOME/dosbox/dosbox.conf"
# Nixos Rebuilding alias dosbox="dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf "
alias rbs="reconfig switch"
alias rbb="reconfig build"
reconfig() {
sudo nixos-rebuild --flake "/etc/nixos#$(cat /etc/hostname)" "$@"
}
# Home Manager Variables
source ~/.local/state/nix/profiles/home-manager/home-path/etc/profile.d/hm-session-vars.sh
# Autostart Hyprland after all environmental Variables have been declared # Autostart Hyprland after all environmental Variables have been declared
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
# export WLR_DRM_DEVICES=/dev/dri/card0
exec Hyprland exec Hyprland
fi fi
export QSYS_ROOTDIR="~/.cache/paru/clone/quartus-free/pkg/quartus-free-quartus/opt/intelFPGA/21.1/quartus/sopc_builder/bin" export QSYS_ROOTDIR="/home/flyingstitchman/.cache/paru/clone/quartus-free/pkg/quartus-free-quartus/opt/intelFPGA/21.1/quartus/sopc_builder/bin"
# Nix Direnv Support
eval "$(direnv hook zsh)"

View file

@ -1,47 +1,28 @@
{ {
"nodes": { "nodes": {
"catppuccin": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1742254251,
"narHash": "sha256-3wGCx5UR86pgurSYB//LsBMKAsw6qpiOpnzgShPQKkM=",
"owner": "catppuccin",
"repo": "nix",
"rev": "4cb9c621072312fb45c6e86b57e5fabd97f1b95d",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "nix",
"type": "github"
}
},
"flake-compat": { "flake-compat": {
"flake": false,
"locked": { "locked": {
"lastModified": 1733328505, "lastModified": 1627913399,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "owner": "edolstra",
"revCount": 69, "repo": "flake-compat",
"type": "tarball", "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" "type": "github"
}, },
"original": { "original": {
"type": "tarball", "owner": "edolstra",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" "repo": "flake-compat",
"type": "github"
} }
}, },
"flake-utils": { "flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1623875721,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -57,11 +38,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1740254115, "lastModified": 1712390667,
"narHash": "sha256-MwxDtYB/MSGZlr/xS+ExGYH2QgHk73ShD40shxjad/Y=", "narHash": "sha256-ebq+fJZfobqpsAdGDGpxNWSySbQejRwW9cdiil6krCo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "cb3f6e9b59d3a5e51ef9f7da2b8418d5c72aaef8", "rev": "b787726a8413e11b074cde42704b4af32d95545c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -74,11 +55,11 @@
"mobile-nixos": { "mobile-nixos": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1737346419, "lastModified": 1711757427,
"narHash": "sha256-YHByUFujAnfJJ2JnhHIJyohECr5o0EDmuRdyUcvnZGQ=", "narHash": "sha256-PqHK0J9YCRKlxpJp+UG+/xpwfIQRPVUPspvbbP3FB2M=",
"owner": "nixos", "owner": "nixos",
"repo": "mobile-nixos", "repo": "mobile-nixos",
"rev": "1498c4d7fd59026479469efdbfe30c78a7300d89", "rev": "f7087f8fdbd1309af315ef8c92345320aadc5edf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -89,11 +70,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1740089251, "lastModified": 1712324865,
"narHash": "sha256-Y78mDBWoO8CLLTjQfPfII+KXFb6lAmF9GrLbyVBsIMM=", "narHash": "sha256-+BatEWd4HlMeK7Ora+gYIkarjxFVCg9oKrIeybHIIX4=",
"owner": "Nixos", "owner": "Nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "18e9f9753e9ae261bcc7d3abe15745686991fd30", "rev": "f3b959627bca46a9f7052b8fbc464b8323e68c2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -105,11 +86,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1741851582, "lastModified": 1712163089,
"narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", "narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", "rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -119,120 +100,48 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-quartus": {
"locked": {
"lastModified": 1685573264,
"narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "380be19fbd2d9079f677978361792cb25e8a3635",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-xr": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1740221878,
"narHash": "sha256-g9MxGpvOqLInb6/QoAFy/sy/SgYIVZbAPBCE1H2vZnA=",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"rev": "348600e86789833a7f7c76a90e1e9464530768e1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs-xr",
"type": "github"
}
},
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1739866667, "lastModified": 1628148846,
"narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", "narHash": "sha256-V8aZJBROfNDk40cvFjKUnOnL7sF+BYwCQUUpLP8y4uE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", "rev": "9a8eb5a464f373e79d19d0ed2e53e0d31f78fe92",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "osu-nixos": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
},
"locked": { "locked": {
"lastModified": 1739866667, "lastModified": 1695759061,
"narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", "narHash": "sha256-s9OYi0tzWSjFUaGLnLg08tTm8OEu1uZqGTtKmIRwHic=",
"owner": "NixOS", "owner": "Asqiir",
"repo": "nixpkgs", "repo": "osu-nixos",
"rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", "rev": "4e0096e1eee74383b9350962d8bff094648a7968",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "Asqiir",
"ref": "nixos-unstable", "repo": "osu-nixos",
"repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"catppuccin": "catppuccin",
"home-manager": "home-manager", "home-manager": "home-manager",
"mobile-nixos": "mobile-nixos", "mobile-nixos": "mobile-nixos",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs",
"nixpkgs-quartus": "nixpkgs-quartus", "osu-nixos": "osu-nixos"
"nixpkgs-xr": "nixpkgs-xr"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs-xr",
"nixpkgs"
]
},
"locked": {
"lastModified": 1739829690,
"narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "3d0579f5cc93436052d94b73925b48973a104204",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
} }
} }
}, },

View file

@ -1,12 +1,12 @@
{ {
description = "System Configuration Flake"; description = "System Configuration Flake";
outputs = inputs@{
catppuccin,
outputs = inputs@{
nixpkgs, nixpkgs,
nixpkgs-xr,
nixos-hardware, nixos-hardware,
nixpkgs-quartus,
home-manager, home-manager,
osu-nixos,
... ...
} : { } : {
@ -15,34 +15,39 @@
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
catppuccin.nixosModules.catppuccin
./packages/default.nix
./hosts/malachite/default.nix ./hosts/malachite/default.nix
./users/stitchynyan/default.nix ./users/stitchynyan/default.nix
nixpkgs-xr.nixosModules.nixpkgs-xr
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.extraSpecialArgs = {inherit inputs;}; home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.stitchynyan = { home-manager.users.stitchynyan = import ./users/stitchynyan/home.nix;
imports = [
catppuccin.homeManagerModules.catppuccin
./users/stitchynyan/home.nix
./users/home.nix
];
};
} }
]; ];
}; };
scarab = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
{ _module.args = { inherit inputs; }; }
(import "${inputs.mobile-nixos}/lib/configuration.nix" {
device = "oneplus-enchilada";
})
./packages/default.nix
./hosts/scarab/default.nix
./users/stitchynyan/default.nix
];
};
lappy = nixpkgs.lib.nixosSystem { lappy = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
catppuccin.nixosModules.catppuccin
nixos-hardware.nixosModules.framework-12th-gen-intel nixos-hardware.nixosModules.framework-12th-gen-intel
./packages/default.nix
./hosts/lappy/default.nix ./hosts/lappy/default.nix
./users/stitchynyan/default.nix ./users/stitchynyan/default.nix
@ -51,13 +56,7 @@
home-manager.extraSpecialArgs = {inherit inputs;}; home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.stitchynyan = { home-manager.users.stitchynyan = import ./users/stitchynyan/home.nix;
imports = [
catppuccin.homeManagerModules.catppuccin
./users/stitchynyan/home.nix
./users/home.nix
];
};
} }
]; ];
}; };
@ -66,27 +65,9 @@
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
modules = [ modules = [
./packages/default.nix
./hosts/gemini/default.nix ./hosts/gemini/default.nix
./users/nyadmin/default.nix ./users/nyadmin/default.nix
./users/cirno/default.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nyadmin = import ./users/nyadmin/home.nix;
home-manager.users.cirno = import ./users/cirno/home.nix;
}
];
};
tanzanite = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/tanzanite/default.nix
./users/nyadmin/default.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
@ -101,7 +82,6 @@
}; };
inputs = { inputs = {
catppuccin.url = "github:catppuccin/nix";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -111,8 +91,7 @@
flake = false; flake = false;
}; };
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-xr.url = "github:nix-community/nixpkgs-xr";
nixos-hardware.url = "github:Nixos/nixos-hardware/master"; nixos-hardware.url = "github:Nixos/nixos-hardware/master";
nixpkgs-quartus.url = "github:nixos/nixpkgs/nixos-22.05"; osu-nixos.url = "github:Asqiir/osu-nixos";
}; };
} }

View file

@ -1,25 +0,0 @@
{ lib, pkgs, config, ...}:
let
in
{
options = {
stitchyconf = {
dev.stm32.enable = lib.mkEnableOption "Enables STM32 Development";
};
};
config = {
# Group for probe-rs rules
users.groups.plugdev = {};
# Udev Files
services.udev.packages = lib.mkIf config.stitchyconf.dev.stm32.enable [
(pkgs.writeTextFile {
name = "probe-rs-udev";
destination = "/etc/udev/rules.d/69-probe-rs.rules";
text = (builtins.readFile ./probe-rs.rules);
})];
};
}

View file

@ -1,146 +0,0 @@
# Copy this file to /etc/udev/rules.d/
# If rules fail to reload automatically, you can refresh udev rules
# with the command "udevadm control --reload"
# This rules are based on the udev rules from the OpenOCD project, with unsupported probes removed.
# See http://openocd.org/ for more details.
#
# This file is available under the GNU General Public License v2.0
ACTION!="add|change", GOTO="probe_rs_rules_end"
SUBSYSTEM=="gpio", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM!="usb|tty|hidraw", GOTO="probe_rs_rules_end"
# Please keep this list sorted by VID:PID
# STMicroelectronics ST-LINK V1
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", MODE="660", GROUP="plugdev", TAG+="uaccess"
# STMicroelectronics ST-LINK/V2
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="660", GROUP="plugdev", TAG+="uaccess"
# STMicroelectronics ST-LINK/V2.1
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="660", GROUP="plugdev", TAG+="uaccess"
# STMicroelectronics STLINK-V3
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3754", MODE="660", GROUP="plugdev", TAG+="uaccess"
# SEGGER J-Link
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0102", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0103", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0104", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0105", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0107", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0108", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1001", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1002", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1003", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1004", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1005", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1006", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1007", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1008", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1009", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="100f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1010", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1011", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1012", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1013", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1014", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1015", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1016", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1017", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1018", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1019", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="101f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1020", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1021", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1022", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1023", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1024", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1025", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1026", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1027", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1028", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1029", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="102f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1050", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1051", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1052", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1053", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1054", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1055", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1056", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1057", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1058", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1059", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="105f", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1060", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1061", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1062", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1063", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1064", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1065", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1066", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1067", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1068", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1069", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106b", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106c", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106d", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106e", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="106f", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FT232H
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FT2232x
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FT4232H
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="660", GROUP="plugdev", TAG+="uaccess"
# FTDI-based Olimex devices
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x0003", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x0004", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x002a", MODE="660", GROUP="plugdev", TAG+="uaccess"
ATTRS{idVendor}=="0x15ba", ATTRS{idProduct}=="0x002b", MODE="660", GROUP="plugdev", TAG+="uaccess"
# Espressif USB JTAG/serial debug unit
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="660", GROUP="plugdev", TAG+="uaccess"
# Espressif USB Bridge
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1002", MODE="660", GROUP="plugdev", TAG+="uaccess"
# CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="660", GROUP="plugdev", TAG+="uaccess"
# WCH Link (CMSIS-DAP compatible adapter)
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8011", MODE="660", GROUP="plugdev", TAG+="uaccess"
LABEL="probe_rs_rules_end"

View file

@ -6,7 +6,7 @@ let
in in
{ {
options = {}; options = {};
imports = [ ../packages/default.nix ../users/default.nix ./config/stm32 ]; imports = [ ../packages/default.nix ];
config = { config = {
hardware = { hardware = {
@ -15,24 +15,16 @@ in
}; };
boot = { boot = {
kernelPackages = lib.mkDefault pkgs.linuxPackages_zen; #kernelPackages = lib.mkDefault pkgs.linuxPackages_zen;
loader = { loader = {
efi.canTouchEfiVariables = lib.mkDefault true; efi.canTouchEfiVariables = lib.mkDefault true;
systemd-boot.enable = lib.mkDefault true; systemd-boot.enable = lib.mkDefault true;
}; };
}; };
programs = {
appimage.binfmt = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services = { services = {
fstrim.enable = true;
resolved = { resolved = {
enable = true; enable = true;
dnsovertls = "opportunistic"; dnsovertls = "opportunistic";
@ -72,30 +64,6 @@ in
allowedUDPPorts = [ 22000 ]; allowedUDPPorts = [ 22000 ];
}; };
services.udev.packages = [
(pkgs.writeTextFile {
name = "alterra-udev";
destination = "/etc/udev/rules.d/92-alterra.rules";
text = ''
# USB-Blaster
SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0666"
# USB-Blaster II
SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE="0666"
'';
})];
services.openssh = lib.mkIf (config.stitchyconf.form == "server"){
enable = true;
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
};
environment.etc.hosts.mode = "0644"; environment.etc.hosts.mode = "0644";
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
}; };

View file

@ -18,6 +18,12 @@
networking.hostName = "gemini"; networking.hostName = "gemini";
time.timeZone = "America/Los_Angeles"; time.timeZone = "America/Los_Angeles";
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
settings.KbdInteractiveAuthentication = false;
};
# Open ports in the firewall. # Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 22 25565 ]; networking.firewall.allowedTCPPorts = [ 22 25565 ];
networking.firewall.allowedUDPPorts = [ 51820 ]; networking.firewall.allowedUDPPorts = [ 51820 ];

View file

@ -10,14 +10,13 @@
stitchyconf = { stitchyconf = {
artPkgs.enable = true; artPkgs.enable = true;
dev.stm32.enable = true;
}; };
services.logind.powerKey = "ignore"; services.logind.powerKey = "ignore";
services.logind.powerKeyLongPress = "poweroff"; services.logind.powerKeyLongPress = "poweroff";
networking = { networking = {
hostName = "lappy"; hostName = "lappy";
networkmanager.enable = true; networkmanager.enable = true;
}; };
time.timeZone = "America/Lost_Angeles"; time.timeZone = "America/Lost_Angeles";
@ -36,16 +35,13 @@
"kernel.yama.ptrace_scope=0" "kernel.yama.ptrace_scope=0"
]; ];
virtualisation = { virtualisation.libvirtd.enable = true;
docker.enable = true;
libvirtd.enable = true;
waydroid.enable = true;
};
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.bluetooth.settings.General.Experimental = true; hardware.bluetooth.settings.General.Experimental = true;
hardware.graphics = { hardware.opengl = {
enable = true; enable = true;
enable32Bit= true; driSupport = true;
driSupport32Bit = true;
extraPackages = lib.attrVals [ extraPackages = lib.attrVals [
"intel-compute-runtime" "intel-compute-runtime"
"intel-media-driver" "intel-media-driver"
@ -74,7 +70,7 @@
PCIE_ASPM_ON_AC = "default"; PCIE_ASPM_ON_AC = "default";
PCIE_ASPM_ON_BAT = "powersupersave"; PCIE_ASPM_ON_BAT = "powersupersave";
PLATFORM_PROFILE_ON_BAT = "low-power"; PLATFORM_PROFILE_ON_BAT = "low-power";
RUNTIME_PM_ON_BAT = "auto"; RUNTIME_PM_ON_BAT = true;
WOL_DISABLE = true; WOL_DISABLE = true;
SCHED_POWERSAVE_ON_BAT = true; SCHED_POWERSAVE_ON_BAT = true;

View file

@ -10,28 +10,17 @@
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems = { fileSystems."/" =
"/" = { { device = "/dev/disk/by-uuid/d626409d-8166-45c2-a168-09dfab31b8a4";
device = "/dev/disk/by-uuid/d626409d-8166-45c2-a168-09dfab31b8a4";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=@nix-root" ]; options = [ "subvol=@nix-root" ];
}; };
"/home" = {
device = "/dev/disk/by-uuid/d626409d-8166-45c2-a168-09dfab31b8a4"; fileSystems."/home" =
{ device = "/dev/disk/by-uuid/d626409d-8166-45c2-a168-09dfab31b8a4";
fsType = "btrfs"; fsType = "btrfs";
options = [ "compress=zstd" "subvol=@home" ]; options = [ "subvol=@home" ];
}; };
"/nix" = {
device = "/dev/disk/by-uuid/d626409d-8166-45c2-a168-09dfab31b8a4";
fsType = "btrfs";
options = [ "compress=zstd" "subvol=@nix-store" "noatime"];
};
"/persist" = {
device = "/dev/disk/by-uuid/d626409d-8166-45c2-a168-09dfab31b8a4";
fsType = "btrfs";
options = [ "compress=zstd" "subvol=@persist" ];
};
};
boot.initrd.luks.devices."luksdev".device = "/dev/disk/by-uuid/100a5596-671b-48ba-a1d1-0723559baf87"; boot.initrd.luks.devices."luksdev".device = "/dev/disk/by-uuid/100a5596-671b-48ba-a1d1-0723559baf87";

View file

@ -1,87 +1,65 @@
{ config, nixpkgs-xr, pkgs, lib, ... }: { config, pkgs, ... }:
let let
passthrough = pkgs.writeShellApplication { passthrough = pkgs.writeShellScript "pasthrough.sh" ''
name = "passthrough.sh"; GUEST_NAME="$1"
runtimeInputs = lib.attrVals [ "coreutils" "kmod" "libvirt" "procps" ] pkgs; HOOK_NAME="$2"
text = '' STATE_NAME="$3"
GUEST_NAME="$1"
HOOK_NAME="$2"
STATE_NAME="$3"
set -x set -e
set -x
# For the windows 10 VM
if [[ "$GUEST_NAME" == "win10" ]]; then
# For the windows 10 VM # Prepare hook
if [[ "$GUEST_NAME" == "win10" ]]; then if [[ "$HOOK_NAME/$STATE_NAME" == "prepare/begin" ]]; then
# Prepare hook # Remove Hyprland
if [[ "$HOOK_NAME/$STATE_NAME" == "prepare/begin" ]]; then ${pkgs.busybox}/bin/pkill Hyprland
# Remove Hyprland # Unbind VTconsoles
#pkill Hyprland ${pkgs.busybox}/bin/echo 0 > /sys/class/vtconsole/vtcon0/bind
${pkgs.busybox}/bin/echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind VTconsoles # Unbind EFI-Framebuffer
echo 0 > /sys/class/vtconsole/vtcon0/bind ${pkgs.busybox}/bin/echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI-Framebuffer # Unload Modules
#echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind ${pkgs.busybox}/bin/modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia
# Unbind the GPU from display driver # Unbind the GPU from display driver
virsh nodedev-detach pci_0000_03_00_0 ${pkgs.libvirt}/bin/virsh nodedev-detach pci_0000_01_00_0
virsh nodedev-detach pci_0000_03_00_1 ${pkgs.libvirt}/bin/virsh nodedev-detach pci_0000_01_00_1
virsh nodedev-detach pci_0000_03_00_2
# Unload Modules # Load VFIO Kernel Module
modprobe -r amdgpu ${pkgs.busybox}/bin/modprobe vfio_pci
# We love race conditions elif [[ "$HOOK_NAME/$STATE_NAME" == "release/end" ]]; then
sleep 2
# Load VFIO Kernel Module # Re-Bind GPU to Nvidia Driver (replace the pci addresses with yours)
modprobe vfio vfio_pci vfio_iommu_type1 ${pkgs.libvirt}/bin/virsh nodedev-reattach pci_0000_01_00_0
${pkgs.libvirt}/bin/virsh nodedev-reattach pci_0000_01_00_1
# Performance Governer ${pkgs.busybox}/bin/modprobe -r vfio-pci
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > "$file"; done
# Isolating CPU #bind efi
systemctl set-property --runtime -- user.slice AllowedCPUs=16-19 ${pkgs.busybox}/bin/echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
systemctl set-property --runtime -- system.slice AllowedCPUs=16-19
systemctl set-property --runtime -- init.scope AllowedCPUs=16-19
elif [[ "$HOOK_NAME/$STATE_NAME" == "release/end" ]]; then # Reload nvidia modules
${pkgs.busybox}/bin/modprobe nvidia_drm
${pkgs.busybox}/bin/modprobe nvidia_modeset
${pkgs.busybox}/bin/modprobe nvidia_uvm
${pkgs.busybox}/bin/modprobe nvidia
modprobe -r vfio_iommu_type1 vfio_pci vfio # Rebind VT consoles
${pkgs.busybox}/bin/echo 1 > /sys/class/vtconsole/vtcon0/bind
# Re-Bind GPU to Host ${pkgs.busybox}/bin/echo 1 > /sys/class/vtconsole/vtcon1/bind
virsh nodedev-reattach pci_0000_03_00_0
virsh nodedev-reattach pci_0000_03_00_1
virsh nodedev-reattach pci_0000_03_00_2
# Rebind VT consoles
echo 1 > /sys/class/vtconsole/vtcon0/bind
echo 1 > /sys/class/vtconsole/vtcon1/bind
sleep 2
# Bind Framebuffer
#echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
# Reload Modules
modprobe amdgpu
# Back to On-Demand Scheduler
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "ondemand" > "$file"; done
systemctl set-property --runtime -- user.slice AllowedCPUs=0-19
systemctl set-property --runtime -- system.slice AllowedCPUs=0-19
systemctl set-property --runtime -- init.scope AllowedCPUs=0-19
fi
fi fi
''; fi
};
'';
in { in {
imports = imports =
[ [
@ -89,34 +67,18 @@ in {
../default.nix ../default.nix
]; ];
virtualisation.libvirtd.hooks.qemu = { virtualisation.libvirtd.hooks.qemu = {
passthrough = "${passthrough}/bin/passthrough.sh"; passthrough = "${passthrough}";
}; };
stitchyconf = { stitchyconf = {
artPkgs.enable = true; artPkgs.enable = true;
}; };
virtualisation.libvirtd = { virtualisation.libvirtd.enable = true;
enable = true;
onBoot = "ignore";
};
hardware = { hardware = {
opentabletdriver.enable = true;
steam-hardware.enable = true; steam-hardware.enable = true;
}; };
networking.networkmanager.enable = true;
services.syncthing = {
enable = true;
user = "stitchynyan";
openDefaultPorts = true;
databaseDir = "/home/stitchynyan/.local/share/syncthing";
dataDir = "/home/stitchynyan";
};
environment.systemPackages = [
pkgs.wlx-overlay-s ];
networking.hostName = "malachite"; networking.hostName = "malachite";
time.timeZone = "America/Los_Angeles"; time.timeZone = "America/Los_Angeles";

View file

@ -7,12 +7,8 @@
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" "vfio-pci" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = lib.attrVals [ "rtl8812au" ] config.boot.kernelPackages; boot.extraModulePackages = [ ];
# https://gitlab.com/qemu-project/qemu/-/issues/2574
# Might bisect or something if I get around to it
boot.kernelPackages = pkgs.linuxPackages_6_6;
boot.kernelParams = [ boot.kernelParams = [
"loglevel=3" "loglevel=3"
@ -24,22 +20,22 @@
"/" = "/" =
{ device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13"; { device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=nix" "compress=zstd" ]; options = [ "subvol=nix" ];
}; };
"/home" = { "/home" = {
device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13"; device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=homes/stitchymain" "compress=zstd" ]; options = [ "subvol=homes/stitchymain" ];
}; };
"/nix/store" = { "/nix/store" = {
device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13"; device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=store" "noatime" "compress=zstd" ]; options = [ "subvol=store" ];
}; };
"/persist" = { "/persist" = {
device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13"; device = "/dev/disk/by-uuid/8e30bb30-eacf-4d7d-bcec-c2b39982de13";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@persist" "compress=zstd" ]; options = [ "subvol=@persist" ];
}; };
"/boot" = { "/boot" = {
device = "/dev/disk/by-uuid/CB12-5062"; device = "/dev/disk/by-uuid/CB12-5062";
@ -48,27 +44,27 @@
"/home/stitchynyan/Music" = { "/home/stitchynyan/Music" = {
device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040"; device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=music/stitchtunes" "compress=zstd" "x-systemd.automount" ]; options = [ "subvol=music/stitchtunes" "x-systemd.automount" ];
}; };
"/home/stitchynyan/Pictures" = { "/home/stitchynyan/Pictures" = {
device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040"; device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=pictures/stitchpics" "compress=zstd" "x-systemd.automount" ]; options = [ "subvol=pictures/stitchpics" "x-systemd.automount" ];
}; };
"/home/stitchynyan/Programs/Steam" = { "/home/stitchynyan/Programs/Steam" = {
device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040"; device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=games/stitchgames" "compress=zstd" "x-systemd.automount" ]; options = [ "subvol=games/stitchgames" "x-systemd.automount" ];
}; };
"/home/stitchynyan/Videos" = { "/home/stitchynyan/Videos" = {
device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040"; device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=videos/stitchshows" "compress=zstd" "x-systemd.automount" ]; options = [ "subvol=videos/stitchshows" "x-systemd.automount" ];
}; };
"/home/stitchynyan/VirtualMachines" = { "/home/stitchynyan/VirtualMachines" = {
device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040"; device = "/dev/disk/by-uuid/feb8239f-5d09-4184-8e46-52185beaa040";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=virtualmachines/stitchvms" "compress=zstd" "x-systemd.automount" ]; options = [ "subvol=virtualmachines/stitchvms" "x-systemd.automount" ];
}; };
}; };
@ -80,21 +76,23 @@
swapDevices = [ ]; swapDevices = [ ];
services.xserver.videoDrivers = ["nvidia"];
services.xserver.displayManager.lightdm.enable = false; services.xserver.displayManager.lightdm.enable = false;
services.monado = { services.monado = {
enable = true; enable = true;
defaultRuntime = true; defaultRuntime = true;
}; };
systemd.user.services.monado.environment = { hardware = {
STEAMVR_LH_ENABLE = "1"; opengl = {
XRT_COMPOSITOR_COMPUTE = "1";
};
hardware = {
graphics = {
enable = true; enable = true;
enable32Bit = true; driSupport = true;
driSupport32Bit = true;
};
nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
}; };
}; };

101
hosts/scarab/default.nix Normal file
View file

@ -0,0 +1,101 @@
{ config, inputs, lib, pkgs, ... }:
let
in
{
imports = [
../default.nix
#"${inputs.mobile-nixos}/modules/quirks/qualcomm/sdm845-modem.nix"
#"${inputs.mobile-nixos}/modules/quirks/audio.nix"
];
stitchyconf.form = "handheld";
mobile = {
beautification = {
silentBoot = lib.mkDefault true;
splash = lib.mkDefault true;
};
boot.stage-1 = {
kernel.useStrictKernelConfig = true;
networking.enable = true;
};
quirks = {
audio.alsa-ucm-meld = true;
qualcomm.sdm845-modem.enable = true;
};
};
boot.loader = {
efi.canTouchEfiVariables = false;
systemd-boot.enable = false;
};
#services.openssh.enable = true;
services.xserver.desktopManager.phosh = {
enable = true;
user = "stitchynyan";
group = "users";
};
#services.xserver.desktopManager.plasma5 = {
# enable = true;
# mobile.enable = true;
#};
programs.firefox.enable = true;
programs.calls.enable = true;
hardware = {
bluetooth.enable = true;
pulseaudio.enable = lib.mkForce false;
sensor.iio.enable = true;
};
networking.networkmanager = {
enable = true;
unmanaged = [ "rndis0" "usb0" ];
};
/*services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/quailcum.lua.d/51-qcom-sdm845.lua" ''
${builtins.readFile (pkgs.fetchurl {
url = "https://gitlab.com/postmarketOS/pmaports/-/raw/0aa9524204e9c9c002c860b87c972bc2ebf025f3/device/community/soc-qcom-sdm845/51-qcom-sdm845.lua";
hash = "sha256-56oNJJyuZZe1Iig1xskDuyazw3PbRZtmU/YRFUTqjwk=";
})}
'')
];*/
services.pipewire.wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/51-qcom-sdm845.conf" ''
monitor.alsa.rules = [
{
matches = [
{
node.name = "~alsa_output.*"
}
]
actions = {
update-props = {
audio.format = "S16LE"
audio.rate = 48000
api.alsa.period-size = 4096
api.alsa.period-num = 6
api.alsa.headroom = 512
}
}
}
]
'')
];
services.openssh = {
enable = true;
settings.PasswordAuthentication = true;
};
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"oneplus-sdm845-firmware"
"oneplus-sdm845-firmware-xz"
];
system.stateVersion = "23.11";
}

View file

@ -1,164 +0,0 @@
{ config, lib, pkgs, modulesPath, ... }:
let
in {
imports = [ ../default.nix ];
stitchyconf = {
form = "server";
};
networking.hostName = "tanzanite";
time.timeZone = "America/Los_Angeles";
virtualisation.docker = {
enable = true;
daemon.settings = {
data-root = "/opt/data/docker-data";
};
};
security.acme = {
acceptTerms = true;
defaults.email = "stitchy@stitchy.moe";
defaults.dnsProvider = "porkbun";
defaults.environmentFile = "/persist/acme/porkbun.tokens";
certs = {
"turn.stitchy.moe" = {};
};
};
services.nginx = {
enable = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
clientMaxBodySize = "100m";
virtualHosts = {
"stitchy.moe" = {
enableACME = true;
forceSSL = true;
root = "/opt/www/stitchy.moe/public";
extraConfig = ''
add_header 'Access-Control-Allow-Origin' '*' always;
error_page 404 /404.html;
location = /404.html {
internal;
}
location ^~/shaders/ {
alias /opt/www/shader-web-test/;
}
location ^~/files/ {
alias /opt/www/files/;
}
'';
};
"gay.stitchy.moe" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:3333";
};
};
"matrix.stitchy.moe" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:9008";
};
};
"syncv3.stitchy.moe" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8009";
};
};
};
};
networking.firewall = {
allowedTCPPorts = [ 22 80 222 443 3478 5349 ];
allowedUDPPorts = [ 3478 5349 ];
allowedUDPPortRanges = [
{ from = 19000; to = 20000; }
];
};
# Boot Config
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
# Redundant Storage
fileSystems."/opt/data" = {
device = "/dev/disk/by-uuid/0acaee69-07df-45f3-a2f4-65e2f3fda529";
fsType = "btrfs";
options = [ "subvol=@data" "compress=zstd" ];
};
fileSystems."/opt/docker-containers" = {
device = "/dev/disk/by-uuid/0acaee69-07df-45f3-a2f4-65e2f3fda529";
fsType = "btrfs";
options = [ "subvol=@docker-containers" "compress=zstd" ];
};
fileSystems."/opt/www" = {
device = "/dev/disk/by-uuid/0acaee69-07df-45f3-a2f4-65e2f3fda529";
fsType = "btrfs";
options = [ "subvol=@www" "compress=zstd" ];
};
# Non-Redundant Storage
fileSystems."/" =
{ device = "/dev/disk/by-uuid/ac31f656-1882-415e-bbb7-b4d24c0af01c";
fsType = "btrfs";
options = [ "subvol=@nix-root" "compress=zstd"];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/ac31f656-1882-415e-bbb7-b4d24c0af01c";
fsType = "btrfs";
options = [ "subvol=@nix-home" "compress=zstd"];
};
fileSystems."/nix/store" =
{ device = "/dev/disk/by-uuid/ac31f656-1882-415e-bbb7-b4d24c0af01c";
fsType = "btrfs";
options = [ "subvol=@nix" "noatime" "compress=zstd"];
};
fileSystems."/persist" =
{ device = "/dev/disk/by-uuid/ac31f656-1882-415e-bbb7-b4d24c0af01c";
fsType = "btrfs";
options = [ "subvol=@persist" "compress=zstd"];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/262D-F161";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/5c007a16-9f0f-42d0-8761-63bea3120f6d"; }
];
# Static Networking
systemd.network.enable = true;
networking.useNetworkd = true;
systemd.network.networks."10-lan" = {
matchConfig.Name = "enp0s31f6";
address = [
"192.168.51.3/24"
];
routes = [
{ Gateway = "192.168.51.1"; }
];
linkConfig.RequiredForOnline = "routable";
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
system.stateVersion = "24.11";
}

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, inputs, ... }:
let let
artPkgs = lib.attrVals [ artPkgs = lib.attrVals [
@ -11,35 +11,37 @@ let
] pkgs; ] pkgs;
handheldPkgs = lib.attrVals [ handheldPkgs = lib.attrVals [
"chatty" "chatty"
"fluffychat"
"gnome-console"
"gnome-text-editor" "gnome-text-editor"
"megapixels" "megapixels"
] pkgs; ] pkgs;
pcPkgs = lib.attrVals [ pcPkgs = lib.attrVals [
"brightnessctl" #osu-lazer
"clipman"
"cyrus-sasl-xoauth2"
"dracula-theme" "dracula-theme"
"easyeffects"
"gamescope"
"libnotify"
"mutt-wizard"
"powertop"
"prettypst"
"wl-clipboard" "wl-clipboard"
"brightnessctl"
"powertop"
"easyeffects"
"mutt-wizard"
"gamescope"
"cyrus-sasl-xoauth2"
"libnotify"
"networkmanager-openvpn"
# temporary home manager things # temporary home manager things
"eww"
"ifuse"
"img2pdf"
"inotify-tools" "inotify-tools"
"eww"
"jq" "jq"
"libimobiledevice" "texliveFull"
"pandoc"
"img2pdf"
"socat" "socat"
"typst" "libimobiledevice"
] pkgs ++ [ pkgs.wineWowPackages.stableFull ]; "ifuse"
] pkgs ++ [ inputs.osu-nixos pkgs.wineWowPackages.stableFull ];
serverPkgs = lib.attrVals [ serverPkgs = lib.attrVals [
#"package" #"package"
] pkgs; ] pkgs;
in in
{ {
options = { options = {
@ -55,40 +57,22 @@ in
config = { config = {
environment.systemPackages = (lib.attrVals [ environment.systemPackages = (lib.attrVals [
"black" "btop"
"clang-tools"
"eza" "eza"
"fd" "fd"
"fzf"
"git" "git"
"glib" "glib"
"glsl_analyzer"
"gnumake" "gnumake"
"gnupg" "gnupg"
"hugo"
"mypy"
"neofetch"
"nixd"
"p7zip"
"pinentry" "pinentry"
"ripgrep" "neofetch"
"rust-analyzer"
"rustfmt"
"rustup"
"tinymist"
"unzip"
"verible"
"vhdl-ls"
"vtsls"
"wget" "wget"
"zip"
"zoxide" "zoxide"
] pkgs) ] pkgs)
++ (lib.optionals config.stitchyconf.artPkgs.enable artPkgs) ++ (lib.optionals config.stitchyconf.artPkgs.enable artPkgs)
++ (lib.optionals (config.stitchyconf.form == "pc") pcPkgs) ++ (lib.optionals (config.stitchyconf.form == "pc") pcPkgs)
++ (lib.optionals (config.stitchyconf.form == "handheld") handheldPkgs) ++ (lib.optionals (config.stitchyconf.form == "handheld") handheldPkgs)
++ (lib.optionals (config.stitchyconf.form == "server") serverPkgs) ++ (lib.optionals (config.stitchyconf.form == "server") serverPkgs);
++ [ pkgs.nodePackages.prettier ];
# To-do figure out how to section these off # To-do figure out how to section these off
programs = { programs = {
@ -101,35 +85,14 @@ in
customRC = builtins.readFile ../config/nvim/init.vim; customRC = builtins.readFile ../config/nvim/init.vim;
packages.myVimPackage = with pkgs.vimPlugins; { packages.myVimPackage = with pkgs.vimPlugins; {
start = [ start = [
conform-nvim
bufferline-nvim
cmp-nvim-lsp
cmp_luasnip
gitsigns-nvim
indent-blankline-nvim
lazy-nvim
luasnip
mini-nvim
neo-tree-nvim
nvim-cmp
nvim-lspconfig nvim-lspconfig
(nvim-treesitter.withPlugins ( nvim-cmp
plugins: with plugins; [ cmp-nvim-lsp
glsl luasnip
javascript cmp_luasnip
markdown
]
))
nvim-web-devicons
render-markdown-nvim
spaceman-nvim
telescope-nvim
telescope-undo-nvim
toggleterm-nvim
tokyonight-nvim tokyonight-nvim
typst-vim
vim-lsp-cxx-highlight vim-lsp-cxx-highlight
which-key-nvim typst-vim
]; ];
}; };
}; };
@ -156,25 +119,9 @@ in
fonts.packages = lib.attrVals [ fonts.packages = lib.attrVals [
"noto-fonts" "noto-fonts"
"noto-fonts-emoji" "noto-fonts-emoji"
"noto-fonts-cjk-sans"
"noto-fonts-cjk-serif"
"liberation_ttf" "liberation_ttf"
"nerdfonts"
"ipafont" "ipafont"
] pkgs ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts); ] pkgs;
fonts.fontconfig.defaultFonts = {
monospace = [
"Noto Sans Mono"
"IPAGothic"
];
sansSerif = [
"Noto Sans"
"IPAPGothic"
];
serif = [
"Noto Serif"
"IPAPMincho"
];
};
}; };
} }

View file

@ -1,34 +0,0 @@
{ config, pkgs, lib, ... }:
{
config = {
programs = {
firefox.enable = true;
};
services = {
desktopManager.plasma6.enable = true;
displayManager.sddm = {
enable = true;
wayland.enable = true;
};
pipewire = {
alsa.enable = true;
enable = true;
pulse.enable = true;
};
};
users.users.cirno = {
description = "user for guests/cirno people";
extraGroups = [ "audio" ];
home = "/home/cirno";
initialHashedPassword = "$6$2f8vjQbdKyEBqPRT$FrZBZfzpJGqNqLlCyb7CzRNm0wuZwfRI7Qj/dUQlbtLixyJK5Im9AJT7GXmP5StfhZxSbH/wW8nDGPQm98NXV0";
isNormalUser = true;
shell = pkgs.zsh;
};
};
}

View file

@ -1,15 +0,0 @@
{ config,
nixosConfig,
pkgs,
lib,
inputs,
home-manager,
... }:
let
in
{
home.stateVersion = "24.05";
home.homeDirectory = "/home/cirno";
}

View file

@ -6,5 +6,6 @@
mutableUsers = false; mutableUsers = false;
users.root.initialHashedPassword = "!"; users.root.initialHashedPassword = "!";
}; };
hardware.pulseaudio.enable = false;
}; };
} }

View file

@ -1,36 +0,0 @@
{
... }:
let
in {
catppuccin = {
enable = true;
flavor = "macchiato";
fcitx5.enable = false;
gtk.enable = true;
kvantum.enable = false;
};
qt = {
enable = true;
platformTheme.name = "qtct";
};
programs = {
btop = {
enable = true;
settings = {
theme_background = false;
};
};
imv.enable = true;
lazygit.enable = true;
wlogout.enable = true;
zathura = {
enable = true;
options = {
recolor-keephue = true;
};
};
};
}

View file

@ -6,7 +6,7 @@
isNormalUser = true; isNormalUser = true;
shell = pkgs.zsh; shell = pkgs.zsh;
home = "/home/nyadmin"; home = "/home/nyadmin";
description = "nyadministrator~"; description = "Administrator~";
extraGroups = [ "wheel" "kvm" "libvirt" "docker" ]; extraGroups = [ "wheel" "kvm" "libvirt" "docker" ];
initialHashedPassword = "$y$j9T$XguIcj/AVXsWW/MxSYAGh0$TivGAa0z8KNCli2mKTd24vtqimpadNzqMFwfbeh0p30"; initialHashedPassword = "$y$j9T$XguIcj/AVXsWW/MxSYAGh0$TivGAa0z8KNCli2mKTd24vtqimpadNzqMFwfbeh0p30";
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [

View file

@ -4,85 +4,52 @@
imports = [ ../default.nix ]; imports = [ ../default.nix ];
nixpkgs.config.allowUnfreePredicate = pkg: nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem ( lib.getName pkg) [ builtins.elem ( lib.getName pkg) [
"cudatoolkit"
"nvidia-settings"
"nvidia-x11"
"osu-lazer" "osu-lazer"
"quartus-prime-lite"
"quartus-prime-lite-unwrapped"
"steam" "steam"
"steam-original" "steam-original"
"steam-run" "steam-run"
"steam-unwrapped" "nvidia-x11"
"nvidia-settings"
"cudatoolkit"
]; ];
nixpkgs.config.permittedInsecurePackages = [
"olm-3.2.16"
];
hardware = {
opentabletdriver.enable = true;
};
programs = { programs = {
firefox.enable = true; firefox.enable = true;
hyprland.enable = true; hyprland.enable = config.stitchyconf.form == "pc";
kdeconnect.enable = true; openvpn3.enable = config.stitchyconf.form == "pc";
steam = { steam = {
enable = true; enable = config.stitchyconf.form == "pc";
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
}; };
wireshark.enable = true;
}; };
security.pam.services.swaylock = {};
services = { services = {
avahi = { avahi = {
enable = config.stitchyconf.form == "pc"; enable = false;
nssmdns4 = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
}; };
blueman.enable = true; blueman.enable = true;
gnome.gnome-keyring.enable = true; gnome.gnome-keyring.enable = lib.mkIf( config.stitchyconf.form == "pc") true;
pipewire = { pipewire = {
enable = lib.mkForce true;
alsa.enable = true; alsa.enable = true;
enable = true; jack.enable = true;
pulse.enable = true; pulse.enable = true;
}; };
printing.enable = true; printing.enable = false;
usbmuxd.enable = true; usbmuxd.enable = false;
xserver.enable = true; xserver.enable = true;
}; };
security.pam.services.swaylock = {};
users.users.stitchynyan = { users.users.stitchynyan = {
description = "Personal user";
extraGroups = [ "audio" "dialout" "docker" "kvm" "libvirtd" "networkmanager" "plugdev" "wireshark" "wheel" ];
home = "/home/stitchynyan";
initialHashedPassword = "$y$j9T$rvySCWHYE4AO4A9J0Vf20.$x5hpBNsOWovQFtNfFUIt17OAH5MJFwFBGjxbaEIagJ3";
isNormalUser = true; isNormalUser = true;
shell = pkgs.zsh; shell = pkgs.zsh;
}; home = "/home/stitchynyan";
description = "Personal user";
i18n = { extraGroups = [ "wheel" "networkmanager" "kvm" "libvirtd" "audio" ];
defaultLocale = "ja_JP.UTF-8"; initialHashedPassword = "$y$j9T$rvySCWHYE4AO4A9J0Vf20.$x5hpBNsOWovQFtNfFUIt17OAH5MJFwFBGjxbaEIagJ3";
inputMethod = {
enable = true;
type = "fcitx5";
fcitx5 = {
waylandFrontend = true;
settings.addons = {
classicui.globalSection = {
Theme = "FluentLight";
DarkTheme = "FluentDark";
UseDarkTheme = "True";
UseAccentColor = "True";
};
};
addons = with pkgs; [
fcitx5-mozc
fcitx5-fluent
];
};
};
}; };
} }

View file

@ -11,38 +11,33 @@ let
] pkgs; ] pkgs;
pcPkgs = lib.attrVals [ pcPkgs = lib.attrVals [
"activitywatch" "activitywatch"
"anki"
"awatcher"
"dunst" "dunst"
"foliate"
"foot" "foot"
"grim" "grim"
"hunspell" "imv"
"hyprpaper"
"isync" "isync"
"kitty" "kitty"
"hunspell"
"hyprpaper"
"libreoffice" "libreoffice"
"librewolf" "librewolf"
"lynx" "lynx"
"mpv" "mpv"
"msmtp" "msmtp"
"mupdf"
"neomutt" "neomutt"
"networkmanagerapplet" "networkmanagerapplet"
"nheko" "nheko"
"notmuch" "notmuch"
"okular" "okular"
"osu-lazer"
"pass"
"pavucontrol" "pavucontrol"
"pass"
"playerctl" "playerctl"
"prismlauncher" "prismlauncher"
"pstree" "qt5ct"
"qbittorrent"
"qt6ct" "qt6ct"
"slurp" "slurp"
"swayidle"
"swaylock-effects" "swaylock-effects"
"tofi"
"wofi" "wofi"
] pkgs ++ [ pkgs.hunspellDicts.en_US ]; ] pkgs ++ [ pkgs.hunspellDicts.en_US ];
in in
@ -54,12 +49,13 @@ in
home.packages = with pkgs; [ home.packages = with pkgs; [
cider cider
ngspice ngspice
hugo
kicad kicad
#steamvr? #steamvr?
procps procps
usbutils usbutils
yt-dlp (python311.withPackages (lib.attrVals ["sympy" "matplotlib"]))
(python3.withPackages (lib.attrVals [ "matplotlib" "pyflakes" "python-lsp-server" "sympy"])) (octaveFull.withPackages (lib.attrVals ["symbolic"]))
] ]
++ (lib.optionals (nixosConfig.stitchyconf.form == "handheld") handheldPkgs) ++ (lib.optionals (nixosConfig.stitchyconf.form == "handheld") handheldPkgs)
++ (lib.optionals (nixosConfig.stitchyconf.form == "pc") pcPkgs); ++ (lib.optionals (nixosConfig.stitchyconf.form == "pc") pcPkgs);
@ -74,13 +70,7 @@ in
# To-Do Later # To-Do Later
home.sessionVariables = { home.sessionVariables = {
FOO = "BAR"; FOO = "BAR";
};
gtk.enable = true;
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
}; };
home.file = { home.file = {
@ -96,21 +86,10 @@ in
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/eww"; source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/eww";
recursive = true; recursive = true;
}; };
"foot" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/foot";
recursive = true;
};
"hypr" = { "hypr" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/hypr"; source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/hypr";
recursive = true; recursive = true;
}; };
"mutt" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/mutt";
recursive = true;
};
"mutt_oauth2.py" = {
source = "${pkgs.neomutt}/share/neomutt/oauth2/mutt_oauth2.py";
};
"swaylock" = { "swaylock" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/swaylock"; source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/swaylock";
recursive = true; recursive = true;
@ -121,7 +100,7 @@ in
mailsync = { mailsync = {
Unit = { Unit = {
Description = "Syncs email"; Description = "Syncs email";
After = [ "network-online.target" ]; After = [ "network-online.target" ];
}; };
Service = { Service = {
Type = "oneshot"; Type = "oneshot";
@ -130,7 +109,7 @@ in
"DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus" "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"
"DISPLAY=:0" "DISPLAY=:0"
"MBSYNCRC=/home/stitchynyan/.config/mbsync/config" "MBSYNCRC=/home/stitchynyan/.config/mbsync/config"
"PATH=$PATH:${lib.makeBinPath (lib.attrVals [ "busybox" "cyrus-sasl-xoauth2" "gnupg" "isync" "libnotify" "notmuch" "pass" "perl" "python3" ] pkgs)}" "PATH=$PATH:${lib.makeBinPath (lib.attrVals [ "busybox" "cyrus-sasl-xoauth2" "gnupg" "isync" "notify" "notmuch" "pass" "perl" "python3" ] pkgs)}"
"SASL_PATH=/run/current-system/sw/lib/sasl2" "SASL_PATH=/run/current-system/sw/lib/sasl2"
"WAYLAND_DISPLAY=wayland-1" "WAYLAND_DISPLAY=wayland-1"
]; ];
@ -139,40 +118,22 @@ in
}; };
}; };
programs.gpg = {
homedir = "${config.xdg.dataHome}/gnupg";
};
services = {
gpg-agent = {
enable = true;
enableScDaemon = false;
enableSshSupport = true;
defaultCacheTtl = 34560000;
maxCacheTtl = 34560000;
extraConfig = ''
allow-preset-passphrase
pinentry-program /run/current-system/sw/bin/pinentry
'';
};
};
systemd.user.timers = { systemd.user.timers = {
mailsync = { mailsync = {
Unit.Description = "Syncs email"; Unit.Description = "Syncs email";
Timer = { Timer = {
OnBootSec = "1min"; OnBootSec = "1min";
OnUnitActiveSec = "10min"; OnUnitActiveSec = "10min";
}; };
Install.WantedBy = [ "timers.target" ]; Install.WantedBy = [ "timers.target" ];
}; };
}; };
home.pointerCursor = { home.pointerCursor = {
name = "phinger-cursors-dark"; name = "phinger-cursors";
package = pkgs.phinger-cursors; package = pkgs.phinger-cursors;
gtk.enable = true; gtk.enable = true;
size = 24; size = 64;
}; };
# Read the Docs before change # Read the Docs before change