diff options
| author | Tim Keller <tjk@tjkeller.xyz> | 2024-09-29 22:54:38 -0500 | 
|---|---|---|
| committer | Tim Keller <tjk@tjkeller.xyz> | 2024-09-29 22:54:38 -0500 | 
| commit | f9d4d2bbd82bd66bebff85420df6653a6966ee9a (patch) | |
| tree | dee057520e7c6f32234066786e447b9d05ebd17b /configuration.nix | |
| download | nixos-f9d4d2bbd82bd66bebff85420df6653a6966ee9a.tar.xz nixos-f9d4d2bbd82bd66bebff85420df6653a6966ee9a.zip | |
initial commit
Diffstat (limited to 'configuration.nix')
| -rw-r--r-- | configuration.nix | 244 | 
1 files changed, 244 insertions, 0 deletions
| diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..c98d0b6 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,244 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config, lib, pkgs, ... }: + +{ +	imports = +		[ # Include the results of the hardware scan. +			./hardware-configuration.nix +		]; + +	nix.settings = { +		experimental-features = [ "nix-command" "flakes" ]; +	use-xdg-base-directories = true; +	}; +	nix.gc = { +		automatic = true; +		dates = "weekly"; +		options = "--delete-older-than 30d"; +	}; + +	# Use the GRUB 2 boot loader. +	boot.loader.grub.enable = true; +	# boot.loader.grub.efiSupport = true; +	# boot.loader.grub.efiInstallAsRemovable = true; +	# boot.loader.efi.efiSysMountPoint = "/boot/efi"; +	# Define on which hard drive you want to install Grub. +	boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only + +	# networking.hostName = "nixos"; # 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. + +	# Set your time zone. +	time.timeZone = "America/Chicago"; + +	# 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 xkb.options in tty. +	# }; + +	# Enable the X11 windowing system. +	services.xserver.enable = true; +	services.xserver.displayManager.startx.enable = true; +	services.xserver.windowManager.awesome.enable = true; + + + + +	# Configure keymap in X11 +	services.xserver.xkb.layout = "us"; +	# services.xserver.xkb.options = "eurosign:e,caps:escape"; + +	# Enable CUPS to print documents. +	# services.printing.enable = true; + +	# Enable sound. +	# hardware.pulseaudio.enable = true; +	# OR +	services.pipewire = { +		enable = true; +		pulse.enable = true; +	}; + +	# Enable touchpad support (enabled default in most desktopManager). +	services.libinput.enable = true; + +	#nixpkgs.overlays = [ +	#	# startx xdg patch +	#	(final: prev: { +	#		xorg.xinit = prev.xorg.xinit.overrideAttrs (old: { +	#			# Apply the patch +	#			patches = old.patches or [] ++ [ +	#				./startx-xdg.patch +	#			]; +	#		}); +	#	}) +	#]; + + +	# Define a user account. Don't forget to set a password with ‘passwd’. +	users.users.timmy = { +		description = "Tim Keller"; +		isNormalUser = true; +		extraGroups = [ "wheel" "docker" ]; # Enable ‘sudo’ for the user. +		packages = with pkgs; [ +			firefox +			tree +			alacritty +			arandr +			cups +			dmenu +			geeqie +			#gimp +			#inkscape +			#keepassxc +			mpv +			pavucontrol +			pcmanfm +			#qbittorrent +			#qdirstat +			redshift +			sxiv +			#syncthing +			#virt-manager +			zathura +			#additional dev tools +			#android-tools +			#cargo +			#hugo +			#python-pip +			#wireguard-tools +		]; +	}; + +	programs.zsh.enable = true; +	users.defaultUserShell = pkgs.zsh; + +	programs.dconf.enable = true;  # For home-manager to configure gtk + +	# List packages installed in system profile. To search, run: +	# $ nix search wget +	environment.systemPackages = with pkgs; [ +		home-manager +		neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. +		wget +		light +		dash  # TODO should be default /bin/sh +		ddcutil # TODO +		entr +		jq +		lm_sensors +		nmap +		openssl +		pv +		rsync +		sassc +		sslscan +		stress +		wget +		xxHash +		htop +		fastfetch +		p7zip +		gcc +		gnumake +		powertop +		smartmontools +		testdisk +		uhubctl +		xcape +		xwallpaper +		screen +		tmux +		scrot +		xorg.setxkbmap +		unclutter +		xclip +		xdotool +		xorg.xinput +		xorg.xkill +		xorg.xrandr +		xorg.xset +		zsh +		docker-compose +		git +		(xorg.xinit.overrideAttrs (old: rec { +			patches = [ +				./xinit-startx-xdg.patch +			]; +		})) +	]; + +	security.doas.enable = true; +	#security.sudo.enable = false; +	security.doas.extraRules = [{ +		groups = ["wheel"]; +		keepEnv = true; +		noPass = true; +	}]; + +	virtualisation.docker.enable = true; +	virtualisation.docker.storageDriver = "btrfs"; + +	# TODO this does not function +	boot.initrd.systemd.extraBin = { +		sh = "${pkgs.dash}/bin/dash"; +		vim = "${pkgs.neovim}/bin/nvim"; +	}; + +	# Some programs need SUID wrappers, can be configured further or are +	# started in user sessions. +	# programs.mtr.enable = true; +	# programs.gnupg.agent = { +	#	 enable = true; +	#	 enableSSHSupport = true; +	# }; + +	# List services that you want to enable: + +	# Enable the OpenSSH daemon. +	services.openssh.enable = true; + +	# Open ports in the firewall. +	# networking.firewall.allowedTCPPorts = [ ... ]; +	# networking.firewall.allowedUDPPorts = [ ... ]; +	# Or disable the firewall altogether. +	# networking.firewall.enable = false; + +	# 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 option defines the first version of NixOS you have installed on this particular machine, +	# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. +	# +	# Most users should NEVER change this value after the initial install, for any reason, +	# even if you've upgraded your system to a new NixOS release. +	# +	# This value does NOT affect the Nixpkgs version your packages and OS are pulled from, +	# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how +	# to actually do that. +	# +	# This value being lower than the current NixOS release does NOT mean your system is +	# out of date, out of support, or vulnerable. +	# +	# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, +	# and migrated your data accordingly. +	# +	# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . +	system.stateVersion = "24.05"; # Did you read the comment? + +} + | 
