cos/clhickey-nixos/configuration.nix
2026-03-14 01:16:07 -04:00

283 lines
5.3 KiB
Nix

{ inputs, pkgs, options, config, lib, ... }:
{
imports =
[
./hardware-configuration.nix
../cos.nix
];
nixpkgs.overlays = [
inputs.nix-bwrapper.overlays.default
];
cos.username = "clhickey";
cos.hostName = "clhickey-nixos";
cos.winboat.enable = true;
cos.docker.enable = true;
cos.remoteBuild.enable = false;
cos.emacs.enable = true;
cos.emacs.org-directory = "~/Nextcloud/Emacs/org/";
cos.gnupg.enable = true;
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
supportedFilesystems = [
"ntfs"
];
binfmt = {
emulatedSystems = [
"aarch64-linux"
];
};
};
services.logind.settings.Login = {
HandlePowerKey="suspend";
};
time.timeZone = "America/New_York";
i18n = {
defaultLocale = "en_US.UTF-8";
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";
};
};
networking = {
hostName = config.cos.hostName;
networkmanager.enable = true;
};
cos.wireguard = {
enable = true;
privateKeyFile = "/home/${config.cos.username}/wireguard-keys/private";
};
cos.hyprland = {
enable = true;
wallpaper = builtins.toString ../TranscodedWallpaper.jpeg;
};
# auto-mount USB drives
services.gvfs.enable = true;
services.udisks2.enable = true;
hardware.bluetooth.enable = true;
# For languini
networking.firewall.interfaces.${config.cos.wireguard.interface}.allowedTCPPorts = [
8000
8080
];
services = {
openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
AllowUsers = null;
};
listenAddresses = [
{
port = 22;
addr = config.cos.wireguard.clientInternalIP;
}
];
};
};
virtualisation = {
waydroid = {
enable = false;
};
libvirtd = {
enable = true;
qemu = {
swtpm.enable = true;
};
};
virtualbox.host = {
enable = false;
enableKvm = true;
addNetworkInterface = false;
enableExtensionPack = true;
};
spiceUSBRedirection.enable = true;
};
users.users.${config.cos.username} = {
isNormalUser = true;
description = "Clayton Lopez Hickey";
extraGroups = [
"networkmanager"
"wheel"
"adbusers"
"libvirtd"
];
};
nixpkgs.config = {
allowUnfree = true;
android_sdk.accept_license = true;
};
nix.settings.trusted-users = [
"root"
"@wheel"
];
environment = {
systemPackages = with pkgs; [
fastfetch
wget
brave
kdePackages.kate
nextcloud-client
obs-studio
vlc
kdePackages.kdenlive
tmux
htop
crosspipe
libreoffice-fresh
anki-bin
gimp3
audacity
ffmpeg
zoom-us
inkscape
freecad
kdePackages.filelight
prismlauncher
blender
sqlitebrowser
arduino-ide
josm
krita
jetbrains.idea
android-studio
gparted
jdk
jdk8
slack
inputs.penn-nix.packages.x86_64-linux.waypoint-client
inputs.cnvim.packages.x86_64-linux.default
osu-lazer-bin
thunderbird-bin
itch
element-desktop
gh
code-cursor
firefox
popsicle
nixfmt
graphviz
alacritty
prismlauncher
google-chrome
trilium-next-desktop
joplin-desktop
sshfs
unityhub
man-pages
man-pages-posix
vulkan-tools
wireshark
dotnetCorePackages.sdk_9_0_1xx-bin # for unit dev
vscode-fhs
discord
aseprite
pixelorama
dig
ncdu
servo
tcpdump
kicad
orca-slicer
android-tools
obsidian
#(pkgs.mkBwrapper {
# app = {
# package = pkgs.obsidian;
# runScript = "obsidian";
# };
# mounts.readWrite = [
# "$HOME/git/Journal"
# ];
#})
];
sessionVariables = {
EDITOR = "${inputs.cnvim.packages.x86_64-linux.default}/bin/nvim";
};
};
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
liberation_ttf
fira-code
fira-code-symbols
mplus-outline-fonts.githubRelease
dina-font
proggyfonts
font-awesome
libre-baskerville
corefonts
vista-fonts
];
};
programs = {
steam = {
enable = true;
};
java = {
enable = true;
package = pkgs.jdk;
};
nix-ld = {
enable = true;
libraries = options.programs.nix-ld.libraries.default ++ [
pkgs.libXext
pkgs.libX11
pkgs.libXrender
pkgs.libXtst
pkgs.libXi
pkgs.freetype
];
};
virt-manager.enable = true;
ladybird = {
enable = true;
};
git = {
enable = true;
};
};
documentation.dev.enable = true;
home-manager.users.${config.cos.username} = { pkgs, ... }: {
home.stateVersion = "24.11";
};
system.stateVersion = "24.11";
}