Compare commits

..

10 commits

19 changed files with 327 additions and 114 deletions

5
.gitignore vendored Normal file
View file

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

View file

@ -45,6 +45,9 @@
border-radius: 15px; border-radius: 15px;
} }
.cal {
padding: 5px;
}
.clock { .clock {
background-color: #536; background-color: #536;

View file

@ -1,13 +1,11 @@
;;;; (defpoll time :interval "1s" 'date +%s') ;; VARIABLE DEFINITIONS
(defwidget clock []
(box :orientation "vertical"
:halign "center"
:valign "end"
(box :class "clock" {formattime(EWW_TIME, "%H")})
(box :class "clock" {formattime(EWW_TIME, "%M")})
))
;; Audio
(deflisten vol "cat ~/.cache/eww/vol && inotifywait -q -m -e close_write ~/.cache/eww/vol | while read -r filename event; do cat ~/.cache/eww/vol; done")
(defpoll micvol :interval "1m" "wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}'")
;; Workspace Stuff
(deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces") (deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces")
(deflisten current_workspace :initial "..." "bash ~/.config/eww/scripts/get-active-workspace") (deflisten current_workspace :initial "..." "bash ~/.config/eww/scripts/get-active-workspace")
(deflisten urgent_workspace :initial "..." "bash ~/.config/eww/scripts/get-urgent-workspaces") (deflisten urgent_workspace :initial "..." "bash ~/.config/eww/scripts/get-urgent-workspaces")
@ -21,6 +19,21 @@
(label :text "${workspace.id}") (label :text "${workspace.id}")
)))))) ))))))
;; Screen
(deflisten backlight "brightnessctl g && inotifywait -q -m -e modify /sys/class/backlight/intel_backlight/actual_brightness | while read -r filename event; do cat /sys/class/backlight/intel_backlight/actual_brightness; done")
;; 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" (box :halign "center"
@ -43,29 +56,31 @@
:val {EWW_BATTERY.BAT1.capacity} :val {EWW_BATTERY.BAT1.capacity}
:char "󱐋")) :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 [] (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} (circle :prog {vol * 7/10}
:sty "font-size: 12; margin-right: 2px;" :sty "font-size: 12; margin-right: 2px;"
:val {vol + 1 - 1} :val {vol + 1 - 1}
:char "")) :char "")))
(defpoll micvol :interval "1m" "wpctl get-volume @DEFAULT_AUDIO_SOURCE@ | awk '{print $2}'")
(defwidget mic [] (defwidget mic []
(eventbox
: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} (circle :prog {micvol * 70}
:sty "margin-left: 1px;" :sty "margin-left: 1px;"
:val {micvol *100} :val {micvol *100}
:char "󰍬")) :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 [] (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} (circle :prog {(backlight / 960) * 7/10}
:sty "font-size: 12; margin-right: 3px;" :sty "font-size: 12; margin-right: 3px;"
:val {round( backlight / 960, 0) - 1} :val {round( backlight / 960, 0) - 1}
:char "󰃠")) :char "󰃠")))
(defwidget power [] (defwidget power []
(box :class "power" :valign "end" "⏻")) (box :class "power" :valign "end" "⏻"))
@ -73,6 +88,10 @@
(defwidget tray [] (defwidget tray []
(systray :orientation "v" :icon-size 20)) (systray :orientation "v" :icon-size 20))
;; Upper Level Widgets
(defwidget bar [] (defwidget bar []
(centerbox :orientation "vertical" (centerbox :orientation "vertical"
:halign "center" :halign "center"
@ -87,6 +106,15 @@
(tray) (tray)
(power)))) (power))))
(defwidget cal []
(box
:class "cal"
(eventbox
:onhoverlost "eww close cal"
(calendar))))
;; Windows
(defwindow bar (defwindow bar
:monitor 0 :monitor 0
@ -98,3 +126,13 @@
:exclusive true :exclusive true
:class "bar" :class "bar"
(bar)) (bar))
(defwindow cal
:monitor 0
:geometry (geometry :x "1%"
:y "5%"
:anchor "left center")
:stacking "fg"
:exclusive false
:class "bar"
(cal))

View file

