Refactor structure

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-01-09 13:50:26 +00:00
parent c8c34c40e5
commit b355f72b2e
30 changed files with 362 additions and 202 deletions

View File

@@ -0,0 +1,45 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ ... }:
{
home-manager.users.${user} = {
sops.secrets = {
# Personal
"git/credentials" = {
sopsFile = ../../../../../../../secrets/personal/secrets.yaml;
path = "${home}/.config/git/credentials";
};
"git/cookies" = {
sopsFile = ../../../../../../../secrets/personal/secrets.yaml;
path = "${home}/.config/git/cookies";
};
};
programs.ssh.matchBlocks = {
# Personal
"github.com/karaolidis" = {
hostname = "github.com";
user = "git";
identityFile = "${home}/.ssh/ssh_personal_ed25519_key";
extraOptions.StrictHostKeyChecking = "no";
};
# SAS
"github.com" = {
hostname = "github.com";
user = "git";
identityFile = "${home}/.ssh/ssh_sas_ed25519_key";
extraOptions.StrictHostKeyChecking = "no";
};
"gitlab.sas.com" = {
hostname = "gitlab.sas.com";
user = "git";
identityFile = "${home}/.ssh/ssh_sas_ed25519_key";
extraOptions.StrictHostKeyChecking = "no";
};
};
};
}

View File

@@ -0,0 +1,29 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ pkgs, ... }:
{
environment.persistence."/cache"."${home}/.local/share/go" = { };
home-manager.users.${user} = {
programs.go = {
enable = true;
goPath = "${home}/.local/share/go";
};
home = {
packages = with pkgs; [
gopls
go-tools
golangci-lint
golangci-lint-langserver
];
sessionVariables = {
GOPROXY = "goproxy.unx.sas.com";
GONOSUMDB = "*.sas.com,sassoftware.io";
};
};
};
}

View File

@@ -0,0 +1,27 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ pkgs, ... }:
{
environment.persistence."/cache"."${home}/.local/share/gradle" = { };
home-manager.users.${user} = {
programs = {
java = {
enable = true;
package = pkgs.jdk17;
};
gradle = {
enable = true;
home = "${home}/.local/share/gradle";
};
};
sops.secrets."artifactory" = {
sopsFile = ../../../../../../../secrets/sas/secrets.yaml;
path = "${home}/.local/share/gradle/gradle.properties";
};
};
}

View File

@@ -0,0 +1,8 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ pkgs, ... }:
{
home-manager.users.${user}.home.packages = [ (pkgs.callPackage ./package.nix { }) ];
}

View File

@@ -0,0 +1,22 @@
{ pkgs, ... }:
pkgs.buildGoModule rec {
pname = "jsonify";
version = "0.1.6";
src = fetchGit {
url = "git@github.com:sas-institute-rnd-internal/polaris-jsonify.git";
ref = "main";
rev = "7b8f8a0f0b3c1bbfb7f814c5a3dae5f696ca38e3";
};
preBuild = ''
rm -rf sage
'';
installPhase = ''
mkdir -p $out/bin
cp "$GOPATH/bin/polaris-jsonify" $out/bin/jsonify
'';
vendorHash = "sha256-sJ3Jc7ZC+1s3m5nH6WtXsGVZfLEW7CZAcNtstUpc9M4=";
}

View File

@@ -0,0 +1,8 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ pkgs, ... }:
{
home-manager.users.${user}.home.packages = [ (pkgs.callPackage ./package.nix { }) ];
}

View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
pkgs.buildGoModule rec {
pname = "klog";
version = "0.6.2";
src = fetchGit {
url = "git@gitlab.sas.com:convoy/devops/klog.git";
ref = "master";
rev = "17629fe278dd23e12bd6f17ee9db0d2fde37bc6c";
};
vendorHash = "";
}

View File

@@ -0,0 +1,23 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ ... }:
{
home-manager.users.${user} = {
sops.secrets = {
"kubeconfig/d90270" = {
sopsFile = ../../../../../../../secrets/sas/secrets.yaml;
path = "${home}/.kube/d90270";
};
"kubeconfig/d90271" = {
sopsFile = ../../../../../../../secrets/sas/secrets.yaml;
path = "${home}/.kube/d90271";
};
"kubeconfig/d90272" = {
sopsFile = ../../../../../../../secrets/sas/secrets.yaml;
path = "${home}/.kube/d90272";
};
};
};
}

View File

