pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / desktops / xfce / mkXfceDerivation.nix
blob7edcb6e2eef2525efa35d9af501e753329061166
1 { lib, stdenv, fetchFromGitLab, pkg-config, xfce4-dev-tools, hicolor-icon-theme, xfce, wrapGAppsHook3, gitUpdater }:
3 { category
4 , pname
5 , version
6 , attrPath ? "xfce.${pname}"
7 , rev-prefix ? "${pname}-"
8 , rev ? "${rev-prefix}${version}"
9 , sha256
10 , odd-unstable ? true
11 , patchlevel-unstable ? true
12 , passthru ? { }
13 , meta ? { }
14 , ...
15 } @ args:
17 let
18   inherit (builtins) filter getAttr head isList;
19   inherit (lib) attrNames concatLists recursiveUpdate zipAttrsWithNames;
21   filterAttrNames = f: attrs:
22     filter (n: f (getAttr n attrs)) (attrNames attrs);
24   concatAttrLists = attrsets:
25     zipAttrsWithNames (filterAttrNames isList (head attrsets)) (_: concatLists) attrsets;
27   template = {
28     nativeBuildInputs = [ pkg-config xfce4-dev-tools wrapGAppsHook3 ];
29     buildInputs = [ hicolor-icon-theme ];
30     configureFlags = [ "--enable-maintainer-mode" ];
32     src = fetchFromGitLab {
33       domain = "gitlab.xfce.org";
34       owner = category;
35       repo = pname;
36       inherit rev sha256;
37     };
39     enableParallelBuilding = true;
40     outputs = [ "out" "dev" ];
42     pos = builtins.unsafeGetAttrPos "pname" args;
44     passthru = {
45       updateScript = gitUpdater {
46         inherit rev-prefix odd-unstable patchlevel-unstable;
47       };
48     } // passthru;
50     meta = with lib; {
51       homepage = "https://gitlab.xfce.org/${category}/${pname}";
52       license = licenses.gpl2Plus; # some libraries are under LGPLv2+
53       platforms = platforms.linux;
54     } // meta;
55   };
57   publicArgs = removeAttrs args [ "category" "sha256" ];
60 stdenv.mkDerivation (publicArgs // template // concatAttrLists [ template args ])
61 # TODO [ AndersonTorres ]: verify if it allows using hash attribute as an option to sha256