Compare commits

...

86 commits

Author SHA1 Message Date
00f735aa4f
fix: foot fix when not in root 2024-12-30 08:59:06 +00:00
1149888ef8
fix: keybind conflict (ALT D) 2024-12-25 21:39:59 +00:00
2f1b3fc090
chore(hyprland): remove shadow 2024-12-25 12:39:51 +00:00
deb0db6ec0
fix: special workspace slow to appear 2024-12-25 12:39:14 +00:00
205575056c
refactor: change window resizing keybinds 2024-12-25 12:38:42 +00:00
8fd1741c7f
feat: special workspaces 2024-12-25 12:36:41 +00:00
071f45d111
chore: remove fullscreen keybind 2024-12-25 12:36:15 +00:00
64d37c19da
chore: rebind plumbing keys 2024-12-25 12:35:54 +00:00
c87558574d
chore(hyprland): update colors 2024-12-25 04:26:35 +00:00
f66ed49776
refactor(hyprland): faster animations 2024-12-25 04:18:14 +00:00
a1885849a2
feat(nvim): nix lsp 2024-12-25 04:18:09 +00:00
ab9794ced1
feat(nvim): spaceman directories for tanzanite 2024-12-24 06:11:32 -08:00
ea053ca45d
fix(tanzanite): sliding-sync proxy bad gateway 2024-12-23 01:08:18 -08:00
d98e01928e
feat(tanzanite): open coturn ports
This opening the ports required for my coturn docker container. In the
near future, I would like to use agenix and do a fully nix-based coturn
configuration. It doesn't have any persistant data, so it should be a
good candidate to moving to a 100% nix based config.
2024-12-22 22:20:31 -08:00
97e544b3f2
fix(tanzanite): sliding-sync proxy 2024-12-22 20:53:56 -08:00
f60c305e7e
fix(tanzanite): matrix not being able to sign in 2024-12-22 20:53:39 -08:00
5544f0d6c0
fix(tanzanite): configure custom 404 page 2024-12-22 02:50:33 -08:00
4818be44d3
feat(tanzanite): nginx config for matrix 2024-12-21 22:24:51 -08:00
97886fa0f0
fix(tanzanite): use correct docker dir 2024-12-21 22:24:12 -08:00
5a37fd5165
feat(tanzanite): nginx configuration for forgio 2024-12-21 19:20:17 -08:00
59ad109068
feat(tanzanite): nginx configuration for website 2024-12-21 19:19:45 -08:00
38c9117551
feat(tanzanite): acme cert configuration 2024-12-21 19:18:43 -08:00
0effd94182
feat(tanzanite): use old docker data dir 2024-12-21 19:18:09 -08:00
8bff5db0f5
feat(tanzanite): redundant storage configuration 2024-12-21 19:17:45 -08:00
0283dea2e6
feat!: init tanzanite host! 2024-12-21 19:17:11 -08:00
0c12e52353
fix: hugo systemwide package 2024-12-21 19:13:30 -08:00
bfeae72f73
refactor: move openssh config to a mkif 2024-12-21 18:54:43 -08:00
aa269aa681
fix: packages missing from global config 2024-12-21 18:44:04 -08:00
0376b2eb94
feat(nvim): rust formatting 2024-12-21 22:14:47 +00:00
89cd96a5c5
feat(nvim): mini.pairs 2024-12-21 22:14:08 +00:00
8fe62f295f
fix(hyprland): remove obsolete and unecessary drop shadow 2024-12-21 18:54:42 +00:00
ec823cbbad
fix: osu name change 2024-12-21 18:42:13 +00:00
76f7c6695a
nvim: fix rust-analyzer 2024-12-18 08:27:16 +00:00
19069aba44
zsh: add nixos-rebuild aliases 2024-12-18 07:48:02 +00:00
a17eb40eae
nvim: typst_lsp -> tinymist && glsl_analyzer 2024-12-18 07:47:12 +00:00
93571017f7
nvim: add javascript syntax highlighting, lsp, and formatting 2024-12-17 11:01:21 +00:00
81b214586f
fix: nixos build 2024-12-16 01:29:58 +00:00
eb73cf9c03
chore: flake update 2024-12-16 01:25:50 +00:00
c75f696013
nvim: add prettier formating to conform for html and css 2024-12-10 13:34:15 +00:00
d9e21b23bd
foot: fix shift+space in neovim terminal lazygit
Problem: In neovimg when using a terminal (like toggleterm) and trying
to press shift+space in an curses type application like lazygit, it will
print an escape sequence instead of printing the space key. This
textbinding remaps it so it will now print space instead. Has minor
implications for escape sequences and stuff.
2024-12-09 15:42:35 -08:00
095e9f29fa
nvim: add nvim-web-devicons
icons go brr
2024-12-09 13:09:29 +00:00
75b6e32ce2
nvim: add render-markdown-nvim
Fancy text go brrrrrrrrrr~
2024-12-09 10:10:41 +00:00
53dbae8493
nvim: init treesiter-nvim
I wanted fancy markdown rendering in nvim and that needed a treesitter
lsp, so this adds treesitter and the markdown lsp.
2024-12-09 10:10:05 +00:00
2d5b5cb37d
nvim: switch undotree for telescope-undo-nvim
Undotree did not have live updates like I wanted, so I have switched to
the telescope one which does.
2024-12-08 09:51:19 +00:00
a1c38f605d
foot: init 2024-12-06 09:29:10 +00:00
e2ddc10b22
hypr: remove redundant monitor configs 2024-12-05 09:58:22 +00:00
1fd1838d3f
nvim: remove ccls in favor of clang
Removes CCLS nvim configuration and exchanges the ccls package for
clang-tools
2024-12-05 09:57:31 +00:00
57132cc602
hypr: add neovim binding
When ALT+Enter v is too much letters to type
2024-12-03 11:22:39 +00:00
230ef0165b
eww: fix cal for large screen
On Malachite, the calendar window was floating too far from the edge,
which should be fixed by this.

