This commit is contained in:
Matt Nish-Lapidus 2025-04-16 11:30:06 -04:00
parent a221f87b5c
commit ee91921c9d
3 changed files with 17 additions and 31 deletions

6
flake.lock generated
View file

@ -377,11 +377,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1744735751, "lastModified": 1744812667,
"narHash": "sha256-OPpfgL3qUIbQdbmp1/ZwnlsuTLooHN4or0EABnZTFRY=", "narHash": "sha256-2AJZwXMO82YGw6B/RRCPz8Wz2zSRCZIdjhdFuiw7Ymg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "db7738e67a101ad945abbcb447e1310147afaf1b", "rev": "5d48f3ded3b55ef32d5853c9022fb4df29b3fc45",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -75,6 +75,9 @@
gnupg gnupg
util-linux util-linux
git git
forgejo
forgejo-cli
forgejo-cli
]; ];
users.users.emenel = { users.users.emenel = {

View file

@ -6,6 +6,7 @@ in
services = { services = {
forgejo = { forgejo = {
enable = true; enable = true;
package = pkgs.forgejo;
lfs = { lfs = {
enable = true; enable = true;
}; };
@ -61,33 +62,15 @@ in
# }; # };
}; };
environment.systemPackages = let # sops.secrets.forgejo-emenel.owner = "forgejo";
cfg = config.services.forgejo; # systemd.services.forgejo.preStart = let
forgejo-cli = pkgs.writeScriptBin "forgejo-cli" '' # adminCmd = "${lib.getExe pkgs.forgejo} admin user";
#!${pkgs.runtimeShell} # pwd = config.sops.secrets.forgejo-emenel;
cd ${cfg.stateDir} # user = "emenel"; # Note, Forgejo doesn't allow creation of an account named "admin"
sudo=exec # in ''
if [[ "$USER" != forgejo ]]; then # ${adminCmd} create --admin --email "matt@emenel.ca" --username ${user} --password "$(tr -d '\n' < ${pwd.path})" || true
sudo='exec /run/wrappers/bin/sudo -u ${cfg.user} -g ${cfg.group} --preserve-env=GITEA_WORK_DIR --preserve-env=GITEA_CUSTOM' # ## uncomment this line to change an admin user which was already created
fi # # ${adminCmd} change-password --username ${user} --password "$(tr -d '\n' < ${pwd.path})" || true
# Note that these variable names will change # '';
export GITEA_WORK_DIR=${cfg.stateDir}
export GITEA_CUSTOM=${cfg.customDir}
$sudo ${lib.getExe cfg.package} "$@"
'';
in [
forgejo-cli
];
sops.secrets.forgejo-emenel.owner = "forgejo";
systemd.services.forgejo.preStart = let
adminCmd = "${lib.getExe pkgs.forgejo} admin user";
pwd = config.sops.secrets.forgejo-emenel;
user = "emenel"; # Note, Forgejo doesn't allow creation of an account named "admin"
in ''
${adminCmd} create --admin --email "matt@emenel.ca" --username ${user} --password "$(tr -d '\n' < ${pwd.path})" || true
## uncomment this line to change an admin user which was already created
# ${adminCmd} change-password --username ${user} --password "$(tr -d '\n' < ${pwd.path})" || true
'';
} }