Files
illogical-impulse/flake.nix
T
2025-08-09 11:50:56 -05:00

246 lines
6.3 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" "aarch64-darwin"];
eachSupportedSystem = f:
nixpkgs.lib.genAttrs supportedSystems (system: let
pkgs = import nixpkgs {
inherit system;
};
in
f pkgs);
in {
nixosModules = rec {
default = illogical-impulse;
illogical-impulse = ./nix/modules;
};
legacyPackages = eachSupportedSystem (pkgs: {
iiShellConfig = pkgs.stdenv.mkDerivation {
pname = "ii-shell-config";
version = "1.0";
src = ./.;
installPhase = ''
runHook preInstall
install -d -m 755 $out/.config
cp -r .config/quickshell $out/.config/
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.legacyPackages.${pkgs.system}.iiShellConfig
]
# --- 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
inputs.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 ---
++ [
# inputs.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
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 ---
++ [
kdialog
# qt6-5compat
# qt6-avif-image-plugin
# qt6-base
# qt6-declarative
# qt6-imageformats
# qt6-multimedia
# qt6-positioning
# qt6-quicktimeline
# qt6-sensors
# qt6-svg
# qt6-tools
# qt6-translations
# qt6-virtualkeyboard
# qt6-wayland
upower
wtype
ydotool
]
# --- Illogical Impulse Widget Dependencies ---
++ [
inputs.quickshell.packages.${pkgs.system}.default
fuzzel
# glib2
translate-shell
wlogout
];
};
});
};
}