Additionally, this removes unecessary geometries from the cal and bar
windows
2024-12-02 07:30:51 +00:00
7f89cb0a37
hypr: Add default monitor rule 2024-12-01 23:50:45 +00:00
a90cb37e69
eww: Add interactibles for vol, mic, and brightness 2024-11-29 10:03:29 +00:00
d249ab216f
eww: remove whitespace from scss 2024-11-29 09:59:24 +00:00
0e60d4acac
eww: brightness scroll 2024-11-28 10:29:01 +00:00
33f4d22664
eww: refactor and add calendar widget 2024-11-28 10:06:31 +00:00
4cd16133e9
Hypr: Refactor Binds 2024-11-27 11:13:57 +00:00
c7b07f2130
Git: Create gitignore 2024-11-27 10:50:50 +00:00
8b19a173fe
Nix: Flake Update 2024-11-27 10:48:05 +00:00
78de462017
Fix: More Whitespace 2024-11-27 10:47:32 +00:00
3ec1ba5f9b
NVIM: Added Code formatting for python 2024-11-27 10:46:06 +00:00
4d66a5e231
Fix: Whitespaces begone or something 2024-11-27 10:41:47 +00:00
7545885942
Finish NVIM refactor 2024-11-08 00:10:13 +00:00
53ef1f28c6
VFIO fixes and malachite things 2024-11-03 11:11:39 -08:00
c4e46d0a28
flake update 2024-11-03 12:30:59 +00:00
d73ecb1bdb
Major NVIM refactor (ty fire :3) 2024-11-03 12:30:54 +00:00
e1aa67dbb2
I really should commit more 2024-11-03 12:30:42 +00:00
3aeda379d5
Move Nix Store 2024-11-03 12:28:46 +00:00
9ec7fb3c67
other misc malachite fixes 2024-08-08 04:52:49 -07:00
3c6cc3e1d2
virtualization improvements 2024-08-08 04:52:45 -07:00
34f8e2640f
nyadministrator 2024-08-01 09:44:24 +00:00
54e9588487
huzza, cursor issue has been fixedgit add --patch users/stitchynyan/home.nixgit add --patch users/stitchynyan/home.nix 2024-07-30 14:41:54 +00:00
00cb1bbe74
Fixing fonts, gpg-agent, clipboard, and other misc 2024-07-30 14:25:55 +00:00
f44ccff64f
many small changes 2024-07-13 08:00:58 +00:00
f7199197c6
remove novideo 2024-06-18 00:23:44 -07:00
fa48674845
virtualization plus wifif 2024-06-05 05:46:08 -07:00
b27b33d13e
waaaaaaa 2024-05-05 12:36:31 +00:00
67de9c5169
squash merge niftion 2024-05-04 04:50:48 -07:00
230958bd8f
add zip/unzipper 2024-05-03 09:39:40 +00:00
a6c4098a5c
revert "scarab init" accidentally pushed to master
This reverts commit 40a8d3b711.
2024-05-03 09:29:43 +00:00
97a6ae026e
get test user on gemini 'server' 2024-05-03 04:47:19 +00:00
aea964c745
flake update and fstrim 2024-04-20 09:08:27 +00:00
0a8c6eb54e
tweaks for arduino plus bat 2024-04-20 09:08:20 +00:00
9a4993661b
change this for better bat 2024-04-20 09:08:14 +00:00
40a8d3b711
scarab init 2024-04-20 09:07:49 +00:00
101d47fa29
moar malachite fixes 2024-04-05 02:46:38 -07:00
8d69eb76d6
better way of doing this 2024-04-05 02:23:54 -07:00
16ae890458
Update framework config 2024-03-31 10:10:47 +00:00
35 changed files with 1332 additions and 527 deletions

