summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/k/config.toml16
-rw-r--r--hosts/configuration.nix2
-rw-r--r--modules/apps.nix61
-rw-r--r--modules/desktop.nix107
-rw-r--r--modules/development.nix46
-rw-r--r--modules/display.nix35
-rw-r--r--modules/networking.nix12
-rw-r--r--modules/nvidia.nix48
8 files changed, 6 insertions, 321 deletions
diff --git a/.config/k/config.toml b/.config/k/config.toml
index 015a438..d3e4fb1 100644
--- a/.config/k/config.toml
+++ b/.config/k/config.toml
@@ -33,14 +33,13 @@ fzf
zoxide
ghostty
eza
-golang
-gcc clang lld mold gdb lldb
+golang gopls
+gcc clang lld mold gdb lldb nasm clangd
tmux
tree-sitter-cli
fastfetch
find
fd
-gopls
golang-mvdan-gofumpt
rg
krita gimp inkscape
@@ -49,24 +48,22 @@ bat
bc
btop
dua
-unzip
unrar
sqlite
unzip
gitleaks
-hyperfine
+hyperfine # For benchmarking
vesktop-1.6.5.x86_64.rpm
qdbus
loupe
chromium
stylua
caddy
-pnpm
etckeeper
vicinae
cargo
python3-pip
-nodejs
+pnpm nodejs
java-openjdk-headless java-25-openjdk-devel
filezilla
jq
@@ -76,13 +73,12 @@ libreoffice
yt-dlp mpv
xlsclients xwininfo
nodejs-bash-language-server
-clangd
fuse-libs # For AppImages to work
openrgb
kdelibs-webkit
-qdirstat
+qdirstat # WizTree for linux
tokei
-piper
+piper # Uses ratbagd under the hood
pipewire-codec-aptx # Bluetooth codec, probably not needed but why not (oh, this was already installed)
obs-studio-plugin-vkcapture
diff --git a/hosts/configuration.nix b/hosts/configuration.nix
index f34119e..f539f85 100644
--- a/hosts/configuration.nix
+++ b/hosts/configuration.nix
@@ -3,8 +3,6 @@
imports = [
inputs.sops-nix.nixosModules.sops
../modules/apps.nix
- ../modules/display.nix
- ../modules/networking.nix
../modules/development.nix
../modules/gaming.nix
../modules/secrets.nix
diff --git a/modules/apps.nix b/modules/apps.nix
index f6f3db3..885c650 100644
--- a/modules/apps.nix
+++ b/modules/apps.nix
@@ -14,9 +14,6 @@
};
config = lib.mkIf config.apps.enable {
-
- programs.firefox.enable = true;
-
programs.kdeconnect.enable = true; # Opens TCP/UDP ports (does not when it's a pkg)
environment.systemPackages = with pkgs; [
@@ -34,10 +31,6 @@
piper # ^ GUI frontend
# Utility
- obs-studio
- gimp
- inkscape
- keepassxc
protonvpn-gui
(python312.withPackages (pypkgs: [
pypkgs.matplotlib
@@ -45,85 +38,39 @@
pypkgs.pygithub
pypkgs.pipx
]))
- kdePackages.filelight
kdePackages.korganizer
kdePackages.kaddressbook
syncthingtray
- libreoffice
- albert
- aseprite
cloudflare-warp
- haruna mpv vlc
- gparted
gnome-clocks
- inputs.zen-browser.packages."${system}".twilight
- krita
pipeline # Youtube desktop app
- (flameshot.override { enableWlrSupport = true; })
- qdirstat # WizTree for linux
- kdePackages.ark
- kdePackages.dolphin
- eog
kopia-ui
rclone-ui
- kdePackages.spectacle
binsider
- filezilla
yt-dlp
spotify
inotify-tools
_010editor
- chromium
- fsearch
warpd
wl-kbptr
nnd # Terminal debugger for linux
cppcheck
smartmontools # For ZFS monitoring apparently
- libsodium # Needed for webzfs, seems to be a python crypto library
- libsodium.dev
- libsodium.out
- python313Packages.libnacl
- # syncoid # ZFS Syncing across pools
- sanoid # ZFS Scheduled snapshots
# Communication
wasistlos # Whatsapp
- vesktop
inputs.eko.packages."${system}".eko
# Terminal
- ghostty
- oh-my-posh
- tmux
- neovim
tree-sitter
# CLI
- git
- delta
- gh
- stow
- eza
- keychain
- bc
- bat
- fd
- ripgrep
wakatime-cli
- fastfetch
- btop
- sqlite
- unzip
- fzf
- zoxide
watchexec
- gitleaks
rar
dig
minisign
libisoburn
- dua
mprocs
imagemagick
ghostscript # for imagemagick to support pdf files
@@ -131,15 +78,10 @@
duf
tldr
bottom
- hyperfine # for benchmarking
- wget
tectonic
mermaid-cli
- ffmpeg
- nh
kondo # Cleans build caches
kopia
- appimage-run
rclone
usbutils
];
@@ -148,9 +90,6 @@
# Note, will break discord, also tried proton VPN, still has conn issues
services.cloudflare-warp.enable = true;
- # Mouse config service (used with piper)
- services.ratbagd.enable = true;
-
# Install Docker (without using root access)
#virtualisation.docker.enable = true;
virtualisation.docker.rootless = {
diff --git a/modules/desktop.nix b/modules/desktop.nix
index 3b3bc21..899d5db 100644
--- a/modules/desktop.nix
+++ b/modules/desktop.nix
@@ -1,114 +1,11 @@
{ pkgs, ... }:
{
- imports = [
- # ./nvidia.nix
- ];
-
environment.systemPackages = with pkgs; [
openrgb-with-all-plugins
phoronix-test-suite
-
- libsodium # Needed for webzfs, seems to be a python crypto library
- libsodium.dev
- libsodium.out
- python313Packages.libnacl
];
- users.groups.webzfs = { };
- users.users.webzfs = {
- isNormalUser = true;
- password = "";
- };
-
- hardware.keyboard.qmk.enable = true;
- services.udev.extraRules = ''
- # Match ANY Keychron device via hidraw (covers Q1 HE in all modes)
- KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3434", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
-
- # STM bootloader for flashing firmware
- SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0666", TAG+="uaccess"
- '';
-
- security.sudo.extraRules = [
- {
- users = [ "webzfs" ];
- commands = [
- {
- command = "/nix/store/*-zfs-user-*/bin/zpool";
- options = [ "NOPASSWD" ];
- }
- {
- command = "/nix/store/*-zfs-user-*/bin/zfs";
- options = [ "NOPASSWD" ];
- }
- ];
- }
- ];
- security.sudo.extraConfig = ''
- Defaults env_reset,always_set_home,secure_path="/run/current-system/sw/bin:/run/wrappers/bin:/nix/store"
- Defaults secure_path="/run/current-system/sw/bin:/bin:/usr/bin"
- Defaults env_reset
- Defaults ignore_dot
- Defaults !requiretty
- '';
- environment.etc."sudoers.d/webzfs".text = ''
- # WebZFS sudo permissions
- # Allow webzfs user to execute ZFS and SMART commands
-
- # ZFS commands (multiple paths for different distributions)
- webzfs ALL=(ALL) NOPASSWD: zpool, zfs, zdb -l *, /run/current-system/sw/bin/zpool
-
- # SMART monitoring (multiple paths for different distributions)
- webzfs ALL=(ALL) NOPASSWD: smartctl
-
- # Disk utilities
- webzfs ALL=(ALL) NOPASSWD: blkid
-
- # Sanoid/Syncoid (optional)
- webzfs ALL=(ALL) NOPASSWD: sanoid, syncoid
-
- # Service management (systemctl for system services page)
- webzfs ALL=(ALL) NOPASSWD: systemctl
-
- # Crontab editing
- webzfs ALL=(ALL) NOPASSWD: crontab
-
- # File editing (for config files like smartd.conf, sanoid.conf)
- webzfs ALL=(ALL) NOPASSWD: mkdir
-
- # Read system journal and plain-text syslog files for the
- # Observability -> System Log page. journalctl needs sudo (or
- # systemd-journal group) on most distros. tail covers Debian/Ubuntu
- # (/var/log/syslog) and old RHEL (/var/log/messages).
- webzfs ALL=(ALL) NOPASSWD: tail
- '';
-
- systemd.units."webzfs.service".text = ''
- [Unit]
- Description=WebZFS Web Management Interface
- After=network.target zfs-mount.service
-
- [Service]
- Type=notify
- User=root
- Group=root
- WorkingDirectory=/opt/webzfs
- Environment="PATH=/opt/webzfs/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/run/current-system/sw/bin:/sbin:/bin"
- ExecStart=/opt/webzfs/.venv/bin/gunicorn -c config/gunicorn.conf.py
- Restart=always
- RestartSec=5
-
- # Runtime directory for unix socket support
- # Creates /run/webzfs/ on service start, removes on stop
- # To use: set BIND=unix:/run/webzfs/webzfs.sock in .env
- RuntimeDirectory=webzfs
- RuntimeDirectoryMode=0755
-
- [Install]
- WantedBy=multi-user.target
- '';
-
# Automaticaly mount C drive
fileSystems."/mnt/c" = {
device = "/dev/nvme1n1p4";
@@ -121,10 +18,6 @@
];
};
- boot.supportedFilesystems = [ "zfs" ];
- boot.zfs.forceImportRoot = false;
- networking.hostId = "7223ffff";
-
# Automatically mount E drive
# fileSystems."/mnt/e" = {
# device = "/dev/sda2";
diff --git a/modules/development.nix b/modules/development.nix
index cd2c148..8520fc1 100644
--- a/modules/development.nix
+++ b/modules/development.nix
@@ -9,69 +9,23 @@
config = lib.mkIf config.development.enable {
environment.systemPackages = with pkgs; [
- jetbrains.idea-community
- zed-editor
- jetbrains.clion
-
- # LSP
- asm-lsp
- astro-language-server
- basedpyright
- bash-language-server
- vscode-langservers-extracted # html/css/json
- gopls
- lemminx # xml
- lua-language-server
- markdown-oxide
- marksman
- mdx-language-server
- neocmakelsp
- nil # nix
- tailwindcss-language-server
- taplo # toml
- typescript-language-server
- yaml-language-server
- # pnpm i -g css-variables-language-server
- # pnpm install -g gh-actions-language-server
- jdt-language-server
- kotlin-language-server
# Tools
- stylua
- gofumpt
golangci-lint
- prettierd
- jq
- lldb # codelldb debugger
shellcheck
beautysh # shell formatter
- gdb
- nasm
rustup
- tokei # count lines of code
- go
- pnpm
- nodejs_24
- clang
- clang-tools
- gcc
- gnumake
goose
sqlc
maven
gradle
kotlin
- mold # fast linker, for rust
gomodifytags
- sops
go-tools # staticcheck
gosec
devtoolbox
busybox # A bunch of utils like lsof and fuser
- cmake
libllvm
- lld
- file
universal-ctags
valgrind
diff --git a/modules/display.nix b/modules/display.nix
deleted file mode 100644
index 87b183a..0000000
--- a/modules/display.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ pkgs, ... }: {
-
- # Enable the KDE Plasma Desktop Environment.
- services.displayManager.sddm.enable = true;
- services.desktopManager.plasma6.enable = true;
- services.displayManager.sddm.settings = {
- Autologin = {
- Session = "plasma.desktop";
- User = "kyren";
- };
- };
-
- # Enable the X11 windowing system.
- # You can disable this if you're only using the Wayland session.
- services.xserver.enable = true;
-
- # Configure keymap in X11
- services.xserver.xkb = {
- layout = "us";
- variant = "";
- };
-
- # From when I tried hyprland, might aswell keep this?
- xdg.portal = {
- enable = true;
- xdgOpenUsePortal = true;
-
- extraPortals = with pkgs; [
- kdePackages.xdg-desktop-portal-kde
- xdg-desktop-portal-gtk
- xdg-desktop-portal-wlr
- ];
- };
-
-}
diff --git a/modules/networking.nix b/modules/networking.nix
deleted file mode 100644
index 27246dd..0000000
--- a/modules/networking.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ ... }: {
-
- # Enable networking
- networking.networkmanager.enable = true;
-
- # Configure network proxy if necessary
- # networking.proxy.default = "http://user:password@proxy:port/";
- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
-
- #networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
-
-}
diff --git a/modules/nvidia.nix b/modules/nvidia.nix
deleted file mode 100644
index 0bc9b32..0000000
--- a/modules/nvidia.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ config, ... }: {
-
- # Fix "graphics reset" issue with nvidia GPU
- # See section 10 of https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks
- boot.extraModprobeConfig = ''
- options nvidia NVreg_PreserveVideoMemoryAllocations=1
- '';
-
- # Enable OpenGL
- hardware.graphics = {
- enable = true;
- };
-
- # Load nvidia driver for Xorg and Wayland
- services.xserver.videoDrivers = ["nvidia"];
-
- hardware.nvidia = {
-
- # Modesetting is required.
- modesetting.enable = true;
-
- # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
- # Enable this if you have graphical corruption issues or application crashes after waking
- # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
- # of just the bare essentials.
- powerManagement.enable = false;
-
- # Fine-grained power management. Turns off GPU when not in use.
- # Experimental and only works on modern Nvidia GPUs (Turing or newer).
- powerManagement.finegrained = false;
-
- # Use the NVidia open source kernel module (not to be confused with the
- # independent third-party "nouveau" open source driver).
- # Support is limited to the Turing and later architectures. Full list of
- # supported GPUs is at:
- # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
- # Only available from driver 515.43.04+
- open = false;
-
- # Enable the Nvidia settings menu,
- # accessible via `nvidia-settings`.
- nvidiaSettings = true;
-
- # Optionally, you may need to select the appropriate driver version for your specific GPU.
- package = config.boot.kernelPackages.nvidiaPackages.stable;
- };
-
-}