From 7281f05669e92e3568f837591912350b32951555 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Tue, 30 Dec 2025 10:33:31 -0800 Subject: organize programs in a way that makes sense to me --- home/programs/dev/delta.nix | 7 ++++ home/programs/dev/direnv.nix | 13 +++++++ home/programs/dev/gh.nix | 15 ++++++++ home/programs/dev/git.nix | 86 ++++++++++++++++++++++++++++++++++++++++++++ home/programs/dev/go.nix | 19 ++++++++++ home/programs/dev/k8s.nix | 43 ++++++++++++++++++++++ 6 files changed, 183 insertions(+) create mode 100644 home/programs/dev/delta.nix create mode 100644 home/programs/dev/direnv.nix create mode 100644 home/programs/dev/gh.nix create mode 100644 home/programs/dev/git.nix create mode 100644 home/programs/dev/go.nix create mode 100644 home/programs/dev/k8s.nix (limited to 'home/programs/dev') 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"; + }; + }; +} -- cgit v1.2.3