@@ -0,0 +1,8 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ ... }:
{
home-manager.users.${user}.programs.obsidian.vaults."Documents/Obsidian/master".enable = true;
}

View File

@@ -37,6 +37,7 @@ in
(import ../../../common/configs/user/console/wget { inherit user home; })
(import ../../../common/configs/user/console/xdg { inherit user home; })
(import ../../../common/configs/user/console/zsh { inherit user home; })
(import ../../../common/configs/user/gui/astal { inherit user home; })
(import ../../../common/configs/user/gui/bluetooth { inherit user home; })
(import ../../../common/configs/user/gui/brightnessctl { inherit user home; })
@@ -66,9 +67,17 @@ in
(import ../../../common/configs/user/gui/x11 { inherit user home; })
(import ../../../common/configs/user/gui/xdg { inherit user home; })
(import ./configs/console/git { inherit user home; })
(import ./configs/console/go { inherit user home; })
(import ./configs/console/java { inherit user home; })
(import ./configs/console/kubernetes { inherit user home; })
(import ./configs/gui/obsidian { inherit user home; })
# Warning: the following imports use private SAS repositories.
# You must build the system once with these imports commented out,
# then uncomment them and rebuild the system once keys are provisioned.
(import ./configs/console/jsonify { inherit user home; })
];
# echo "password" | mkpasswd -s
@@ -100,80 +109,24 @@ in
sops.secrets = {
# Personal
"git/credentials" = {
"ssh/personal/key" = {
sopsFile = ../../../../secrets/personal/secrets.yaml;
path = "${home}/.config/git/credentials";
path = "${home}/.ssh/ssh_personal_ed25519_key";
};
"git/cookies" = {
sopsFile = ../../../../secrets/personal/secrets.yaml;
path = "${home}/.config/git/cookies";
};
"ssh/personal/git/key" = {
sopsFile = ../../../../secrets/personal/secrets.yaml;
path = "${home}/.ssh/ssh_git_personal_ed25519_key";
};
"ssh/personal/git/pass".sopsFile = ../../../../secrets/personal/secrets.yaml;
"ssh/personal/pass".sopsFile = ../../../../secrets/personal/secrets.yaml;
"gpg/personal/key".sopsFile = ../../../../secrets/personal/secrets.yaml;
"gpg/personal/pass".sopsFile = ../../../../secrets/personal/secrets.yaml;
# SAS
"ssh/sas/git/key" = {
"ssh/sas/key" = {
sopsFile = ../../../../secrets/sas/secrets.yaml;
path = "${home}/.ssh/ssh_git_sas_ed25519_key";
path = "${home}/.ssh/ssh_sas_ed25519_key";
};
"ssh/sas/git/pass".sopsFile = ../../../../secrets/sas/secrets.yaml;
"ssh/sas/pass".sopsFile = ../../../../secrets/sas/secrets.yaml;
"gpg/sas/key".sopsFile = ../../../../secrets/sas/secrets.yaml;
"gpg/sas/pass".sopsFile = ../../../../secrets/sas/secrets.yaml;
"kubeconfig/d90270" = {
sopsFile = ../../../../secrets/sas/secrets.yaml;
path = "${home}/.kube/d90270";
};
"kubeconfig/d90271" = {
sopsFile = ../../../../secrets/sas/secrets.yaml;
path = "${home}/.kube/d90271";
};
"kubeconfig/d90272" = {
sopsFile = ../../../../secrets/sas/secrets.yaml;
path = "${home}/.kube/d90272";
};
"artifactory" = {
sopsFile = ../../../../secrets/sas/secrets.yaml;
path = "${home}/.gradle/gradle.properties";
};
};
programs = {
ssh.matchBlocks = {
# Personal
"github.com/karaolidis" = {
hostname = "github.com";
user = "git";
identityFile = "${home}/.ssh/ssh_git_personal_ed25519_key";
extraOptions.StrictHostKeyChecking = "no";
};
# SAS
"github.com" = {
hostname = "github.com";
user = "git";
identityFile = "${home}/.ssh/ssh_git_sas_ed25519_key";
extraOptions.StrictHostKeyChecking = "no";
};
"gitlab.sas.com" = {
hostname = "gitlab.sas.com";
user = "git";
identityFile = "${home}/.ssh/ssh_git_sas_ed25519_key";
extraOptions.StrictHostKeyChecking = "no";
};
};
obsidian.vaults."Documents/Obsidian/master".enable = true;
};
theme.wallpaper = ../../../../static/wallpapers/snow.jpg;