{ 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 # ]; }; }); }; }