Compare commits

..

117 commits

Author SHA1 Message Date
cf10e016ef
feat(nvim): (system) verilog lsp and formatting 2025-04-14 03:54:57 +00:00
77c28ceb4e
fix(tanzanite): VM crashing under workloads
Refer to linked git issue, but the tldr is that AMD gpus have a crashing
issue when they are passed to a guest VM in linux host kernels greater
than 6.6.
2025-03-31 04:46:03 -07:00
67a2858dd9
chore: alphebatize formatters 2025-03-21 11:18:07 +00:00
7c74f90534
chore(hyprland): update monitor configuration
Adds a couple of overclocks I did to my CRT and also cleans up the cruft
from me being on hyprland for ages
2025-03-21 11:17:31 +00:00
6edd87f13a
fix: properly source env-vars
Had an issue where hyprland wouldn't source the env-vars for stuff
because I put the source for it under the execute hyprland :)
2025-03-21 11:14:48 +00:00
ff9cc5ad63
fix(gtk): enable and set default dark theme 2025-03-21 11:05:26 +00:00
319c25098c
feat(themeing): Major refactor themeing for whole computer
Adds catppuccin nix flake for themeing lots of programs easily. This
enables proper themeing for:
* zathura
* imv
* fcitx (declarative settings)
* lazygit
* btop
* gtk

It also pulls in the home-manager sessionVars which is necessary to
theme applications.

The session vars change also reduces the number of env-vars that need to
be set in the zshrc due to them being set declaratively elsewhere.
2025-03-21 10:46:00 +00:00
22dbb128c0
feat(neomutt): Add initial non-secret configuration
Adds the config that I use for a lot of the non-secret or personally
identifying parts of neomutt. Lacks a lot of important bits like
actually doing anything with the emails; but at least a lot of the
graphical stuff is pretty now and saved in git.
2025-03-21 06:16:15 +00:00
341db7911e
fix(mailsync): incorrect indent 2025-03-08 22:47:45 +00:00
23d6686697
fix(font): allow reading chinese characters 2025-03-08 22:47:23 +00:00
961481549f
feat(fcitx): proper themeing and fix wayland issues 2025-03-08 22:45:52 +00:00
49deabf581
chore(zsh): sort aliases and remove comments
This
1. Sorts the aliases
2. Removes a couple of comments that havent been used in a long time
3. Shortens paths to include ~/ instead of /home/flyingstitchman
2025-03-08 22:25:02 +00:00
b690ef8763
fix(hyprland): dbus issues 2025-03-04 20:53:53 +00:00
48de9bce71
feat(nvim): append / prepend newline 2025-03-01 08:16:56 +00:00
1f64a070f9
refactor(hyprland): migrate to windowrulev2 2025-03-01 08:16:20 +00:00
f09aced113
refactor(hyprland): change exec-start config 2025-03-01 08:15:24 +00:00
61e19b05f2
feat(nix): remove spaceman builder 2025-02-28 10:21:55 +00:00
463a840f8c
feat(nix): stm32 device rules 2025-02-28 10:21:24 +00:00
47bed4aec0
feat(nvim): prettypst formatting 2025-02-28 10:20:49 +00:00
6ec283a1a7
feat(nix): add direnv support 2025-02-28 10:20:10 +00:00
ec52de2dc6
fix(swaylock): add grace time 2025-02-25 11:33:04 +00:00
972b761ac0
refactor(hyprland): border-color changes 2025-02-25 11:31:45 +00:00
7175f2c628
refactor(eww): clean up scss and add color variables 2025-02-25 11:31:05 +00:00
3e893367ed
chore: flake update (proper) 2025-02-22 23:28:13 +00:00
5038eeacfa
chore: flake update (temp blender broken) 2025-02-22 22:33:58 +00:00
9f19b0e60e
feat(eww): add power button click 2025-02-15 07:41:27 +00:00
c34fea90fe
fix(mutt): notifications now showing on sync service 2025-02-14 22:10:26 +00:00
abbf8000db
fix(nvim): rust_analyzer check gated features 2025-02-14 04:18:43 +00:00
1ecaee308c
feat(swaylock): new visual
This refactors the config to be a lot more readable. In addition it
adds:

* New Wallpaper
* Different Indicator Position
* Removes Startup Delay
* New Colors

