nixos/system/default.nix

247 lines
5.9 KiB
Nix
Raw Normal View History

{
config,
lib,
pkgs,
inputs,
username,
hostName,
...
2024-07-30 15:06:34 +01:00
}:
{
imports = [
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
./${hostName}.nix
./hardware-configuration/${hostName}.nix
];
nix = {
enable = true;
package = pkgs.nixVersions.latest;
settings = {
cores = 0;
max-jobs = "auto";
trusted-users = [
"root"
username
];
2024-07-30 15:06:34 +01:00
experimental-features = [
"nix-command"
"flakes"
];
auto-optimise-store = true;
substituters = [ "https://nix.xenia.me.uk" ];
trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ];
};
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
channel.enable = true;
gc = {
automatic = true;
options = "--delete-older-than 7d";
};
optimise.automatic = true;
registry.my-nixos = {
from = {
type = "indirect";
id = "my-nixos";
};
to = {
type = "git";
url = "https://git.xenia.me.uk/pixelifytica/nixos.git?ref=main";
};
};
extraOptions = ''
keep-outputs = false
keep-derivations = false
min-free = ${toString (100 * 1024 * 1024)}
max-free = ${toString (1024 * 1024 * 1024)}
'';
};
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-unwrapped"
"steam-original"
"steam-run"
2024-11-15 06:55:08 +00:00
"steamcmd"
"nomachine-client"
];
system.autoUpgrade = {
enable = true;
persistent = true;
allowReboot = false;
flake = "git+${config.nix.registry.my-nixos.to.url}";
dates = "02:00";
randomizedDelaySec = "5min";
fixedRandomDelay = true;
flags = [
"--option"
"extra-binary-caches"
"https://nix.xenia.me.uk"
];
};
systemd.services = lib.mkIf config.system.autoUpgrade.enable {
nixos-upgrade.serviceConfig = {
CPUQuota = "75%";
CPUWeight = 20;
IOWeight = 20;
};
};
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
networking = {
inherit hostName;
networkmanager.enable = true;
firewall.enable = true;
2024-07-30 15:06:34 +01:00
nameservers = [ "9.9.9.9" ];
};
users.users =
let
authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC4M1zV3yLMMI1tYwdY9QDXJDlOBugm7UXKC+Xk89yHq pixelifytica@Vanguard"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICPypUUGVAdpl0SHrUDVw0RureuFNsljrXQvrf0uc055 pixelifytica@Northstar"
];
in
{
root.openssh = {
inherit authorizedKeys;
};
${username} = {
shell = pkgs.nushell;
isNormalUser = true;
group = "users";
description = "Evie Litherland-Smith";
extraGroups = [
"networkmanager"
"wheel"
"video"
"input"
"uinput"
"dialout"
"gamemode"
];
initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3";
openssh = {
inherit authorizedKeys;
};
};
};
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "backup";
users.${username} = {
imports = [
./home/shell/default.nix
./home/scripts/default.nix
./home/password-store/default.nix
./home/emacs/default.nix
];
home = {
inherit username;
homeDirectory = "/home/${username}";
};
programs.home-manager.enable = true;
};
extraSpecialArgs = {
inherit inputs;
};
};
environment = {
2024-03-08 08:10:36 +00:00
sessionVariables = {
XDG_CONFIG_HOME = "$HOME/.config";
XDG_CACHE_HOME = "$HOME/.cache";
XDG_DATA_HOME = "$HOME/.local/share";
XDG_STATE_HOME = "$HOME/.local/state";
};
systemPackages = with pkgs; [
coreutils-full
gnumake
git
file
zip
unzip
2024-10-20 07:33:16 +01:00
p7zip
curl
wget
dig
wireguard-tools
quickemu
distrobox
];
localBinInPath = true;
};
programs = {
command-not-found.enable = false;
ssh.startAgent = true;
nano = {
enable = true;
syntaxHighlight = true;
nanorc = ''
set nowrap
set tabstospaces
set tabsize 2
'';
};
};
services = {
upower.enable = true;
power-profiles-daemon.enable = true;
2023-10-20 22:33:34 +01:00
system76-scheduler = {
enable = true;
useStockConfig = true;
};
};
2024-06-19 13:55:24 +01:00
security.rtkit.enable = true;
virtualisation.podman.enable = true;
location = {
latitude = 51.7;
longitude = -1.2;
provider = "manual";
};
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
console.useXkbConfig = true;
stylix = {
enable = true;
image = ./wallpapers/tropic_island_day.jpg;
base16Scheme = ./one-light.yaml; # Base24 scheme
polarity = "light";
opacity.popups = 0.8;
cursor = {
package = pkgs.volantes-cursors;
name = "volantes_cursors";
size = 32;
};
fonts = {
serif = {
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-etoile;
name = inputs.iosevka-custom.outputs.names.iosevka-custom-etoile;
};
sansSerif = {
package = inputs.iosevka-custom.outputs.packages.${pkgs.system}.iosevka-custom-aile;
name = inputs.iosevka-custom.outputs.names.iosevka-custom-aile;
};
monospace = {
package = pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; };
name = "Iosevka Nerd Font";
};
sizes = {
applications = 12;
desktop = 14;
popups = 16;
terminal = 12;
};
};
};
fonts.packages = with pkgs; [
dejavu_fonts # General compatibility
liberation_ttf # Documents
lmodern # LaTeX
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
];
}