authorgravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-03-28 21:09:28-07:00
committergravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-03-28 21:09:28-07:00
loged5b2071c511c94bb19616aecc043345621f918b
tree2fddbf22d1d7b0aa72f03e1903e6be383abec924
parenteb281e744340cd51b0ee4a65ee5eda0d0c1ece6c

refactor out common packages


6 files changed, 241 insertions(+), 605 deletions(-)

flake.nix+1-3
......@@ -102,9 +102,7 @@
102102 }
103103 nixos-cosmic.nixosModules.default
104104 ];
105 specialArgs = {
106 inherit inputs;
107 };
105 specialArgs = inputs;
108106 };
109107 };
110108 darwinConfigurations = {
hosts/desktop/configuration.nix+1-33
......@@ -276,9 +276,6 @@
276276 packages = with pkgs; [
277277 firefox
278278 vim
279 lua-language-server
280 texlive.combined.scheme-full
281 steam-run
282279 # thunderbird
283280 ];
284281 };
......@@ -299,37 +296,8 @@
299296 lfs.enable = true;
300297 };
301298
302 # Allow unfree packages
303 # List packages installed in system profile. To search, run:
304 # $ nix search wget
305299 environment.systemPackages = with pkgs; [
306 distrobox
307 fish
308 vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
309 wget
310 git
311 unzip
312 ripgrep
313 clang
314 fd
315 cargo
316 python3
317 python311Packages.pynvim
318 python311Packages.pip
319 steam
320 ruby
321 julia
322 xclip
323 nodePackages.npm
324 go
325 tailscale
326 ethtool
327 grub2
328
329 xdg-desktop-portal-gtk
330
331 wineWowPackages.waylandFull
332 wineWowPackages.stable
300 vim
333301 ];
334302
335303 # Some programs need SUID wrappers, can be configured further or are
hosts/desktop/home.nix+32-366
......@@ -2,380 +2,46 @@
22 inputs,
33 config,
44 pkgs,
5 lib,
56 zls,
67 nix-options-search,
78 ...
8}: {
9 # wayland.windowManager.hyprland = {
10 # enable = true;
11 # # ...
12 # plugins = [
13 # inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars
14 # # ...
15 # ];
16 # };
17
18 # Home Manager needs a bit of information about you and the paths it should
19 # manage.
20 home.username = "nmarks";
21 home.homeDirectory = "/home/nmarks";
22
23 # This value determines the Home Manager release that your configuration is
24 # compatible with. This helps avoid breakage when a new Home Manager release
25 # introduces backwards incompatible changes.
26 #
27 # You should not change this value, even if you update Home Manager. If you do
28 # want to update the value, then make sure to first check the Home Manager
29 # release notes.
30 home.stateVersion = "23.05"; # Please read the comment before changing.
31
32 # imports = [
33 # ./zed-editor.nix
34 # ];
35
36 # imports = [discord/default.nix];
37 # sys.discord.enable = true;
38
39 # The home.packages option allows you to install Nix packages into your
40 # environment.
41
42 home.packages = with pkgs;
43 [
44 glance
45 rust-bin.stable.latest.default
46 just
47 libxkbcommon
48 imagemagick
49 lua51Packages.lua
50 lua51Packages.luarocks-nix
51 legcord
52 calibre
53 pyright
54 ruff
55 python312Packages.jedi-language-server
56 wofi
57 bottles
58 kdePackages.dolphin
59 path-of-building
60 tor
61 spotify
62 stremio
63 codespell
64 fzf
65 pavucontrol
66 efibootmgr
67 zigpkgs.master
68 ghostty
69 stylua
70 webcord
71 cachix
72 (btop.override {cudaSupport = true;})
73 neofetch
74 direnv
75 R
76 typst
77 typst-live
78 tmux
79 zellij
80 distrobox
81 podman
82 qemu
83 vimgolf
84 lazygit
85 file
86 vesktop
87 (discord.override {
88 withMoonlight = true;
89 })
90 # itch : THIS IS BROKEN FOR SOME REASON, need to pin it??
91 qbittorrent
92 deno
93 imagemagick
94 pkg-config
95 mpv
96 comma
97 openconnect
98 gnumake
99 signal-desktop
100 zed-editor
101 #getting foundry to work!
102 #nodejs_21
103 caddy
104 cloudflared
105 pm2
106 #productivty
107 #Gaming
108 lutris
109 wineWowPackages.stable
110 winetricks
111 dxvk_2
112 mangohud
113 vulkan-tools
114 prismlauncher
115 # for cmpm17
116 exiftool
117 #for fun
118 cowsay
119 cmatrix
120 hyfetch
121 bat
122 eza
123 ollama
124 sl
125 fallout-ce
126 fallout2-ce
127 #LSP + formatters/linters
128 lua-language-server
129 nil
130 alejandra
131 statix
132 texlab
133 clang-tools
134 # rust-analyzer
135 #clippy
136 # rustfmt
137 #runpod
138 docker
139 nh
140 fastfetch
141 ]
142 ++ [zls.packages.x86_64-linux.zls];
143
144 programs.atuin = {
145 enable = true;
146 enableBashIntegration = true;
147 enableFishIntegration = true;
148 daemon.enable = true;
149 };
150
151 programs.direnv = {
152 enable = true;
153 #enableFishIntegration = true;
154 nix-direnv.enable = true;
155 };
156
157 programs.neovim = {
158 viAlias = true;
159 vimAlias = true;
160 extraLuaPackages = ps: [ps.magick];
161 extraPackages = [pkgs.imagemagick];
162 };
163 #Link neovim config into nix
164 #xdg.configFile.nvim.source = ./nvim;
165 xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop";
166 # xdg.mimeApps.defaultApplications = {"inode/directory" = "org.kde.dolphin.desktop";};
167
168 programs.kitty = {
169 enable = true;
170 themeFile = "Catppuccin-Mocha";
171 extraConfig = "font_family Iosevka NF
172 italic_font auto
173 bold_italic_font auto
174 bold_font auto";
175 };
176
177 programs.mangohud.enable = true;
178
179 programs.fish = {
180 enable = true;
181
182 plugins = [
183 {
184 name = "tide";
185 src = pkgs.fishPlugins.tide.src;
186 }
187 ];
188 shellAliases = {
189 # hm-update = "git add home.nix ; git commit -m 'updated home-manager config'; git push origin main; home-manager switch --flake ~/.dotfiles/#nmarks";
190 # sys-update = "git add configuration.nix ; git commit -m 'updated system config'; git push origin main; sudo nixos-rebuild switch --flake ~/.dotfiles/#nmarks";
191 # full-update = "sys-update; hm-update";
192 reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now";
193 };
194 };
195
196 programs.hyfetch = {
197 enable = true;
198 settings = {
199 backend = "fastfetch";
200 preset = "bisexual";
201 mode = "rgb";
202 light_dark = "dark";
203 lightness = {
204 };
205 color_align = {
206 mode = "horizontal";
207 # custom_colors = [];
208 # fore_back = null;
209 };
210 distro = null;
211 pride_month_shown = [
9}: let
10 shared-programs = import ../shared/home-programs.nix {inherit config pkgs lib;};
11in {
12 home = {
13 username = "nmarks";
14 homeDirectory = "/home/nmarks";
15
16 # This value determines the Home Manager release that your configuration is
17 # compatible with. This helps avoid breakage when a new Home Manager release
18 # introduces backwards incompatible changes.
19 #
20 # You should not change this value, even if you update Home Manager. If you do
21 # want to update the value, then make sure to first check the Home Manager
22 # release notes.
23 stateVersion = "23.05"; # Please read the comment before changing.
24
25 packages = with pkgs; let
26 shared-packages = import ../shared/packages.nix {inherit pkgs;};
27 in
28 shared-packages
29 ++ [
30 zls.packages.x86_64-linux.zls
31 rust-bin.stable.latest.default
21232 ];
213 pride_month_disable = false;
214 };
215 };
33 # programs.mangohud.enable = true;
21634
217 services.glance = {
218 enable = true;
219 settings = {
220 pages = [
221 {
222 name = "Home";
223 columns = [
224 {
225 size = "small";
226 widgets = [
227 {
228 type = "calendar";
229 first-day-of-week = "monday";
230 }
231 {
232 type = "rss";
233 limit = 10;
234 collapse-after = 3;
235 cache = "12h";
236 feeds = [
237 {
238 url = "https://selfh.st/rss/";
239 title = "selfh.st";
240 limit = 4;
241 }
242 {url = "https://ciechanow.ski/atom.xml";}
243 {
244 url = "https://www.joshwcomeau.com/rss.xml";
245 title = "Josh Comeau";
246 }
247 {url = "https://samwho.dev/rss.xml";}
248 {
249 url = "https://ishadeed.com/feed.xml";
250 title = "Ahmad Shadeed";
251 }
252 ];
253 }
254 ];
255 }
256 {
257 size = "full";
258 widgets = [
259 {
260 type = "group";
261 widgets = [{type = "hacker-news";} {type = "lobsters";}];
262 }
263 {
264 type = "videos";
265 channels = ["UCXuqSBlHAE6Xw-yeJA0Tunw" "UCR-DXc1voovS8nhAvccRZhg" "UCsBjURrPoezykLs9EqgamOA" "UCBJycsmduvYEL83R_U4JriQ" "UCHnyfMqiRRG1u-2MsSQLbXA"];
266 }
267 {
268 type = "group";
269 widgets = [
270 {
271 type = "reddit";
272 subreddit = "technology";
273 show-thumbnails = true;
274 }
275 {
276 type = "reddit";
277 subreddit = "selfhosted";
278 show-thumbnails = true;
279 }
280 ];
281 }
282 ];
283 }
284 {
285 size = "small";
286 widgets = [
287 {
288 type = "weather";
289 location = "London, United Kingdom";
290 units = "metric";
291 hour-format = "12h";
292 }
293 {
294 type = "markets";
295 symbol-link-template = "https://www.tradingview.com/symbols/{SYMBOL}/news";
296 markets = [
297 {
298 symbol = "SPY";
299 name = "S&P 500";
300 }
301 {
302 symbol = "BTC-USD";
303 name = "Bitcoin";
304 }
305 {
306 symbol = "NVDA";
307 name = "NVIDIA";
308 }
309 {
310 symbol = "AAPL";
311 name = "Apple";
312 }
313 {
314 symbol = "MSFT";
315 name = "Microsoft";
316 }
317 ];
318 }
319 {
320 type = "releases";
321 cache = "1d";
322 repositories = ["glanceapp/glance" "go-gitea/gitea" "immich-app/immich" "syncthing/syncthing"];
323 }
324 ];
325 }
326 ];
327 }
328 ];
35 sessionVariables = {
36 EDITOR = "nvim";
37 VISUAL = "nvim";
38 TERMINAL = "ghostty";
39 BROWSER = "firefox";
32940 };
33041 };
331 /*
332 programs.zsh = {
333 oh-my-zsh = {
334 enable = true;
335 plugins = [ "git" "extract"];
336 };
337 enableAutosuggestions = true;
338 enableCompletion = true;
339 syntaxHighlighting.enable = true;
340
341 plugins = [
342 {name = "powerlevel10k";src = pkgs.zsh-powerlevel10k;file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";}
343 ];
344 };
345 */
34642
347 # Home Manager is pretty good at managing dotfiles. The primary way to manage
348 # plain files is through 'home.file'.
349 home.file = {
350 # # Building this configuration will create a copy of 'dotfiles/screenrc' in
351 # # the Nix store. Activating the configuration will then make '~/.screenrc' a
352 # # symlink to the Nix store copy.
353 # ".screenrc".source = dotfiles/screenrc;
43 programs = shared-programs;
35444
355 # # You can also set the file content immediately.
356 # ".gradle/gradle.properties".text = ''
357 # org.gradle.console=verbose
358 # org.gradle.daemon.idletimeout=3600000
359 # '';
360 };
361
362 # You can also manage environment variables but you will have to manually
363 # source
364 #
365 # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
366 #
367 # or
368 #
369 # /etc/profiles/per-user/nmarks/etc/profile.d/hm-session-vars.sh
370 #
371 # if you don't want to manage your shell through Home Manager.
372 home.sessionVariables = {
373 EDITOR = "nvim";
374 VISUAL = "nvim";
375 TERMINAL = "ghostty";
376 BROWSER = "firefox";
377 };
45 xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop";
37846
379 # Let Home Manager install and manage itself.
380 programs.home-manager.enable = true;
38147}
hosts/laptop/home.nix+3-203
......@@ -2,6 +2,7 @@
22 inputs,
33 config,
44 pkgs,
5 lib,
56 ghostty,
67 moonlight,
78 ...
......@@ -21,210 +22,10 @@
2122 allowUnfree = true;
2223 };
2324
24 # imports = [
25 # ./zed-editor.nix
26 # ];
25 home.packages = pkgs.callPackage ../shared/packages.nix {};
2726
28 # imports = [discord/default.nix];
29 # sys.discord.enable = true;
27 programs = import ../shared/home-programs.nix {inherit config pkgs lib;};
3028
31 # The home.packages option allows you to install Nix packages into your
32 # environment.
33
34 home.packages = with pkgs; [
35 # ghostty.packages.aarch64-darwin.default
36 python312
37 uv
38 fd
39 lua51Packages.lua
40 lua51Packages.luarocks
41 luajitPackages.magick
42 ripgrep
43 lemonade
44 anki-bin
45 wireguard-tools
46 ruff
47 python312Packages.jedi-language-server
48 tor
49 #spotify
50 #stremio
51 fzf
52 zigpkgs.master
53 stylua
54 cachix
55 btop
56 neofetch
57 direnv
58 tmux
59 zellij
60 qemu
61 vimgolf
62 lazygit
63 rustup
64 file
65 vesktop
66 discord
67 # itch : THIS IS BROKEN FOR SOME REASON, need to pin it??
68 qbittorrent
69 deno
70 imagemagick
71 pkg-config
72 #mpv
73 comma
74 gnumake
75 #signal-desktop
76 #zed-editor
77 #getting foundry to work!
78 #nodejs_21
79 #productivty
80 #todoist-electron
81 #Gaming
82 prismlauncher
83 # for cmpm17
84 # binwalk
85 exiftool
86 #for fun
87 cowsay
88 cmatrix
89 hyfetch
90 bat
91 eza
92 ollama
93 sl
94 #LSP + formatters/linters
95 texlivePackages.chktex
96 lua-language-server
97 nil
98 alejandra
99 statix
100 texlab
101 clang-tools
102 # rust-analyzer
103 #clippy
104 # rustfmt
105 #runpod
106 docker
107 nh
108 fastfetch
109 ];
110 programs.direnv = {
111 enable = true;
112 #enableFishIntegration = true;
113 nix-direnv.enable = true;
114 };
115
116 programs.neovim = {
117 viAlias = true;
118 vimAlias = true;
119 extraLuaPackages = ps: [ps.magick];
120 extraPackages = [pkgs.imagemagick];
121 };
122 #Link neovim config into nix
123 #xdg.configFile.nvim.source = ./nvim;
124 #xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop";
125 # xdg.mimeApps.defaultApplications = {"inode/directory" = "org.kde.dolphin.desktop";};
126
127 programs.atuin = {
128 enable = true;
129 enableBashIntegration = true;
130 enableFishIntegration = true;
131 daemon.enable = false;
132 };
133
134 programs.fish = {
135 enable = true;
136
137 plugins = [
138 {
139 name = "tide";
140 src = pkgs.fishPlugins.tide.src;
141 }
142 ];
143 shellAliases = {
144 # DYLD_FALLBACK_LIBRARY_PATH = "$(brew --prefix)/lib:$DYLD_FALLBACK_LIBRARY_PATH";
145 };
146 };
147
148 programs.moonlight-mod = {
149 enable = true;
150 stable = {
151 extensions = {
152 allActivites.enabled = true;
153 alwaysFocus.enabled = true;
154
155 betterEmbedsYT = {
156 enabled = true;
157 config = {
158 fullDescription = false;
159 expandDescription = true;
160 };
161 };
162 };
163 };
164 };
165
166 programs.hyfetch = {
167 enable = true;
168 settings = {
169 backend = "fastfetch";
170 preset = "bisexual";
171 mode = "rgb";
172 light_dark = "dark";
173 lightness = {
174 };
175 color_align = {
176 mode = "horizontal";
177 # custom_colors = [];
178 # fore_back = null;
179 };
180 distro = null;
181 pride_month_shown = [
182 ];
183 pride_month_disable = false;
184 };
185 };
186
187 /*
188 programs.zsh = {
189 oh-my-zsh = {
190 enable = true;
191 plugins = [ "git" "extract"];
192 };
193 enableAutosuggestions = true;
194 enableCompletion = true;
195 syntaxHighlighting.enable = true;
196
197 plugins = [
198 {name = "powerlevel10k";src = pkgs.zsh-powerlevel10k;file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";}
199 ];
200 };
201 */
202
203 # Home Manager is pretty good at managing dotfiles. The primary way to manage
204 # plain files is through 'home.file'.
205 home.file = {
206 # # Building this configuration will create a copy of 'dotfiles/screenrc' in
207 # # the Nix store. Activating the configuration will then make '~/.screenrc' a
208 # # symlink to the Nix store copy.
209 # ".screenrc".source = dotfiles/screenrc;
210
211 # # You can also set the file content immediately.
212 # ".gradle/gradle.properties".text = ''
213 # org.gradle.console=verbose
214 # org.gradle.daemon.idletimeout=3600000
215 # '';
216 };
217
218 # You can also manage environment variables but you will have to manually
219 # source
220 #
221 # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
222 #
223 # or
224 #
225 # /etc/profiles/per-user/nmarks/etc/profile.d/hm-session-vars.sh
226 #
227 # if you don't want to manage your shell through Home Manager.
22829 home.sessionVariables = {
22930 EDITOR = "nvim";
23031 VISUAL = "nvim";
......@@ -233,5 +34,4 @@
23334 };
23435
23536 # Let Home Manager install and manage itself.
236 programs.home-manager.enable = true;
23737}
hosts/shared/home-programs.nix created+65
......@@ -0,0 +1,65 @@
1{
2 config,
3 pkgs,
4 lib,
5 ...
6}: {
7 atuin = {
8 enable = true;
9 enableBashIntegration = true;
10 enableFishIntegration = true;
11 daemon.enable = true;
12 };
13
14 direnv = {
15 enable = true;
16 enableZshIntegration = true;
17 nix-direnv.enable = true;
18 };
19
20 kitty = {
21 enable = true;
22 themeFile = "Catppuccin-Mocha";
23 extraConfig = "font_family Iosevka NF
24 italic_font auto
25 bold_italic_font auto
26 bold_font auto";
27 };
28
29 hyfetch = {
30 enable = true;
31 settings = {
32 backend = "fastfetch";
33 preset = "bisexual";
34 mode = "rgb";
35 light_dark = "dark";
36 lightness = {
37 };
38 color_align = {
39 mode = "horizontal";
40 # custom_colors = [];
41 # fore_back = null;
42 };
43 distro = null;
44 pride_month_shown = [
45 ];
46 pride_month_disable = false;
47 };
48 };
49
50 fish = {
51 enable = true;
52
53 plugins = [
54 {
55 name = "tide";
56 inherit (pkgs.fishPlugins.tide) src;
57 }
58 ];
59 shellAliases = {
60 reboot-windows = "sudo efibootmgr --bootnext 0000; sudo reboot -h now";
61 };
62 };
63
64 home-manager.enable = true;
65}
hosts/shared/packages.nix created+139
......@@ -0,0 +1,139 @@
1{pkgs, ...}:
2with pkgs; [
3 #general development
4 just
5 pkg-config
6 gnumake
7 zed-editor
8 caddy
9 pm2
10 clang-tools
11 wget
12 git
13 unzip
14 clang
15
16 #productivity
17 glance
18 wofi
19 anki-bin
20 tailscale
21
22 #nix tools
23 cachix
24 direnv
25 comma
26 nh
27 podman
28 docker
29
30 #terminal stuff
31 ghostty
32 (btop.override {cudaSupport = true;})
33 tmux
34 zellij
35 lazygit
36 fzf
37 neofetch
38 hyfetch
39 fastfetch
40 bat
41 eza
42 ollama
43 uv
44 fd
45 ripgrep
46 file
47 fish
48 ethtool
49
50 #linux tools
51 pavucontrol
52 grub2
53 efibootmgr
54 distrobox
55 qemu
56 openconnect
57 wireguard-tools
58 xdg-desktop-portal-gtk
59 xclip
60
61 #image tools
62 imagemagick
63
64 #chatting apps
65 legcord
66 webcord
67 (discord.override {
68 withMoonlight = true;
69 })
70 vesktop
71 signal-desktop
72
73 #media
74 calibre
75 kdePackages.dolphin
76 spotify
77 stremio
78 qbittorrent
79 mpv
80
81 #language servers
82 typst-live
83 lua-language-server
84 nil
85 texlab
86 texlivePackages.chktex
87
88 #formatters/linters
89 stylua
90 alejandra
91 statix
92
93 #neovim deps
94 lua51Packages.lua
95 lua51Packages.luarocks-nix
96 codespell
97 typst
98
99 #python
100 pyright
101 basedpyright
102 ruff
103 python312Packages.python
104 python312Packages.pynvim
105 python312Packages.pip
106
107 #programming languages
108 R
109 deno
110 ruby
111 julia
112 nodePackages.npm
113 go
114
115 #gaming
116 steam
117 bottles
118 path-of-building
119 lutris
120 wineWowPackages.stable
121 winetricks
122 dxvk_2
123 mangohud
124 vulkan-tools
125 prismlauncher
126 steam-run
127
128 #browsers
129 tor
130 firefox
131
132 #math
133 texlive.combined.scheme-full
134
135 #fun things
136 cowsay
137 cmatrix
138 sl
139]