aboutsummaryrefslogtreecommitdiff
path: root/home/programs/dev
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2025-12-30 10:33:31 -0800
committerFranck Cuny <franck@fcuny.net>2025-12-30 11:33:46 -0800
commit7281f05669e92e3568f837591912350b32951555 (patch)
tree61964e392409ab188599af47e58d9a9154ab33ce /home/programs/dev
parentinstall mkv related tools (diff)
downloadinfra-7281f05669e92e3568f837591912350b32951555.tar.gz
organize programs in a way that makes sense to me
Diffstat (limited to 'home/programs/dev')
-rw-r--r--home/programs/dev/delta.nix7
-rw-r--r--home/programs/dev/direnv.nix13
-rw-r--r--home/programs/dev/gh.nix15
-rw-r--r--home/programs/dev/git.nix86
-rw-r--r--home/programs/dev/go.nix19
-rw-r--r--home/programs/dev/k8s.nix43
6 files changed, 183 insertions, 0 deletions
diff --git a/home/programs/dev/delta.nix b/home/programs/dev/delta.nix
new file mode 100644
index 0000000..726357f
--- /dev/null
+++ b/home/programs/dev/delta.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ programs.delta = {
+ enable = true;
+ options.features = "decorations side-by-side line-numbers";
+ };
+}
diff --git a/home/programs/dev/direnv.nix b/home/programs/dev/direnv.nix
new file mode 100644
index 0000000..bad971d
--- /dev/null
+++ b/home/programs/dev/direnv.nix
@@ -0,0 +1,13 @@
+{ ... }:
+{
+ programs.direnv = {
+ enable = true;
+ nix-direnv.enable = true;
+ config.global = {
+ disable_stdin = true;
+ strict_env = true;
+ hide_env_diff = true;
+ warn_timeout = 0;
+ };
+ };
+}
diff --git a/home/programs/dev/gh.nix b/home/programs/dev/gh.nix
new file mode 100644
index 0000000..b194b35
--- /dev/null
+++ b/home/programs/dev/gh.nix
@@ -0,0 +1,15 @@
+{ ... }:
+{
+ programs.gh = {
+ enable = true;
+ settings = {
+ version = 1;
+ git_protocol = "ssh";
+ prompt = "enabled";
+ aliases = {
+ co = "pr checkout";
+ vw = "pr view --web";
+ };
+ };
+ };
+}
diff --git a/home/programs/dev/git.nix b/home/programs/dev/git.nix
new file mode 100644
index 0000000..333f968
--- /dev/null
+++ b/home/programs/dev/git.nix
@@ -0,0 +1,86 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ inherit (config) userinfo;
+in
+{
+ home.packages = with pkgs; [
+ git-credential-manager
+ pre-commit
+ ];
+
+ programs.git = {
+ enable = true;
+ settings = {
+ user = {
+ name = lib.mkDefault userinfo.fullName;
+ email = lib.mkDefault userinfo.email;
+ };
+
+ core.whitespace = "trailing-space,space-before-tab";
+ color.ui = true;
+
+ # nicer output
+ column.ui = "auto";
+
+ # https://adamj.eu/tech/2024/01/18/git-improve-diff-histogram/
+ diff.algorithm = "histogram";
+
+ init.defaultBranch = "main";
+
+ # https://blog.gitbutler.com/how-git-core-devs-configure-git/
+ push = {
+ # abort if the remote branch does not match the local one
+ default = "simple";
+ autoSetupRemote = true;
+ followTags = true;
+ };
+
+ fetch = {
+ prune = true;
+ pruneTags = true;
+ all = true;
+ };
+
+ pull.rebase = true;
+
+ rebase = {
+ autosquash = true;
+ updateRefs = true;
+ # Automatically create a temporary stash entry before the
+ # operation begins, and apply it after the operation ends.
+ autoStash = true;
+ # Print a warning if some commits are removed
+ missingCommitsCheck = "warn";
+ };
+
+ branch = {
+ autosetuprebase = "remote";
+ sort = "authordate";
+ };
+
+ aliases = {
+ amend = "commit --amend";
+ a = "commit --amend --no-edit";
+ st = "status";
+ co = "checkout";
+ br = "branch";
+ rb = "pull --rebase";
+ hist = "log --pretty=format:\"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)\" --graph --date=relative --decorate --all";
+ llog = "log --graph --name-status --pretty=format:\"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset\" --date=relative";
+ logo = "log --pretty=format:\"%C(yellow)%h%Cred%d %Creset%s%Cblue (%cn)\" --decorate";
+ logf = "log --pretty=format:\"%C(yellow)%h%Cred%d %Creset%s%Cblue (%cn)\" --decorate --numstat";
+ };
+ };
+
+ ignores = [
+ ".DS_Store"
+ ".aider.*"
+ ".direnv"
+ ];
+ };
+}
diff --git a/home/programs/dev/go.nix b/home/programs/dev/go.nix
new file mode 100644
index 0000000..d6ea5f4
--- /dev/null
+++ b/home/programs/dev/go.nix
@@ -0,0 +1,19 @@
+{ config, pkgs, ... }:
+{
+ home.packages = with pkgs; [
+ go-tools # collection of tools, https://github.com/dominikh/go-tools
+ golangci-lint
+ gopls
+ ];
+
+ programs.go = {
+ enable = true;
+ env = {
+ GOPATH = "${config.xdg.dataHome}/pkg.go";
+ GOPRIVATE = [
+ "github.rbx.com/*"
+ "fcuny.net/*"
+ ];
+ };
+ };
+}
diff --git a/home/programs/dev/k8s.nix b/home/programs/dev/k8s.nix
new file mode 100644
index 0000000..1e6cd41
--- /dev/null
+++ b/home/programs/dev/k8s.nix
@@ -0,0 +1,43 @@
+{ pkgs, ... }:
+{
+ home.packages = with pkgs; [
+ kind # k8s in docker
+ kubebuilder # generate controller
+ kubectl
+ kubie # kubeconfig browser https://github.com/sbstp/kubie
+ kubernetes-helm # deploy applications
+ kubelogin-oidc # OIDC plugin
+ ];
+
+ programs.k9s = {
+ enable = true;
+ settings = {
+ k9s = {
+ refreshRate = 1;
+ };
+ };
+ };
+
+ home.file.kubie = {
+ target = ".kube/kubie.yaml";
+ text = ''
+ shell: fish
+ configs:
+ include:
+ - ~/.kube/rksconfig
+ prompt:
+ fish_use_rprompt: false
+ '';
+ };
+
+ programs.fish = {
+ shellAbbrs = {
+ k = "kubectl";
+ kctx = "kubie ctx";
+ klogs = "kubectl logs";
+ };
+ shellAliases = {
+ ukctx = "${pkgs.gh}/bin/gh api --hostname github.rbx.com repos/Roblox/cell-lifecycle/contents/rks/kubeconfig --jq '.content' | base64 -d > ~/.kube/rksconfig";
+ };
+ };
+}