nixos/system/common.nix

123 lines
2.5 KiB
Nix

{ inputs, config, pkgs, lib, ... }:
let flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
in
{
# Bootloader
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
# Networking
networking.networkmanager.enable = true;
services.openssh.enable = true;
services.tailscale.enable = true;
# Router shared filesystem
fileSystems."/home/andrey/Public" = {
device = "root@192.168.0.3:/mnt/sda1";
fsType = "sshfs";
options = [
"nodev"
"noatime"
"allow_other"
"reconnect"
"IdentityFile=/home/andrey/.ssh/id_ed25519"
];
};
# l10n and i8n
time.timeZone = "Europe/Riga";
i18n.defaultLocale = "en_US.UTF-8";
# Editor
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
defaultEditor = true;
};
# Nix
nixpkgs.config.allowUnfree = true;
nix = {
settings = {
trusted-users = [ "andrey" ];
experimental-features = [ "nix-command" "flakes" ];
flake-registry = "";
nix-path = config.nix.nixPath;
};
channel.enable = false;
registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
};
# Users
users.mutableUsers = false;
users.users.andrey = {
isNormalUser = true;
initialHashedPassword = "$y$j9T$mGZT4otEkrc94e.Ile.P20$BoxfgxCiacs.tYoEp7S5AjcP.aMUBrsaCJYJkBot635";
extraGroups = [ "wheel" "cdrom" "networkmanager" "audio" "dialout" "scanner" "lp" ];
};
security.sudo.execWheelOnly = true;
security.sudo.wheelNeedsPassword = false;
# Printers and scanners
hardware.sane.enable = true;
services.printing.enable = true;
services.printing.drivers = [ pkgs.cnijfilter2 ];
programs.system-config-printer.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# Programs
programs = {
git = {
enable = true;
config = {
init.defaultBranch = "master";
url."https://github.com/".insteadOf = [ "gh:" "github:" ];
url."https://git.psf.lt/".insteadOf = [ "psf:" "gitea:" ];
};
};
};
# Packages
environment.systemPackages = with pkgs; [
alsa-utils
];
# Xorg
security.rtkit.enable = true;
services = {
xserver.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
libinput.touchpad = {
naturalScrolling = true;
disableWhileTyping = false;
tappingDragLock = false;
};
};
}