{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; 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/*"; comin = { url = "github:nlewo/comin"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; musnix.url = "github:musnix/musnix"; nix-mineral = { url = "github:cynicsketch/nix-mineral"; flake = false; }; mobile-nixos = { url = "github:vlinkz/mobile-nixos/sdm845-6.14"; flake = false; }; gnome-mobile.url = "github:chuangzhu/nixpkgs-gnome-mobile"; nix-flatpak.url = "github:gmodena/nix-flatpak"; nixos-boot.url = "github:Melkor333/nixos-boot"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { # Define supported systems systems = [ "x86_64-linux" "aarch64-linux" ]; imports = [ inputs.treefmt-nix.flakeModule ]; # Per-system configuration perSystem = { config, pkgs, lib, ... }: { # Configure treefmt treefmt = { 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" ]; }; }; # Packages packages = let cutieMobileImages = inputs.self.nixosConfigurations.cutie.config.mobile.outputs.android.android-fastboot-images; in { default = cutieMobileImages; cutie-mobile-images = inputs.self.nixosConfigurations.cutie.config.mobile.outputs.android.android-fastboot-images; hello-kitty-cursors = pkgs.stdenv.mkDerivation { pname = "hello-kitty-cursors"; version = "1.0.0"; src = pkgs.fetchzip { url = "https://www.rw-designer.com/cursor-downloadset/hello-kitty.zip"; sha256 = "sha256-p4US/gftDL0ne4l0dHUIKKZy2oibkOqdJ3fMisySnNM="; stripRoot = false; }; installPhase = '' mkdir -p $out/share/icons/HelloKitty for file in ${inputs.self}/cursors/*; do if [ -e "$file" ]; then cp "$file" "$out/share/icons/HelloKitty/" else echo "Warning: File $file does not exist." fi done # Adjust the path to index.theme if necessary if [ -e "${inputs.self}/index.theme" ]; then cp "${inputs.self}/index.theme" "$out/share/icons/HelloKitty/" else echo "Warning: index.theme does not exist." fi ''; meta = with lib; { description = "Hello Kitty Cursor theme"; homepage = "https://www.rw-designer.com/cursor-downloadset/hello-kitty.zip"; license = licenses.gpl2Only; }; }; 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; }; }; }; # Development shell devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ git ]; shellHook = '' echo "Development shell loaded!" echo "Run 'nix fmt' to format all files" ''; }; # Formatting check checks.formatting = config.treefmt.build.check inputs.self; }; # Flake-level configuration (not per-system) flake = { # NixOS configurations nixosConfigurations = { cutie = inputs.nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ ./packages/fix-pkg-config.nix ./hosts/cutie/configuration.nix inputs.gnome-mobile.nixosModules.gnome-mobile inputs.nix-flatpak.nixosModules.nix-flatpak (import "${inputs.mobile-nixos}/lib/configuration.nix" { device = "oneplus-fajita"; }) ./packages/fix-pkg-config.nix ]; }; p50 = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; system = "x86_64-linux"; modules = [ "${inputs.nix-mineral}/nix-mineral.nix" inputs.niri.nixosModules.niri inputs.nixos-hardware.nixosModules.lenovo-thinkpad-p50 ./hosts/p50/configuration.nix inputs.determinate.nixosModules.default inputs.musnix.nixosModules.musnix inputs.nixos-boot.nixosModules.default inputs.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 = { pkgs, inputs, ... }: { imports = [ ./modules/home.nix ./modules/bottom.nix ./modules/htop.nix ]; home.packages = [ 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"; }; }; } inputs.c3d2-user-module.nixosModule ./modules/nix.nix ./modules/fonts.nix inputs.comin.nixosModules.comin ./modules/comin.nix inputs.stylix.nixosModules.stylix ./modules/stylix.nix ./modules/firefox-nixos.nix ./modules/boot.nix ./modules/binfmt.nix ]; }; }; inherit (inputs.self.nixosConfigurations) fajita-fastboot-images fajita-minimal-image uefi-x86_64-image ; }; }; }