This removes another program from the list that I never bothered to make
look good.
2025-02-09 00:51:49 +00:00
c716b55ad4
chore: remove streamline imports 2025-02-08 23:51:49 +00:00
9d507f8619
feat(foot): catpuccin terminal colors 2025-02-08 23:46:17 +00:00
19302b6d29
feat(nvim): lazygit popup panel 2025-02-08 23:44:32 +00:00
d62d891133
chore(hyprland): update binding 2025-02-07 05:39:28 +00:00
c332aedab0
fix(swaylock): unbreak font and colors 2025-02-07 05:37:27 +00:00
1849c1b471
feat(nvim): add C and CPP formatting 2025-02-07 05:37:22 +00:00
84e0e0688b
fix(tanzanite): proper upload size 2025-02-04 11:24:39 -08:00
d3869fd58e
feat(tanzanite): add shaders location to website 2025-02-04 11:24:39 -08:00
cba53547db
feat(tanzanite): add files location to website 2025-02-04 11:24:39 -08:00
4791277f2e
fix(lappy): add missing persist mount 2025-01-31 02:57:53 +00:00
e31a8c520f
fix: binding paths incorrect 2025-01-26 05:35:41 +00:00
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
42 changed files with 1952 additions and 567 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

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

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,88 @@
(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" "⏻"))
(eventbox
:onclick "hyprctl dispatch exec 'wlogout'"
(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}'

View file

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

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

@ -0,0 +1,18 @@
# -*- 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,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
bindl=,switch:Lid Switch,exec,swaylock
# 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,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio"
bind=ALTSHIFT,C,exec,steam-run "~/Documents/Games/Celeste/Celeste"
bind=ALTSHIFT,O,exec,osu\!
bind=ALTSHIFT,R,exec,steam-run "~/Documents/Games/factorio/bin/x64/factorio"
bind=ALTSHIFT,S,exec,steam-run "~/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"
# 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,24 @@
# 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=swayidle
exec-once=fcitx5
exec-once=hyprpaper
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=swayidle
# Notifications
exec-once=dunst
exec-once=${XDG_CONFIG_HOME:-~/.config}/dunst/scripts/low-battery.sh
exec-once=fcitx5
#exec-once=~/.config/hypr/portal.sh
exec-once=systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=wl-paste -p --watch wl-copy -pc
# Terminal
exec-once=foot -s
# Systemdeeznuts
exec-once=dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus

View file

@ -26,8 +26,8 @@ input {
sensitivity=.4
accel_profile=adaptive
touchpad {
natural_scroll=false
touchpad {
natural_scroll=false
disable_while_typing=false
}
@ -36,9 +36,9 @@ input {
general {
gaps_in=3
gaps_out=5
border_size=3
col.active_border=0xff7733cc
col.inactive_border=0xff333333
border_size=4
col.active_border=0xffcc6a0f6
col.inactive_border=0xff494d64
layout=dwindle
}
@ -51,34 +51,30 @@ decoration {
passes=3
ignore_opacity=false
new_optimizations=true
noise=.03
vibrancy=.2
vibrancy_darkness=0.5
input_methods=true
}
# 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
rounding=15
inactive_opacity=.8
fullscreen_opacity=1 multiplier
# Other
rounding=15
inactive_opacity=.8
fullscreen_opacity=1 multiplier
}
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 +82,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

@ -6,5 +6,6 @@ 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

@ -1,19 +1,18 @@
# Configure Monitor Setup for Hyprland
# Assign Monitors
#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
monitor=eDP-1,preferred,auto,1.5
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
## CRT Fun ##
# Good Middle Ground
# monitor=DP-1,1280x1024@150,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

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
@ -13,10 +16,12 @@ windowrule=pseudo,abc
windowrule=monitor 0,wlogout
# Don't blur performance intensive applications
windowrule=noblur,osu!
windowrule=noblur,^(firefox)$
windowrule=noblur,^(librewolf)$
windowrule=noblur,Blender
windowrule=noblur,Steam
windowrule=noblur,nheko
windowrulev2 = noblur,class:osu!
windowrulev2 = noblur,class:firefox
windowrulev2 = noblur,class:librewolf
windowrulev2 = noblur,class:blender
windowrulev2 = noblur,class:steam
#windowrulev2=noblur,fullscreen:1
# Funny Opacity
windowrulev2 = opacity .8, class:nheko

118
config/mutt/config.muttrc Normal file
View file

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

10
config/mutt/mailcap Normal file
View file

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

163
config/mutt/style.muttrc Normal file
View file

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

10
config/mutt/switch.muttrc Normal file
View file

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

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

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

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

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

@ -0,0 +1,189 @@
-- 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,15 +1,39 @@
screenshots
## Default Settings ##
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-radius=100
indicator-radius=140
indicator-thickness=7
effect-blur=7x5
effect-vignette=0.5:0.5
ring-color=bb00cc
key-hl-color=880033
indicator-x-position=1200
indicator-y-position=500
## Ring Colors ##
ring-color=a6da95
ring-clear-color=eed49f
ring-ver-color=8aadf4
ring-wrong-color=ed8796
line-color=00000000
inside-color 00000088
separator-color 00000000
fade-in=0.2
datestr="%a, %b %e %Y"
greyscale
separator-color=00000000
key-hl-color=c6a0f6
bs-hl-color=ed8796
## Inside Colors ##
inside-color=00000088
inside-clear-color=eed49f
inside-ver-color=8aadf4
inside-wrong-color=ed8796

View file

@ -8,28 +8,29 @@ 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"
export XDG_STATE_HOME="$HOME/.local/state"
# Aliases
alias kon="ncmpcpp -b ~/.config/ncmpcpp/bindings"
alias myip="curl ifconfig.me"
alias ghidra="_JAVA_AWT_WM_NONREPARENTING=1 ghidra"
alias ls='eza'
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 c='clear'
alias cd="z"
alias imv="imv -b aa77bb"
alias find="fd"
alias tree="eza --tree"
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 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 qsus="NIXPKGS_ALLOW_UNFREE=1 nix-shell -p quartus-prime-lite -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/fe7ab74a86d78ba00d144aa7a8da8c71a200c563.tar.gz"
alias ssh="TERM=xterm ssh" #Fix foot issue in ssh
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'
# Automatically get new programs for autocompletion
@ -37,6 +38,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,52 +90,44 @@ compinit
# End of lines added by compinstall
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"
# Ibus
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# Clean Up
export QT_QPA_PLATFORM=wayland
export QT_QPA_PLATFORMTHEME=qt5ct
# 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 MBSYNCRC=$XDG_CONFIG_HOME/mbsync/config
export PASSWORD_STORE_DIR=$XDG_CONFIG_HOME/password_store
export NOTMUCH_CONFIG=$XDG_CONFIG_HOME/notmuch/config
export KDEHOME="$XDG_CONFIG_HOME"/kde
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export GPG_TTY=$(tty)
export SDL_VIDEODRIVER=wayland
export GNUPGHOME=$XDG_DATA_HOME/gnupg
export GOPATH="$XDG_DATA_HOME"
export GOMODCACHE="$XDG_CACHE_HOME"
export GPG_TTY=$(tty)
export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
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 "
# Nixos Rebuilding
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
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
# export WLR_DRM_DEVICES=/dev/dri/card0
exec Hyprland
fi
export QSYS_ROOTDIR="/home/flyingstitchman/.cache/paru/clone/quartus-free/pkg/quartus-free-quartus/opt/intelFPGA/21.1/quartus/sopc_builder/bin"
export QSYS_ROOTDIR="~/.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,28 +1,47 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"catppuccin": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"lastModified": 1742254251,
"narHash": "sha256-3wGCx5UR86pgurSYB//LsBMKAsw6qpiOpnzgShPQKkM=",
"owner": "catppuccin",
"repo": "nix",
"rev": "4cb9c621072312fb45c6e86b57e5fabd97f1b95d",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"owner": "catppuccin",
"repo": "nix",
"type": "github"
}
},
"flake-utils": {
"flake-compat": {
"locked": {
"lastModified": 1623875721,
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"revCount": 69,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -38,11 +57,11 @@
]
},
"locked": {
"lastModified": 1713547570,
"narHash": "sha256-i8tNz47Lfsq5QWFLyE3rIm0gs2UUvXXAxfWTC24e370=",
"lastModified": 1740254115,
"narHash": "sha256-MwxDtYB/MSGZlr/xS+ExGYH2QgHk73ShD40shxjad/Y=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "7c61e400a99f33cdff3118c1e4032bcb049e1a30",
"rev": "cb3f6e9b59d3a5e51ef9f7da2b8418d5c72aaef8",
"type": "github"
},
"original": {
@ -55,11 +74,11 @@
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1713034591,
"narHash": "sha256-zEtSq4e1hsf5nPoTzsx+cvHTusQxFdyDpD3mOa360A0=",
"lastModified": 1737346419,
"narHash": "sha256-YHByUFujAnfJJ2JnhHIJyohECr5o0EDmuRdyUcvnZGQ=",
"owner": "nixos",
"repo": "mobile-nixos",
"rev": "5455e4455b231218f6198b39383a0ad4c1d6638e",
"rev": "1498c4d7fd59026479469efdbfe30c78a7300d89",
"type": "github"
},
"original": {
@ -70,11 +89,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1713521961,
"narHash": "sha256-EwR8wW9AqJhSIY+0oxWRybUZ32BVKuZ9bjlRh8SJvQ8=",
"lastModified": 1740089251,
"narHash": "sha256-Y78mDBWoO8CLLTjQfPfII+KXFb6lAmF9GrLbyVBsIMM=",
"owner": "Nixos",
"repo": "nixos-hardware",
"rev": "5d48925b815fd202781bfae8fb6f45c07112fdb2",
"rev": "18e9f9753e9ae261bcc7d3abe15745686991fd30",
"type": "github"
},
"original": {
@ -86,11 +105,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1713297878,
"narHash": "sha256-hOkzkhLT59wR8VaMbh1ESjtZLbGi+XNaBN6h49SPqEc=",
"lastModified": 1741851582,
"narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "66adc1e47f8784803f2deb6cacd5e07264ec2d5c",
"rev": "6607cf789e541e7873d40d3a8f7815ea92204f32",
"type": "github"
},
"original": {
@ -100,48 +119,120 @@
"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_3",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1695759061,
"narHash": "sha256-s9OYi0tzWSjFUaGLnLg08tTm8OEu1uZqGTtKmIRwHic=",
"owner": "Asqiir",
"repo": "osu-nixos",
"rev": "4e0096e1eee74383b9350962d8bff094648a7968",
"lastModified": 1740221878,
"narHash": "sha256-g9MxGpvOqLInb6/QoAFy/sy/SgYIVZbAPBCE1H2vZnA=",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"rev": "348600e86789833a7f7c76a90e1e9464530768e1",
"type": "github"
},
"original": {
"owner": "Asqiir",
"repo": "osu-nixos",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1739866667,
"narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1739866667,
"narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"catppuccin": "catppuccin",
"home-manager": "home-manager",
"mobile-nixos": "mobile-nixos",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"osu-nixos": "osu-nixos"
"nixpkgs": "nixpkgs_2",
"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": 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";
outputs = inputs@{
outputs = inputs@{
catppuccin,
nixpkgs,
nixpkgs-xr,
nixos-hardware,
nixpkgs-quartus,
home-manager,
osu-nixos,
...
} : {
@ -15,17 +15,24 @@
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
catppuccin.nixosModules.catppuccin
./packages/default.nix
./hosts/malachite/default.nix
./users/stitchynyan/default.nix
nixpkgs-xr.nixosModules.nixpkgs-xr
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.stitchynyan = import ./users/stitchynyan/home.nix;
home-manager.users.stitchynyan = {
imports = [
catppuccin.homeManagerModules.catppuccin
./users/stitchynyan/home.nix
./users/home.nix
];
};
}
];
};
@ -33,9 +40,9 @@
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
catppuccin.nixosModules.catppuccin
nixos-hardware.nixosModules.framework-12th-gen-intel
./packages/default.nix
./hosts/lappy/default.nix
./users/stitchynyan/default.nix
@ -44,7 +51,13 @@
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.stitchynyan = import ./users/stitchynyan/home.nix;
home-manager.users.stitchynyan = {
imports = [
catppuccin.homeManagerModules.catppuccin
./users/stitchynyan/home.nix
./users/home.nix
];
};
}
];
};
@ -53,7 +66,6 @@
specialArgs = { inherit inputs; };
modules = [
./packages/default.nix
./hosts/gemini/default.nix
./users/nyadmin/default.nix
./users/cirno/default.nix
@ -68,10 +80,28 @@
}
];
};
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.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nyadmin = import ./users/nyadmin/home.nix;
}
];
};
};
};
inputs = {
catppuccin.url = "github:catppuccin/nix";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
@ -81,7 +111,8 @@
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";
osu-nixos.url = "github:Asqiir/osu-nixos";
nixpkgs-quartus.url = "github:nixos/nixpkgs/nixos-22.05";
};
}

