Files
illogical-impulse/flake.nix
T
2025-08-11 15:19:40 -05:00

243 lines
6.4 KiB
Nix

{
description = "A simple NixOS flake for a single system architecture.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
hyprland = {
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
quickshell = {
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
matugen = {
url = "github:/InioX/Matugen";
inputs.nixpkgs.follows = "nixpkgs";
# ref = "refs/tags/matugen-v0.10.0";
};
oneUI = {
url = "github:/end-4/OneUI4-Icons";
inputs.nixpkgs.follows = "nixpkgs";
flake = false;
};
};
outputs = {
self,
nixpkgs,
hyprland,
quickshell,
matugen,
oneUI,
...
}: let
supportedSystems = ["x86_64-linux"];
eachSupportedSystem = f:
nixpkgs.lib.genAttrs supportedSystems (system: let
pkgs = import nixpkgs {
inherit system;
};
in
f pkgs);
in {
nixosModules = rec {
default = illogical-impulse;
illogical-impulse = import ./modules/desktop/default.nix;
};
legacyPackages = eachSupportedSystem (pkgs: {
quickshellWithQT = quickshell.packages.${pkgs.system}.default.overrideAttrs (oldAttrs: {
propagatedBuildInputs =
oldAttrs.propagatedBuildInputs or []
++ [
pkgs.kdePackages.qt5compat
pkgs.kdePackages.qtpositioning
];
});
iiShellConfig = pkgs.stdenv.mkDerivation {
pname = "ii-shell-config";
version = "1.0";
src = ./.;
installPhase = ''
runHook preInstall
install -d -m 755 $out/share/ii
cp -r .config/quickshell/ii/* $out/share/ii
runHook postInstall
'';
dontPatchShebangs = true;
};
iiOneUI4Icons = pkgs.stdenv.mkDerivation rec {
pname = "ii-oneui4-icons";
version = "r70.55eada4";
src = oneUI;
installPhase = ''
runHook preInstall
install -d -m 755 $out/share/icons
cp -dr --no-preserve=mode OneUI $out/share/icons/OneUI
cp -dr --no-preserve=mode OneUI-dark $out/share/icons/OneUI-dark
cp -dr --no-preserve=mode OneUI-light $out/share/icons/OneUI-light
runHook postInstall
'';
dontStrip = true;
dontFixup = true;
};
});
# This new output attribute aggregates all packages under a 'default' attribute.
packages = eachSupportedSystem (pkgs: {
default = pkgs.symlinkJoin {
name = "illogical-impulse-packages";
paths = builtins.attrValues self.legacyPackages.${pkgs.system};
};
});
devShells = eachSupportedSystem (pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [
self.packages.${pkgs.system}.default
matugen.packages.${pkgs.system}.default
hyprland.packages.${pkgs.system}.default
];
# # --- Illogical Impulse Audio Dependencies ---
# ++ [
# cava
# pavucontrol
# wireplumber
# libdbusmenu-gtk3
# playerctl
# ]
# # --- Illogical Impulse Backlight Dependencies ---
# ++ [
# geoclue2 # FIXME
# brightnessctl
# ddcutil
# ]
# # --- Illogical Impulse Basic Dependencies ---
# ++ [
# axel
# bc
# coreutils
# cliphist
# cmake
# curl
# rsync
# wget
# ripgrep
# jq
# meson
# xdg-user-dirs
# ]
# # --- Illogical Impulse Bibata Dependencies ---
# ++ [
# bibata-cursors
# ]
# # --- Illogical Impulse Fonts and Theming Dependencies ---
# ++ [
# # adw-gtk-theme-git
# # breeze
# # breeze-plus
# # darkly-bin
# adw-gtk3 #FIXME
# darkly
# eza
# foot
# fish
# fontconfig
# # kde-material-you-colors
# kitty
# matugen.packages.${pkgs.system}.default
# # otf-space-grotesk
# starship
# # ttf-gabarito-git
# nerd-fonts.jetbrains-mono
# # ttf-material-symbols-variable-git
# # ttf-readex-pro
# # ttf-rubik-vf
# # ttf-twemoji
# ]
# # --- Illogical Impulse Hyprland Dependencies ---
# ++ [
# hyprland.packages.${pkgs.system}.default
# hypridle
# hyprcursor
# hyprlang
# hyprlock
# hyprpicker
# hyprsunset
# hyprutils
# hyprwayland-scanner
# wl-clipboard
# ]
# # --- Illogical Impulse KDE Dependencies ---
# ++ [
# kdePackages.bluedevil
# gnome-keyring
# networkmanager
# kdePackages.plasma-nm
# kdePackages.polkit-kde-agent-1
# kdePackages.dolphin
# kdePackages.systemsettings
# ]
# # TODO
# # Microtex
# ++ [
# ]
# # --- Illogical Impulse OneUI Dependencies ---
# ++ [
# ]
# # --- Illogical Impulse XDG Portal Dependencies ---
# ++ [
# xdg-desktop-portal
# kdePackages.xdg-desktop-portal-kde
# xdg-desktop-portal-gtk
# xdg-desktop-portal-hyprland
# ]
# # --- Illogical Impulse Python Dependencies ---
# ++ [
# clang
# uv
# gtk4
# libadwaita
# libsoup_3
# libportal-gtk4
# gobject-introspection
# sassc
# python3Packages.opencv-python
# ]
# # --- Illogical Impulse Screencapture Dependencies ---
# ++ [
# hyprshot
# slurp
# swappy
# tesseract
# # tesseract-data-eng
# wf-recorder
# ]
# # --- Illogical Impulse GTK/Qt Dependencies ---
# ++ [
# kdePackages.kdialog
# # libsForQt5.qt5.qtgraphicaleffects
#
# upower
# wtype
# ydotool
# ]
# # --- Illogical Impulse Widget Dependencies ---
# ++ [
# quickshell.packages.${pkgs.system}.default
# fuzzel
# # glib2
# translate-shell
# wlogout
# ];
};
});
};
}