···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-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
···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