diff options
| author | Dylan <boss@tehbox.org> | 2026-10-17 21:53:43 +1300 |
|---|---|---|
| committer | Dylan <boss@tehbox.org> | 2026-10-17 21:53:43 +1300 |
| commit | 280e1bbe5e733128a451260685cc8ecd10a042a3 (patch) | |
| tree | 78bab82353bbfa00f9a781015e246c274a5c983b /modules/computers/nixy.nix | |
| parent | bcfc69e424802276cc52fb6e00fb4a42e9c37816 (diff) | |
| download | nixos-configuration-280e1bbe5e733128a451260685cc8ecd10a042a3.tar.gz nixos-configuration-280e1bbe5e733128a451260685cc8ecd10a042a3.zip | |
feat: Dendritic pattern
This re-write was done with the help of claude, and still needs a
decent amount of changes before it properly follows the dendritic
pattern
Diffstat (limited to 'modules/computers/nixy.nix')
| -rw-r--r-- | modules/computers/nixy.nix | 343 |
1 files changed, 343 insertions, 0 deletions
diff --git a/modules/computers/nixy.nix b/modules/computers/nixy.nix new file mode 100644 index 0000000..95820f5 --- /dev/null +++ b/modules/computers/nixy.nix @@ -0,0 +1,343 @@ +{ inputs, config, ... }: +let + nixos = config.flake.modules.nixos; + hm = config.flake.modules.homeManager; +in +{ + flake.nixosConfigurations.nixy = inputs.nixpkgs.lib.nixosSystem { + modules = [ nixos.nixy ]; + }; + + flake.modules.nixos.nixy = + # Edit this configuration file to define what should be installed on + # your system. Help is available in the configuration.nix(5) man page + # and in the NixOS manual (accessible by running ‘nixos-help’). + + { config, pkgs, ... }: + { + imports = + [ + nixos.teh-nix + nixos.my-pkgs + nixos.tuf + inputs.sops.nixosModules.sops + #inputs.spicetify-nix.nixosModules.default + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ]; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.boss = hm.boss; + + teh-nix.nix.enable = true; + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; [ + # stdenv.cc.cc + glib + glibc + nspr + nss + dbus + atk + cups + cairo + gtk3 + alsa-lib + expat + fontconfig + freetype + libgbm + libnotify + libsecret + libxkbcommon + mesa + pango + libX11 + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXi + libXrandr + libXrender + libXtst + libxcb + ]; + + # Use the systemd-boot EFI boot loader. + boot = { + loader.grub.enable = true; + loader.grub.device = "nodev"; + loader.grub.efiSupport = true; + loader.grub.enableCryptodisk = true; + # loader.grub.useOSProber = true; + loader.efi.canTouchEfiVariables = true; + kernel.sysctl."kernel.sysrq" = 502; + plymouth.enable = true; + }; + + + networking.hostName = "nixy"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + sops.defaultSopsFile = ../../secrets/general.yaml; + sops.defaultSopsFormat = "yaml"; + + sops.age.keyFile = "/home/boss/.config/sops/age/keys.txt"; + + sops.secrets = { + #"wg/nixnode/pub" = { }; + "wg/nixy/priv" = { + restartUnits = [ "nm-file-secret-agent.service" ]; + group = "networkmanager"; + mode = "440"; + }; + }; + + networking.firewall = { + allowedUDPPorts = [ 51820 ]; + allowedTCPPorts = [ 8081 ]; + }; + networking.networkmanager.ensureProfiles = { + profiles = { + wg-nixnode = { + connection = { + id = "wg-nixnode"; + autoconnect = "false"; + interface-name = "wg0"; + type = "wireguard"; + }; + ipv4 = { + address1 = "10.100.0.2/32"; + may-fail = "false"; + method = "manual"; + }; + ipv6 = { + method = "disabled"; + }; + wireguard = { + listen-port = "51820"; + private-key-flags = 1; + #private-key = "dummy"; + }; + proxy = { }; + "wireguard-peer./6bWy02DhOSjaeXk+ol5ATgEYDDJvL+mTO9SCNvfIUQ=" = { + allowed-ips = "0.0.0.0/0;"; + endpoint = "172.105.172.191:51820"; + persistent-keepalive = "25"; + }; + }; + }; + secrets.entries = [ + { + matchId = "wg-nixnode"; + matchType = "wireguard"; + matchSetting = "wireguard"; + key = "private-key"; + file = config.sops.secrets."wg/nixy/priv".path; + } + ]; + }; + + systemd.services."nm-file-secret-agent" = { + serviceConfig.User = "boss"; + }; + + + # Set your time zone. + time.timeZone = "NZ"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + #keyMap = "us"; + #useXkbConfig = true; # use xkbOptions in tty. + }; + + teh-nix.xorg = { + enable = true; + }; + + programs.hyprland = { + enable = false; + #package = inputs.hyprland.packages.${pkgs.system}.hyprland; + #portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland; + }; + + security.pam.services.swaylock = {}; + + # Enable CUPS to print documents. + services.printing.enable = true; + services.printing.drivers = with pkgs;[ + hplip + ]; + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + + # Enable sound. + #sound.enable = true; + services.pipewire = { + enable = true; + alsa.enable = false; + alsa.support32Bit = false; + pulse.enable = true; + }; + + services.upower.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + security.rtkit.enable = true; + services.libinput = { + enable = true; + mouse = { + accelProfile = "flat"; + }; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.boss = { + isNormalUser = true; + extraGroups = [ "wheel" "networkmanager" "input" "uinput" ]; + }; + + fonts.packages = with pkgs; [ + #(nerdfonts.override { fonts = [ "Cousine" ]; }) + nerd-fonts.cousine + ]; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; + [ + vim + firefox + pfetch + fastfetch + pinentry-gtk2 + git + nm-file-secret-agent + deploy-rs + ]; + documentation.dev.enable = true; + + hardware.graphics.enable32Bit = true; + programs.steam = { + enable = true; + package = pkgs.steam.override { + extraEnv = { + __NV_PRIME_RENDER_OFFLOAD=1; + __NV_PRIME_RENDER_OFFLOAD_PROVIDER="NVIDIA-G0"; + __GLX_VENDOR_LIBRARY_NAME="nvidia"; + __VK_LAYER_NV_optimus="NVIDIA_only"; + }; + }; + + extraCompatPackages = with pkgs; [ + proton-ge-bin + ]; + }; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + programs.gnupg = { + agent = { + enable = true; + pinentryPackage = pkgs.pinentry-gtk2; + }; + # enableSSHSupport = true; + }; + + hardware.bluetooth.enable = true; # enables support for Bluetooth + hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot + services.blueman.enable = true; + + systemd.tmpfiles.rules = [ + "f /var/lib/systemd/linger/boss" # enables lingering + ]; + + # programs.dconf.enable = true; + + + services.ratbagd.enable = true; + + # xdg.portal.enable = true; + # services.flatpak.enable = true; + + stylix = { + enable = true; + + base16Scheme = "${pkgs.base16-schemes}/share/themes/material-palenight.yaml"; + + image = ../../wallpaper.png; + targets.grub.useWallpaper = true; + + opacity = { + terminal = 0.8; + }; + + polarity = "dark"; + + fonts = { + monospace = { + package = pkgs.nerd-fonts.cousine; + name = "Cousine Nerd Font Mono"; + }; + + serif = { + package = pkgs.dejavu_fonts; + name = "DejaVu Serif"; + }; + + sansSerif = { + package = pkgs.dejavu_fonts; + name = "DejaVu Sans"; + }; + + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + + sizes = { + terminal = 10; + applications = 10; + desktop = 10; + popups = 10; + }; + }; + + cursor = { + package = pkgs.nordzy-cursor-theme; + name = "Nordzy-cursors"; + size = 20; + }; + }; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "24.05"; # Did you read the comment? + + }; +} |