5
.gitignore vendored Normal file
View file

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

View file

@ -1,6 +1,6 @@
### 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.

View file

@ -11,10 +11,10 @@ if [[ "$mute" == "" ]]; then
# Change the volume
$(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}')"
vol=${volume//.}
# Send the notification
$(dunstify -h int:value:"$vol" Volume: $vol -h string:x-dunst-stack-tag:volume)
$(echo $vol > ${XDG_CACHE_HOME:-~/.cache}/eww/vol)

View file

@ -19,12 +19,12 @@
border-style: solid;
border-color: #cac;
margin: 2px;
&.empty {
}
&.occupied{
&.occupied{
}
&.current {
@ -45,6 +45,9 @@
border-radius: 15px;
}
.cal {
padding: 5px;
}
.clock {
background-color: #536;

View file

@ -1,13 +1,11 @@
;;;; (defpoll time :interval "1s" 'date +%s')
;; VARIABLE DEFINITIONS
(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 current_workspace :initial "..." "bash ~/.config/eww/scripts/get-active-workspace")
(deflisten urgent_workspace :initial "..." "bash ~/.config/eww/scripts/get-urgent-workspaces")
@ -21,13 +19,28 @@
(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"
:orientation "vertical"
:valign "end"
(circular-progress :value prog
:start-at 10
(circular-progress :value prog
:start-at 10
:clockwise false
:thickness 3
:width 30
@ -38,60 +51,86 @@
(box :class "circle" :style sty char)))
(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'};"
:val {EWW_BATTERY.BAT1.capacity}
:char "󱐋"))
(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")
(defwidget volume []
(circle :prog {vol * 7/10}
:sty "font-size: 12; margin-right: 2px;"
:val {vol + 1 - 1}
:char ""))
(defpoll micvol :interval "1m" "wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}'")
(defwidget volume []
(eventbox
:onclick "hyprctl dispatch exec 'pavucontrol -t 3'"
: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}
:sty "font-size: 12; margin-right: 2px;"
:val {vol + 1 - 1}
:char "")))
(defwidget mic []
(circle :prog {micvol * 70}
:sty "margin-left: 1px;"
:val {micvol *100}
:char "󰍬"))
(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")
(eventbox
:onclick "hyprctl dispatch exec 'pavucontrol -t 4'"
:onscroll "if [ {} == 'up' ]; then wpctl set-volume -l 1 @DEFAULT_SOURCE@ 1%+; else wpctl set-volume @DEFAULT_SOURCE@ 1%-; fi"
(circle :prog {micvol * 70}
:sty "margin-left: 1px;"
:val {micvol *100}
:char "󰍬")))
(defwidget brightness []
(circle :prog {(backlight / 960) * 7/10}
:sty "font-size: 12; margin-right: 3px;"
:val {round( backlight / 960, 0) - 1}
:char "󰃠"))
(eventbox
:onscroll "if [ {} == 'up' ]; then brightnessctl -d intel_backlight set 1%+; else brightnessctl -d intel_backlight set 1%-; fi"
(circle :prog {(backlight / 960) * 7/10}
:sty "font-size: 12; margin-right: 3px;"
:val {round( backlight / 960, 0) - 1}
:char "󰃠")))
(defwidget power []
(box :class "power" :valign "end" "⏻"))
(defwidget tray []
(systray :orientation "v" :icon-size 20))
;; Upper Level Widgets
(defwidget bar []
(centerbox :orientation "vertical"
:halign "center"
:space-evenly false
(_workspaces)
(clock)
(box :orientation "vertical" :spacing -25 :valign "end"
(brightness)
(mic)
(volume)
(battery)
(power))))
:halign "center"
:space-evenly false
(_workspaces)
(clock)
(box :orientation "vertical" :spacing -25 :valign "end"
(brightness)
(mic)
(volume)
(battery)
(tray)
(power))))
(defwidget cal []
(box
:class "cal"
(eventbox
:onhoverlost "eww close cal"
(calendar))))
;; Windows
(defwindow bar
:monitor 0
:geometry (geometry :x "4px"
:y "1%"
:width "2.5%"
:height "98%"
:anchor "left center")
:stacking "fg"
:exclusive true
:class "bar"
:monitor 0
:geometry (geometry :x "4px"
:height "98%"
:anchor "left center")
:stacking "fg"
:exclusive true
:class "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'
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
socat -u UNIX-CONNECT:/run/user/1000/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'

20
config/foot/foot.ini Normal file
View file

@ -0,0 +1,20 @@
# -*- conf -*-
font=monospace:size=10
[colors]
alpha = .65
foreground=dcdccc
background=393052
[cursor]
color=111111 dcdccc
[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,32 +1,39 @@
# Binding Config File for Hyprland
# Main Bindings
#
# Foot, you done goofed
bind=ALT,RETURN,exec,foot
#bind=ALT,RETURN,exec,kitty
bind=ALT,Q,killactive,
bind=SUPER,M,exec,hyprctl dispatch exit 0
# 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,V,togglefloating,
bindr=ALTSHIFT,RETURN,exec,pkill wofi || wofi -S drun --allow-images
bind=ALTSHIFT,F,fullscreen,1
bind=ALTSHIFT,M,fullscreen,0
bind=,Print,exec,grim -g "$(slurp)" -t jpeg - | wl-copy
bind=SHIFT,Print,exec,grim -g "$(slurp)" -t jpeg Downloads/screenshot.jpeg
bind=SUPER,M,exec,hyprctl dispatch exit 0
# Screenshots
bind=,Print,exec,slurp | grim -t jpeg -g - - | wl-copy
bind=SHIFT,Print,exec,slurp | grim -t jpeg -g - Downloads/screenshot.jpeg
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=SUPER,Print,exec,hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - Downloads/screenshot.jpeg
# trigger when the switch is toggled
bindl=,switch:Lid Switch,exec,swaylock --effect-greyscale
# Games
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-lazer
bind=ALTSHIFT,C,exec,"/home/flyingstitchman/Documents/Games/Celeste/Celeste"
bind=ALTSHIFT,S,exec,"/home/flyingstitchman/Documents/Games/Stardew Valley/StardewValley"
bind=ALTSHIFT,O,exec,osu\!
bind=ALTSHIFT,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio"
bind=ALTSHIFT,S,exec,"/home/flyingstitchman/Documents/Games/Stardew Valley/StardewValley"
bind=ALTSHIFT,T,exec,gamescope -w 1280 -h 960 -f -r 60 wine "/home/flyingstitchman/Documents/Games/Touhou 15 - Legacy of Lunatic Kingdom/th15.exe"
# Window Moving
@ -35,7 +42,7 @@ bindm=SUPER,mouse:273,resizewindow
# Quick Bindings
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=,XF86AudioLowerVolume,exec,${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/volumeNotify.sh 1%-
@ -58,6 +65,16 @@ bind=ALTSHIFT,k,swapwindow, u
bind=ALTSHIFT,h,swapwindow, l
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
bind=ALT,1,workspace,1
bind=ALT,2,workspace,2
@ -82,24 +99,16 @@ bind=ALTSHIFT,8,movetoworkspace,8
bind=ALTSHIFT,9,movetoworkspace,9
bind=ALTSHIFT,10,movetoworkspace,0
# Submap for resizing windows
bind=ALT,R,submap,resize # will switch to a submap called resize
## Resizing Windows ##
binde=SUPER,L,resizeactive,10 0
binde=SUPER,H,resizeactive,-10 0
binde=SUPER,K,resizeactive,0 -10
binde=SUPER,J,resizeactive,0 10
submap=resize # will start a submap called "resize"
binde=,L,resizeactive,10 0
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.
binde=SUPERSHIFT,L,resizeactive,50 0
binde=SUPERSHIFT,H,resizeactive,-50 0
binde=SUPERSHIFT,K,resizeactive,0 -50
binde=SUPERSHIFT,J,resizeactive,0 50
# Submap to disable all keybinds (for blender)
bind=ALT,U,submap,clean

View file

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

View file

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

View file

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

View file

@ -13,7 +13,6 @@
monitor=eDP-1,2256x1504@60,0x0,1.5
#monitor=DP-2,1024x786,2256x0,1
workspace=eDP-1,1
#monitor=DP-1,preferred,auto,1
#monitor=DP-2,preferred,auto,1
#monitor=DP-3,preferred,auto,1
#monitor=DP-4,preferred,auto,1
# Auto Monitor Rule
monitor = , preferred, auto, 1

View file

@ -1,8 +0,0 @@
#!/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,10 +1,13 @@
# Window Rule Config File
# WLogout Configuration
# Might move to separate file cause screen resolutions whack
# Application Fixes
# Foot Fullscreen Transparency Fix
windowrulev2 = syncfullscreen 0, initialClass:(footclient), initialTitle:(foot)
windowrule=nofocus,ibus,^(Ibus-ui-gtk3)$
# WLogout Configuration
# Might move to separate file cause screen resolutions whack
windowrule=move 720 222,wlogout
windowrule=size 2000 1000,wlogout
windowrule=tile,xyz

View file

@ -1,155 +1,9 @@
" (Neo)vim Configuration
" By Flying_Stitchman
" 4 Jan 2022
" (Neo)vim Configuration
" By Flying_Stitchman 4 Jan 2022
" Basic Configuration
syntax on
set spell
set hlsearch
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
" nvim builtin option config
luafile /etc/nixos/config/nvim/lua/options.lua
" nvim keymapping
luafile /etc/nixos/config/nvim/lua/keymap.lua
" Main Config stuffs
luafile /etc/nixos/config/nvim/nvim.lua

153
config/nvim/lua/keymap.lua Normal file
View file

@ -0,0 +1,153 @@
-- 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 })
----
-- 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 })
-- 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

