refactor into modules
This commit is contained in:
@@ -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; };
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
18
home-manager/modules/overlays.nix
Normal file
18
home-manager/modules/overlays.nix
Normal 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 ];
|
||||||
|
}
|
||||||
144
home-manager/modules/packages.nix
Normal file
144
home-manager/modules/packages.nix
Normal 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"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
15
home-manager/modules/programs/git.nix
Normal file
15
home-manager/modules/programs/git.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
9
home-manager/modules/programs/gpg-agent.nix
Normal file
9
home-manager/modules/programs/gpg-agent.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
pinentry.package = pkgs.pinentry-qt;
|
||||||
|
enableSshSupport = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
13
home-manager/modules/programs/obs-studio.nix
Normal file
13
home-manager/modules/programs/obs-studio.nix
Normal 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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
62
home-manager/modules/theming.nix
Normal file
62
home-manager/modules/theming.nix
Normal 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
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
#};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user