Compare commits

..

27 commits

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

5
.gitignore vendored
View file

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

View file

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

View file

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

View file

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

View file

@ -1,11 +1,13 @@
;; VARIABLE DEFINITIONS
;;;; (defpoll time :interval "1s" 'date +%s')
(defwidget clock []
(box :orientation "vertical"
:halign "center"
:valign "end"
(box :class "clock" {formattime(EWW_TIME, "%H")})
(box :class "clock" {formattime(EWW_TIME, "%M")})
))
;; Audio
(deflisten vol "cat ~/.cache/eww/vol && inotifywait -q -m -e close_write ~/.cache/eww/vol | while read -r filename event; do cat ~/.cache/eww/vol; done")
(defpoll micvol :interval "1m" "wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}'")
;; Workspace Stuff
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces")
(deflisten current_workspace :initial "..." "bash ~/.config/eww/scripts/get-active-workspace")
(deflisten urgent_workspace :initial "..." "bash ~/.config/eww/scripts/get-urgent-workspaces")
@ -19,28 +21,13 @@
(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")
;; 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]
(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
@ -51,86 +38,60 @@
(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 "󱐋"))
(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 "")))
(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 mic []
(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 "󰍬")))
(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")
(defwidget brightness []
(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 "󰃠")))
(circle :prog {(backlight / 960) * 7/10}
:sty "font-size: 12; margin-right: 3px;"
:val {round( backlight / 960, 0) - 1}
:char "󰃠"))
(defwidget power []
(box :class "power" :valign "end" "⏻"))
(defwidget tray []
(systray :orientation "v" :icon-size 20))
;; Upper Level Widgets
(defwidget bar []
(centerbox :orientation "vertical"
:halign "center"
:space-evenly false
(_workspaces)
(clock)
(box :orientation "vertical" :spacing -25 :valign "end"
(brightness)
(mic)
(volume)
(battery)
(tray)
(power))))
:halign "center"
:space-evenly false
(_workspaces)
(clock)
(box :orientation "vertical" :spacing -25 :valign "end"
(brightness)
(mic)
(volume)
(battery)
(power))))
(defwidget cal []
(box
:class "cal"
(eventbox
:onhoverlost "eww close cal"
(calendar))))
;; Windows
(defwindow bar
:monitor 0
:geometry (geometry :x "4px"
:height "98%"
:anchor "left center")
:stacking "fg"
:exclusive true
:class "bar"
:monitor 0
:geometry (geometry :x "4px"
:y "1%"
:width "2.5%"
: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:/run/user/1000/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'

View file

@ -1,20 +0,0 @@
# -*- conf -*-
font=monospace:size=10
[colors]
alpha = .65
foreground=dcdccc
background=393052
[cursor]
color=111111 dcdccc
[key-bindings]
spawn-terminal=Control+Shift+n
# Fixes the SHIFT+ENTER escape sequence from showing
# Git Issue: https://codeberg.org/dnkl/foot/issues/1358
[text-bindings]
\x0d = Control+Return Shift+Return Control+Shift+Return
\x20 = Shift+space

View file

@ -1,39 +1,32 @@
# Binding Config File for Hyprland
# Main Bindings
#
# Foot, you done goofed
bind=ALT,RETURN,exec,foot
#bind=ALT,RETURN,exec,kitty
# Programs
bind=ALT,A,exec,footclient nvim
bind=ALT,B,exec,swaylock
bind=ALT,E,exec,dolphin
bind=ALT,G,exec,${XDG_CONFIG_HOME:-~/.config}/hypr/plumbing.sh
bind=ALT,C,exec,${XDG_CONFIG_HOME:-~/.config}/hypr/plumbing.sh clip
bind=ALT,RETURN,exec,footclient
bindr=ALTSHIFT,RETURN,exec,pkill wofi || wofi -S drun --allow-images
# Basic Actions
bind=ALT,Q,killactive,
bind=ALT,V,togglefloating,
bind=ALTSHIFT,M,fullscreen,0
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
bind=ALT,E,exec,dolphin
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
# trigger when the switch is toggled
bindl=,switch:Lid Switch,exec,swaylock --effect-greyscale
# Games
bind=ALTSHIFT,T,exec,gamescope -w 1280 -h 960 -F fsr -f -r 60 wine "/home/flyingstitchman/Documents/Games/Touhou 15 - Legacy of Lunatic Kingdom/th15.exe"
bind=ALTSHIFT,O,exec,osu-lazer
bind=ALTSHIFT,C,exec,"/home/flyingstitchman/Documents/Games/Celeste/Celeste"
bind=ALTSHIFT,O,exec,osu\!
bind=ALTSHIFT,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio"
bind=ALTSHIFT,S,exec,"/home/flyingstitchman/Documents/Games/Stardew Valley/StardewValley"
bind=ALTSHIFT,T,exec,gamescope -w 1280 -h 960 -f -r 60 wine "/home/flyingstitchman/Documents/Games/Touhou 15 - Legacy of Lunatic Kingdom/th15.exe"
bind=ALTSHIFT,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio"
# Window Moving
@ -42,7 +35,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%-
@ -65,16 +58,6 @@ 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
@ -99,16 +82,24 @@ bind=ALTSHIFT,8,movetoworkspace,8
bind=ALTSHIFT,9,movetoworkspace,9
bind=ALTSHIFT,10,movetoworkspace,0
## 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 for resizing windows
bind=ALT,R,submap,resize # will switch to a submap called resize
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=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.
# Submap to disable all keybinds (for blender)
bind=ALT,U,submap,clean

View file

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

View file

@ -26,8 +26,8 @@ input {
sensitivity=.4
accel_profile=adaptive
touchpad {
natural_scroll=false
touchpad {
natural_scroll=false
disable_while_typing=false
}
@ -51,12 +51,18 @@ decoration {
passes=3
ignore_opacity=false
new_optimizations=true
noise=.03
vibrancy=.2
vibrancy_darkness=0.5
}
# Other
# 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
@ -64,16 +70,15 @@ decoration {
animations {
enabled=true
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
bezier = fast, 0.41, 0.6, 0.02, 0.93
animation = windows, 1, 1, fast
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 3, default
animation = workspaces, 1, 1, fast
animation = specialWorkspace, 0
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
@ -81,9 +86,12 @@ 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,6 +6,5 @@ wallpaper = DP-1,~/.config/wallpapers/current_wallpaper.png
wallpaper = DP-2,~/.config/wallpapers/current_wallpaper.png
wallpaper = DP-3,~/.config/wallpapers/current_wallpaper.png
wallpaper = DP-4,~/.config/wallpapers/current_wallpaper.png
wallpaper = HDMI-A-1,~/.config/wallpapers/current_wallpaper.png
splash=false
ipc = off

View file

@ -13,6 +13,7 @@
monitor=eDP-1,2256x1504@60,0x0,1.5
#monitor=DP-2,1024x786,2256x0,1
workspace=eDP-1,1
# Auto Monitor Rule
monitor = , preferred, auto, 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

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

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

View file

@ -1,13 +1,10 @@
# Window Rule Config File
# 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=nofocus,ibus,^(Ibus-ui-gtk3)$
windowrule=move 720 222,wlogout
windowrule=size 2000 1000,wlogout
windowrule=tile,xyz

View file

@ -1,9 +1,155 @@
" (Neo)vim Configuration
" By Flying_Stitchman 4 Jan 2022
" (Neo)vim Configuration
" By Flying_Stitchman
" 4 Jan 2022
" 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
" 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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,6 +7,10 @@ unsetopt autocd beep notify
unsetopt PROMPT_SP
bindkey -v
# End of lines configured by zsh-newuser-install
# Temporary Rebuild shortcut
alias re-scarab="sudo nixos-rebuild --flake '/etc/nixos#scarab'"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
@ -17,10 +21,6 @@ alias kon="ncmpcpp -b ~/.config/ncmpcpp/bindings"
alias myip="curl ifconfig.me"
alias ghidra="_JAVA_AWT_WM_NONREPARENTING=1 ghidra"
alias ls='eza'
alias l='ls -l'
alias la='ls -la'
alias ll='ls -l'
alias lla='ls -la'
alias v="nvim" # Launch neovim with 'v'
alias mountUSB="mount /home/flyingstitchman/ExternalDrive" # Automagically mount and unmount my flashdrive
alias umountUSB="umount /home/flyingstitchman/ExternalDrive"
@ -33,16 +33,6 @@ alias imv="imv -b aa77bb"
alias find="fd"
alias tree="eza --tree"
alias icat="kitty +kitten icat"
alias qsus="NIXPKGS_ALLOW_UNFREE=1 nix-shell -p quartus-prime-lite -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/fe7ab74a86d78ba00d144aa7a8da8c71a200c563.tar.gz"
# thanks fire :3
alias c='clear'
alias lg='lazygit'
# Future fire, this is for a meme.
nya() {
args=$(echo $@ | sed 's/nya/git/g')
git $args 2>&1 >/dev/null | sed 's/git/nya/g' | sed 's/GIT/NYA/g' | sed 's/Git/Nya/g'
}
# Automatically get new programs for autocompletion
@ -50,19 +40,6 @@ 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)"
@ -102,7 +79,7 @@ compinit
# End of lines added by compinstall
eval "$(zoxide init zsh)"
# Default Programs
export EDITOR=nvim
@ -110,7 +87,9 @@ export EDITOR=nvim
#export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export PATH="${PATH}:/home/flyingstitchman/.cargo/bin"
# Fcitx for Xwayland
# Ibus
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
# Clean Up
@ -120,11 +99,11 @@ export QT_QPA_PLATFORMTHEME=qt5ct
#export GDK_DEBUG=1
export MBSYNCRC=${XDG_CONFIG_HOME:-~/.config}/mbsync/config
export PASSWORD_STORE_DIR=${XDG_CONFIG_HOME:-~/.config}/password_store
export GNUPGHOME=${XDG_DATA_HOME-~/.config}/gnupg
export NOTMUCH_CONFIG=${XDG_CONFIG_HOME-~/.config}/notmuch/config
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
export KDEHOME="$XDG_CONFIG_HOME"/kde
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export GNUPGHOME=${XDG_DATA_HOME-~/.config}/gnupg
export GPG_TTY=$(tty)
export SDL_VIDEODRIVER=wayland
export GOPATH="$XDG_DATA_HOME"
@ -135,15 +114,12 @@ 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 rbs="reconfig switch"
alias rbb="reconfig build"
alias dosbox="dosbox -conf "$XDG_CONFIG_HOME"/dosbox/dosbox.conf "
reconfig() {
sudo nixos-rebuild --flake "/etc/nixos#$(cat /etc/hostname)" "$@"
}
# Autostart Hyprland after all environmental Variables have been declared
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then

View file

@ -1,29 +1,28 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"type": "github"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1623875721,
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"type": "github"
},
"original": {
@ -39,11 +38,11 @@
]
},
"locked": {
"lastModified": 1734093295,
"narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=",
"lastModified": 1712390667,
"narHash": "sha256-ebq+fJZfobqpsAdGDGpxNWSySbQejRwW9cdiil6krCo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8",
"rev": "b787726a8413e11b074cde42704b4af32d95545c",
"type": "github"
},
"original": {
@ -56,11 +55,11 @@
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1733700802,
"narHash": "sha256-YuhtFJLVW3d3zr5+VoyApm6PUFoIHhOCi+VOfi2LNzA=",
"lastModified": 1711757427,
"narHash": "sha256-PqHK0J9YCRKlxpJp+UG+/xpwfIQRPVUPspvbbP3FB2M=",
"owner": "nixos",
"repo": "mobile-nixos",
"rev": "0532a626e69fa9451e50297011008851527b9259",
"rev": "f7087f8fdbd1309af315ef8c92345320aadc5edf",
"type": "github"
},
"original": {
@ -71,11 +70,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1733861262,
"narHash": "sha256-+jjPup/ByS0LEVIrBbt7FnGugJgLeG9oc+ivFASYn2U=",
"lastModified": 1712324865,
"narHash": "sha256-+BatEWd4HlMeK7Ora+gYIkarjxFVCg9oKrIeybHIIX4=",
"owner": "Nixos",
"repo": "nixos-hardware",
"rev": "cf737e2eba82b603f54f71b10cb8fd09d22ce3f5",
"rev": "f3b959627bca46a9f7052b8fbc464b8323e68c2c",
"type": "github"
},
"original": {
@ -87,11 +86,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1734119587,
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
"lastModified": 1712163089,
"narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
"rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
"type": "github"
},
"original": {
@ -101,103 +100,48 @@
"type": "github"
}
},
"nixpkgs-quartus": {
"locked": {
"lastModified": 1685573264,
"narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "380be19fbd2d9079f677978361792cb25e8a3635",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-xr": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1734226209,
"narHash": "sha256-6QO56uh1J853+zj7iv5RoFTQLgk6nL0BKshMfWyE7vI=",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"rev": "402eb3d51b418ebd128e2e579952cc0afda53cee",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs-xr",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1733940404,
"narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=",
"lastModified": 1628148846,
"narHash": "sha256-V8aZJBROfNDk40cvFjKUnOnL7sF+BYwCQUUpLP8y4uE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713",
"rev": "9a8eb5a464f373e79d19d0ed2e53e0d31f78fe92",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"osu-nixos": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1695759061,
"narHash": "sha256-s9OYi0tzWSjFUaGLnLg08tTm8OEu1uZqGTtKmIRwHic=",
"owner": "Asqiir",
"repo": "osu-nixos",
"rev": "4e0096e1eee74383b9350962d8bff094648a7968",
"type": "github"
},
"original": {
"owner": "Asqiir",
"repo": "osu-nixos",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"mobile-nixos": "mobile-nixos",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"nixpkgs-quartus": "nixpkgs-quartus",
"nixpkgs-xr": "nixpkgs-xr"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs-xr",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733761991,
"narHash": "sha256-s4DalCDepD22jtKL5Nw6f4LP5UwoMcPzPZgHWjAfqbQ=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "0ce9d149d99bc383d1f2d85f31f6ebd146e46085",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
"osu-nixos": "osu-nixos"
}
}
},

View file

@ -1,11 +1,12 @@
{
description = "System Configuration Flake";
outputs = inputs@{
outputs = inputs@{
nixpkgs,
nixpkgs-xr,
nixos-hardware,
nixpkgs-quartus,
home-manager,
osu-nixos,
...
} : {
@ -18,7 +19,6 @@
./packages/default.nix
./hosts/malachite/default.nix
./users/stitchynyan/default.nix
nixpkgs-xr.nixosModules.nixpkgs-xr
home-manager.nixosModules.home-manager
{
@ -29,6 +29,18 @@
}
];
};
scarab = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
{ _module.args = { inherit inputs; }; }
(import "${inputs.mobile-nixos}/lib/configuration.nix" {
device = "oneplus-enchilada";
})
./packages/default.nix
./hosts/scarab/default.nix
./users/stitchynyan/default.nix
];
};
lappy = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
@ -56,26 +68,6 @@
./packages/default.nix
./hosts/gemini/default.nix
./users/nyadmin/default.nix
./users/cirno/default.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nyadmin = import ./users/nyadmin/home.nix;
home-manager.users.cirno = import ./users/cirno/home.nix;
}
];
};
tanzanite = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./packages/default.nix
./hosts/tanzanite/default.nix
./users/nyadmin/default.nix
home-manager.nixosModules.home-manager
{
@ -99,8 +91,7 @@
flake = false;
};
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-xr.url = "github:nix-community/nixpkgs-xr";
nixos-hardware.url = "github:Nixos/nixos-hardware/master";
nixpkgs-quartus.url = "github:nixos/nixpkgs/nixos-22.05";
osu-nixos.url = "github:Asqiir/osu-nixos";
};
}

