Files
nixos-dots/home-manager/home.nix

265 lines
5.1 KiB
Nix

{ config, pkgs, inputs, ... }:
{
home.username = "lusia";
home.homeDirectory = "/home/lusia";
home.stateVersion = "24.11";
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
# Window manager & desktop environment
inputs.niri.packages.${pkgs.stdenv.hostPlatform.system}.niri
swayidle
swww
kanshi
# System utilities & monitoring
btop
htop
fastfetch
dua
nh
dconf
gparted
mission-center
gnome-software
# CLI tools & utilities
ripgrep
fd
jq
entr
mdcat
sshpass
exiftool
# File managers & compression tools
yazi
nautilus
file-roller
p7zip
unzip
zip
unrar
# Media viewers & players
loupe
evince
vlc
mpv
zathura
# SDR
gqrx
gnuradio
gnuradioPackages.lora_sdr
# Media creation & editing
gimp
blender
ffmpeg
yt-dlp
waifu2x-converter-cpp
libheif
upscayl
inkscape
# Office & productivity
libreoffice-fresh
gnome-text-editor
gnome-calculator
obsidian
simple-scan
system-config-printer
# Development tools
neovim
vscode.fhs
lazygit
cargo-cross
cargo-generate
probe-rs-tools
elf2uf2-rs
dbeaver-bin
gnome-boxes
cutecom
inputs.binaryninja.packages.${pkgs.stdenv.hostPlatform.system}.binary-ninja-free-wayland
# AI development tools
inputs.claude-code-nix.packages.${pkgs.stdenv.hostPlatform.system}.default
inputs.codex-cli-nix.packages.${pkgs.stdenv.hostPlatform.system}.default
gemini-cli
# Internet & networking
firefox-bin
filezilla
qbittorrent
tor-browser
nmap
gnome-network-displays
# Privacy & security
gnupg
pinentry-qt
kdePackages.kleopatra
monero-gui
# Python & AI
python314
openai-whisper
# Document processing
tectonic
mermaid-cli
# Theming
pywal
pywalfox-native
morewaita-icon-theme
# Astronomy
stellarium
kstars
# Wrap PrismLauncher to fix Minecraft GLFW Wayland issues
(pkgs.symlinkJoin {
name = "prismlauncher";
paths = [ pkgs.prismlauncher ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/prismlauncher \
--set SDL_VIDEODRIVER "x11"
'';
})
# Wrap Krita to work with XWayland (Krita doesn't support native Wayland)
(pkgs.symlinkJoin {
name = "krita";
paths = [ pkgs.krita ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/krita \
--set DISPLAY ":0" \
--set QT_AUTO_SCREEN_SCALE_FACTOR "0" \
--set QT_SCALE_FACTOR "2" \
--set QT_FONT_DPI "96"
'';
})
];
# Set dark mode and Nautilus preferences
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
"org/gnome/nautilus/preferences" = {
show-image-thumbnails = "always";
};
};
};
# Set morewaita as the default icon theme
gtk = {
enable = true;
iconTheme = {
name = "MoreWaita";
package = pkgs.morewaita-icon-theme;
};
# Stylix manages theme, commenting out manual config
# theme = {
# name = "Adwaita-dark";
# package = pkgs.gnome-themes-extra;
# };
cursorTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
# Force dark mode preference for GTK3
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
# Force dark mode preference for GTK4
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
home.pointerCursor = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
size = 24;
gtk.enable = true;
x11 = {
enable = true;
defaultCursor = "Adwaita";
};
};
qt = {
enable = true;
platformTheme.name = "adwaita";
style = {
name = "adwaita-dark";
};
};
# Enable and configure git
programs.git = {
enable = true;
settings = {
user.name = "Lukrecja Pleskaczyńska";
user.email = "lukrecjaaa@proton.com";
credential.helper = "store";
http."https://git.bgs.local:3000/" = {
sslCAInfo = "/home/lusia/VSTech-vpn/bgs-git-ca.crt";
};
};
};
# Configure GPG agent with pinentry
services.gpg-agent = {
enable = true;
pinentry.package = pkgs.pinentry-qt;
enableSshSupport = true;
};
# OBS with plugins
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
obs-vaapi
];
};
programs.home-manager.enable = true;
# Stylix theming
stylix = {
enable = true;
# Wallpaper required by Stylix (even though we use swww to actually display it)
image = ./wallpaper;
# Use pywal's color scheme instead of extracting from image
# sync-colors.sh will generate colors.yaml here
base16Scheme = ./colors.yaml;
# Use dark mode
polarity = "dark";
# Disable Qt theming (it's janky and doesn't apply everywhere)
# targets.qt.enable = false;
};
}