Compare commits
	
		
			1 Commits
		
	
	
		
			gitea-vask
			...
			elysium
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 74b770545e | 
							
								
								
									
										1
									
								
								base.nix
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								base.nix
									
									
									
									
									
								
							| @@ -67,6 +67,7 @@ | |||||||
|     wget |     wget | ||||||
|  |  | ||||||
|     kitty.terminfo |     kitty.terminfo | ||||||
|  |     foot.terminfo | ||||||
|   ]; |   ]; | ||||||
|  |  | ||||||
|   programs.zsh.enable = true; |   programs.zsh.enable = true; | ||||||
|   | |||||||
| @@ -108,6 +108,8 @@ | |||||||
|       ildkule = stableNixosConfig "ildkule" { }; |       ildkule = stableNixosConfig "ildkule" { }; | ||||||
|       #ildkule-unstable = unstableNixosConfig "ildkule" { }; |       #ildkule-unstable = unstableNixosConfig "ildkule" { }; | ||||||
|       shark = stableNixosConfig "shark" { }; |       shark = stableNixosConfig "shark" { }; | ||||||
|  |        | ||||||
|  |       elysium = stableNixosConfig "elysium" { }; | ||||||
|  |  | ||||||
|       brzeczyszczykiewicz = stableNixosConfig "brzeczyszczykiewicz" { |       brzeczyszczykiewicz = stableNixosConfig "brzeczyszczykiewicz" { | ||||||
|         modules = [ |         modules = [ | ||||||
|   | |||||||
							
								
								
									
										133
									
								
								hosts/elysium/base.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								hosts/elysium/base.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,133 @@ | |||||||
|  | { config, lib, pkgs, inputs, values, ... }: | ||||||
|  |  | ||||||
|  | { | ||||||
|  |   imports = [ | ||||||
|  |     ./modules/snakeoil-certs.nix | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   networking.domain = "pvv.ntnu.no"; | ||||||
|  |   networking.useDHCP = false; | ||||||
|  |   # networking.search = [ "pvv.ntnu.no" "pvv.org" ]; | ||||||
|  |   # networking.nameservers = lib.mkDefault [ "129.241.0.200" "129.241.0.201" ]; | ||||||
|  |   # networking.tempAddresses = lib.mkDefault "disabled"; | ||||||
|  |   # networking.defaultGateway = values.hosts.gateway; | ||||||
|  |  | ||||||
|  |   systemd.network.enable = true; | ||||||
|  |  | ||||||
|  |   services.resolved = { | ||||||
|  |     enable = lib.mkDefault true; | ||||||
|  |     dnssec = "false"; # Supposdly this keeps breaking and the default is to allow downgrades anyways... | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   time.timeZone = "Europe/Oslo"; | ||||||
|  |  | ||||||
|  |   i18n.defaultLocale = "en_US.UTF-8"; | ||||||
|  |   console = { | ||||||
|  |     font = "Lat2-Terminus16"; | ||||||
|  |     keyMap = "no"; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   system.autoUpgrade = { | ||||||
|  |     enable = true; | ||||||
|  |     flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git"; | ||||||
|  |     flags = [ | ||||||
|  |       "--update-input" "nixpkgs" | ||||||
|  |       "--update-input" "nixpkgs-unstable" | ||||||
|  |       "--no-write-lock-file" | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  |   nix.gc.automatic = true; | ||||||
|  |   nix.gc.options = "--delete-older-than 2d"; | ||||||
|  |  | ||||||
|  |   nix.settings.experimental-features = [ "nix-command" "flakes" ]; | ||||||
|  |  | ||||||
|  |   /* This makes commandline tools like | ||||||
|  |   ** nix run nixpkgs#hello | ||||||
|  |   ** and nix-shell -p hello | ||||||
|  |   ** use the same channel the system | ||||||
|  |   ** was built with | ||||||
|  |   */ | ||||||
|  |   nix.registry = { | ||||||
|  |     nixpkgs.flake = inputs.nixpkgs; | ||||||
|  |   }; | ||||||
|  |   nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; | ||||||
|  |  | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     file | ||||||
|  |     git | ||||||
|  |     gnupg | ||||||
|  |     htop | ||||||
|  |     nano | ||||||
|  |     ripgrep | ||||||
|  |     rsync | ||||||
|  |     screen | ||||||
|  |     tmux | ||||||
|  |     vim | ||||||
|  |     wget | ||||||
|  |  | ||||||
|  |     kitty.terminfo | ||||||
|  |     foot.terminfo | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   programs.zsh.enable = true; | ||||||
|  |  | ||||||
|  |   users.groups."drift".name = "drift"; | ||||||
|  |  | ||||||
|  |   # Trusted users on the nix builder machines | ||||||
|  |   users.groups."nix-builder-users".name = "nix-builder-users"; | ||||||
|  |  | ||||||
|  |   services.openssh = { | ||||||
|  |     enable = true; | ||||||
|  |     extraConfig = '' | ||||||
|  |       PubkeyAcceptedAlgorithms=+ssh-rsa | ||||||
|  |     ''; | ||||||
|  |     settings.PermitRootLogin = "yes"; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   # nginx return 444 for all nonexistent virtualhosts | ||||||
|  |  | ||||||
|  |   systemd.services.nginx.after = [ "generate-snakeoil-certs.service" ]; | ||||||
|  |  | ||||||
|  |   environment.snakeoil-certs = lib.mkIf config.services.nginx.enable { | ||||||
|  |     "/etc/certs/nginx" = { | ||||||
|  |       owner = "nginx"; | ||||||
|  |       group = "nginx"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   services.nginx = { | ||||||
|  |     recommendedTlsSettings = true; | ||||||
|  |     recommendedProxySettings = true; | ||||||
|  |     recommendedOptimisation = true; | ||||||
|  |     recommendedGzipSettings = true; | ||||||
|  |  | ||||||
|  |     appendConfig = '' | ||||||
|  |       pcre_jit on; | ||||||
|  |       worker_processes auto; | ||||||
|  |       worker_rlimit_nofile 100000; | ||||||
|  |     ''; | ||||||
|  |     eventsConfig = '' | ||||||
|  |       worker_connections 2048; | ||||||
|  |       use epoll; | ||||||
|  |       multi_accept on; | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   systemd.services.nginx.serviceConfig = lib.mkIf config.services.nginx.enable { | ||||||
|  |     LimitNOFILE = 65536; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   services.nginx.virtualHosts."_" = lib.mkIf config.services.nginx.enable { | ||||||
|  |     sslCertificate = "/etc/certs/nginx.crt"; | ||||||
|  |     sslCertificateKey = "/etc/certs/nginx.key"; | ||||||
|  |     addSSL = true; | ||||||
|  |     extraConfig = "return 444;"; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   networking.firewall.allowedTCPPorts = lib.mkIf config.services.nginx.enable [ 80 443 ]; | ||||||
|  |  | ||||||
|  |   security.acme = { | ||||||
|  |     acceptTerms = true; | ||||||
|  |     defaults.email = "drift@pvv.ntnu.no"; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										167
									
								
								hosts/elysium/configuration.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								hosts/elysium/configuration.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,167 @@ | |||||||
|  | { config, pkgs, values, ... }: | ||||||
|  | { | ||||||
|  |   imports = [ | ||||||
|  |       # Include the results of the hardware scan. | ||||||
|  |       ./hardware-configuration.nix | ||||||
|  |       ./nvidia.nix | ||||||
|  |       ./base.nix | ||||||
|  |       ../../misc/metrics-exporters.nix | ||||||
|  |     ]; | ||||||
|  |  | ||||||
|  |   sops.defaultSopsFile = ../../secrets/elysium/elysium.yaml; | ||||||
|  |   sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; | ||||||
|  |   sops.age.keyFile = "/var/lib/sops-nix/key.txt"; | ||||||
|  |   sops.age.generateKey = true; | ||||||
|  |  | ||||||
|  |   boot.loader.systemd-boot.enable = true; | ||||||
|  |   boot.loader.efi.canTouchEfiVariables = true; | ||||||
|  |  | ||||||
|  |   networking.hostName = "elysium"; # Define your hostname. | ||||||
|  |  | ||||||
|  |   #update this to actual network card. | ||||||
|  |   systemd.network.networks."30-ens18" = values.defaultNetworkConfig // { | ||||||
|  |     matchConfig.Name = "ens18"; | ||||||
|  |     address = with values.hosts.elysium; [ (ipv4 + "/25") (ipv6 + "/64") ]; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   # List packages installed in system profile | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |           zsh | ||||||
|  |           bash | ||||||
|  |           fish | ||||||
|  |           tcsh | ||||||
|  |  | ||||||
|  |           alpine | ||||||
|  |           mutt | ||||||
|  |           mutt-ics | ||||||
|  |           mutt-wizard | ||||||
|  |           notmuch | ||||||
|  |           mailutils | ||||||
|  |           procmail | ||||||
|  |  | ||||||
|  |           irssi | ||||||
|  |           weechat | ||||||
|  |           weechatScripts.edit | ||||||
|  |  | ||||||
|  |           coreutils-full | ||||||
|  |           diffutils | ||||||
|  |           findutils | ||||||
|  |           ripgrep | ||||||
|  |           cvs | ||||||
|  |           gawk | ||||||
|  |           git | ||||||
|  |           gnupg | ||||||
|  |           gnused | ||||||
|  |           groff | ||||||
|  |           less | ||||||
|  |           p7zip | ||||||
|  |           rcs | ||||||
|  |           screen | ||||||
|  |           tmux | ||||||
|  |           tree | ||||||
|  |           unzip | ||||||
|  |           zip | ||||||
|  |  | ||||||
|  |           emacs | ||||||
|  |           helix | ||||||
|  |           joe | ||||||
|  |           micro | ||||||
|  |           nano | ||||||
|  |           neovim | ||||||
|  |  | ||||||
|  |           autossh | ||||||
|  |           inetutils | ||||||
|  |           lynx | ||||||
|  |           mosh | ||||||
|  |           rsync | ||||||
|  |           w3m | ||||||
|  |  | ||||||
|  |           clang | ||||||
|  |           gcc | ||||||
|  |           guile | ||||||
|  |           lua | ||||||
|  |           perl | ||||||
|  |           php | ||||||
|  |           python3 | ||||||
|  |           (python3.withPackages (ps: with ps; [ | ||||||
|  |             numpy | ||||||
|  |             sympy | ||||||
|  |             scipy | ||||||
|  |             requests | ||||||
|  |             imageio | ||||||
|  |             pillow | ||||||
|  |             httpx | ||||||
|  |             pycryptodome | ||||||
|  |             pandas | ||||||
|  |             matplotlib | ||||||
|  |           ])) | ||||||
|  |           ruby | ||||||
|  |           tcl | ||||||
|  |  | ||||||
|  |  | ||||||
|  |           openscad | ||||||
|  |           cura | ||||||
|  |           where-is-my-sddm-theme | ||||||
|  |           firefox | ||||||
|  |  | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   fonts.packages = with pkgs; [ | ||||||
|  |     noto-fonts | ||||||
|  |     noto-fonts-cjk | ||||||
|  |     noto-fonts-emoji | ||||||
|  |     liberation_ttf | ||||||
|  |     fira-code | ||||||
|  |     fira-code-symbols | ||||||
|  |     mplus-outline-fonts.githubRelease | ||||||
|  |     dina-font | ||||||
|  |     proggyfonts | ||||||
|  |     nerdfonts | ||||||
|  |     ubuntu_font_family | ||||||
|  |  | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   # Enable CUPS to print documents. | ||||||
|  |   services.printing.enable = true; | ||||||
|  |  | ||||||
|  |   security.polkit.enable = true; | ||||||
|  |    | ||||||
|  |   services.displayManager = { | ||||||
|  |     enable = true; | ||||||
|  |     sessionPackages = with pkgs; [ sway ]; | ||||||
|  |     sddm = { | ||||||
|  |       enable = true; | ||||||
|  |       theme = "${pkgs.where-is-my-sddm-theme}"; | ||||||
|  |       wayland.enable = true; | ||||||
|  |       wayland.compositor = "kwin"; | ||||||
|  |       autoNumlock = true; | ||||||
|  |       enableHidpi = true; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   services.desktopManager.plasma6.enable = true; | ||||||
|  |   services.desktopManager.plasma6.enableQt5Integration = true; | ||||||
|  |  | ||||||
|  |   qt.platformTheme = "kde"; | ||||||
|  |  | ||||||
|  |   # Configure keymap in X11 | ||||||
|  |   services.xserver.xkb = { | ||||||
|  |     layout = "us,no"; | ||||||
|  |     variant = ","; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   # List services that you want to enable: | ||||||
|  |  | ||||||
|  |   # 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 = "23.05"; # Did you read the comment? | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										42
									
								
								hosts/elysium/hardware-configuration.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								hosts/elysium/hardware-configuration.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | # Do not modify this file!  It was generated by ‘nixos-generate-config’ | ||||||
|  | # and may be overwritten by future invocations.  Please make changes | ||||||
|  | # to /etc/nixos/configuration.nix instead. | ||||||
|  | { config, lib, pkgs, modulesPath, ... }: | ||||||
|  |  | ||||||
|  | { | ||||||
|  |   #imports = | ||||||
|  |   #  [ (modulesPath + "/profiles/qemu-guest.nix") | ||||||
|  |   #  ]; | ||||||
|  |   imports = | ||||||
|  |     [ (modulesPath + "/installer/scan/not-detected.nix") | ||||||
|  |     ]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; | ||||||
|  |   boot.initrd.kernelModules = [ ]; | ||||||
|  |   boot.kernelModules = [ ]; | ||||||
|  |   boot.extraModulePackages = [ ]; | ||||||
|  |  | ||||||
|  |   fileSystems."/" = | ||||||
|  |     { device = "/dev/disk/by-uuid/224c45db-9fdc-45d4-b3ad-aaf20b3efa8a"; | ||||||
|  |       fsType = "ext4"; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |   fileSystems."/boot" = | ||||||
|  |     { device = "/dev/disk/by-uuid/CC37-F5FE"; | ||||||
|  |       fsType = "vfat"; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |   swapDevices = | ||||||
|  |     [ { device = "/dev/disk/by-uuid/a1ce3234-78b1-4565-9643-f4a05004424f"; } | ||||||
|  |     ]; | ||||||
|  |  | ||||||
|  |   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking | ||||||
|  |   # (the default) this is the recommended approach. When using systemd-networkd it's | ||||||
|  |   # still possible to use this option, but it's recommended to use it in conjunction | ||||||
|  |   # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. | ||||||
|  |   networking.useDHCP = lib.mkDefault true; | ||||||
|  |   # networking.interfaces.ens18.useDHCP = lib.mkDefault true; | ||||||
|  |  | ||||||
|  |   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||||
|  | } | ||||||
							
								
								
									
										52
									
								
								hosts/elysium/nvidia.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								hosts/elysium/nvidia.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | { | ||||||
|  |   # Enable OpenGL | ||||||
|  |   hardware.opengl = { | ||||||
|  |     enable = true; | ||||||
|  |     driSupport = true; | ||||||
|  |     driSupport32Bit = true; | ||||||
|  |   }; | ||||||
|  |    | ||||||
|  |   # Load nvidia driver for Xorg and Wayland | ||||||
|  |   services.xserver.videoDrivers = ["nvidia"]; | ||||||
|  |   #boot with nvidia kernel module | ||||||
|  |   boot.initrd.kernelModules = [ "nvidia" ]; | ||||||
|  |   hardware.nvidia = { | ||||||
|  |     # Modesetting is required. | ||||||
|  |     modesetting.enable = true; | ||||||
|  |       # Nvidia power management. Experimental, and can cause sleep/suspend to fail. | ||||||
|  |       #powerManagement.enable = true; | ||||||
|  |       # Fine-grained power management. Turns off GPU when not in use. | ||||||
|  |       # Experimental and only works on modern Nvidia GPUs (Turing or newer). | ||||||
|  |       #powerManagement.finegrained = true; | ||||||
|  |  | ||||||
|  |       # Use the NVidia open source kernel module (not to be confused with the | ||||||
|  |       # independent third-party "nouveau" open source driver). | ||||||
|  |       # Support is limited to the Turing and later architectures. Full list of  | ||||||
|  |       # supported GPUs is at:  | ||||||
|  |       # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus  | ||||||
|  |       # Only available from driver 515.43.04+ | ||||||
|  |       # Currently alpha-quality/buggy, so false is currently the recommended setting. | ||||||
|  |       open = false; | ||||||
|  |  | ||||||
|  |       # Enable the Nvidia settings menu, | ||||||
|  |       # accessible via `nvidia-settings`. | ||||||
|  |       nvidiaSettings = true; | ||||||
|  |  | ||||||
|  |       # Optionally, you may need to select the appropriate driver version for your specific GPU. | ||||||
|  |       package = config.boot.kernelPackages.nvidiaPackages.legacy_470; | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     # Enable the CUDA toolkit | ||||||
|  |     #install packages  | ||||||
|  |     environment.systemPackages = with pkgs; [ | ||||||
|  |       #cudaPackages.cudnn | ||||||
|  |       #cudaPackages.cudatoolkit | ||||||
|  |        | ||||||
|  |       nvtopPackages.nvidia | ||||||
|  |        | ||||||
|  |     ]; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   } | ||||||
		Reference in New Issue
	
	Block a user