View file

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

@ -0,0 +1,146 @@
# 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
{
options = {};
imports = [ ../packages/default.nix ];
imports = [ ../packages/default.nix ../users/default.nix ./config/stm32 ];
config = {
hardware = {
@ -22,6 +22,13 @@ in
};
};
programs = {
appimage.binfmt = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
security.sudo.wheelNeedsPassword = false;
security.rtkit.enable = true;
services = {
@ -65,6 +72,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

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

View file

@ -10,17 +10,28 @@
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"];
};
"/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";

View file

@ -1,15 +1,13 @@
{ config, pkgs, lib, ... }:
{ config, nixpkgs-xr, pkgs, lib, ... }:
let
passthrough = pkgs.writeShellApplication {
name = "pasthrough.sh";
passthrough = pkgs.writeShellApplication {
name = "passthrough.sh";
runtimeInputs = lib.attrVals [ "coreutils" "kmod" "libvirt" "procps" ] pkgs;
text = ''
GUEST_NAME="$1"
HOOK_NAME="$2"
STATE_NAME="$3"
echo 19>/home/stitchynyan/startlogfile
BASH_XTRACEFD=19
set -x
# For the windows 10 VM
@ -19,50 +17,64 @@ let
if [[ "$HOOK_NAME/$STATE_NAME" == "prepare/begin" ]]; then
# Remove Hyprland
pkill Hyprland
#pkill Hyprland
# Unbind VTconsoles
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI-Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
#echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# 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
# Unload Modules
modprobe -r amdgpu
# We love race conditions
sleep 2
# Unload Modules
modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia
# Unbind the GPU from display driver
virsh nodedev-detach pci_0000_01_00_0
virsh nodedev-detach pci_0000_01_00_1
# Load VFIO Kernel Module
modprobe vfio_pci
modprobe vfio vfio_pci vfio_iommu_type1
sleep 2
# Performance Governer
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > "$file"; done
# 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
elif [[ "$HOOK_NAME/$STATE_NAME" == "release/end" ]]; then
# Re-Bind GPU to Nvidia Driver (replace the pci addresses with yours)
virsh nodedev-reattach pci_0000_01_00_0
virsh nodedev-reattach pci_0000_01_00_1
modprobe -r vfio_iommu_type1 vfio_pci vfio
modprobe -r vfio-pci
#bind efi
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
# Reload nvidia modules
modprobe nvidia_drm
modprobe nvidia_modeset
modprobe nvidia_uvm
modprobe nvidia
# 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
bin/echo 1 > /sys/class/vtconsole/vtcon1/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
@ -77,15 +89,19 @@ 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;
};
@ -97,7 +113,10 @@ in {
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

@ -8,7 +8,11 @@
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" "vfio-pci" ];
boot.extraModulePackages = [ ];
boot.extraModulePackages = lib.attrVals [ "rtl8812au" ] config.boot.kernelPackages;
# 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 = [
"loglevel=3"
@ -20,22 +24,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 +48,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 +80,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;
};
};

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

@ -0,0 +1,164 @@
{ 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, inputs, ... }:
{ config, lib, pkgs, ... }:
let
artPkgs = lib.attrVals [
@ -15,31 +15,31 @@ 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"
"prettypst"
"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;
in
{
options = {
@ -55,22 +55,40 @@ in
config = {
environment.systemPackages = (lib.attrVals [
"btop"
"black"
"clang-tools"
"eza"
"fd"
"fzf"
"git"
"glib"
"glsl_analyzer"
"gnumake"
"gnupg"
"pinentry"
"hugo"
"mypy"
"neofetch"
"nixd"
"p7zip"
"pinentry"
"ripgrep"
"rust-analyzer"
"rustfmt"
"rustup"
"tinymist"
"unzip"
"verible"
"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 +101,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
];
};
};
@ -117,9 +156,25 @@ in
fonts.packages = lib.attrVals [
"noto-fonts"
"noto-fonts-emoji"
"noto-fonts-cjk-sans"
"noto-fonts-cjk-serif"
"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"
];
};
};
}

View file

@ -10,20 +10,25 @@
};
services = {
desktopManager.plasma6.enable = true;
displayManager.sddm = {
enable = true;
wayland.enable = true;
};
desktopManager.plasma6.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;
home = "/home/cirno";
description = "user for guests/cirno people";
extraGroups = [ "" ];
initialHashedPassword = "$6$2f8vjQbdKyEBqPRT$FrZBZfzpJGqNqLlCyb7CzRNm0wuZwfRI7Qj/dUQlbtLixyJK5Im9AJT7GXmP5StfhZxSbH/wW8nDGPQm98NXV0";
};
};
}