View file

@ -15,18 +15,16 @@ in
};
boot = {
kernelPackages = lib.mkDefault pkgs.linuxPackages_zen;
#kernelPackages = lib.mkDefault pkgs.linuxPackages_zen;
loader = {
efi.canTouchEfiVariables = lib.mkDefault true;
systemd-boot.enable = lib.mkDefault true;
};
};
programs.appimage.binfmt = true;
security.sudo.wheelNeedsPassword = false;
security.rtkit.enable = true;
services = {
fstrim.enable = true;
resolved = {
enable = true;
dnsovertls = "opportunistic";
@ -66,30 +64,6 @@ 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,6 +18,12 @@
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

@ -15,8 +15,8 @@
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,16 +35,13 @@
"kernel.yama.ptrace_scope=0"
];
virtualisation = {
docker.enable = true;
libvirtd.enable = true;
waydroid.enable = true;
};
virtualisation.libvirtd.enable = true;
hardware.bluetooth.enable = true;
hardware.bluetooth.settings.General.Experimental = true;
hardware.graphics = {
hardware.opengl = {
enable = true;
enable32Bit= true;
driSupport = true;
driSupport32Bit = true;
extraPackages = lib.attrVals [
"intel-compute-runtime"
"intel-media-driver"
@ -73,7 +70,7 @@
PCIE_ASPM_ON_AC = "default";
PCIE_ASPM_ON_BAT = "powersupersave";
PLATFORM_PROFILE_ON_BAT = "low-power";
RUNTIME_PM_ON_BAT = "auto";
RUNTIME_PM_ON_BAT = true;
WOL_DISABLE = true;
SCHED_POWERSAVE_ON_BAT = true;

View file

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

View file

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

View file

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

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

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

View file

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

View file

@ -11,44 +11,37 @@ let
] pkgs;
handheldPkgs = lib.attrVals [
"chatty"
"fluffychat"
"gnome-console"
"gnome-text-editor"
"megapixels"
] pkgs;
pcPkgs = lib.attrVals [
"brightnessctl"
"clipman"
"cyrus-sasl-xoauth2"
#osu-lazer
"dracula-theme"
"easyeffects"
"gamescope"
"libnotify"
"mutt-wizard"
"powertop"
"wl-clipboard"
"brightnessctl"
"powertop"
"easyeffects"
"mutt-wizard"
"gamescope"
"cyrus-sasl-xoauth2"
"libnotify"
"networkmanager-openvpn"
# temporary home manager things
"eww"
"ifuse"
"img2pdf"
"inotify-tools"
"eww"
"jq"
"libimobiledevice"
"texliveFull"
"pandoc"
"img2pdf"
"socat"
"typst"
] pkgs ++ [ pkgs.wineWowPackages.stableFull ];
"libimobiledevice"
"ifuse"
] pkgs ++ [ inputs.osu-nixos pkgs.wineWowPackages.stableFull ];
serverPkgs = lib.attrVals [
#"package"
] pkgs;
spaceman-nvim = pkgs.vimUtils.buildVimPlugin {
name = "spaceman-nvim";
src = pkgs.fetchFromGitHub {
owner = "FireIsGood";
repo = "spaceman.nvim";
rev = "7910d202073bcc5f567481426f771b3737451dd9";
hash = "sha256-VvKce2uiFzv0TjoJfEX461p9tY9aE237Xr1q/Lw3Utw=";
};
};
in
{
options = {
@ -64,41 +57,22 @@ in
config = {
environment.systemPackages = (lib.attrVals [
"black"
"btop"
"clang-tools"
"eza"
"fd"
"fzf"
"git"
"glib"
"glsl_analyzer"
"gnumake"
"gnupg"
"hugo"
"lazygit"
"mypy"
"neofetch"
"nixd"
"p7zip"
"pinentry"
"ripgrep"
"rust-analyzer"
"rustfmt"
"rustup"
"tinymist"
"unzip"
"vhdl-ls"
"vtsls"
"neofetch"
"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)
++ [ pkgs.nodePackages.prettier ];
++ (lib.optionals (config.stitchyconf.form == "server") serverPkgs);
# To-do figure out how to section these off
programs = {
@ -111,35 +85,14 @@ in
customRC = builtins.readFile ../config/nvim/init.vim;
packages.myVimPackage = with pkgs.vimPlugins; {
start = [
conform-nvim
bufferline-nvim
cmp-nvim-lsp
cmp_luasnip
gitsigns-nvim
indent-blankline-nvim
lazy-nvim
luasnip
mini-nvim
neo-tree-nvim
nvim-cmp
nvim-lspconfig
(nvim-treesitter.withPlugins (
plugins: with plugins; [
glsl
javascript
markdown
]
))
nvim-web-devicons
render-markdown-nvim
spaceman-nvim
telescope-nvim
telescope-undo-nvim
toggleterm-nvim
nvim-cmp
cmp-nvim-lsp
luasnip
cmp_luasnip
tokyonight-nvim
typst-vim
vim-lsp-cxx-highlight
which-key-nvim
typst-vim
];
};
};
@ -167,22 +120,8 @@ in
"noto-fonts"
"noto-fonts-emoji"
"liberation_ttf"
"nerdfonts"
"ipafont"
] 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"
];
};
] pkgs;
};
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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