diff --git a/default.nix b/default.nix index cc2e108..0d8ccf7 100644 --- a/default.nix +++ b/default.nix @@ -1,12 +1,12 @@ { -set ? "free", -stdenv ? (import {}).stdenv, -lib ? import , -pkgs ? import {} + set ? "free", + stdenv ? (import { }).stdenv, + lib ? import , + pkgs ? import { }, }: stdenv.mkDerivation rec { pname = "nixos-appstream-data"; - version = "0.0.1"; + version = "0.1.0"; buildInputs = with pkgs; [ appstream @@ -16,11 +16,26 @@ stdenv.mkDerivation rec { installPhase = '' runHook preInstall + ./build.sh ${set} - mkdir -p $out/share/app-info/{icons/nixos,xmls} - cp dest/*.gz $out/share/app-info/xmls/ - cp -r dest/icons/64x64 $out/share/app-info/icons/nixos/ - cp -r dest/icons/128x128 $out/share/app-info/icons/nixos/ + + # Install to modern swcatalog paths (AppStream 1.0+) + # This is the standard location for OS-provided software catalogs + mkdir -p $out/share/swcatalog/xml + mkdir -p $out/share/swcatalog/icons/nixos + + # Copy compressed catalog files + cp dest/*.gz $out/share/swcatalog/xml/ + + # Copy icons with size subdirectories + cp -r dest/icons/64x64 $out/share/swcatalog/icons/nixos/ + cp -r dest/icons/128x128 $out/share/swcatalog/icons/nixos/ + + # Also create legacy app-info symlinks for compatibility with older tools + mkdir -p $out/share/app-info + ln -s ../swcatalog/xml $out/share/app-info/xmls + ln -s ../swcatalog/icons $out/share/app-info/icons + runHook postInstall ''; } diff --git a/flake.nix b/flake.nix index b03d60c..55973d7 100644 --- a/flake.nix +++ b/flake.nix @@ -1,16 +1,34 @@ { - description = "Appstream data for NixOS"; + description = "AppStream catalog data for NixOS/nixpkgs packages"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, flake-utils }: - flake-utils.lib.eachDefaultSystem (system: let - pkgs = import nixpkgs { inherit system; }; - in rec { - packages.nixos-appstream-data = pkgs.callPackage ./default.nix {}; - packages.default = packages.nixos-appstream-data; - }); + outputs = + { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + packages = { + # Free packages only (default) + default = pkgs.callPackage ./default.nix { set = "free"; }; + free = pkgs.callPackage ./default.nix { set = "free"; }; + + # Unfree packages only + unfree = pkgs.callPackage ./default.nix { set = "unfree"; }; + + # All packages (free + unfree) + all = pkgs.callPackage ./default.nix { set = "all"; }; + }; + } + ); }