Files
alt-illogical-impulse/flake.nix
T
Celes Renata 6a11660704 Add environment variables to quickshell wrapper
- Add ILLOGICAL_IMPULSE_VIRTUAL_ENV for Python virtual environment
- Add XDG_DATA_DIRS with gsettings-desktop-schemas for GNOME schemas
- Add LD_LIBRARY_PATH with all required system libraries
- This ensures Light mode selection works in quickshell settings

Fixes the issue where Light mode button was unresponsive due to missing
environment variables and library paths in the quickshell wrapper.
2025-08-10 14:14:33 -07:00

212 lines
7.2 KiB
Nix

{
description = "NixOS adaptation of end-4's dots-hyprland - self-contained installer replication";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
quickshell.url = "github:outfoxxed/quickshell";
};
outputs = { self, nixpkgs, home-manager, quickshell, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
};
# Import our utility packages
utilityPackages = import ./packages { inherit pkgs; };
in
{
overlays.default = final: prev: {
# Enhanced quickshell with Qt5Compat support for dots-hyprland
quickshell = final.writeShellScriptBin "quickshell" ''
# Add Qt5Compat, QtPositioning, and quickshell config directories to QML import path
export QML2_IMPORT_PATH="${final.kdePackages.qt5compat}/lib/qt-6/qml:${final.kdePackages.qtpositioning}/lib/qt-6/qml:${final.kdePackages.qtlocation}/lib/qt-6/qml:$HOME/.config/quickshell/ii:$HOME/.config/quickshell:$QML2_IMPORT_PATH"
# Set critical environment variables for dots-hyprland functionality
export ILLOGICAL_IMPULSE_VIRTUAL_ENV="$HOME/.local/state/quickshell/.venv"
export XDG_DATA_DIRS="$XDG_DATA_DIRS:${final.gsettings-desktop-schemas}/share"
export LD_LIBRARY_PATH="${final.stdenv.cc.cc.lib}/lib:${final.glibc}/lib:${final.zlib}/lib:${final.libffi}/lib:${final.openssl}/lib:${final.bzip2.out}/lib:${final.xz.out}/lib:${final.ncurses}/lib:${final.readline}/lib:${final.sqlite.out}/lib"
# Execute the original quickshell
exec ${quickshell.packages.${system}.default}/bin/qs "$@"
'';
};
packages.${system} = utilityPackages // {
default = utilityPackages.update-flake;
};
devShells.${system}.default = pkgs.mkShell {
buildInputs = with pkgs; [
nixpkgs-fmt
nil
git
jq
] ++ (with utilityPackages; [
update-flake
test-python-env
test-quickshell
compare-modes
]);
shellHook = builtins.readFile ./packages/scripts/dev-shell-hook.sh;
};
homeManagerModules.default = import ./modules/home-manager.nix;
homeManagerModules.dots-hyprland = self.homeManagerModules.default;
homeConfigurations = {
declarative = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
self.homeManagerModules.default
{
home.username = "celes";
home.homeDirectory = "/home/celes";
home.stateVersion = "24.05";
programs.dots-hyprland = {
enable = true;
source = ./configs; # Use local configs
packageSet = "essential";
mode = "hybrid";
# 🎨 Quickshell Configuration
quickshell = {
appearance = {
extraBackgroundTint = true;
fakeScreenRounding = 2; # When not fullscreen
transparency = false;
};
bar = {
bottom = false; # Top bar
cornerStyle = 0; # Hug style
topLeftIcon = "spark";
showBackground = true;
verbose = true;
utilButtons = {
showScreenSnip = true;
showColorPicker = true; # 🎯 Enable color picker!
showMicToggle = false;
showKeyboardToggle = true;
showDarkModeToggle = true;
showPerformanceProfileToggle = false;
};
workspaces = {
monochromeIcons = true;
shown = 10;
showAppIcons = true;
alwaysShowNumbers = false;
showNumberDelay = 300;
};
};
battery = {
low = 20;
critical = 5;
automaticSuspend = true;
suspend = 3;
};
apps = {
terminal = "foot";
bluetooth = "kcmshell6 kcm_bluetooth";
network = "plasmawindowed org.kde.plasma.networkmanagement";
taskManager = "plasma-systemmonitor --page-name Processes";
};
time = {
format = "hh:mm";
dateFormat = "ddd, dd/MM";
};
};
# 🖥️ Hyprland Configuration
hyprland = {
general = {
gapsIn = 4;
gapsOut = 7;
borderSize = 2;
allowTearing = false;
};
decoration = {
rounding = 16;
blurEnabled = true;
};
gestures = {
workspaceSwipe = true;
};
monitors = [
# Add your monitor config here, e.g.:
# "eDP-1,1920x1080@60,0x0,1"
];
};
# 🖥️ Terminal Configuration
terminal = {
scrollback = {
lines = 1000;
multiplier = 3.0;
};
cursor = {
style = "beam";
blink = false;
beamThickness = 1.5;
};
colors = {
alpha = 0.95;
};
mouse = {
hideWhenTyping = false;
alternateScrollMode = true;
};
};
};
}
];
};
writable = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
self.homeManagerModules.default
{
home.username = "celes";
home.homeDirectory = "/home/celes";
home.stateVersion = "24.05";
programs.dots-hyprland = {
enable = true;
source = ./configs; # Use local configs
packageSet = "essential";
mode = "writable";
writable = {
stagingDir = ".configstaging";
setupScript = "initialSetup.sh";
backupExisting = true;
};
};
}
];
};
example = self.homeConfigurations.declarative;
};
};
}