36
users/home.nix Normal file
View file

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

@ -8,19 +8,30 @@
"nvidia-settings"
"nvidia-x11"
"osu-lazer"
"quartus-prime-lite"
"quartus-prime-lite-unwrapped"
"steam"
"steam-original"
"steam-run"
"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 = {};
@ -45,10 +56,33 @@
users.users.stitchynyan = {
description = "Personal user";
extraGroups = [ "wheel" "networkmanager" "kvm" "libvirtd" "audio" "dialout" ];
extraGroups = [ "audio" "dialout" "docker" "kvm" "libvirtd" "networkmanager" "plugdev" "wireshark" "wheel" ];
home = "/home/stitchynyan";
initialHashedPassword = "$y$j9T$rvySCWHYE4AO4A9J0Vf20.$x5hpBNsOWovQFtNfFUIt17OAH5MJFwFBGjxbaEIagJ3";
isNormalUser = true;
shell = pkgs.zsh;
};
i18n = {
defaultLocale = "ja_JP.UTF-8";
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,33 +11,38 @@ let
] pkgs;
pcPkgs = lib.attrVals [
"activitywatch"
"anki"
"awatcher"
"dunst"
"foliate"
"foot"
"grim"
"imv"
"isync"
"kitty"
"hunspell"
"hyprpaper"
"isync"
"kitty"
"libreoffice"
"librewolf"
"lynx"
"mpv"
"msmtp"
"mupdf"
"neomutt"
"networkmanagerapplet"
"nheko"
"notmuch"
"okular"
"pavucontrol"
"osu-lazer"
"pass"
"pavucontrol"
"playerctl"
"prismlauncher"
"qt5ct"
"pstree"
"qbittorrent"
"qt6ct"
"slurp"
"swayidle"
"swaylock-effects"
"tofi"
"wofi"
] pkgs ++ [ pkgs.hunspellDicts.en_US ];
in
@ -49,13 +54,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);
@ -70,7 +74,13 @@ in
# To-Do Later
home.sessionVariables = {
FOO = "BAR";
};
gtk.enable = true;
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
home.file = {
@ -86,10 +96,21 @@ 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;
};
"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" = {
source = config.lib.file.mkOutOfStoreSymlink "/etc/nixos/config/swaylock";
recursive = true;
@ -100,7 +121,7 @@ in
mailsync = {
Unit = {
Description = "Syncs email";
After = [ "network-online.target" ];
After = [ "network-online.target" ];
};
Service = {
Type = "oneshot";
@ -109,7 +130,7 @@ in
"DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"
"DISPLAY=:0"
"MBSYNCRC=/home/stitchynyan/.config/mbsync/config"
"PATH=$PATH:${lib.makeBinPath (lib.attrVals [ "busybox" "cyrus-sasl-xoauth2" "gnupg" "isync" "notify" "notmuch" "pass" "perl" "python3" ] pkgs)}"
"PATH=$PATH:${lib.makeBinPath (lib.attrVals [ "busybox" "cyrus-sasl-xoauth2" "gnupg" "isync" "libnotify" "notmuch" "pass" "perl" "python3" ] pkgs)}"
"SASL_PATH=/run/current-system/sw/lib/sasl2"
"WAYLAND_DISPLAY=wayland-1"
];
@ -118,22 +139,40 @@ 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";
Timer = {
OnBootSec = "1min";
OnUnitActiveSec = "10min";
OnUnitActiveSec = "10min";
};
Install.WantedBy = [ "timers.target" ];
};
};
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