aboutsummaryrefslogtreecommitdiff
path: root/users/programs
diff options
context:
space:
mode:
Diffstat (limited to 'users/programs')
-rw-r--r--users/programs/1password.nix41
-rw-r--r--users/programs/direnv.nix11
-rw-r--r--users/programs/eza.nix20
-rw-r--r--users/programs/fd.nix12
-rw-r--r--users/programs/fish.nix26
-rw-r--r--users/programs/gh.nix15
-rw-r--r--users/programs/git.nix91
-rw-r--r--users/programs/go.nix24
-rw-r--r--users/programs/k9s.nix59
-rw-r--r--users/programs/kubie.nix24
-rw-r--r--users/programs/ssh.nix33
-rw-r--r--users/programs/starship.nix40
12 files changed, 396 insertions, 0 deletions
diff --git a/users/programs/1password.nix b/users/programs/1password.nix
new file mode 100644
index 0000000..63892c7
--- /dev/null
+++ b/users/programs/1password.nix
@@ -0,0 +1,41 @@
+{ pkgs, config, ... }:
+let
+ home = config.home.homeDirectory;
+ darwinSockPath = "${home}/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock";
+ sockPath = ".1password/agent.sock";
+in
+{
+ home.packages = with pkgs; [
+ _1password-cli
+ ];
+
+ home.sessionVariables = {
+ SSH_AUTH_SOCK = "${home}/${sockPath}";
+ };
+
+ home.file.sock = {
+ source = config.lib.file.mkOutOfStoreSymlink darwinSockPath;
+ target = sockPath;
+ };
+
+ programs.fish = {
+ interactiveShellInit = ''
+ op completion fish | source
+ '';
+ };
+
+ programs.ssh = {
+ extraConfig = "IdentityAgent ~/${sockPath}";
+ };
+
+ # Generate ssh agent config for 1Password
+ # I want both my personal and work keys
+ home.file.".config/1Password/ssh/agent.toml".text = ''
+ [[ssh-keys]]
+ account = "my.1password.com"
+
+ [[ssh-keys]]
+ account = "roblox.1password.com"
+ vault = "Private"
+ '';
+}
diff --git a/users/programs/direnv.nix b/users/programs/direnv.nix
new file mode 100644
index 0000000..54585ca
--- /dev/null
+++ b/users/programs/direnv.nix
@@ -0,0 +1,11 @@
+{ ... }:
+{
+ programs.direnv = {
+ enable = true;
+ nix-direnv.enable = true;
+ config = {
+ global.disable_stdin = true;
+ global.strict_env = true;
+ };
+ };
+}
diff --git a/users/programs/eza.nix b/users/programs/eza.nix
new file mode 100644
index 0000000..d0326f6
--- /dev/null
+++ b/users/programs/eza.nix
@@ -0,0 +1,20 @@
+{ ... }:
+{
+ programs.eza = {
+ enable = true;
+ icons = "never";
+ enableFishIntegration = false;
+ extraOptions = [
+ "--group-directories-first"
+ "--no-quotes"
+ "--git-ignore"
+ "--icons=never"
+ ];
+ };
+
+ programs.fish.shellAliases = {
+ la = "eza -la --git --color=always --group-directories-first";
+ ll = "eza -la -L=1 --git --color=always --group-directories-first";
+ lt = "eza -aT -L=2 --git --color=always --group-directories-first";
+ };
+}
diff --git a/users/programs/fd.nix b/users/programs/fd.nix
new file mode 100644
index 0000000..cdbae66
--- /dev/null
+++ b/users/programs/fd.nix
@@ -0,0 +1,12 @@
+{ ... }:
+{
+ # an alternative to find
+ programs.fd = {
+ enable = true;
+ hidden = true;
+ ignores = [
+ ".git/"
+ ".direnv/"
+ ];
+ };
+}
diff --git a/users/programs/fish.nix b/users/programs/fish.nix
new file mode 100644
index 0000000..e5a1013
--- /dev/null
+++ b/users/programs/fish.nix
@@ -0,0 +1,26 @@
+{ ... }:
+{
+ programs.fish = {
+ enable = true;
+ interactiveShellInit = ''
+ set fish_greeting ""
+
+ fish_add_path -p ~/.cargo/bin/
+
+ # Add utmctl to PATH
+ fish_add_path /Applications/UTM.app/Contents/MacOS/
+ '';
+ shellAbbrs = {
+ ncg = "nix-collect-garbage --delete-older-than 7d";
+ ndc = "nix develop --command";
+ nfc = "nix flake check";
+ ngcroot = "ls -al /nix/var/nix/gcroots/auto/";
+ nph = "nix profile history --profile /nix/var/nix/profiles/system";
+ nsn = "nix search nixpkgs";
+ nsv = "nix store verify --all";
+
+ g = "git";
+ gap = "git add --patch";
+ };
+ };
+}
diff --git a/users/programs/gh.nix b/users/programs/gh.nix
new file mode 100644
index 0000000..b194b35
--- /dev/null
+++ b/users/programs/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/users/programs/git.nix b/users/programs/git.nix
new file mode 100644
index 0000000..a95bb11
--- /dev/null
+++ b/users/programs/git.nix
@@ -0,0 +1,91 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ inherit (config) userinfo;
+in
+{
+ home.packages = with pkgs; [
+ gitAndTools.pre-commit
+ git-credential-manager
+ ];
+
+ programs.git = {
+ enable = true;
+
+ delta = {
+ enable = true;
+ options.features = "decorations side-by-side line-numbers";
+ };
+
+ userName = lib.mkDefault userinfo.fullName;
+ userEmail = lib.mkDefault userinfo.email;
+
+ 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"
+ ".envrc"
+ ];
+
+ extraConfig = {
+ 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";
+ };
+ };
+ };
+}
diff --git a/users/programs/go.nix b/users/programs/go.nix
new file mode 100644
index 0000000..0ae1ec1
--- /dev/null
+++ b/users/programs/go.nix
@@ -0,0 +1,24 @@
+{ pkgs, config, ... }:
+{
+ programs.go = {
+ enable = true;
+ goPath = ".local/share/pkg.go";
+ goBin = ".local/bin.go";
+ goPrivate = [
+ "github.rbx.com/*"
+ "github.com/fcuny/*"
+ ];
+ };
+
+ home.packages = with pkgs; [
+ delve
+ go-tools # collection of tools, https://github.com/dominikh/go-tools
+ golangci-lint
+ gopls
+ ];
+
+ home.sessionPath = [
+ config.home.sessionVariables.GOBIN
+ "${config.home.homeDirectory}/.local/bin"
+ ];
+}
diff --git a/users/programs/k9s.nix b/users/programs/k9s.nix
new file mode 100644
index 0000000..2d60ab1
--- /dev/null
+++ b/users/programs/k9s.nix
@@ -0,0 +1,59 @@
+{ ... }:
+{
+ programs.k9s = {
+ enable = true;
+ settings = {
+ k9s = {
+ refreshRate = 1;
+ };
+ };
+ plugin = {
+ plugins = {
+ log-bat = {
+ shortCut = "Shift-L";
+ description = "Logs (bat)";
+ scopes = [ "po" ];
+ command = "bash";
+ background = false;
+ args = [
+ "-c"
+ "\"$@\" | bat"
+ "dummy-arg"
+ "kubectl"
+ "logs"
+ "$NAME"
+ "-n"
+ "$NAMESPACE"
+ "--context"
+ "$CONTEXT"
+ "--kubeconfig"
+ "$KUBECONFIG"
+ ];
+ };
+ log-bat-container = {
+ shortCut = "Shift-L";
+ description = "Logs (bat)";
+ scopes = [ "containers" ];
+ command = "bash";
+ background = false;
+ args = [
+ "-c"
+ "\"$@\" | bat"
+ "dummy-arg"
+ "kubectl"
+ "logs"
+ "-c"
+ "$NAME"
+ "$POD"
+ "-n"
+ "$NAMESPACE"
+ "--context"
+ "$CONTEXT"
+ "--kubeconfig"
+ "$KUBECONFIG"
+ ];
+ };
+ };
+ };
+ };
+}
diff --git a/users/programs/kubie.nix b/users/programs/kubie.nix
new file mode 100644
index 0000000..5ac8678
--- /dev/null
+++ b/users/programs/kubie.nix
@@ -0,0 +1,24 @@
+{ pkgs, ... }:
+{
+ home.packages = with pkgs; [
+ kubie # kubeconfig browser https://github.com/sbstp/kubie
+ ];
+
+ home.file.kubie = {
+ target = ".kube/kubie.yaml";
+ text = ''
+ shell: fish
+ configs:
+ include:
+ - ~/.kube/rksconfig
+ prompt:
+ fish_use_rprompt: false
+ '';
+ };
+
+ programs.fish = {
+ shellAbbrs = {
+ kctx = "kubie ctx";
+ };
+ };
+}
diff --git a/users/programs/ssh.nix b/users/programs/ssh.nix
new file mode 100644
index 0000000..c236904
--- /dev/null
+++ b/users/programs/ssh.nix
@@ -0,0 +1,33 @@
+{ pkgs, config, ... }:
+{
+ # https://github.com/nix-community/home-manager/blob/master/modules/programs/ssh.nix
+ programs.ssh = {
+ enable = true;
+ forwardAgent = true;
+ serverAliveInterval = 60;
+ controlMaster = "auto";
+ controlPersist = "30m";
+ controlPath = "${config.home.homeDirectory}/.ssh/sockets/S.%r@%h:%p";
+
+ matchBlocks = {
+ "git.fcuny.net" = {
+ proxyCommand = "${pkgs.cloudflared}/bin/cloudflared access ssh --hostname %h";
+ };
+ "github.com" = {
+ hostname = "github.com";
+ user = "git";
+ forwardAgent = false;
+ extraOptions = {
+ preferredAuthentications = "publickey";
+ controlMaster = "no";
+ controlPath = "none";
+ };
+ };
+ };
+ };
+
+ home.file = {
+ # we need this path to be created so that the control path can be used.
+ ".ssh/sockets/.keep".text = "# Managed by Home Manager";
+ };
+}
diff --git a/users/programs/starship.nix b/users/programs/starship.nix
new file mode 100644
index 0000000..8a541ce
--- /dev/null
+++ b/users/programs/starship.nix
@@ -0,0 +1,40 @@
+{ ... }:
+{
+ programs.starship = {
+ enable = true;
+ settings = {
+ add_newline = false;
+ character = {
+ success_symbol = "[›](bold green)";
+ error_symbol = "[›](bold red)";
+ };
+ directory = {
+ fish_style_pwd_dir_length = 3;
+ };
+ git_branch = {
+ symbol = "🌱 ";
+ };
+ git_commit = {
+ commit_hash_length = 4;
+ };
+ git_status = {
+ deleted = "✗";
+ modified = "✶";
+ staged = "✓";
+ stashed = "≡";
+ };
+ "$schema" = "https://starship.rs/config-schema.json";
+ hostname = {
+ ssh_only = true;
+ };
+ username = {
+ disabled = true;
+ };
+ kubernetes = {
+ disabled = false;
+ style = "bold blue";
+ };
+ nix_shell.disabled = false;
+ };
+ };
+}