Files
dotfiles/modules/common.nix
Kyren223 bdbde54648 Added nix LSP (nil_ls)
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
2025-04-23 18:34:02 +03:00

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"; };
};
}