···1+{ ... }:
2+{
3+ # Set your time zone.
4+ time.timeZone = "America/Chicago";
5+6+ # Select internationalisation properties.
7+ i18n.defaultLocale = "en_US.UTF-8";
8+ # console = {
9+ # font = "Lat2-Terminus16";
10+ # keyMap = "us";
11+ # useXkbConfig = true; # use xkb.options in tty.
12+ # };
13+14+ # Automatic doc cache generation
15+ documentation.man.generateCaches = true;
16+17+ # Automatic system upgrades
18+ system.autoUpgrade = {
19+ enable = true;
20+ dates = "09:00";
21+ randomizedDelaySec = "45min";
22+ };
23+24+ # Automatic Garbage Collection
25+ nix.gc.automatic = true;
26+ nix.gc.options = "--delete-older-than 8d";
27+ nix.settings.trusted-users = [ "@wheel" ];
28+29+ # I don't care that much about free vs unfree
30+ nixpkgs.config.allowUnfree = true;
31+}
-67
configuration.nix
···1-# Edit this configuration file to define what should be installed on
2-## your system. Help is available in the configuration.nix(5) man page, on
3-# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
4-5-{ ... }:
6-7-{
8- imports =
9- [
10- # Include the results of the hardware scan.
11- ./hardware-configuration.nix
12- ./boot.nix
13- ./networking.nix
14- #./gui.nix
15- ./users.nix
16- ./packages.nix
17- ./services.nix
18- ];
19- # Set your time zone.
20- time.timeZone = "America/Chicago";
21-22- # Select internationalisation properties.
23- i18n.defaultLocale = "en_US.UTF-8";
24- # console = {
25- # font = "Lat2-Terminus16";
26- # keyMap = "us";
27- # useXkbConfig = true; # use xkb.options in tty.
28- # };
29-30- # Copy the NixOS configuration file and link it from the resulting system
31- # (/run/current-system/configuration.nix). This is useful in case you
32- # accidentally delete configuration.nix.
33- #system.copySystemConfiguration = true;
34-35- # Automatic doc cache generation
36- documentation.man.generateCaches = true;
37-38- # Automatic system upgrades
39- system.autoUpgrade = {
40- enable = true;
41- dates = "09:00";
42- randomizedDelaySec = "45min";
43- };
44-45- # Automatic Garbage Collection
46- nix.gc.automatic = true;
47- nix.gc.options = "--delete-older-than 8d";
48-49- # This option defines the first version of NixOS you have installed on this particular machine,
50- # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
51- #
52- # Most users should NEVER change this value after the initial install, for any reason,
53- # even if you've upgraded your system to a new NixOS release.
54- #
55- # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
56- # so changing it will NOT upgrade your system.
57- #
58- # This value being lower than the current NixOS release does NOT mean your system is
59- # out of date, out of support, or vulnerable.
60- #
61- # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
62- # and migrated your data accordingly.
63- #
64- # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
65- system.stateVersion = "23.11"; # Did you read the comment?
66-67-}
···1+# Edit this configuration file to define what should be installed on
2+# your system. Help is available in the configuration.nix(5) man page, on
3+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
4+5+{
6+ config,
7+ lib,
8+ pkgs,
9+ inputs,
10+ ...
11+}:
12+let
13+ system = pkgs.stdenv.targetPlatform.system;
14+ agave = (builtins.getFlake "/home/noah/repos/agave");
15+in
16+{
17+ imports = [
18+ # Include the results of the hardware scan.
19+ ./hardware-configuration.nix
20+ agave.nixosModules.default
21+ ];
22+23+ nix.settings.experimental-features = [
24+ "nix-command"
25+ "flakes"
26+ ];
27+28+ # Use the systemd-boot EFI boot loader.
29+ boot.loader.systemd-boot.enable = true;
30+ #boot.loader.grub.device = "nodev";
31+ #boot.loader.grub.efiSupport = true;
32+ #boot.loader.grub.useOSProber = true;
33+ boot.loader.efi.canTouchEfiVariables = true;
34+35+ # Use latest kernel.
36+ boot.kernelPackages = pkgs.linuxPackages_latest;
37+38+ networking.hostName = "edge"; # Define your hostname.
39+40+ # Configure network connections interactively with nmcli or nmtui.
41+ networking.networkmanager.enable = true;
42+43+ # Set your time zone.
44+ # time.timeZone = "Europe/Amsterdam";
45+46+ # Configure network proxy if necessary
47+ # networking.proxy.default = "http://user:password@proxy:port/";
48+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
49+50+ # Select internationalisation properties.
51+ i18n.defaultLocale = "en_US.UTF-8";
52+ console = {
53+ font = "Lat2-Terminus16";
54+ keyMap = "us";
55+ #useXkbConfig = true; # use xkb.options in tty.
56+ };
57+58+ # Enable the X11 windowing system.
59+ # services.xserver.enable = true;
60+61+ # Configure keymap in X11
62+ # services.xserver.xkb.layout = "us";
63+ # services.xserver.xkb.options = "eurosign:e,caps:escape";
64+65+ # Enable CUPS to print documents.
66+ # services.printing.enable = true;
67+68+ # Enable sound.
69+ # services.pulseaudio.enable = true;
70+ # OR
71+ # services.pipewire = {
72+ # enable = true;
73+ # pulse.enable = true;
74+ # };
75+76+ # Enable touchpad support (enabled default in most desktopManager).
77+ # services.libinput.enable = true;
78+79+ # Define a user account. Don't forget to set a password with ‘passwd’.
80+ # users.users.alice = {
81+ # isNormalUser = true;
82+ # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
83+ # packages = with pkgs; [
84+ # tree
85+ # ];
86+ # };
87+88+ # programs.firefox.enable = true;
89+90+ # List packages installed in system profile.
91+ # You can use https://search.nixos.org/ to find more packages (and options).
92+ environment.systemPackages = with pkgs; [
93+ neovim
94+ wget
95+ git
96+ htop
97+ inputs.agenix.packages."${system}".agenix
98+ agave.packages.${system}.solana
99+ agave.packages.${system}.solana-keygen
100+ ];
101+102+ services.tailscale.useRoutingFeatures = "both";
103+104+ # Some programs need SUID wrappers, can be configured further or are
105+ # started in user sessions.
106+ # programs.mtr.enable = true;
107+ # programs.gnupg.agent = {
108+ # enable = true;
109+ # enableSSHSupport = true;
110+ # };
111+112+ # List services that you want to enable:
113+114+ # Enable the OpenSSH daemon.
115+ services.openssh.enable = true;
116+ services.openssh.openFirewall = true;
117+118+ # Open ports in the firewall.
119+ # networking.firewall.allowedTCPPorts = [ ... ];
120+ # networking.firewall.allowedUDPPorts = [ ... ];
121+ # Or disable the firewall altogether.
122+ networking.firewall.enable = true;
123+ networking.firewall = {
124+ allowPing = true;
125+ allowedUDPPorts = [ ];
126+ allowedUDPPortRanges = [
127+ # Agave
128+ {
129+ from = 8000;
130+ to = 8020;
131+ }
132+ ];
133+ allowedTCPPorts = [
134+ 2375
135+ 3000
136+ # Agave
137+ 8001
138+ 8899
139+ 8900
140+ 10000
141+ ];
142+ };
143+ security.pam.loginLimits = [
144+ {
145+ domain = "*";
146+ type = "soft";
147+ item = "nofile";
148+ value = "100000";
149+ }
150+ {
151+ domain = "*";
152+ type = "hard";
153+ item = "nofile";
154+ value = "1000000";
155+ }
156+ ];
157+158+ age.secrets.validator-identity = {
159+ file = ../../secrets/validator-identity.age;
160+ owner = "sol";
161+ group = "sol";
162+ };
163+ services.ambient-validator = {
164+ enable = true;
165+ package = agave.packages.${system}.ambient-validator;
166+ # this needs to be a secret
167+ identityKeypair = config.age.secrets.validator-identity.path;
168+ rpcBindAddress = "0.0.0.0";
169+ geyserPluginConfig = {
170+ libpath = "${agave.packages.${system}.yellowstone-geyser}/lib/libyellowstone_grpc_geyser.so";
171+ log = {
172+ level = "info";
173+ };
174+ tokio = {
175+ worker_threads = 4;
176+ affinity = null;
177+ };
178+ grpc = {
179+ address = "0.0.0.0:10000";
180+ };
181+ };
182+ };
183+ # Copy the NixOS configuration file and link it from the resulting system
184+ # (/run/current-system/configuration.nix). This is useful in case you
185+ # accidentally delete configuration.nix.
186+ # system.copySystemConfiguration = true;
187+188+ # This option defines the first version of NixOS you have installed on this particular machine,
189+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
190+ #
191+ # Most users should NEVER change this value after the initial install, for any reason,
192+ # even if you've upgraded your system to a new NixOS release.
193+ #
194+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
195+ # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
196+ # to actually do that.
197+ #
198+ # This value being lower than the current NixOS release does NOT mean your system is
199+ # out of date, out of support, or vulnerable.
200+ #
201+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
202+ # and migrated your data accordingly.
203+ #
204+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
205+ system.stateVersion = "25.11"; # Did you read the comment?
206+207+}
···1+# Edit this configuration file to define what should be installed on
2+## your system. Help is available in the configuration.nix(5) man page, on
3+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
4+5+{ ... }:
6+{
7+ imports = [
8+ # Include the results of the hardware scan.
9+ ./hardware-configuration.nix
10+ ./boot.nix
11+ ./networking.nix
12+ #./gui.nix
13+ ./packages.nix
14+ ./services.nix
15+ ];
16+17+ nixpkgs.config.allowUnfree = true;
18+19+ # Set your time zone.
20+ time.timeZone = "America/Chicago";
21+22+ # Select internationalisation properties.
23+ i18n.defaultLocale = "en_US.UTF-8";
24+ # console = {
25+ # font = "Lat2-Terminus16";
26+ # keyMap = "us";
27+ # useXkbConfig = true; # use xkb.options in tty.
28+ # };
29+30+ # Automatic doc cache generation
31+ documentation.man.generateCaches = true;
32+33+ # Automatic system upgrades
34+ system.autoUpgrade = {
35+ enable = true;
36+ dates = "09:00";
37+ randomizedDelaySec = "45min";
38+ };
39+40+ # Automatic Garbage Collection
41+ nix.gc.automatic = true;
42+ nix.gc.options = "--delete-older-than 8d";
43+44+ # This option defines the first version of NixOS you have installed on this particular machine,
45+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
46+ #
47+ # Most users should NEVER change this value after the initial install, for any reason,
48+ # even if you've upgraded your system to a new NixOS release.
49+ #
50+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
51+ # so changing it will NOT upgrade your system.
52+ #
53+ # This value being lower than the current NixOS release does NOT mean your system is
54+ # out of date, out of support, or vulnerable.
55+ #
56+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
57+ # and migrated your data accordingly.
58+ #
59+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
60+ system.stateVersion = "23.11"; # Did you read the comment?
61+62+}
···1+# This file has been auto-generated by i3-config-wizard(1).
2+# It will not be overwritten, so edit it as you like.
3+#
4+# Should you change your keyboard layout some time, delete
5+# this file and re-run i3-config-wizard(1).
6+#
7+8+# i3 config file (v4)
9+#
10+# Please see https://i3wm.org/docs/userguide.html for a complete reference!
11+12+set $mod Mod4
13+14+# Font for window titles. Will also be used by the bar unless a different font
15+# is used in the bar {} block below.
16+font pango:monospace 8
17+18+# This font is widely installed, provides lots of unicode glyphs, right-to-left
19+# text rendering and scalability on retina/hidpi displays (thanks to pango).
20+#font pango:DejaVu Sans Mono 8
21+22+# Start XDG autostart .desktop files using dex. See also
23+# https://wiki.archlinux.org/index.php/XDG_Autostart
24+exec --no-startup-id dex --autostart --environment i3
25+26+# The combination of xss-lock, nm-applet and pactl is a popular choice, so
27+# they are included here as an example. Modify as you see fit.
28+29+# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
30+# screen before suspend. Use loginctl lock-session to lock your screen.
31+exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
32+33+# NetworkManager is the most popular way to manage wireless networks on Linux,
34+# and nm-applet is a desktop environment-independent system tray GUI for it.
35+exec --no-startup-id nm-applet
36+37+# Use pactl to adjust volume in PulseAudio.
38+set $refresh_i3status killall -SIGUSR1 i3status
39+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
40+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
41+bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
42+bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
43+44+# Use Mouse+$mod to drag floating windows to their wanted position
45+floating_modifier $mod
46+47+# move tiling windows via drag & drop by left-clicking into the title bar,
48+# or left-clicking anywhere into the window while holding the floating modifier.
49+tiling_drag modifier titlebar
50+51+# start a terminal
52+bindsym $mod+Return exec kitty
53+54+# kill focused window
55+bindsym $mod+Shift+q kill
56+57+# start dmenu (a program launcher)
58+bindsym $mod+d exec --no-startup-id dmenu_run
59+# A more modern dmenu replacement is rofi:
60+# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
61+# There also is i3-dmenu-desktop which only displays applications shipping a
62+# .desktop file. It is a wrapper around dmenu, so you need that installed.
63+# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
64+65+# change focus
66+bindsym $mod+h focus left
67+bindsym $mod+j focus down
68+bindsym $mod+k focus up
69+bindsym $mod+l focus right
70+71+72+# alternatively, you can use the cursor keys:
73+bindsym $mod+Left focus left
74+bindsym $mod+Down focus down
75+bindsym $mod+Up focus up
76+bindsym $mod+Right focus right
77+78+# move focused window
79+bindsym $mod+Shift+h move left
80+bindsym $mod+Shift+j move down
81+bindsym $mod+Shift+k move up
82+bindsym $mod+Shift+l move right
83+84+# alternatively, you can use the cursor keys:
85+bindsym $mod+Shift+Left move left
86+bindsym $mod+Shift+Down move down
87+bindsym $mod+Shift+Up move up
88+bindsym $mod+Shift+Right move right
89+90+# split in horizontal orientation
91+bindsym $mod+g split h
92+93+# split in vertical orientation
94+bindsym $mod+v split v
95+96+# enter fullscreen mode for the focused container
97+bindsym $mod+f fullscreen toggle
98+99+# change container layout (stacked, tabbed, toggle split)
100+bindsym $mod+s layout stacking
101+bindsym $mod+w layout tabbed
102+bindsym $mod+e layout toggle split
103+104+# toggle tiling / floating
105+bindsym $mod+Shift+space floating toggle
106+107+# change focus between tiling / floating windows
108+bindsym $mod+space focus mode_toggle
109+110+# focus the parent container
111+bindsym $mod+a focus parent
112+113+# focus the child container
114+#bindsym $mod+d focus child
115+116+# Define names for default workspaces for which we configure key bindings later on.
117+# We use variables to avoid repeating the names in multiple places.
118+set $ws1 "1"
119+set $ws2 "2"
120+set $ws3 "3"
121+set $ws4 "4"
122+set $ws5 "5"
123+set $ws6 "6"
124+set $ws7 "7"
125+set $ws8 "8"
126+set $ws9 "9"
127+set $ws10 "10"
128+129+# switch to workspace
130+bindsym $mod+1 workspace number $ws1
131+bindsym $mod+2 workspace number $ws2
132+bindsym $mod+3 workspace number $ws3
133+bindsym $mod+4 workspace number $ws4
134+bindsym $mod+5 workspace number $ws5
135+bindsym $mod+6 workspace number $ws6
136+bindsym $mod+7 workspace number $ws7
137+bindsym $mod+8 workspace number $ws8
138+bindsym $mod+9 workspace number $ws9
139+bindsym $mod+0 workspace number $ws10
140+# Tab navigation
141+bindsym $mod+Tab workspace next
142+bindsym $mod+Shift+Tab workspace prev
143+144+# move focused container to workspace
145+bindsym $mod+Shift+1 move container to workspace number $ws1
146+bindsym $mod+Shift+2 move container to workspace number $ws2
147+bindsym $mod+Shift+3 move container to workspace number $ws3
148+bindsym $mod+Shift+4 move container to workspace number $ws4
149+bindsym $mod+Shift+5 move container to workspace number $ws5
150+bindsym $mod+Shift+6 move container to workspace number $ws6
151+bindsym $mod+Shift+7 move container to workspace number $ws7
152+bindsym $mod+Shift+8 move container to workspace number $ws8
153+bindsym $mod+Shift+9 move container to workspace number $ws9
154+bindsym $mod+Shift+0 move container to workspace number $ws10
155+156+# reload the configuration file
157+bindsym $mod+Shift+c reload
158+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
159+bindsym $mod+Shift+r restart
160+# exit i3 (logs you out of your X session)
161+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
162+163+# resize window (you can also use the mouse for that)
164+mode "resize" {
165+ # These bindings trigger as soon as you enter the resize mode
166+167+ # Pressing left will shrink the window’s width.
168+ # Pressing right will grow the window’s width.
169+ # Pressing up will shrink the window’s height.
170+ # Pressing down will grow the window’s height.
171+ bindsym h resize shrink width 10 px or 10 ppt
172+ bindsym j resize grow height 10 px or 10 ppt
173+ bindsym k resize shrink height 10 px or 10 ppt
174+ bindsym l resize grow width 10 px or 10 ppt
175+176+ # same bindings, but for the arrow keys
177+ bindsym Left resize shrink width 10 px or 10 ppt
178+ bindsym Down resize grow height 10 px or 10 ppt
179+ bindsym Up resize shrink height 10 px or 10 ppt
180+ bindsym Right resize grow width 10 px or 10 ppt
181+182+ # back to normal: Enter or Escape or $mod+r
183+ bindsym Return mode "default"
184+ bindsym Escape mode "default"
185+ bindsym $mod+r mode "default"
186+}
187+188+bindsym $mod+r mode "resize"
189+190+# Start i3bar to display a workspace bar (plus the system information i3status
191+# finds out, if available)
192+bar {
193+ status_command i3status
194+}
195+196+exec barrier
···7-- Config for Nord, which I usually use
8-- vim.g.nord_italic = false
9-- vim.g.nord_bold = false
10---vim.opt.background = "light"
11-vim.opt.background = "dark"
0000000001213-- Formatting and vim config
14vim.opt.expandtab = true
···7-- Config for Nord, which I usually use
8-- vim.g.nord_italic = false
9-- vim.g.nord_bold = false
10+local known_hosts = {
11+ ["aleister.packetlost.dev"] = "light",
12+ ["aleister.local"] = "light",
13+ ["accelerator"] = "light"
14+}
15+local background = known_hosts[vim.loop.os_gethostname()]
16+if not background then
17+ background = "dark"
18+end
19+vim.opt.background = background
20+--vim.opt.background = "dark"
2122-- Formatting and vim config
23vim.opt.expandtab = true