init
This commit is contained in:
		
						commit
						d91e31b078
					
				
							
								
								
									
										194
									
								
								configuration.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								configuration.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,194 @@ | ||||
| { config, pkgs, fetchFromGitea, ... }: | ||||
| 
 | ||||
| { | ||||
| 	system.stateVersion = "24.05"; | ||||
| 
 | ||||
| 	imports = [ | ||||
| 		./hardware-configuration.nix | ||||
| 	]; | ||||
| 	 | ||||
| 	# Allow unfree packages | ||||
| 	nixpkgs.config.allowUnfree = true; | ||||
| 
 | ||||
| 	## EARLY LEVEL | ||||
| 	# Firmware | ||||
| 	services.fwupd.enable = true; | ||||
| 	# Bootloader & Booting | ||||
| 	boot.loader.systemd-boot.enable = true; | ||||
| 	boot.loader.efi.canTouchEfiVariables = true; | ||||
| 	boot.initrd.luks.devices."luks-970d527c-57c2-4b6a-9d56-32e91f824d80".device = "/dev/disk/by-uuid/970d527c-57c2-4b6a-9d56-32e91f824d80"; | ||||
| 	boot.tmp.cleanOnBoot = true; | ||||
| 	# Other low-level stuff | ||||
| 	networking.hostName = "macabre"; | ||||
| 	networking.networkmanager.enable = true; | ||||
| 	# Geo-Customisation | ||||
| 	time.timeZone = "Europe/Berlin"; | ||||
| 	i18n.defaultLocale = "de_DE.UTF-8"; | ||||
| 	i18n.extraLocaleSettings = { | ||||
| 		LC_ADDRESS = "de_DE.UTF-8"; | ||||
| 		LC_IDENTIFICATION = "de_DE.UTF-8"; | ||||
| 		LC_MEASUREMENT = "de_DE.UTF-8"; | ||||
| 		LC_MONETARY = "de_DE.UTF-8"; | ||||
| 		LC_NAME = "de_DE.UTF-8"; | ||||
| 		LC_NUMERIC = "de_DE.UTF-8"; | ||||
| 		LC_PAPER = "de_DE.UTF-8"; | ||||
| 		LC_TELEPHONE = "de_DE.UTF-8"; | ||||
| 		LC_TIME = "de_DE.UTF-8"; | ||||
| 	}; | ||||
| 	console.keyMap = "de"; | ||||
| 
 | ||||
| 	## SYSTEM LEVEL | ||||
| 	# Graphic fu | ||||
| 	services.xserver.enable = true; | ||||
| 	services.xserver.displayManager.gdm.enable = true; | ||||
| 	services.xserver.desktopManager.gnome.enable = true; | ||||
| 	services.xserver.desktopManager.gnome.extraGSettingsOverrides = '' | ||||
| 	[org.gnome.desktop.wm.preferences] | ||||
| 	button-layout="appmenu:minimize,maximize,close" | ||||
| 	''; | ||||
| 	services.xserver.xkb = { | ||||
| 		layout = "de"; | ||||
| 		variant = ""; | ||||
| 	}; | ||||
| 	# CUPS | ||||
| 	services.printing.enable = true; | ||||
| 	services.printing.drivers = [ pkgs.gutenprint pkgs.gutenprintBin pkgs.epson-escpr pkgs.epson-escpr2 ]; | ||||
| 	services.avahi = { | ||||
| 		enable = true; | ||||
| 		nssmdns4 = true; | ||||
| 		openFirewall = true; | ||||
| 	}; | ||||
| 	# Sound | ||||
| 	services.pipewire = { | ||||
| 		enable = true; | ||||
| 		alsa.enable = true; | ||||
| 		alsa.support32Bit = true; | ||||
| 		pulse.enable = true; | ||||
| 	}; | ||||
| 	security.rtkit.enable = true; | ||||
| 	# Fingerprint reader support | ||||
| 	services.fprintd.enable = true; | ||||
| 	# Firewall | ||||
| 	networking.firewall.enable = true; | ||||
| 	networking.firewall.allowedTCPPorts = [ ]; | ||||
| 	networking.firewall.allowedUDPPorts = [ 13337 ]; | ||||
| 	# VPN | ||||
| 	networking.wireguard.enable = true; | ||||
| 	networking.wireguard.interfaces = { | ||||
| 		lynx = { | ||||
| 			ips = [ "10.42.250.16/32" ]; | ||||
| 			listenPort = 51820; | ||||
| 			privateKeyFile = "/etc/wireguard/lynx.key"; | ||||
| 			peers = [{ | ||||
| 				publicKey = "lACsN0V8JheoQq7a/tCxj0NykqHy7okoYGMvqeyOKHI="; | ||||
| 				allowedIPs = [ "10.42.0.0/16" ]; | ||||
| 				endpoint = "lynx.maride.cc:13337"; | ||||
| 				persistentKeepalive = 10; | ||||
| 			}]; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	## USER LEVEL | ||||
| 	users.users.maride = { | ||||
| 		isNormalUser = true; | ||||
| 		description = "maride"; | ||||
| 		extraGroups = [ "networkmanager" "wheel" ]; | ||||
| 		packages = with pkgs; [ | ||||
| 			thunderbird | ||||
| 			spotify | ||||
| 			keepassxc | ||||
| 			obsidian | ||||
| 			vscode | ||||
| 			signal-desktop | ||||
| 			element-desktop | ||||
| 			vlc | ||||
| 			virt-manager | ||||
| 			gimp | ||||
| 			inkscape | ||||
| 			libreoffice | ||||
| 			steam | ||||
| 			yubikey-manager-qt | ||||
| 		]; | ||||
| 	}; | ||||
| 
 | ||||
| 	## PACKAGE LEVEL | ||||
| 	environment.systemPackages = with pkgs; [ | ||||
| 		htop | ||||
| 		neovim | ||||
| 		alacritty | ||||
| 		tmux | ||||
| 		wireguard-tools | ||||
| 		gnomeExtensions.wireguard-vpn-extension | ||||
| 		mtr | ||||
| 		docker | ||||
| 		git | ||||
| 		python3 | ||||
| 		dig | ||||
| 		fprintd | ||||
| 		usbutils | ||||
| 		pciutils | ||||
| 		nmap | ||||
| 		file | ||||
| 		tty-solitaire | ||||
| 		nushell | ||||
| 		mosh | ||||
| 		ghostty | ||||
| 		epson-escpr | ||||
| 		epson-escpr2 | ||||
| 		a52dec | ||||
| 	]; | ||||
| 	# GNOME-specific | ||||
| 	environment.gnome.excludePackages = with pkgs; [ | ||||
| 		gnome-music | ||||
| 		gnome-maps | ||||
| 		gnome-weather | ||||
| 		epiphany | ||||
| 		gnome-characters | ||||
| 		totem | ||||
| 		geary | ||||
| 		gnome-console | ||||
| 		gnome-tour | ||||
| 	]; | ||||
| 
 | ||||
| 	## PROGRAM LEVEL | ||||
| 	# Firefox | ||||
| 	programs.firefox { | ||||
| 		enable = true; | ||||
| 		languagePacks = [ "de" ]; | ||||
| 	} | ||||
| 	# Steam | ||||
| 	programs.steam = { | ||||
| 		enable = true; | ||||
| 		remotePlay.openFirewall = true; # Steam Remote Play | ||||
| 		dedicatedServer.openFirewall = true; # Source Dedicated Server | ||||
| 		localNetworkGameTransfers.openFirewall = true; # Steam Local Network Game Transfers | ||||
| 	}; | ||||
| 	# KVM & Docker | ||||
| 	virtualisation.docker.enable = true; | ||||
| 	virtualisation.libvirtd.enable = true; | ||||
| 	programs.virt-manager.enable = true; | ||||
| 	# Neovim | ||||
| 	programs.neovim = { | ||||
| 		viAlias = true; | ||||
| 		vimAlias = true; | ||||
| 	}; | ||||
| 
 | ||||
| 	## WILD WEST LEVEL | ||||
| 	# one cannot live without a good round of solitaire once in a while | ||||
| 	nixpkgs.overlays = [ | ||||
| 		( | ||||
| 			final: prev: { | ||||
| 				tty-solitaire = prev.tty-solitaire.overrideAttrs(old: { | ||||
| 					src = pkgs.fetchFromGitea { | ||||
| 						domain = "git.maride.cc"; | ||||
| 						owner = "maride"; | ||||
| 						repo = "tty-solitaire"; | ||||
| 						rev = "2024d53e48"; | ||||
| 						sha256 = "sha256-9d7Ex7g0QtbWJjyLmGc9UeynrVXALlmgK9mDqBtaql0="; | ||||
| 					}; | ||||
| 					patches = []; | ||||
| 				}); | ||||
| 			} | ||||
| 		 ) | ||||
| 	]; | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user