Files
alt-illogical-impulse/flake.nix
T
Celes Renata 9e5a394b54 Final fix for Qt5Compat QML import path
- Use QML2_IMPORT_PATH with correct path to qt5compat QML modules
- Simplified to just the essential path that works
- This resolves the Qt5Compat.GraphicalEffects import issue
2025-08-09 23:28:53 -07:00

214 lines
6.9 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 = quickshell.packages.${system}.default.overrideAttrs (oldAttrs: {
# Add Qt5Compat as a runtime dependency
buildInputs = (oldAttrs.buildInputs or []) ++ [ final.qt6.qt5compat ];
# Use Qt's wrapper to ensure QML modules are found
nativeBuildInputs = (oldAttrs.nativeBuildInputs or []) ++ [ final.qt6.wrapQtAppsHook ];
# Set up QML import paths properly using QML2_IMPORT_PATH (the correct variable)
preFixup = (oldAttrs.preFixup or "") + ''
qtWrapperArgs+=(
--prefix QML2_IMPORT_PATH : "${final.qt6.qt5compat}/lib/qt-6/qml"
)
'';
});
};
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 = "declarative";
# 🎨 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;
};
};
}