{ description = "A Nix Flake for a fork of cgit"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs }: let forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; in { packages = forAllSystems (system: let pkgs = nixpkgs.legacyPackages.${system}; in { default = pkgs.callPackage ({ lib, fetchurl, callPackage, luajit, nixosTests }: # This logic was previously in package.nix callPackage (import ./common.nix rec { pname = "ps-cgit"; version = "1.2.3"; src = ./.; # cgit needs the git source code to compile. # Ensure this matches the version found in the Makefile of your fork. gitSrc = fetchurl { url = "mirror://kernel/software/scm/git/git-2.25.1.tar.xz"; sha256 = "09lzwa183nblr6l8ib35g2xrjf9wm9yhk3szfvyzkwivdv69c9r2"; }; buildInputs = [ luajit ]; passthru.tests = { inherit (nixosTests) cgit; }; homepage = "https://git.zx2c4.com/cgit/about/"; description = "Web frontend for git repositories (Custom Fork)"; maintainers = with lib.maintainers; [ ]; }) { } ) { }; }); nixosConfigurations.container = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ({ pkgs, ... }: { boot.isContainer = true; nix.settings.experimental-features = [ "nix-command" "flakes" ]; system.stateVersion = "26.05"; networking.useDHCP = false; networking.firewall.allowedTCPPorts = [ 22 80 ]; services.openssh.enable = true; users.users.root.openssh.authorizedKeys.keys = [ "${builtins.readFile "/home/ps/.ssh/id_ed25519.pub"}" ]; users.users.git = { isSystemUser = true; group = "git"; home = "/srv/git"; createHome = true; # homeMode = "750"; shell = "${pkgs.git}/bin/git-shell"; openssh.authorizedKeys.keys = [ "${builtins.readFile "/home/ps/.ssh/id_ed25519.pub"}" ]; packages = [ pkgs.git ]; }; users.groups.git = {}; services.fcgiwrap.instances.cgit = { process.user = "git"; process.group = "root"; socket.user = "caddy"; socket.group = "caddy"; }; services.caddy.enable = true; services.caddy.extraConfig = '' http://ps-cgit { rewrite /git /git/ handle_path /git/* { handle_path /static/* { file_server { root ${self.packages.${pkgs.stdenv.hostPlatform.system}.default}/cgit } } handle { reverse_proxy unix//run/fcgiwrap-cgit.sock { transport fastcgi { env CGIT_CONFIG ${pkgs.writeText "cgitrc" '' snapshots=tar tar.gz zip enable-git-config=1 enable-index-owner=0 enable-log-filecount=1 enable-log-linecount=1 section-from-path=1 virtual-root=/git css=/git/static/cgit.css logo=/git/static/cgit.png favicon=/git/static/favicon.ico module-link=/git/%s/commit/?id=%s clone-url=https://$HTTP_HOST/git/$CGIT_REPO_URL git://$HTTP_HOST/$CGIT_REPO_URL git@$HTTP_HOST:$CGIT_REPO_URL noplainemail=1 repository-sort=age about-filter=${pkgs.writeShellScript "markdown-filter" '' echo '
' ${pkgs.md4c}/bin/md2html --github --ftables echo '
' ''} # source-filter=${self.packages.${pkgs.stdenv.hostPlatform.system}.default}/lib/cgit/filters/syntax-highlighting.py head-include=${self.packages.${pkgs.stdenv.hostPlatform.system}.default}/cgit/cgithub/head-include.html footer=${self.packages.${pkgs.stdenv.hostPlatform.system}.default}/cgit/cgithub/footer.html readme=:readme.md readme=:Readme.md readme=:ReadMe.md readme=:README.md root-readme=${pkgs.writeText "readme.md" '' # my git repos ''} scan-path=/srv/git ''} env SCRIPT_FILENAME ${self.packages.${pkgs.stdenv.hostPlatform.system}.default}/cgit/cgit.cgi } } } } } ''; }) ]; }; }; }