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

users/ryan/common.nix

3c1f45ed7ea27458db27a2af96ef6ec1392dbc15 · 4.8 KB · 212 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 lib.mkMerge [
134 (lib.mkOrder 550 "ZVM_INIT_MODE=sourcing")
135 ''
136 export GPG_TTY="$(tty)"
137 export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
138 gpgconf --launch gpg-agent
139 gpg-connect-agent updatestartuptty /bye > /dev/null
140 ${brewPath}
141 ''
142 ];
143 shellAliases = {
144 cat = "bat --paging=never";
145 diff = "delta";
146 brew = "env -u XDG_CONFIG_HOME brew";
147 grep = "grep --color=auto";
148 ll = "ls -l";
149 rebuild =
150 if pkgs.stdenv.isDarwin
151 then "sudo darwin-rebuild switch --flake ~/.config/nix/."
152 else "home-manager switch --flake ~/.config/home-manager/#ryan";
153 };
154 plugins = [
155 {
156 name = "zsh-vi-mode";
157 src = "${pkgs.zsh-vi-mode}/share/zsh-vi-mode";
158 }
159 ];
160 };
161
162 # Shared across darwin and linux; the guix side already deferred these
163 # packages to nix (all commented out of home-configuration.scm's package
164 # list), same as the darwin config always has.
165 home.packages = with pkgs; [
166 bat
167 fd
168 fzf
169 tmux
170 restic
171 rsync
172 pv
173 jq
174 htop
175 (pkgs.zathura.override {
176 plugins = [ pkgs.zathuraPkgs.zathura_pdf_mupdf ];
177 })
178 go
179 pass
180 file
181 pandoc
182 weechat
183 python3
184 yt-dlp
185 aerc
186 gdu
187 taskwarrior3
188 delta
189 prismlauncher
190 git-lfs
191 audacity
192 blender
193
194 nerd-fonts.anonymice
195 nerd-fonts.monofur
196 nerd-fonts.lilex
197 nerd-fonts.fira-code
198 ];
199
200 xdg.configFile."aerc" = {
201 source = ./aerc;
202 recursive = true;
203 };
204
205 xdg.enable = true;
206
207 home.sessionVariables = {
208 EDITOR = "${pkgs.neovim}/bin/nvim";
209 };
210
211 programs.home-manager.enable = true;
212 }