nixos-config/nix/configuration.nix

281 lines
6 KiB
Nix
Raw Normal View History

2024-11-22 00:58:04 -05:00
{ config, lib, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
2024-11-23 21:41:28 -05:00
sops.defaultSopsFile = ./secrets/secrets.yaml;
sops.defaultSopsFormat = "yaml";
sops.age.keyFile = "/root/.config/sops/age/keys.txt";
sops.secrets = {
"borg/yt" = { };
"restic/azure-yt" = { };
"azure" = { };
};
2024-11-23 21:41:28 -05:00
2024-11-22 00:58:04 -05:00
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "ytnix";
2024-11-23 23:01:49 -05:00
networking.nftables.enable = true;
2024-11-22 00:58:04 -05:00
networking.wireless.iwd = {
enable = true;
settings = {
Rank = {
2024-11-22 19:18:02 -05:00
# disable 2.4 GHz cause i have a shitty wireless card
# that interferes with bluetooth otherwise
2024-11-22 00:58:04 -05:00
BandModifier2_4GHz = 0.0;
};
};
};
2024-11-23 20:47:43 -05:00
networking.networkmanager = {
enable = true;
wifi.backend = "iwd";
};
2024-11-22 00:58:04 -05:00
time.timeZone = "America/Toronto";
security.rtkit.enable = true;
2024-11-22 00:58:04 -05:00
services.pipewire = {
enable = true;
pulse.enable = true;
alsa.enable = true;
alsa.support32Bit = true;
};
services.pipewire.wireplumber.extraConfig.bluetoothEnhancements = {
"wireplumber.settings" = {
"bluetooth.autoswitch-to-headset-profile" = false;
};
"monitor.bluez.properties" = {
"bluez5.enable-sbc-xq" = true;
"bluez5.enable-msbc" = true;
"bluez5.enable-hw-volume" = true;
"bluez5.roles" = [ "a2dp_sink" "a2dp_source" ];
};
2024-11-22 00:58:04 -05:00
};
services.libinput.enable = true;
users.users.yt = {
isNormalUser = true;
2024-11-23 14:40:08 -05:00
extraGroups = [ "wheel" "libvirtd" ];
2024-11-22 00:58:04 -05:00
shell = pkgs.zsh;
packages = with pkgs; [
firefox
ungoogled-chromium
librewolf
bitwarden-desktop
bitwarden-cli
aerc
delta
fzf
zoxide
eza
fastfetch
2024-11-22 02:31:12 -05:00
discord
nwg-look
2024-11-22 19:18:02 -05:00
element-desktop-wayland
kdePackages.gwenview
2024-11-22 20:46:58 -05:00
kdePackages.okular
kdePackages.qtwayland
mpv
yt-dlp
anki-bin
2024-11-23 20:47:43 -05:00
signal-desktop
cosign
azure-cli
pavucontrol
2024-11-22 00:58:04 -05:00
];
};
environment.systemPackages = with pkgs; [
tmux
vim
wget
neovim
git
python3
grim
slurp
wl-clipboard
mako
tree
kitty
rofi-wayland
rofimoji
cliphist
borgbackup
jq
brightnessctl
alsa-utils
nixd
veracrypt
bluetuith
libimobiledevice
networkmanagerapplet
2024-11-22 01:39:38 -05:00
pass-wayland
2024-11-22 19:18:02 -05:00
htop
file
2024-11-23 14:40:08 -05:00
dnsutils
age
compsize
wgnord
wireguard-tools
2024-11-23 20:47:43 -05:00
traceroute
2024-11-23 21:41:28 -05:00
sops
restic
2024-11-22 00:58:04 -05:00
];
system.stateVersion = "24.05";
services.gnome.gnome-keyring.enable = true;
programs.gnupg.agent.enable = true;
services.displayManager.defaultSession = "hyprland";
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
};
programs.waybar.enable = true;
programs.zsh.enable = true;
2024-11-22 19:18:02 -05:00
# security.sudo.wheelNeedsPassword = false;
2024-11-22 00:58:04 -05:00
fonts.packages = with pkgs; [
nerdfonts
];
nixpkgs.config.allowUnfree = true;
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
services.blueman.enable = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
programs.hyprland = {
enable = true;
# withUWSM = true;
};
services.borgbackup.jobs.ytnixRsync = {
paths = [ "/root" "/home" "/var/lib" "/opt" "/etc" ];
exclude = [
".git"
"**/.cache"
"**/node_modules"
"**/cache"
"**/Cache"
"/var/lib/docker"
"/home/**/Downloads"
"**/.steam"
"**/.rustup"
"**/.docker"
"**/borg"
];
repo = "de3911@de3911.rsync.net:borg/yt";
encryption = {
mode = "repokey-blake2";
passCommand = "cat /run/secrets/borg/yt";
};
environment = {
BORG_RSH = "ssh -i /home/yt/.ssh/id_ed25519";
BORG_REMOTE_PATH = "borg1";
};
compression = "auto,zstd";
startAt = "daily";
extraCreateArgs = [ "--stats" ];
# warnings are often not that serious
failOnWarnings = false;
};
services.restic.backups.ytazure = {
paths = [ "/root" "/home" "/var/lib" "/opt" "/etc" ];
exclude = [
".git"
"**/.cache"
"**/node_modules"
"**/cache"
"**/Cache"
"/var/lib/docker"
"/home/**/Downloads"
"**/.steam"
"**/.rustup"
"**/.docker"
"**/borg"
];
passwordFile = "/run/secrets/restic/azure-yt";
environmentFile = "/run/secrets/azure";
repository = "azure:yt-backup:/";
extraOptions = [
"azure.access-tier=Archive"
];
package = pkgs.restic.overrideAttrs {
src = pkgs.fetchFromGitHub {
owner = "restic";
repo = "restic";
rev = "1133498ef80762608f959df41d303f7246fff04f";
hash = "sha256-RmCEZ5T99uNNDwrQ3CofXBf4UzNjelVzyZyvx5aZO0A=";
2024-11-22 01:39:38 -05:00
};
vendorHash = "sha256-TstuI6KgAFEQH90PCZMN6s4dUab2GyPKqOtqMfIV8wA=";
2024-11-22 01:39:38 -05:00
};
};
2024-11-22 19:18:02 -05:00
services.btrbk.instances.local.settings = {
2024-11-23 14:40:08 -05:00
snapshot_preserve = "14d";
2024-11-22 19:18:02 -05:00
snapshot_preserve_min = "2d";
volume."/" = {
target = "/snapshots";
subvolume = {
home = {};
"/" = {};
};
};
};
2024-11-22 02:09:31 -05:00
programs.steam.enable = true;
2024-11-22 19:18:02 -05:00
services.logind = {
lidSwitch = "hibernate";
2024-11-23 20:47:43 -05:00
suspendKey = "ignore";
powerKey = "hibernate";
2024-11-22 02:09:31 -05:00
};
2024-11-22 20:46:58 -05:00
xdg.mime.defaultApplications = {
"application/pdf" = "okular.desktop";
"image/*" = "gwenview.desktop";
"*/html" = "librewolf.desktop";
};
programs.thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
# preference changes don't work in thunar without this
programs.xfconf.enable = true;
# mount, trash and stuff in thunar
services.gvfs.enable = true;
# thumbnails in thunar
services.tumbler.enable =true;
2024-11-23 14:40:08 -05:00
virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true;
# https-dns-proxy doesn't work without this :(
2024-11-23 14:40:08 -05:00
services.resolved.enable = true;
2024-11-23 20:47:43 -05:00
services.https-dns-proxy = {
enable = true;
provider = {
url = "https://dns.cy7.sh/dns-query/yt-linux";
kind = "custom";
ips = [ "1.1.1.1" "8.8.8.8" ];
};
# doesn't work otherwise :(
preferIPv4 = true;
};
2024-11-22 01:39:38 -05:00
}