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

users/ryan/common.nix

ba783863efe9fbd4e79da1591082d1e98343e3c8 · 5.2 KB · 222 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 # Entering a directory with an allowed .envrc (`use flake`) loads that
40 # flake's devShell; leaving unloads it. nix-direnv caches the shell and
41 # keeps it from being garbage-collected, so it's instant after the first time.
42 programs.direnv = {
43 enable = true;
44 enableZshIntegration = true;
45 nix-direnv.enable = true;
46 config.global.hide_env_diff = true; # skip the long "+VAR -VAR" list on every cd
47 };
48
49 programs.gpg.enable = true;
50
51 programs.git = {
52 enable = true;
53 signing.signByDefault = true;
54 settings = {
55 user = {
56 name = "Ryan Schanzenbacher";
57 email = "ryan@rschanz.org";
58 };
59 core.pager = "${pkgs.delta}/bin/delta";
60 init.defaultBranch = "main";
61 merge.conflictStyle = "zdiff3";
62 interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only";
63 delta = {
64 navigate = true;
65 side-by-side = true;
66 };
67 # Merged from guix-dotfiles' ~/.gitconfig - git-lfs filter and
68 # git send-email settings, missing from the darwin config until now.
69 filter.lfs = {
70 clean = "git-lfs clean -- %f";
71 smudge = "git-lfs smudge -- %f";
72 process = "git-lfs filter-process";
73 required = true;
74 };
75 sendemail = {
76 smtpserver = "mail.rschanz.org";
77 smtpuser = "ryan@rschanz.org";
78 smtpencryption = "ssl";
79 smtpserverport = 465;
80 };
81 };
82 };
83
84 programs.ssh = {
85 enable = true;
86 package = null; # installed by default
87
88 enableDefaultConfig = false;
89
90 settings = {
91 "rocApex" = {
92 hostname = "129.158.232.104";
93 user = "root";
94 };
95 "hetzner" = {
96 hostname = "5.161.207.21";
97 user = "root";
98 };
99 "rncorepub" = {
100 hostname = "5.161.89.186";
101 user = "root";
102 };
103 # Merged from guix-dotfiles' ~/.ssh/config - hosts and quirks missing
104 # from the darwin config until now.
105 "linode" = {
106 hostname = "97.107.142.58";
107 user = "root";
108 };
109 # `settings` has a freeform type, so upstream ssh_config directive
110 # names can be set directly - `programs.ssh.settings.*.extraOptions`
111 # is explicitly unsupported (hard assertion failure) in this HM version.
112 "192.168.216.1" = {
113 HostKeyAlgorithms = "+ssh-rsa";
114 PubkeyAcceptedAlgorithms = "+ssh-rsa";
115 };
116 "*" = {
117 KexAlgorithms = "-sntrup761x25519-sha512@openssh.com";
118 };
119 };
120
121 extraConfig = ''
122 Match host * exec "gpg-connect-agent UPDATESTARTUPTTY /bye"
123 '';
124 };
125
126 services.gpg-agent = {
127 enable = pkgs.stdenv.isLinux;
128 enableSshSupport = true;
129 enableExtraSocket = true;
130 };
131
132 programs.fzf = {
133 enable = true;
134 enableZshIntegration = true;
135 };
136
137 programs.zsh = {
138 enable = true;
139 initContent = let
140 brewPath = if pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64 then ''
141 eval "$(/opt/homebrew/bin/brew shellenv)"
142 '' else "";
143 in lib.mkMerge [
144 (lib.mkOrder 550 "ZVM_INIT_MODE=sourcing")
145 ''
146 export GPG_TTY="$(tty)"
147 export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
148 gpgconf --launch gpg-agent
149 gpg-connect-agent updatestartuptty /bye > /dev/null
150 ${brewPath}
151 ''
152 ];
153 shellAliases = {
154 cat = "bat --paging=never";
155 diff = "delta";
156 brew = "env -u XDG_CONFIG_HOME brew";
157 grep = "grep --color=auto";
158 ll = "ls -l";
159 rebuild =
160 if pkgs.stdenv.isDarwin
161 then "sudo darwin-rebuild switch --flake ~/.config/nix/."
162 else "home-manager switch --flake ~/.config/home-manager/#ryan";
163 };
164 plugins = [
165 {
166 name = "zsh-vi-mode";
167 src = "${pkgs.zsh-vi-mode}/share/zsh-vi-mode";
168 }
169 ];
170 };
171
172 # Shared across darwin and linux; the guix side already deferred these
173 # packages to nix (all commented out of home-configuration.scm's package
174 # list), same as the darwin config always has.
175 home.packages = with pkgs; [
176 bat
177 fd
178 fzf
179 tmux
180 restic
181 rsync
182 pv
183 jq
184 htop
185 (pkgs.zathura.override {
186 plugins = [ pkgs.zathuraPkgs.zathura_pdf_mupdf ];
187 })
188 go
189 pass
190 file
191 pandoc
192 weechat
193 python3
194 yt-dlp
195 aerc
196 gdu
197 taskwarrior3
198 delta
199 prismlauncher
200 git-lfs
201 audacity
202 blender
203
204 nerd-fonts.anonymice
205 nerd-fonts.monofur
206 nerd-fonts.lilex
207 nerd-fonts.fira-code
208 ];
209
210 xdg.configFile."aerc" = {
211 source = ./aerc;
212 recursive = true;
213 };
214
215 xdg.enable = true;
216
217 home.sessionVariables = {
218 EDITOR = "${pkgs.neovim}/bin/nvim";
219 };
220
221 programs.home-manager.enable = true;
222 }