]> gitweb.ps.run Git - ps-gitweb/blob - flake.nix
flake.nix
[ps-gitweb] / flake.nix
1 {
2   description = "Custom Gitweb Package and FCGI Service Wrapper";
3
4   inputs = {
5     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
6   };
7
8   outputs = { self, nixpkgs, ... }:
9     let
10       systems = [ "x86_64-linux" "aarch64-linux" ];
11       forAllSystems = nixpkgs.lib.genAttrs systems;
12     in
13     {
14       packages = forAllSystems (system:
15         let
16           pkgs = nixpkgs.legacyPackages.${system};
17           
18           perlDeps = with pkgs.perlPackages; [
19             CGI
20             HTMLParser
21             CGIFast
22             FCGI
23             FCGIProcManager
24             HTMLTagCloud
25           ];
26         in
27         {
28           default = pkgs.stdenv.mkDerivation {
29             pname = "ps-gitweb";
30             version = "1.0.0";
31             
32             # Assuming source is in the same directory
33             src = ./.;
34
35             nativeBuildInputs = [ pkgs.makeWrapper ];
36             buildInputs = [ pkgs.perl pkgs.gzip ] ++ perlDeps;
37
38             buildFlags = [ "gitweb" ];
39
40             # 2. The requested postInstall logic
41             postInstall = ''
42               mkdir -p $out/static
43               cp gitweb/gitweb.cgi $out/gitweb.cgi
44               cp gitweb/static/git* $out/static/
45
46               # Ensure the file exists (standard gitweb location)
47               # If your makefile installs elsewhere, adjust this check.
48               if [ -f "$out/gitweb/gitweb.cgi" ]; then
49                 
50                 # Patch gzip path
51                 sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${pkgs.gzip}/bin/gzip'|" \
52                   $out/gitweb/gitweb.cgi
53                 
54                 # Patch Perl Libs (Injecting dependencies into @INC)
55                 for p in ${pkgs.lib.concatStringsSep " " perlDeps}; do
56                   sed -i -e "/use CGI /i use lib \"$p/${pkgs.perl.libPrefix}\";" \
57                     "$out/gitweb/gitweb.cgi"
58                 done
59               else
60                  echo "Warning: gitweb.cgi not found in $out/gitweb/"
61               fi
62             '';
63           };
64         });
65     };
66 }