mirror of
https://github.com/ItsDrike/nixdots
synced 2024-12-26 18:04:34 +00:00
ItsDrike
00016063fe
Originally, I was including all role configurations for all hosts, and controlling which get applied in the role configs with a check in each file. This is a very repetetive and annoying approach. Instead, now the role directory is included manually from the hosts config for devices which meet that role, removing the role options.
259 lines
6.6 KiB
Nix
259 lines
6.6 KiB
Nix
# Edit this configuration file to define what should be installed on
|
|
# your system. Help is available in the configuration.nix(5) man page, on
|
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
imports = [
|
|
# Include the results of the hardware scan.
|
|
./hardware-configuration.nix
|
|
];
|
|
|
|
boot.supportedFilesystems = ["btrfs"];
|
|
hardware.enableAllFirmware = true;
|
|
|
|
# My flake disables this by default for security reasons. However, with an encrypted setup,
|
|
# which requires entering password before booting anyways, this is not a security concern, and
|
|
# changing kernel params can be useful sometimes for debugging
|
|
boot.loader.systemd-boot.editor = true;
|
|
|
|
# CPU usage configuration for nix
|
|
nix.settings = {
|
|
max-jobs = 8;
|
|
cores = 6;
|
|
};
|
|
|
|
# NixOS release from which this machine was first installed
|
|
# (for stateful data, like file locations and db versions)
|
|
# Leave this alone!
|
|
system.stateVersion = "24.05";
|
|
|
|
myOptions = {
|
|
system = {
|
|
hostname = "voyager";
|
|
username = "itsdrike";
|
|
|
|
sound.enable = true;
|
|
docker.enable = true;
|
|
|
|
impermanence = {
|
|
root = {
|
|
enable = true;
|
|
|
|
# Some people use /nix/persist/system for this, leaving persistent files in /nix subvolume
|
|
# I much prefer using a standalone subvolume for this though.
|
|
persistentMountPoint = "/persist";
|
|
|
|
extraDirectories = [
|
|
"/var/log"
|
|
"/var/lib/docker"
|
|
];
|
|
};
|
|
|
|
home = {
|
|
enable = true;
|
|
persistentMountPoint = "/persist/home";
|
|
extraDirectories = [
|
|
# Browsers
|
|
".mozilla"
|
|
".mullvad"
|
|
".config/chromium"
|
|
|
|
# Applications
|
|
".config/spotify"
|
|
".config/vesktop"
|
|
".config/WebCord"
|
|
".local/share/Smart Code ltd/Stremio"
|
|
".config/obs-studio"
|
|
".config/VirtualBox"
|
|
".local/share/VirtualBox VMs"
|
|
|
|
# Games
|
|
".local/share/PrismLauncher"
|
|
".local/share/Steam"
|
|
|
|
# Tools
|
|
".ssh"
|
|
".local/share/gnupg"
|
|
".local/share/keyrings"
|
|
".local/share/zoxide"
|
|
".local/share/wakatime"
|
|
".local/share/zsh"
|
|
".config/nvim"
|
|
".local/share/nvim"
|
|
".local/state/nvim"
|
|
".config/github-copilot"
|
|
".config/ipython"
|
|
".cache/pre-commit"
|
|
".cache/venv-selector"
|
|
".local/share/direnv"
|
|
|
|
# Services
|
|
".local/state/wireplumber" # volume settings
|
|
|
|
# Language package managers
|
|
".local/share/cargo"
|
|
".local/share/go"
|
|
".config/rye"
|
|
|
|
# University crap
|
|
"Android/Sdk"
|
|
"AndroidStudioProjects"
|
|
".android"
|
|
];
|
|
extraFiles = [
|
|
".config/gtk-3.0/bookmarks"
|
|
".config/git/git-credentials"
|
|
".cache/walker/history.gob"
|
|
".config/pcmanfm-qt/default/recent-files.conf"
|
|
".config/qalculate/qalculate-gtk.cfg"
|
|
".config/gh/hosts.yml"
|
|
".local/state/python_history"
|
|
];
|
|
|
|
persistentDataMountPoint = "/data/Data";
|
|
extraDataDirectories = [
|
|
# Nixos flake
|
|
"dots"
|
|
|
|
# XDG user dirs
|
|
"Downloads"
|
|
"Media"
|
|
|
|
# Other personal data
|
|
"Personal"
|
|
];
|
|
extraDataFiles = [];
|
|
};
|
|
|
|
# Configure automatic root subvolume wiping on boot from initrd
|
|
autoWipeBtrfs = {
|
|
enable = true;
|
|
devices."/dev/disk/by-label/NIXOS-FS".subvolumes = ["root"];
|
|
};
|
|
};
|
|
|
|
boot = {
|
|
secure-boot.enable = true;
|
|
#tmpOnTmpfs = true;
|
|
};
|
|
};
|
|
|
|
device = {
|
|
roles.virtual-machine = false;
|
|
cpu.type = "amd";
|
|
gpu.type = "amd";
|
|
hasTPM = true;
|
|
bluetooth.enable = true;
|
|
};
|
|
|
|
security = {
|
|
auditd = {
|
|
enable = true;
|
|
autoPrune.enable = true;
|
|
};
|
|
};
|
|
|
|
workstation = {
|
|
printing = {
|
|
enable = true;
|
|
hplip.enable = true;
|
|
};
|
|
};
|
|
|
|
home-manager = {
|
|
enable = true;
|
|
stateVersion = "24.05";
|
|
|
|
git = {
|
|
userName = "ItsDrike";
|
|
userEmail = "itsdrike@protonmail.com";
|
|
signing = {
|
|
enable = true;
|
|
key = "FA2745890B7048C0";
|
|
};
|
|
};
|
|
|
|
wms.hyprland = {
|
|
enable = true;
|
|
monitor = [
|
|
# Primary / laptop display
|
|
"eDP-1, 1920x1200@60, 0x1080, 1"
|
|
|
|
# HDMI-A-1 above primary
|
|
#"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
|
|
|
# HDMI-A-1 left to primary
|
|
"HDMI-A-1, 1920x1080@60, 1920x1080, 1"
|
|
|
|
# Mirror the primary (laptop) monitor on externals
|
|
", preferred, auto, 1, mirror, eDP-1"
|
|
];
|
|
};
|
|
|
|
programs = {
|
|
bars.eww.enable = true;
|
|
screen-lockers.hyprlock.enable = true;
|
|
browsers = {
|
|
firefox.enable = true;
|
|
chromium.enable = true;
|
|
mullvad-browser.enable = true;
|
|
};
|
|
tools = {
|
|
fastfetch.enable = true;
|
|
hyfetch.enable = true;
|
|
};
|
|
applications = {
|
|
spotify.enable = true;
|
|
stremio.enable = true;
|
|
vesktop = {
|
|
enable = true;
|
|
autoStart = true;
|
|
};
|
|
webcord.enable = true;
|
|
mpv.enable = true;
|
|
nomacs.enable = true; # TODO: probably disable
|
|
qimgv.enable = true;
|
|
qbittorrent.enable = true;
|
|
obs.enable = true;
|
|
iamb = {
|
|
enable = true;
|
|
profiles.default = {
|
|
userId = "@itsdrike:envs.net";
|
|
homeServer = "https://matrix.envs.net";
|
|
};
|
|
};
|
|
qalculate-gtk.enable = true;
|
|
virtualbox.enable = true;
|
|
wireshark.enable = true;
|
|
};
|
|
file-managers = {
|
|
pcmanfm-qt.enable = true;
|
|
};
|
|
coding = {
|
|
python.enable = true;
|
|
};
|
|
games = {
|
|
steam.enable = true;
|
|
lutris.enable = true;
|
|
prismlauncher.enable = true;
|
|
};
|
|
};
|
|
|
|
services = {
|
|
dunst.enable = true;
|
|
hyprpaper = {
|
|
enable = true;
|
|
# This file intentionally lacks a file extension, it should be a symlink
|
|
# to whatever file you wish to actually be your wallpaper
|
|
wallpaperPath = "/data/Data/Media/Pictures/Wallpapers/active";
|
|
};
|
|
hypridle.enable = true;
|
|
};
|
|
};
|
|
};
|
|
}
|