@ -1,32 +1,39 @@
# Binding Config File for Hyprland # Binding Config File for Hyprland
# Main Bindings # Main Bindings
#
# Foot, you done goofed
bind=ALT,RETURN,exec,foot
#bind=ALT,RETURN,exec,kitty
bind=ALT,Q,killactive, # Programs
bind=SUPER,M,exec,hyprctl dispatch exit 0 bind=ALT,B,exec,swaylock
bind=ALT,E,exec,dolphin bind=ALT,E,exec,dolphin
bind=ALT,V,togglefloating, bind=ALT,F,exec,${XDG_CONFIG_HOME:-~/.config}/hypr/plumbing.sh
bind=ALT,G,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 bindr=ALTSHIFT,RETURN,exec,pkill wofi || wofi -S drun --allow-images
# Basic Actions
bind=ALT,Q,killactive,
bind=ALT,V,togglefloating,
bind=ALTSHIFT,F,fullscreen,1 bind=ALTSHIFT,F,fullscreen,1
bind=ALTSHIFT,M,fullscreen,0 bind=ALTSHIFT,M,fullscreen,0
bind=,Print,exec,grim -g "$(slurp)" -t jpeg - | wl-copy bind=SUPER,M,exec,hyprctl dispatch exit 0
bind=SHIFT,Print,exec,grim -g "$(slurp)" -t jpeg Downloads/screenshot.jpeg
# 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 # trigger when the switch is toggled
bindl=,switch:Lid Switch,exec,swaylock --effect-greyscale bindl=,switch:Lid Switch,exec,swaylock --effect-greyscale
# Games # Games
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,O,exec,osu-lazer
bind=ALTSHIFT,C,exec,"/home/flyingstitchman/Documents/Games/Celeste/Celeste" bind=ALTSHIFT,C,exec,"/home/flyingstitchman/Documents/Games/Celeste/Celeste"
bind=ALTSHIFT,S,exec,"/home/flyingstitchman/Documents/Games/Stardew Valley/StardewValley" bind=ALTSHIFT,O,exec,osu-lazer
bind=ALTSHIFT,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio" bind=ALTSHIFT,R,exec,"/home/flyingstitchman/Documents/Games/factorio/bin/x64/factorio"
bind=ALTSHIFT,S,exec,"/home/flyingstitchman/Documents/Games/Stardew Valley/StardewValley"
bind=ALTSHIFT,T,exec,gamescope -w 1280 -h 960 -f -r 60 wine "/home/flyingstitchman/Documents/Games/Touhou 15 - Legacy of Lunatic Kingdom/th15.exe"
# Window Moving # Window Moving

View file

@ -1,10 +1,13 @@
# Window Rule Config File # Window Rule Config File
# WLogout Configuration # Application Fixes
# Might move to separate file cause screen resolutions whack # Foot Fullscreen Transparency Fix
windowrulev2 = syncfullscreen 0, class:(foot), title:(foot)
windowrule=nofocus,ibus,^(Ibus-ui-gtk3)$ windowrule=nofocus,ibus,^(Ibus-ui-gtk3)$
# WLogout Configuration
# Might move to separate file cause screen resolutions whack
windowrule=move 720 222,wlogout windowrule=move 720 222,wlogout
windowrule=size 2000 1000,wlogout windowrule=size 2000 1000,wlogout
windowrule=tile,xyz windowrule=tile,xyz

View file

@ -3,6 +3,7 @@ local map = vim.keymap.set
-- jk exit from insert mode -- jk exit from insert mode
map("i", "jk", "<cmd>noh<cr><Esc>", { silent = true }) map("i", "jk", "<cmd>noh<cr><Esc>", { silent = true })
map({"n", "x"}, "<Esc>", "<cmd>noh<cr><Esc>", { silent = true })
---- ----
-- Movements -- Movements
@ -33,6 +34,8 @@ map("n", "<leader>>", "<cmd>BufferLineMoveNext<CR>", { desc = "Move buffer right
-- ToggleTerm Bindings -- ToggleTerm Bindings
map("n", "<leader>a", "<cmd>ToggleTerm name=main<CR>", { desc = "Floating Terminal", silent = true }) map("n", "<leader>a", "<cmd>ToggleTerm name=main<CR>", { desc = "Floating Terminal", silent = true })
-- Undotree
map('n', '<leader>fu', vim.cmd.UndotreeToggle)
---- ----
-- Cool Macros -- Cool Macros
---- ----
@ -50,6 +53,72 @@ map("n", "<leader>e", function()
require("neo-tree.command").execute({ action = "show", position = "right", toggle = true, dir = vim.loop.cwd() }) require("neo-tree.command").execute({ action = "show", position = "right", toggle = true, dir = vim.loop.cwd() })
end, { desc = "Open Neotree", remap = true }) 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 -- Fixes
---- ----
@ -80,3 +149,5 @@ 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-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 = "Hide Terminal" })
map("t", "<c-_>", "<cmd>close<cr>", { desc = "which_key_ignore" }) map("t", "<c-_>", "<cmd>close<cr>", { desc = "which_key_ignore" })

View file

