{ 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 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 --- ++ [ self.legacyPackages.${pkgs.system}.iiOneUI4Icons ] # --- 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 --- ++ [ quickshell.packages.${pkgs.system}.default fuzzel # glib2 translate-shell wlogout ]; }; }); }; }