@ -0,0 +1,45 @@
-- 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
vim.cmd("colorscheme tokyonight")
vim.cmd("hi Comment guifg=#e69dc5")
vim.cmd("hi Linenr guifg=#a672f3")

169
config/nvim/nvim.lua Normal file
View file

@ -0,0 +1,169 @@
-- This will need some refactoring as it is mostly a
-- copy and paste from the previous single-file .vim config
require'lspconfig'.rust_analyzer.setup{}
require'lspconfig'.texlab.setup{}
require'lspconfig'.svls.setup{}
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', 'tinymist', 'rust_analyzer', 'vhdl_ls', 'vtsls' }
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' },
},
}
--[[
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 = {
css = { "prettier", },
html = { "prettier", },
javascript = { "prettier", },
python = { "black" },
},
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",
}
})

View file

@ -12,4 +12,4 @@ inside-color 00000088
separator-color 00000000
fade-in=0.2
datestr="%a, %b %e %Y"
greyscale
greyscale

View file

@ -7,7 +7,6 @@ unsetopt autocd beep notify
unsetopt PROMPT_SP
bindkey -v
# End of lines configured by zsh-newuser-install
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
@ -18,6 +17,10 @@ alias kon="ncmpcpp -b ~/.config/ncmpcpp/bindings"
alias myip="curl ifconfig.me"
alias ghidra="_JAVA_AWT_WM_NONREPARENTING=1 ghidra"
alias ls='eza'
alias l='ls -l'
alias la='ls -la'
alias ll='ls -l'
alias lla='ls -la'
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"
@ -30,6 +33,16 @@ alias imv="imv -b aa77bb"
alias find="fd"
alias tree="eza --tree"
alias icat="kitty +kitten icat"
alias qsus="NIXPKGS_ALLOW_UNFREE=1 nix-shell -p quartus-prime-lite -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/fe7ab74a86d78ba00d144aa7a8da8c71a200c563.tar.gz"
# thanks fire :3
alias c='clear'
alias lg='lazygit'
# Future fire, this is for a meme.
nya() {
args=$(echo $@ | sed 's/nya/git/g')
git $args 2>&1 >/dev/null | sed 's/git/nya/g' | sed 's/GIT/NYA/g' | sed 's/Git/Nya/g'
}
# Automatically get new programs for autocompletion
@ -37,6 +50,19 @@ zshcache_time="$(date +%s%N)"
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() {
if [[ -a /var/cache/zsh/pacman ]]; then
local paccache_time="$(date -r /var/cache/zsh/pacman +%s%N)"
@ -76,7 +102,7 @@ compinit
# End of lines added by compinstall
eval "$(zoxide init zsh)"
# Default Programs
export EDITOR=nvim
@ -84,9 +110,7 @@ export EDITOR=nvim
#export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export PATH="${PATH}:/home/flyingstitchman/.cargo/bin"
# Ibus
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
# Fcitx for Xwayland
XMODIFIERS=@im=fcitx
# Clean Up
@ -96,11 +120,11 @@ export QT_QPA_PLATFORMTHEME=qt5ct
#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 GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export GNUPGHOME=${XDG_DATA_HOME-~/.config}/gnupg
export GPG_TTY=$(tty)
export SDL_VIDEODRIVER=wayland
export GOPATH="$XDG_DATA_HOME"
@ -111,12 +135,15 @@ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default
export DOTNET_CLI_HOME="$XDG_CONFIG_HOME"/dotnet
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
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 "
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)" "$@"
}
# Autostart Hyprland after all environmental Variables have been declared
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then

