forked from Shinonome/alt-illogical-impulse
218 lines
6.8 KiB
Nix
218 lines
6.8 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";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, home-manager, quickshell, ... }:
|
|
let
|
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
|
|
|
pkgsFor = system: import nixpkgs {
|
|
inherit system;
|
|
overlays = [ self.overlays.default ];
|
|
};
|
|
in
|
|
{
|
|
overlays.default = final: prev: {
|
|
# No quickshell override needed - nixpkgs 25.11+ provides it
|
|
# Environment setup is handled by the quickshell-startup script
|
|
};
|
|
|
|
packages = forAllSystems (system:
|
|
let
|
|
pkgs = pkgsFor system;
|
|
utilityPackages = import ./packages { inherit pkgs; };
|
|
in utilityPackages // {
|
|
default = utilityPackages.update-flake;
|
|
}
|
|
);
|
|
|
|
devShells = forAllSystems (system:
|
|
let
|
|
pkgs = pkgsFor system;
|
|
utilityPackages = import ./packages { inherit pkgs; };
|
|
in {
|
|
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;
|
|
|
|
nixosModules.default = import ./modules/components/system-services.nix;
|
|
nixosModules.dots-hyprland = self.nixosModules.default;
|
|
|
|
homeConfigurations = {
|
|
declarative = home-manager.lib.homeManagerConfiguration {
|
|
pkgs = pkgsFor "x86_64-linux";
|
|
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 {
|
|
pkgs = pkgsFor "x86_64-linux";
|
|
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;
|
|
};
|
|
};
|
|
}
|