{ 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; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; }; 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 { homeManagerModules = 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; }; }); 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 ]; }; }); }; }