forked from Shinonome/alt-illogical-impulse
60c9d69eba
- Use NIXPKGS_QT6_QML_IMPORT_PATH which is the correct variable for Qt6 - Add QT_PLUGIN_PATH for Qt5Compat plugins - This should properly expose Qt5Compat.GraphicalEffects to quickshell
216 lines
7.1 KiB
Nix
216 lines
7.1 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 the correct Qt6 variable
|
|
preFixup = (oldAttrs.preFixup or "") + ''
|
|
qtWrapperArgs+=(
|
|
--prefix QML2_IMPORT_PATH : "${final.qt6.qt5compat}/${final.qt6.qtbase.qtQmlPrefix}"
|
|
--prefix NIXPKGS_QT6_QML_IMPORT_PATH : "${final.qt6.qt5compat}/${final.qt6.qtbase.qtQmlPrefix}"
|
|
--prefix QT_PLUGIN_PATH : "${final.qt6.qt5compat}/lib/qt-6/plugins"
|
|
)
|
|
'';
|
|
});
|
|
};
|
|
|
|
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;
|
|
};
|
|
};
|
|
}
|