refactor into modules

This commit is contained in:
2026-03-10 22:39:50 +01:00
parent 5f16717f9b
commit 1b9d24ce15
9 changed files with 280 additions and 289 deletions

View File

@@ -51,31 +51,16 @@
}; };
}; };
outputs = { nixpkgs, nixpkgs-pre-ad01, home-manager, rust-overlay, stylix, niri, codex-cli-nix, claude-code-nix, binaryninja, ... }@inputs: outputs = inputs: {
let homeConfigurations.lusia = inputs.home-manager.lib.homeManagerConfiguration {
system = "x86_64-linux"; pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
pinnedPkgs = nixpkgs-pre-ad01.legacyPackages.${system};
in {
homeConfigurations.lusia = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
modules = [ modules = [
stylix.homeModules.stylix inputs.stylix.homeModules.stylix
./noctalia.nix ./home.nix
./home.nix ];
({ pkgs, ... }: {
nixpkgs.overlays = [
rust-overlay.overlays.default
(final: prev: {
gqrx = pinnedPkgs.gqrx;
krita = pinnedPkgs.krita;
})
];
home.packages = [ pkgs.rustup ];
})
];
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
};
}; };
};
} }

View File

@@ -1,255 +1,18 @@
{ config, pkgs, inputs, ... }: { ... }:
{ {
imports = [
./modules/overlays.nix
./modules/packages.nix
./modules/theming.nix
./modules/programs/git.nix
./modules/programs/gpg-agent.nix
./modules/programs/obs-studio.nix
];
home.username = "lusia"; home.username = "lusia";
home.homeDirectory = "/home/lusia"; home.homeDirectory = "/home/lusia";
home.stateVersion = "24.11"; 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";
};
};
# Enable and configure git
programs.git = {
enable = true;
settings = {
user.name = "Lukrecja Pleskaczyńska";
user.email = "lukrecjaaa@proton.me";
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; 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";
targets.qt.enable = true;
};
} }

View File

@@ -0,0 +1,18 @@
{ pkgs, inputs, ... }:
let
system = pkgs.stdenv.hostPlatform.system;
pinnedPkgs = inputs.nixpkgs-pre-ad01.legacyPackages.${system};
in {
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = [
inputs.rust-overlay.overlays.default
(final: prev: {
gqrx = pinnedPkgs.gqrx;
krita = pinnedPkgs.krita;
})
];
home.packages = [ pkgs.rustup ];
}

View File

@@ -0,0 +1,144 @@
{ pkgs, inputs, ... }:
let
system = pkgs.stdenv.hostPlatform.system;
in {
home.packages = with pkgs; [
# Window manager & desktop environment
inputs.niri.packages.${system}.niri
inputs.noctalia.packages.${system}.default
inputs.quickshell.packages.${system}.default
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.${system}.binary-ninja-free-wayland
helix
# AI development tools
inputs.claude-code-nix.packages.${system}.default
inputs.codex-cli-nix.packages.${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
# 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"
'';
})
];
}

View File

@@ -0,0 +1,15 @@
{ ... }:
{
programs.git = {
enable = true;
settings = {
user.name = "Lukrecja Pleskaczyńska";
user.email = "lukrecjaaa@proton.me";
credential.helper = "store";
http."https://git.bgs.local:3000/" = {
sslCAInfo = "/home/lusia/VSTech-vpn/bgs-git-ca.crt";
};
};
};
}

View File

@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
services.gpg-agent = {
enable = true;
pinentry.package = pkgs.pinentry-qt;
enableSshSupport = true;
};
}

View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
{
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
obs-vaapi
];
};
}

View File

@@ -0,0 +1,62 @@
{ pkgs, ... }:
{
stylix = {
enable = true;
image = ../wallpaper;
base16Scheme = ../colors.yaml;
polarity = "dark";
targets.qt.enable = true;
};
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
"org/gnome/nautilus/preferences" = {
show-image-thumbnails = "always";
};
};
};
gtk = {
enable = true;
iconTheme = {
name = "MoreWaita";
package = pkgs.morewaita-icon-theme;
};
cursorTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
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";
};
};
home.packages = with pkgs; [
pywal
pywalfox-native
morewaita-icon-theme
];
}

View File

@@ -1,18 +0,0 @@
{ pkgs, inputs, ... }:
{
# import the home manager module
#imports = [
# inputs.noctalia.homeModules.default
#];
# Install the package
home.packages = [
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default
];
# configure options
#programs.noctalia-shell = {
# enable = true;
#};
}