{
  description = "A very basic flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    c3d2-user-module.url = "git+https://gitea.c3d2.de/C3D2/nix-user-module.git";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    niri.url = "github:sodiboo/niri-flake";
    nixos-hardware.url = "github:NixOS/nixos-hardware/master";
    treefmt-nix = {
      url = "github:numtide/treefmt-nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*";
    nix-index-db = {
      url = "github:Mic92/nix-index-database";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    quickshell = {
      url = "git+https://git.outfoxxed.me/quickshell/quickshell";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    comin = {
      url = "github:nlewo/comin";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    stylix = {
      url = "github:nix-community/stylix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    firefox-addons = {
      url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs =
    inputs@{ self
    , nixpkgs
    , c3d2-user-module
    , home-manager
    , niri
    , nixos-hardware
    , treefmt-nix
    , determinate
    , nix-index-db
    , quickshell
    , stylix
    , comin
    , firefox-addons
    ,
    }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
      lib = pkgs.lib;

      # Configure treefmt
      treefmtEval = treefmt-nix.lib.evalModule pkgs {
        projectRootFile = "flake.nix";
        programs = {
          nixpkgs-fmt.enable = true;
          prettier = {
            enable = true;
            includes = [
              "*.json"
              "*.yaml"
              "*.yml"
            ];
          };
          taplo.enable = true;
        };

        settings = {
          global.excludes = [
            "*.lock"
            "result"
            ".git/"
            "*.md"
            "*.sh"
            "*.py"
            "*.js"
            "*.ts"
          ];
        };
      };
    in
    {
      packages.${system}.wallpapers = pkgs.stdenv.mkDerivation {
        name = "wallpapers";
        src = ./assets;

        buildInputs = with pkgs; [ ffmpeg ];

        buildPhase = ''
          # Create output directory
          mkdir -p $out/share/wallpapers

          # Copy static wallpaper
          cp "wp6553608.jpg" "$out/share/wallpapers/static-wallpaper.jpg"

          # Copy original animated wallpaper
          cp "Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4" \
             "$out/share/wallpapers/anime-cat-girl-snow.mp4"

          # Create optimized version
          ${pkgs.ffmpeg}/bin/ffmpeg -i "Anime Live Wallpaper - Anime Cat Girl Snow - HD - no copyright [SiMc3l0ido0].mp4" \
            -vf "scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080" \
            -r 30 -c:v libx264 -crf 28 -preset medium \
            -t 30 -an "$out/share/wallpapers/anime-cat-girl-snow-optimized.mp4"
        '';

        installPhase = ''
          # Files are already in the right place from buildPhase
          echo "Wallpapers installed to $out/share/wallpapers"
        '';

        meta = with lib; {
          description = "Personal wallpaper collection";
          platforms = platforms.linux;
        };
      };
      nixosConfigurations.p50 = nixpkgs.lib.nixosSystem {
        specialArgs = { inherit inputs; };
        system = "x86_64-linux";
        modules = [
          niri.nixosModules.niri
          nixos-hardware.nixosModules.lenovo-thinkpad-p50
          ./configuration.nix
          determinate.nixosModules.default
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.backupFileExtension = "backup";
            home-manager.extraSpecialArgs = { inherit inputs; };
            home-manager.users.lucy =
              { config
              , pkgs
              , lib
              , inputs
              , ...
              }:
              {
                imports = [
                  ./modules/home.nix
                ];

                home.packages = with pkgs; [
                  inputs.self.packages.${pkgs.system}.wallpapers
                ];

                home.file = {
                  ".local/share/wallpapers/anime-cat-girl-snow.mp4".source = "${
                    inputs.self.packages.${pkgs.system}.wallpapers
                  }/share/wallpapers/anime-cat-girl-snow.mp4";
                  ".local/share/wallpapers/static-wallpaper.jpg".source = "${
                    inputs.self.packages.${pkgs.system}.wallpapers
                  }/share/wallpapers/static-wallpaper.jpg";
                  ".local/share/wallpapers/anime-cat-girl-snow-optimized.mp4".source = "${
                    inputs.self.packages.${pkgs.system}.wallpapers
                  }/share/wallpapers/anime-cat-girl-snow-optimized.mp4";
                };

                # Configure dconf settings here or inside home.nix
                # Example:
                # home.sessionVariables = {
                #   XDG_CURRENT_DESKTOP = "GNOME";
                # };
              };
          }
          c3d2-user-module.nixosModule
          ./modules/nix.nix
          ./modules/fonts.nix
          comin.nixosModules.comin
          ./modules/comin.nix
          stylix.nixosModules.stylix
          ./modules/stylix.nix
        ];
      };

      # Add treefmt formatter
      formatter.${system} = treefmtEval.config.build.wrapper;

      # Optional: Add a dev shell with treefmt
      devShells.${system}.default = pkgs.mkShell {
        buildInputs = with pkgs; [
          git
          treefmtEval.config.build.wrapper
        ];

        shellHook = ''
          echo "Development shell loaded!"
          echo "Run 'nix fmt' to format all files"
          echo "Run 'treefmt' to format with treefmt directly"
        '';
      };

      # Optional: Add formatting check
      checks.${system} = {
        formatting = treefmtEval.config.build.check self;
      };
    };
}
