1
0
Fork 0
NixOS/hosts/latitude/configuration.nix
2024-10-13 01:07:47 -05:00

299 lines
6.7 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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, lib, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
nix = {
nixPath = [
"nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos"
"nixos-config=/home/paul/NixOS/hosts/latitude/configuration.nix"
"/nix/var/nix/profiles/per-user/root/channels"
];
};
# UPDATE YOUR FUCKING ELECTRON APPS GUYS!!!
nixpkgs.config.permittedInsecurePackages = [
"electron"
];
services.thermald.enable = lib.mkDefault true;
# Enable AppImages
boot.binfmt.registrations.appimage = {
wrapInterpreterInShell = false;
interpreter = "${pkgs.appimage-run}/bin/appimage-run";
recognitionType = "magic";
offset = 0;
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
magicOrExtension = ''\x7fELF....AI\x02'';
};
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.configurationLimit = 10; # Keep only the last 10 Generations.
networking.hostName = "latitude"; # Define your hostname.
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Chicago";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# Experimental Features Enabled
nix.settings.experimental-features = ["nix-command"];
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.wayland.enable = true; # Launch KDE in Wayland session
services.displayManager.defaultSession = "plasma";
services.desktopManager.plasma6.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
jack.enable = true;
};
# Bluetooth
hardware.bluetooth = {
enable =true;
powerOnBoot = true;
};
## Allow Bluetooth buttons to control media player
systemd.user.services.mpris-proxy = {
description = "Mpris proxy";
after = [ "network.target" "sound.target" ];
wantedBy = [ "default.target" ];
serviceConfig.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
};
## Enable extra blutooth codecs
hardware.pulseaudio = {
enable = false;
package = pkgs.pulseaudioFull;
};
## Enable Bluetooth A2DP Sink
hardware.bluetooth.settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
# Define a user account. Don't forget to set a password with passwd.
users.users.paul = {
isNormalUser = true;
description = "Paul Hartman";
extraGroups = [ "networkmanager" "wheel" "dialout"];
packages = with pkgs; [
firefox
kate
# thunderbird
];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
isoimagewriter
appimage-run
libsForQt5.kde-cli-tools
libheif
# WWAN Utilities
modem-manager-gui
## CLI Utils
wget
curl
micro
gitFull
speedtest-cli
pciutils
fwupd
htop
aha
clinfo
virtualgl
glxinfo
vulkan-tools
wayland-utils
ncdu
spotdl
## GUI programs
firefox
kate
vscode-fhs
yakuake
bitwarden
remmina
virt-viewer
chirp
#ungoogled-chromium
# Chat/Internet
#fluffychat
discord
chromium
# Productivity
bogofilter
# claws-mail
thunderbird
libreoffice
nextcloud-client
kmymoney
#logseq # Electron app, reinstall via flatpak
#obsidian
## Audio/Music
audacity
guitarix
# musescore
carla
k3b
libation
sonixd
## Video/Graphics
gimp
blender
vlc
obs-studio
## Games
prismlauncher
retroarchFull
## Iphone Stuff
libimobiledevice
ifuse
];
## Docker
virtualisation.docker.enable = true;
# Flatpak bitches - CF 6-1-22
services.flatpak.enable = true;
xdg.portal.enable = true;
## Steam
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
};
## Allow unfree packages
nixpkgs.config.allowUnfree = true;
# 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:
services = {
# Enable SSH
openssh = {
enable = true;
};
# Enable Tailscale
tailscale = {
enable = true;
# useRoutingFeatures = both;
extraUpFlags = [
"--ssh"
"--accept-routes"
];
};
# Enable iPhone Tethering
usbmuxd = {
enable = true;
package = pkgs.usbmuxd2;
};
};
# Enable KdeConnect
programs.kdeconnect.enable = true;
# Open ports in the firewall.
networking.firewall = {
enable = true;
allowedTCPPortRanges = [
{ from = 1714; to = 1764; } # KDE Connect
];
allowedUDPPortRanges = [
{ from = 1714; to = 1764; } # KDE Connect
];
};
# Enable Automatic Upgrades
system.autoUpgrade.enable = true;
nix.gc.automatic = true;
nix.gc.dates = "weekly"; # Run garbage collection weekly to free up disk space
# 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. Its 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.11"; # Did you read the comment?
}