{
  description = "LillyOS";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/release-25.11";
    home-manager = {
      url = "github:nix-community/home-manager/release-25.11";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    zen-browser = {
      url = "github:0xc000022070/zen-browser-flake";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.home-manager.follows = "home-manager";
    };
    dms = {
      url = "github:AvengeMedia/DankMaterialShell/stable";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    hyprland.url = "github:hyprwm/Hyprland";
    nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
    nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest";
    catppuccin.url = "github:catppuccin/nix";
    firefox-addons = {
      url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    openlinkhub.url = "path:./services/openlinkhub";
    artemisrgb.url = "path:./services/artemis-rgb";
    spicetify-nix.url = "github:Gerg-L/spicetify-nix";
    aagl = {
      url = "github:ezKEa/aagl-gtk-on-nix/release-25.11";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = {
    self,
    nixpkgs,
    home-manager,
    hyprland,
    nix-flatpak,
    catppuccin,
    ...
  } @inputs:
  let
    host = "lillypc";
    username = "lilly";
    prettyUsername = "Lilly";
    email = "lilly@hibana.me";
    system = "x86_64-linux";
  in 
  {
    nixosConfigurations.lillypc = nixpkgs.lib.nixosSystem {
      inherit system;
      specialArgs = {
        inherit inputs host username prettyUsername;
      };
      modules = [
        ./configuration.nix
        nix-flatpak.nixosModules.nix-flatpak
        catppuccin.nixosModules.catppuccin
        home-manager.nixosModules.home-manager
        ({ config, ... }:{
          home-manager = {
            useUserPackages = true;
            useGlobalPkgs = false;
            backupFileExtension = "backup";
            extraSpecialArgs = {
              inherit inputs host username prettyUsername email;
              nixosConfig = config;
            };
            users.${username} = {
              imports = [
                ./home
                catppuccin.homeModules.catppuccin
              ];
              home = {
                username = "${username}";
                homeDirectory = "/home/${username}";
                stateVersion = "25.11";
              };
            };
          };
        })
      ];
    };
  };
}

