From 4564b73de139a54c98f5a46c817485374de46e7e Mon Sep 17 00:00:00 2001 From: Jasper Ras Date: Sat, 8 Feb 2025 19:47:15 +0100 Subject: Declaratively create git repos --- configuration/snorlax/git.nix | 50 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/configuration/snorlax/git.nix b/configuration/snorlax/git.nix index 4b200c5..7a696fe 100644 --- a/configuration/snorlax/git.nix +++ b/configuration/snorlax/git.nix @@ -1,20 +1,64 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: let home = "/var/lib/git"; + repos = { + nixos = { + path = "${home}/nixos.git"; + desc = "My NixOS Configurations"; + owner = "jras"; + }; + + notes = { + path = "${home}/notes.git"; + desc = "My notes"; + owner = "jras"; + }; + + obsidian-wavez-theme = { + path = "${home}/obsidian-wavez-theme.git"; + desc = "The bordeaux theme for Obsidian"; + owner = "jras"; + }; + + astal-bar = { + path = "${home}/astal-bar.git"; + desc = "A wayland bar in jsx"; + owner = "jras"; + }; + }; + + startScript = pkgs.writeShellScript "init-git-repos" '' + ${lib.concatMapStrings ({ path, ... }: "${pkgs.git}/bin/git init --bare --shared ${path} && cd ${path} && ${pkgs.git}/bin/git branch -m main \n") (builtins.attrValues repos)} + ''; in { networking.firewall.allowedTCPPorts = [ 80 ]; - services.cgit.jap56 = { + services.cgit.snorlax = { enable = true; group = "git"; - scanPath = "${home}"; + repos = repos; + }; + + systemd.services.init-repos = { + description = "Initialize git repositories"; + wantedBy = [ "multi-user.target" ]; + restartTriggers = [ startScript ]; + + serviceConfig = { + Type = "oneshot"; + User = "git"; + Group = "git"; + ExecStart = startScript; + }; }; users.groups.git = {}; users.users.git = { isNormalUser = true; home = "${home}"; + homeMode = "0750"; + createHome = true; shell = pkgs.zsh; group = "git"; hashedPassword = "$6$Rc//lmBr5orYHn.0$M9y3Zj4zCe723r8hYGIhPC5kPv5SVGHjF1FsjrT9IIx7trxuNTLtLDQVL9lhmR5/7bFMUFEf0CMx9w7.vgXgY0"; -- cgit v1.2.3