@ -6,17 +6,17 @@ require'lspconfig'.texlab.setup{}
require'lspconfig'.svls.setup{} require'lspconfig'.svls.setup{}
require'lspconfig'.pylsp.setup{ require'lspconfig'.pylsp.setup{
settings = { settings = {
formatCommand = {"black"},
pylsp = { pylsp = {
plugins = { plugins = {
pycodestyle = { jedai_completion = {
ignore = {'W391'}, fuzzy = true
maxLineLength = 100
},
pylint = {
enabled = false
}, },
pyflakes = { pyflakes = {
enabled = true enabled = true
},
pylsp_mypy = {
enabled = true
} }
} }
} }
@ -105,6 +105,15 @@ cmp.setup {
package.path = package.path .. ";/etc/nixos/config/nvim" package.path = package.path .. ";/etc/nixos/config/nvim"
-- Funky plugins -- Funky plugins
require("conform").setup({
formatters_by_ft = {
python = { "isort", "black" },
},
format_on_save = {
timeout_ms = 500,
lsp_format = "fallback",
},
})
require("bufferline").setup({ options = { require("bufferline").setup({ options = {
always_show_bufferline = true, always_show_bufferline = true,
show_buffer_close_icons = false, show_buffer_close_icons = false,

View file

@ -1,5 +1,40 @@
{ {
"nodes": { "nodes": {
"flake-compat": {
"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"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs-xr",
"nixpkgs"
]
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -7,11 +42,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1730450782, "lastModified": 1730837930,
"narHash": "sha256-0AfApF8aexgB6o34qqLW2cCX4LaWJajBVdU6ddiWZBM=", "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "8ca921e5a806b5b6171add542defe7bdac79d189", "rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -24,11 +59,11 @@
"mobile-nixos": { "mobile-nixos": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1730307383, "lastModified": 1730912712,
"narHash": "sha256-EJYo2VPXVMGQbY+bI4Xav14fXXioBt3KICtXNI6i76o=", "narHash": "sha256-T5A9I6Tfh9zrv9sRWfu/ZKN6VkE670YQ6bjC5sbpTzk=",
"owner": "nixos", "owner": "nixos",
"repo": "mobile-nixos", "repo": "mobile-nixos",
"rev": "0516be85630befa2c1e8042ac873342ce186b2f6", "rev": "2268e358ed407d9c0a4499ae767d105eeaeec586",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -39,11 +74,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1730368399, "lastModified": 1730919458,
"narHash": "sha256-F8vJtG389i9fp3k2/UDYHMed3PLCJYfxCqwiVP7b9ig=", "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=",
"owner": "Nixos", "owner": "Nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "da14839ac5f38ee6adbdb4e6db09b5eef6d6ccdc", "rev": "e1cc1f6483393634aee94514186d21a4871e78d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -55,15 +90,15 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1730200266, "lastModified": 1730785428,
"narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "Nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Nixos", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
@ -85,13 +120,50 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-xr": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1730942067,
"narHash": "sha256-F+MvnvRlRcL8BktdqOK6LRoVhyFX/jzWfcm0mPbJNeY=",
"owner": "nix-community",
"repo": "nixpkgs-xr",
"rev": "87d61362cb82ed15d54dd56b24944f3404646c72",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs-xr",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1730785428,
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"mobile-nixos": "mobile-nixos", "mobile-nixos": "mobile-nixos",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-quartus": "nixpkgs-quartus" "nixpkgs-quartus": "nixpkgs-quartus",
"nixpkgs-xr": "nixpkgs-xr"
} }
} }
}, },

View file

@ -1,7 +1,5 @@
{ {
description = "System Configuration Flake"; description = "System Configuration Flake";
outputs = inputs@{ outputs = inputs@{
nixpkgs, nixpkgs,
nixpkgs-xr, nixpkgs-xr,

View file

@ -64,13 +64,17 @@ in
config = { config = {
environment.systemPackages = (lib.attrVals [ environment.systemPackages = (lib.attrVals [
"black"
"btop" "btop"
"ccls"
"eza" "eza"
"fd" "fd"
"fzf"
"git" "git"
"glib" "glib"
"gnumake" "gnumake"
"gnupg" "gnupg"
"mypy"
"neofetch" "neofetch"
"p7zip" "p7zip"
"pinentry" "pinentry"
@ -97,6 +101,7 @@ in
customRC = builtins.readFile ../config/nvim/init.vim; customRC = builtins.readFile ../config/nvim/init.vim;
packages.myVimPackage = with pkgs.vimPlugins; { packages.myVimPackage = with pkgs.vimPlugins; {
start = [ start = [
conform-nvim
bufferline-nvim bufferline-nvim
cmp-nvim-lsp cmp-nvim-lsp
cmp_luasnip cmp_luasnip
@ -113,6 +118,7 @@ in
toggleterm-nvim toggleterm-nvim
tokyonight-nvim tokyonight-nvim
typst-vim typst-vim
undotree
vim-lsp-cxx-highlight vim-lsp-cxx-highlight
which-key-nvim which-key-nvim
]; ];

View file

@ -60,9 +60,10 @@ in
kicad kicad
#steamvr? #steamvr?
procps procps
ripgrep
usbutils usbutils
yt-dlp yt-dlp
(python311.withPackages (lib.attrVals [ "matplotlib" "python-lsp-server" "sympy"])) (python3.withPackages (lib.attrVals [ "matplotlib" "pyflakes" "python-lsp-server" "sympy"]))
] ]
++ (lib.optionals (nixosConfig.stitchyconf.form == "handheld") handheldPkgs) ++ (lib.optionals (nixosConfig.stitchyconf.form == "handheld") handheldPkgs)
++ (lib.optionals (nixosConfig.stitchyconf.form == "pc") pcPkgs); ++ (lib.optionals (nixosConfig.stitchyconf.form == "pc") pcPkgs);