Add git host cli tools
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -1,16 +1,12 @@
|
||||
{ config, inputs, ... }:
|
||||
{
|
||||
sops = {
|
||||
secrets = {
|
||||
"git/credentials/github.com/public/username".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
"git/credentials/github.com/public/password".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
};
|
||||
secrets."git/credentials/github.com/tokens/public".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
templates.nix-access-tokens = {
|
||||
content = ''
|
||||
access-tokens = github.com=${config.sops.placeholder."git/credentials/github.com/public/password"}
|
||||
access-tokens = github.com=${config.sops.placeholder."git/credentials/github.com/tokens/public"}
|
||||
'';
|
||||
group = "users";
|
||||
};
|
||||
|
@@ -41,5 +41,41 @@ in
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "gh";
|
||||
runtimeInputs = with pkgs; [ gh ];
|
||||
text = builtins.readFile ./gh.sh;
|
||||
})
|
||||
(pkgs.writeShellApplication {
|
||||
name = "glab";
|
||||
runtimeInputs = with pkgs; [ glab ];
|
||||
text = builtins.readFile ./glab.sh;
|
||||
})
|
||||
(pkgs.writeShellApplication {
|
||||
name = "tea";
|
||||
runtimeInputs = with pkgs; [ tea ];
|
||||
text = builtins.readFile ./tea.sh;
|
||||
})
|
||||
];
|
||||
|
||||
sessionVariables = {
|
||||
GITEA_HOST = "git.karaolidis.com";
|
||||
GITEA_SSH_HOST = "karaolidis.com";
|
||||
};
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
"gh/config.yml".source = (pkgs.formats.yaml { }).generate "config.yml" {
|
||||
version = 1;
|
||||
git_protocol = "ssh";
|
||||
};
|
||||
|
||||
"glab-cli/config.yml".source = (pkgs.formats.yaml { }).generate "config.yml" {
|
||||
git_protocol = "ssh";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
8
hosts/common/configs/user/console/git/gh.sh
Normal file
8
hosts/common/configs/user/console/git/gh.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
# shellcheck shell=bash
|
||||
|
||||
GH_HOST="${GH_HOST:-github.com}"
|
||||
|
||||
GH_TOKEN=$(sed -n "s#https://[^:]*:\([^@]*\)@${GH_HOST}#\1#p" "$HOME/.config/git/credentials")
|
||||
export GH_TOKEN
|
||||
|
||||
exec gh "$@"
|
8
hosts/common/configs/user/console/git/glab.sh
Normal file
8
hosts/common/configs/user/console/git/glab.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
# shellcheck shell=bash
|
||||
|
||||
GITLAB_HOST="${GITLAB_HOST:-gitlab.com}"
|
||||
|
||||
GITLAB_TOKEN=$(sed -n "s#https://[^:]*:\([^@]*\)@${GITLAB_HOST}#\1#p" "$HOME/.config/git/credentials")
|
||||
export GITLAB_TOKEN
|
||||
|
||||
exec glab "$@"
|
13
hosts/common/configs/user/console/git/tea.sh
Normal file
13
hosts/common/configs/user/console/git/tea.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
# shellcheck shell=bash
|
||||
|
||||
GITEA_HOST="${GITEA_HOST:-gitea.com}"
|
||||
GITEA_SSH_HOST="${GITEA_SSH_HOST:-gitea.com}"
|
||||
|
||||
GITEA_TOKEN=$(sed -n "s#https://[^:]*:\([^@]*\)@${GITEA_HOST}#\1#p" "$HOME/.config/git/credentials")
|
||||
GITEA_INSTANCE_URL="https://${GITEA_HOST}"
|
||||
GITEA_INSTANCE_SSH_HOST="$GITEA_SSH_HOST"
|
||||
export GITEA_TOKEN
|
||||
export GITEA_INSTANCE_URL
|
||||
export GITEA_INSTANCE_SSH_HOST
|
||||
|
||||
exec tea "$@"
|
@@ -20,6 +20,10 @@
|
||||
enable = true;
|
||||
defaultCacheTtl = 31536000;
|
||||
maxCacheTtl = 31536000;
|
||||
pinentry = {
|
||||
package = pkgs.pinentry-all;
|
||||
program = "pinentry-tty";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user = {
|
||||
|
@@ -46,35 +46,71 @@ in
|
||||
key = "ssh/rsa/pass";
|
||||
};
|
||||
|
||||
"git/credentials/personal/git.karaolidis.com/admin/username" = {
|
||||
"git/credentials/personal/git.karaolidis.com/username" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/git.karaolidis.com/admin/username";
|
||||
key = "git/credentials/git.karaolidis.com/username";
|
||||
};
|
||||
|
||||
"git/credentials/personal/git.karaolidis.com/admin/password" = {
|
||||
"git/credentials/personal/git.karaolidis.com/tokens/admin" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/git.karaolidis.com/admin/password";
|
||||
key = "git/credentials/git.karaolidis.com/tokens/admin";
|
||||
};
|
||||
|
||||
"git/credentials/sas/github.com/admin/username" = {
|
||||
"git/credentials/sas/github.com/username" = {
|
||||
sopsFile = "${inputs.secrets}/domains/sas/secrets.yaml";
|
||||
key = "git/credentials/github.com/admin/username";
|
||||
key = "git/credentials/github.com/username";
|
||||
};
|
||||
|
||||
"git/credentials/sas/github.com/admin/password" = {
|
||||
"git/credentials/sas/github.com/tokens/admin" = {
|
||||
sopsFile = "${inputs.secrets}/domains/sas/secrets.yaml";
|
||||
key = "git/credentials/github.com/admin/password";
|
||||
key = "git/credentials/github.com/tokens/admin";
|
||||
};
|
||||
|
||||
"git/credentials/personal/github.com/username" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/github.com/username";
|
||||
};
|
||||
|
||||
"git/credentials/personal/github.com/tokens/admin" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/github.com/tokens/admin";
|
||||
};
|
||||
|
||||
"git/credentials/personal/gitlab.com/username" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/gitlab.com/username";
|
||||
};
|
||||
|
||||
"git/credentials/personal/gitlab.com/tokens/admin" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/gitlab.com/tokens/admin";
|
||||
};
|
||||
|
||||
"git/credentials/personal/gitea.com/username" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/gitea.com/username";
|
||||
};
|
||||
|
||||
"git/credentials/personal/gitea.com/tokens/admin" = {
|
||||
sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
key = "git/credentials/gitea.com/tokens/admin";
|
||||
};
|
||||
};
|
||||
|
||||
templates."git/credentials" = {
|
||||
content = ''
|
||||
https://${hmConfig.sops.placeholder."git/credentials/personal/git.karaolidis.com/admin/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/personal/git.karaolidis.com/admin/password"
|
||||
https://${hmConfig.sops.placeholder."git/credentials/personal/git.karaolidis.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/personal/git.karaolidis.com/tokens/admin"
|
||||
}@git.karaolidis.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/sas/github.com/admin/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/sas/github.com/admin/password"
|
||||
https://${hmConfig.sops.placeholder."git/credentials/sas/github.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/sas/github.com/tokens/admin"
|
||||
}@github.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/personal/gitlab.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/personal/gitlab.com/tokens/admin"
|
||||
}@gitlab.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/personal/gitea.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/personal/gitea.com/tokens/admin"
|
||||
}@gitea.com
|
||||
'';
|
||||
path = "${home}/.config/git/credentials";
|
||||
};
|
||||
@@ -109,6 +145,13 @@ in
|
||||
userKnownHostsFile = builtins.toString pkgs.sshKnownHosts.gitlab;
|
||||
};
|
||||
|
||||
"gitea.com" = {
|
||||
hostname = "gitea.com";
|
||||
user = "git";
|
||||
identityFile = "${home}/.ssh/ssh_personal_ed25519_key";
|
||||
userKnownHostsFile = builtins.toString pkgs.sshKnownHosts.gitea;
|
||||
};
|
||||
|
||||
"github.sas.com" = {
|
||||
hostname = "github.com";
|
||||
user = "git";
|
||||
|
@@ -19,18 +19,42 @@ in
|
||||
|
||||
"ssh/pass".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/git.karaolidis.com/admin/username".sopsFile =
|
||||
"git/credentials/git.karaolidis.com/username".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/git.karaolidis.com/admin/password".sopsFile =
|
||||
"git/credentials/git.karaolidis.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/github.com/username".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/github.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitlab.com/username".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitlab.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitea.com/username".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitea.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
};
|
||||
|
||||
templates."git/credentials" = {
|
||||
content = ''
|
||||
https://${hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/admin/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/admin/password"
|
||||
https://${hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/tokens/admin"
|
||||
}@git.karaolidis.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/github.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/github.com/tokens/admin"
|
||||
}@github.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/gitlab.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/gitlab.com/tokens/admin"
|
||||
}@gitlab.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/gitea.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/gitea.com/tokens/admin"
|
||||
}@gitea.com
|
||||
'';
|
||||
path = "${home}/.config/git/credentials";
|
||||
};
|
||||
@@ -64,6 +88,13 @@ in
|
||||
identityFile = "${home}/.ssh/ssh_personal_ed25519_key";
|
||||
userKnownHostsFile = builtins.toString pkgs.sshKnownHosts.gitlab;
|
||||
};
|
||||
|
||||
"gitea.com" = {
|
||||
hostname = "gitea.com";
|
||||
user = "git";
|
||||
identityFile = "${home}/.ssh/ssh_personal_ed25519_key";
|
||||
userKnownHostsFile = builtins.toString pkgs.sshKnownHosts.gitea;
|
||||
};
|
||||
};
|
||||
|
||||
clipbook.bookmarks."SSH Key Passphrase".source = hmConfig.sops.secrets."ssh/pass".path;
|
||||
|
@@ -19,18 +19,42 @@ in
|
||||
|
||||
"ssh/pass".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/git.karaolidis.com/admin/username".sopsFile =
|
||||
"git/credentials/git.karaolidis.com/username".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/git.karaolidis.com/admin/password".sopsFile =
|
||||
"git/credentials/git.karaolidis.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/github.com/username".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/github.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitlab.com/username".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitlab.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitea.com/username".sopsFile = "${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
|
||||
"git/credentials/gitea.com/tokens/admin".sopsFile =
|
||||
"${inputs.secrets}/domains/personal/secrets.yaml";
|
||||
};
|
||||
|
||||
templates."git/credentials" = {
|
||||
content = ''
|
||||
https://${hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/admin/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/admin/password"
|
||||
https://${hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/git.karaolidis.com/tokens/admin"
|
||||
}@git.karaolidis.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/github.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/github.com/tokens/admin"
|
||||
}@github.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/gitlab.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/gitlab.com/tokens/admin"
|
||||
}@gitlab.com
|
||||
https://${hmConfig.sops.placeholder."git/credentials/gitea.com/username"}:${
|
||||
hmConfig.sops.placeholder."git/credentials/gitea.com/tokens/admin"
|
||||
}@gitea.com
|
||||
'';
|
||||
path = "${home}/.config/git/credentials";
|
||||
};
|
||||
@@ -63,6 +87,13 @@ in
|
||||
identityFile = "${home}/.ssh/ssh_personal_ed25519_key";
|
||||
userKnownHostsFile = builtins.toString pkgs.sshKnownHosts.gitlab;
|
||||
};
|
||||
|
||||
"gitea.com" = {
|
||||
hostname = "gitea.com";
|
||||
user = "git";
|
||||
identityFile = "${home}/.ssh/ssh_personal_ed25519_key";
|
||||
userKnownHostsFile = builtins.toString pkgs.sshKnownHosts.gitea;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user