Migration This is my new public git source viewer. Source coming soon. Please contact with concerns/bugs. Contact me

users/ryan/common.nix

aeb9107982a669bb3d2f270a6d8e78eb021f6501 · 4.8 KB · 208 lines raw

1 { config, pkgs, lib, ... }:
2
3 {
4 imports = [ ./modules/nvim ./modules/aria2 ./modules/zen ];
5
6 news.display = "silent";
7
8 # Keep everything in lockstep
9 home.stateVersion = "26.05";
10
11 # My own modules
12 ryan.neovim.enable = true;
13
14 ryan.aria2.enable = true;
15
16 ryan.zen.enable = true;
17
18 programs.starship = {
19 enable = true;
20 settings = {
21 add_newline = false;
22 character = {
23 success_symbol = "[➜](bold green)";
24 error_symbol = "[➜](bold red)";
25 };
26 time = {
27 disabled = false;
28 format = "\[ $time \]($style)";
29 time_format = "%T";
30 };
31 };
32 };
33
34 programs.eza = {
35 enable = true;
36 enableZshIntegration = true;
37 };
38
39 programs.gpg.enable = true;
40
41 programs.git = {
42 enable = true;
43 signing.signByDefault = true;
44 settings = {
45 user = {
46 name = "Ryan Schanzenbacher";
47 email = "ryan@rschanz.org";
48 };
49 core.pager = "${pkgs.delta}/bin/delta";
50 init.defaultBranch = "main";
51 merge.conflictStyle = "zdiff3";
52 interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only";
53 delta = {
54 navigate = true;
55 side-by-side = true;
56 };
57 # Merged from guix-dotfiles' ~/.gitconfig - git-lfs filter and
58 # git send-email settings, missing from the darwin config until now.
59 filter.lfs = {
60 clean = "git-lfs clean -- %f";
61 smudge = "git-lfs smudge -- %f";
62 process = "git-lfs filter-process";
63 required = true;
64 };
65 sendemail = {
66 smtpserver = "mail.rschanz.org";
67 smtpuser = "ryan@rschanz.org";
68 smtpencryption = "ssl";
69 smtpserverport = 465;
70 };
71 };
72 };
73
74 programs.ssh = {
75 enable = true;
76 package = null; # installed by default
77
78 enableDefaultConfig = false;
79
80 settings = {
81 "rocApex" = {
82 hostname = "129.158.232.104";
83 user = "root";
84 };
85 "hetzner" = {
86 hostname = "5.161.207.21";
87 user = "root";
88 };
89 "rncorepub" = {
90 hostname = "5.161.89.186";
91 user = "root";
92 };
93 # Merged from guix-dotfiles' ~/.ssh/config - hosts and quirks missing
94 # from the darwin config until now.
95 "linode" = {
96 hostname = "97.107.142.58";
97 user = "root";
98 };
99 # `settings` has a freeform type, so upstream ssh_config directive
100 # names can be set directly - `programs.ssh.settings.*.extraOptions`
101 # is explicitly unsupported (hard assertion failure) in this HM version.
102 "192.168.216.1" = {
103 HostKeyAlgorithms = "+ssh-rsa";
104 PubkeyAcceptedAlgorithms = "+ssh-rsa";
105 };
106 "*" = {
107 KexAlgorithms = "-sntrup761x25519-sha512@openssh.com";
108 };
109 };
110
111 extraConfig = ''
112 Match host * exec "gpg-connect-agent UPDATESTARTUPTTY /bye"
113 '';
114 };
115
116 services.gpg-agent = {
117 enable = pkgs.stdenv.isLinux;
118 enableSshSupport = true;
119 enableExtraSocket = true;
120 };
121
122 programs.fzf = {
123 enable = true;
124 enableZshIntegration = true;
125 };
126
127 programs.zsh = {
128 enable = true;
129 initContent = let
130 brewPath = if pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64 then ''
131 eval "$(/opt/homebrew/bin/brew shellenv)"
132 '' else "";
133 in ''
134 export GPG_TTY="$(tty)"
135 export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
136 gpgconf --launch gpg-agent
137 gpg-connect-agent updatestartuptty /bye > /dev/null
138 ${brewPath}
139 '';
140 shellAliases = {
141 cat = "bat --paging=never";
142 diff = "delta";
143 brew = "env -u XDG_CONFIG_HOME brew";
144 grep = "grep --color=auto";
145 ll = "ls -l";
146 rebuild =
147 if pkgs.stdenv.isDarwin
148 then "sudo darwin-rebuild switch --flake ~/.config/nix/."
149 else "home-manager switch --flake ~/.config/home-manager/#ryan";
150 };
151 plugins = [
152 {
153 name = "zsh-vi-mode";
154 src = "${pkgs.zsh-vi-mode}/share/zsh-vi-mode";
155 }
156 ];
157 };
158
159 # Shared across darwin and linux; the guix side already deferred these
160 # packages to nix (all commented out of home-configuration.scm's package
161 # list), same as the darwin config always has.
162 home.packages = with pkgs; [
163 bat
164 fd
165 fzf
166 tmux
167 restic
168 rsync
169 pv
170 jq
171 htop
172 (pkgs.zathura.override {
173 plugins = [ pkgs.zathuraPkgs.zathura_pdf_mupdf ];
174 })
175 go
176 pass
177 file
178 pandoc
179 weechat
180 python3
181 yt-dlp
182 aerc
183 gdu
184 taskwarrior3
185 delta
186 prismlauncher
187 git-lfs
188 audacity
189 blender
190
191 nerd-fonts.anonymice
192 nerd-fonts.monofur
193 nerd-fonts.lilex
194 nerd-fonts.fira-code
195 ];
196
197 xdg.configFile."aerc" = {
198 source = ./aerc;
199 recursive = true;
200 };
201
202 home.sessionVariables = {
203 XDG_CONFIG_HOME = "${config.home.homeDirectory}/.config";
204 EDITOR = "${pkgs.neovim}/bin/nvim";
205 };
206
207 programs.home-manager.enable = true;
208 }