I love it, it just works out of the box, unlike nixd which was so broken I couldn't get it to work, and it's so much more featureful, it has insane autocompletion for keywords and vars and I can go to definition/go to references on files/vars etc and it has diagnostics and shows when there is an error, it's so much better, and it has completion for nix options
160 lines
4.3 KiB
Nix
160 lines
4.3 KiB
Nix
#--------------------------------------#
|
|
# #
|
|
# Common Config/Packages for system #
|
|
# #
|
|
#--------------------------------------#
|
|
|
|
{pkgs, ...}: {
|
|
|
|
# User
|
|
users.users.kyren = {
|
|
isNormalUser = true;
|
|
description = "Kyren";
|
|
extraGroups = [ "networkmanager" "wheel" ];
|
|
shell = pkgs.zsh;
|
|
};
|
|
|
|
programs.zsh.enable = true;
|
|
|
|
# List packages installed in system profile
|
|
# Use for apps that need sudo (or have issues thru home-manager)
|
|
environment.systemPackages = with pkgs; [
|
|
glib-networking
|
|
openssl
|
|
clang
|
|
clang-tools
|
|
ghostty
|
|
glibcLocales
|
|
];
|
|
|
|
# Localization
|
|
time.timeZone = "Asia/Hebron";
|
|
i18n.defaultLocale = "en_US.UTF-8";
|
|
i18n.supportedLocales = [
|
|
"en_US.UTF-8/UTF-8"
|
|
"C.UTF-8/UTF-8"
|
|
"en_IL/UTF-8"
|
|
];
|
|
|
|
# Allow sudo without a password if in "wheel" group.
|
|
security.sudo.wheelNeedsPassword = false;
|
|
|
|
# Bootloader
|
|
boot.loader.systemd-boot.enable = true;
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
boot.supportedFilesystems = [ "ntfs" ];
|
|
|
|
# Nix Config
|
|
system.stateVersion = "24.05"; # DO NOT CHANGE!
|
|
nixpkgs.config.allowUnfree = true;
|
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
nix.settings.auto-optimise-store = true; # reduces nix store size
|
|
|
|
# Enable dynamic linking of apps that are not in nixpkgs
|
|
# Fixes issues with neovim plugins not working
|
|
programs.nix-ld.enable = true;
|
|
programs.nix-ld.libraries = with pkgs; [
|
|
stdenv.cc.cc
|
|
];
|
|
|
|
programs.firefox.enable = true;
|
|
|
|
# Install 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
|
|
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
|
};
|
|
|
|
# Install Docker (without using root access)
|
|
#virtualisation.docker.enable = true;
|
|
virtualisation.docker.rootless = {
|
|
enable = true;
|
|
setSocketVariable = true;
|
|
};
|
|
|
|
# Enable sound with pipewire.
|
|
services.pulseaudio.enable = false;
|
|
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;
|
|
|
|
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
# no need to redefine it in your config for now)
|
|
#media-session.enable = true;
|
|
};
|
|
|
|
# ENable CUPS daemon for printing
|
|
services.printing.enable = false;
|
|
|
|
# Install Flatpak and Flathub
|
|
services.flatpak.enable = true;
|
|
|
|
# Enable openssh
|
|
services.openssh.enable = true;
|
|
|
|
# Mouse config service (used with piper)
|
|
services.ratbagd.enable = true;
|
|
|
|
# Enable KVM/QEMU virtualization
|
|
programs.virt-manager.enable = true;
|
|
users.groups.libvirtd.members = ["kyren"];
|
|
virtualisation.libvirtd.enable = true;
|
|
virtualisation.spiceUSBRedirection.enable = true;
|
|
|
|
services.syncthing.enable = true;
|
|
services.syncthing = {
|
|
group = "users";
|
|
user = "kyren";
|
|
dataDir = "/home/kyren";
|
|
configDir = "/home/kyren/.config/syncthing";
|
|
};
|
|
systemd.tmpfiles.rules = [
|
|
"d /home/kyren/.config/syncthing 0700 kyren users"
|
|
];
|
|
|
|
# VPN for Vault Hunters to avoid connection issues
|
|
# Note, will break discord, also tried proton VPN, still has conn issues
|
|
services.cloudflare-warp.enable = true;
|
|
|
|
systemd.timers."git-auto-sync" = {
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
OnBootSec = "5m";
|
|
OnUnitActiveSec = "5m";
|
|
Unit = "git-auto-sync.service";
|
|
};
|
|
};
|
|
|
|
systemd.services."git-auto-sync" = {
|
|
script = "$HOME/scripts/git-auto-sync.sh";
|
|
path = [
|
|
pkgs.git
|
|
pkgs.gh
|
|
pkgs.keychain
|
|
pkgs.openssh
|
|
];
|
|
serviceConfig = { Type = "oneshot"; User = "kyren"; };
|
|
};
|
|
|
|
systemd.timers."k-sleep-tracker" = {
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
OnBootSec = "1m";
|
|
OnUnitActiveSec = "1m";
|
|
Unit = "k-sleep-tracker.service";
|
|
};
|
|
};
|
|
|
|
systemd.services."k-sleep-tracker" = {
|
|
script = "$HOME/projects/k/bin/k tracker sleep";
|
|
serviceConfig = { Type = "oneshot"; User = "kyren"; };
|
|
};
|
|
}
|