View file

@ -1,28 +1,29 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"type": "github"
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1623875721,
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -38,11 +39,11 @@
]
},
"locked": {
"lastModified": 1710349883,
"narHash": "sha256-bjbdS2mC76xNJwt1d/uZa+JdHR8CCyYbF4Ey/NgOJus=",
"lastModified": 1734093295,
"narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "2f0db7d418e781354d8a3c50e611e3b1cd413087",
"rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8",
"type": "github"
},
"original": {
@ -55,11 +56,11 @@
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1710655727,
"narHash": "sha256-TOJraNC9vW2gP/ov1RBD+J61pUEJm4q7481Iu6G4ieo=",
"lastModified": 1733700802,
"narHash": "sha256-YuhtFJLVW3d3zr5+VoyApm6PUFoIHhOCi+VOfi2LNzA=",
"owner": "nixos",
"repo": "mobile-nixos",
"rev": "8c59592e8d44c1b30be3fa4e6df7938fa9672be3",
"rev": "0532a626e69fa9451e50297011008851527b9259",
"type": "github"
},
"original": {
@ -68,13 +69,29 @@
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1733861262,
"narHash": "sha256-+jjPup/ByS0LEVIrBbt7FnGugJgLeG9oc+ivFASYn2U=",
"owner": "Nixos",
"repo": "nixos-hardware",
"rev": "cf737e2eba82b603f54f71b10cb8fd09d22ce3f5",
"type": "github"
},
"original": {
"owner": "Nixos",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1710272261,
"narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
"lastModified": 1734119587,
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2",
"rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
"type": "github"
},
"original": {
@ -84,38 +101,56 @@
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs-quartus": {
"locked": {
"lastModified": 1628148846,
"narHash": "sha256-V8aZJBROfNDk40cvFjKUnOnL7sF+BYwCQUUpLP8y4uE=",
"owner": "NixOS",
"lastModified": 1685573264,
"narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9a8eb5a464f373e79d19d0ed2e53e0d31f78fe92",
"rev": "380be19fbd2d9079f677978361792cb25e8a3635",
"type": "github"
},
"original": {
"owner": "NixOS",
"owner": "nixos",
"ref": "nixos-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"osu-nixos": {
"nixpkgs-xr": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
"nixpkgs": "nixpkgs_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1695759061,
"narHash": "sha256-s9OYi0tzWSjFUaGLnLg08tTm8OEu1uZqGTtKmIRwHic=",
"owner": "Asqiir",
"repo": "osu-nixos",
"rev": "4e0096e1eee74383b9350962d8bff094648a7968",
"lastModified": 1734226209,
"narHash": "sha256-6QO56uh1J853+zj7iv5RoFTQLgk6nL0BKshMfWyE7vI=",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"rev": "402eb3d51b418ebd128e2e579952cc0afda53cee",
"type": "github"
},
"original": {
"owner": "Asqiir",
"repo": "osu-nixos",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1733940404,
"narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
@ -123,8 +158,46 @@
"inputs": {
"home-manager": "home-manager",
"mobile-nixos": "mobile-nixos",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"osu-nixos": "osu-nixos"
"nixpkgs-quartus": "nixpkgs-quartus",
"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": 1733761991,
"narHash": "sha256-s4DalCDepD22jtKL5Nw6f4LP5UwoMcPzPZgHWjAfqbQ=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "0ce9d149d99bc383d1f2d85f31f6ebd146e46085",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},

View file

@ -1,11 +1,11 @@
{
description = "System Configuration Flake";
outputs = inputs@{
outputs = inputs@{
nixpkgs,
nixpkgs-xr,
nixos-hardware,
nixpkgs-quartus,
home-manager,
osu-nixos,
...
} : {
@ -18,6 +18,7 @@
./packages/default.nix
./hosts/malachite/default.nix
./users/stitchynyan/default.nix
nixpkgs-xr.nixosModules.nixpkgs-xr
home-manager.nixosModules.home-manager
{
@ -32,6 +33,7 @@
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
nixos-hardware.nixosModules.framework-12th-gen-intel
./packages/default.nix
./hosts/lappy/default.nix
@ -54,6 +56,26 @@
./packages/default.nix
./hosts/gemini/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 = [
./packages/default.nix
./hosts/tanzanite/default.nix
./users/nyadmin/default.nix
home-manager.nixosModules.home-manager
{
@ -68,17 +90,17 @@
};
inputs = {
mobile-nixos = {
url = "github:nixos/mobile-nixos";
flake = false;
};
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
};
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
osu-nixos.url = "github:Asqiir/osu-nixos";
mobile-nixos = {
url = "github:nixos/mobile-nixos";
flake = false;
};
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-xr.url = "github:nix-community/nixpkgs-xr";
nixos-hardware.url = "github:Nixos/nixos-hardware/master";
nixpkgs-quartus.url = "github:nixos/nixpkgs/nixos-22.05";
};
}

View file

@ -22,9 +22,26 @@ in
};
};
programs.appimage.binfmt = true;
security.sudo.wheelNeedsPassword = false;
security.rtkit.enable = true;
services.xserver.displayManager.lightdm.enable = false;
services = {
fstrim.enable = true;
resolved = {
enable = true;
dnsovertls = "opportunistic";
fallbackDns = [
"2620:fe::10#dns10.quad9.net"
"2620:fe::fe:10#dns10.quad9.net"
"9.9.9.10#dns10.quad9.net"
"149.112.112.10#dns10.quad9.net"
];
extraConfig = ''
DNS=2620:fe::10#dns10.quad9.net 2620:fe::fe:10#dns10.quad9.net 9.9.9.10#dns10.quad9.net 149.112.112.10#dns10.quad9.net
'';
};
xserver.displayManager.lightdm.enable = false;
};
# Wireguard stuff, to-do make better
networking.firewall = {
@ -49,6 +66,30 @@ in
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";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
};

View file

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

View file

@ -12,77 +12,79 @@
artPkgs.enable = true;
};
system.nixos.tags = [ "Nya_Beginnings" ];
services.logind.powerKey = "ignore";
services.logind.powerKeyLongPress = "poweroff";
services.resolved = {
enable = true;
dnsovertls = "opportunistic";
fallbackDns = [
"2620:fe::10#dns10.quad9.net"
"2620:fe::fe:10#dns10.quad9.net"
"9.9.9.10#dns10.quad9.net"
"149.112.112.10#dns10.quad9.net"
];
extraConfig = ''
DNS=2620:fe::10#dns10.quad9.net 2620:fe::fe:10#dns10.quad9.net 9.9.9.10#dns10.quad9.net 149.112.112.10#dns10.quad9.net
'';
};
networking = {
hostName = "lappy";
networkmanager.enable = true;
hostName = "lappy";
networkmanager.enable = true;
};
time.timeZone = "America/Lost_Angeles";
boot.kernelParams = [
#"intel_pstate=no_hwp"
"kernel.yama.ptrace_scope=0"
#"mem_sleep_default=deep"
"acpi_osi=\"!Windows 2020\""
"module_blacklist=hid_sensor_hub"
"intel_iommu=on"
"iommu=pt"
"nvme.noacpi=1"
#"i915.enable_guc=7"
];
virtualisation.libvirtd.enable = true;
hardware.bluetooth.enable = true;
hardware.opengl = {
services.syncthing = {
enable = true;
driSupport = true;
driSupport32Bit = true;
extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
];
user = "stitchynyan";
openDefaultPorts = true;
databaseDir = "/home/stitchynyan/.local/share/syncthing";
dataDir = "/home/stitchynyan";
};
systemd.extraConfig =
"AllowedCPUs=8-15"
;
boot.kernelParams = [
#"i915.enable_guc=7"
"intel_iommu=on"
"iommu=pt"
"kernel.yama.ptrace_scope=0"
];
virtualisation = {
docker.enable = true;
libvirtd.enable = true;
waydroid.enable = true;
};
hardware.bluetooth.enable = true;
hardware.bluetooth.settings.General.Experimental = true;
hardware.graphics = {
enable = true;
enable32Bit= true;
extraPackages = lib.attrVals [
"intel-compute-runtime"
"intel-media-driver"
] pkgs;
};
systemd.extraConfig = "AllowedCPUs=8-15";
services.tlp = {
enable = true;
settings = {
TLP_DEFAULT_MODE = "BAT";
TLP_PERSISTENT_DEFAULT = 1;
CPU_SCALING_GOVERNOR_ON_BAT = "schedutil";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_HWP_DYN_BOOST_ON_BAT = false;
CPU_SCALING_GOVERNOR_ON_BAT = "schedutil";
CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 50;
#Optional helps save long term battery health
START_CHARGE_THRESH_BAT0 = 40; # 40 and bellow it starts to charge
STOP_CHARGE_THRESH_BAT0 = 90; # 80 and above it stops charging
INTEL_GPU_MAX_FREQ_ON_BAT = 800;
INTEL_GPU_BOOST_FREQ_ON_BAT = 1000;
NMI_WATCHDOG = false;
PCIE_ASPM_ON_AC = "default";
PCIE_ASPM_ON_BAT = "powersupersave";
PLATFORM_PROFILE_ON_BAT = "low-power";
RUNTIME_PM_ON_BAT = "auto";
WOL_DISABLE = true;
SCHED_POWERSAVE_ON_BAT = true;
USB_AUTOSUSPEND = true;
TLP_DEFAULT_MODE = "BAT";
TLP_PERSISTENT_DEFAULT = 1;
#Optional helps save long term battery health
START_CHARGE_THRESH_BAT0 = 40; # 40 and bellow it starts to charge
STOP_CHARGE_THRESH_BAT0 = 90; # 80 and above it stops charging
};
};

View file

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

View file

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

View file

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

157
hosts/tanzanite/default.nix Normal file
View file

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

@ -15,31 +15,40 @@ let
"megapixels"
] pkgs;
pcPkgs = lib.attrVals [
#osu-lazer
"dracula-theme"
"wl-clipboard"
"brightnessctl"
"powertop"
"easyeffects"
"mutt-wizard"
"gamescope"
"clipman"
"cyrus-sasl-xoauth2"
"dracula-theme"
"easyeffects"
"gamescope"
"libnotify"
"networkmanager-openvpn"
"mutt-wizard"
"powertop"
"wl-clipboard"
# temporary home manager things
"inotify-tools"
"eww"
"jq"
"texliveFull"
"pandoc"
"img2pdf"
"socat"
"libimobiledevice"
"ifuse"
] pkgs ++ [ inputs.osu-nixos pkgs.wineWowPackages.stableFull ];
"img2pdf"
"inotify-tools"
"jq"
"libimobiledevice"
"socat"
"typst"
] pkgs ++ [ pkgs.wineWowPackages.stableFull ];
serverPkgs = lib.attrVals [
#"package"
] pkgs;
spaceman-nvim = pkgs.vimUtils.buildVimPlugin {
name = "spaceman-nvim";
src = pkgs.fetchFromGitHub {
owner = "FireIsGood";
repo = "spaceman.nvim";
rev = "7910d202073bcc5f567481426f771b3737451dd9";
hash = "sha256-VvKce2uiFzv0TjoJfEX461p9tY9aE237Xr1q/Lw3Utw=";
};
};
in
{
options = {
@ -55,22 +64,41 @@ in
config = {
environment.systemPackages = (lib.attrVals [
"black"
"btop"
"clang-tools"
"eza"
"fd"
"fzf"
"git"
"glib"
"glsl_analyzer"
"gnumake"
"gnupg"
"pinentry"
"hugo"
"lazygit"
"mypy"
"neofetch"
"nixd"
"p7zip"
"pinentry"
"ripgrep"
"rust-analyzer"
"rustfmt"
"rustup"
"tinymist"
"unzip"
"vhdl-ls"
"vtsls"
"wget"
"zip"
"zoxide"
] pkgs)
++ (lib.optionals config.stitchyconf.artPkgs.enable artPkgs)
++ (lib.optionals (config.stitchyconf.form == "pc") pcPkgs)
++ (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
programs = {
@ -83,14 +111,35 @@ in
customRC = builtins.readFile ../config/nvim/init.vim;
packages.myVimPackage = with pkgs.vimPlugins; {
start = [
nvim-lspconfig
nvim-cmp
conform-nvim
bufferline-nvim
cmp-nvim-lsp
luasnip
cmp_luasnip
gitsigns-nvim
indent-blankline-nvim
lazy-nvim
luasnip
mini-nvim
neo-tree-nvim
nvim-cmp
nvim-lspconfig
(nvim-treesitter.withPlugins (
plugins: with plugins; [
glsl
javascript
markdown
]
))
nvim-web-devicons
render-markdown-nvim
spaceman-nvim
telescope-nvim
telescope-undo-nvim
toggleterm-nvim
tokyonight-nvim
vim-lsp-cxx-highlight
typst-vim
vim-lsp-cxx-highlight
which-key-nvim
];
};
};
@ -118,8 +167,22 @@ in
"noto-fonts"
"noto-fonts-emoji"
"liberation_ttf"
"nerdfonts"
"ipafont"
] pkgs;
] pkgs ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
fonts.fontconfig.defaultFonts = {
monospace = [
"Noto Sans Mono"
"IPAGothic"
];
sansSerif = [
"Noto Sans"
"IPAPGothic"
];
serif = [
"Noto Serif"
"IPAPMincho"
];
};
};
}

34
users/cirno/default.nix Normal file
View file

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

15
users/cirno/home.nix Normal file
View file

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

View file

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

View file

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

View file

@ -11,34 +11,40 @@ let
] pkgs;
pcPkgs = lib.attrVals [
"activitywatch"
"anki"
"awatcher"
"dunst"
"foliate"
"foot"
"grim"
"hunspell"
"hyprpaper"
"imv"
"isync"
"kitty"
"hunspell"
"hyprpaper"
"libreoffice"
"librewolf"
"lynx"
"mpv"
"msmtp"
"mupdf"
"neomutt"
"networkmanagerapplet"
"nheko"
"notmuch"
"okular"
"pavucontrol"
"osu-lazer"
"pass"
"pavucontrol"
"playerctl"
"prismlauncher"
"qt5ct"
"pstree"
"qbittorrent"
"qt6ct"
"slurp"
"swaylock-effects"
"tofi"
"wofi"
"zathura"
] pkgs ++ [ pkgs.hunspellDicts.en_US ];
in
{
@ -49,13 +55,12 @@ in
home.packages = with pkgs; [
cider
ngspice
hugo
kicad
#steamvr?
procps
usbutils
(python311.withPackages (lib.attrVals ["sympy" "matplotlib"]))
(octaveFull.withPackages (lib.attrVals ["symbolic"]))
yt-dlp
(python3.withPackages (lib.attrVals [ "matplotlib" "pyflakes" "python-lsp-server" "sympy"]))
]
++ (lib.optionals (nixosConfig.stitchyconf.form == "handheld") handheldPkgs)
++ (lib.optionals (nixosConfig.stitchyconf.form == "pc") pcPkgs);
@ -86,6 +91,10 @@ in
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/eww";
recursive = true;
};
"foot" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/foot";
recursive = true;
};
"hypr" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/hypr";
recursive = true;
@ -118,6 +127,24 @@ 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 = {
mailsync = {
Unit.Description = "Syncs email";
@ -130,10 +157,10 @@ in
};
home.pointerCursor = {
name = "phinger-cursors";
name = "phinger-cursors-dark";
package = pkgs.phinger-cursors;
gtk.enable = true;
size = 64;
size = 24;
};
# Read the Docs before change