{ 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.users.lucy = { config , pkgs , lib , inputs , ... }: { imports = [ ./modules/home.nix ]; # 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; }; }; }