Files

81 lines
2.4 KiB
Nix

{ config, lib, pkgs, modulesPath, nix-flatpak, plasma-manager, ... }:
let
cfg = config.lumpiasty.users;
mkHome = import ../../lib/mkHome.nix {
inherit lib;
inherit nix-flatpak;
inherit plasma-manager;
};
mkUser = import ../../lib/mkUser.nix { inherit lib; };
in
{
options.lumpiasty.users = {
user = lib.mkEnableOption "Create user \"user\"";
drugi = lib.mkEnableOption "Create user \"drugi\"";
};
config = {
# Install system-wide docker because rootless causes issues with binfmt
virtualisation.docker.enable = config.lumpiasty.pc;
# Binfmt for aarch64 emulation
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
boot.binfmt.preferStaticEmulators = true;
# Pass the binary to the interpreter as an open file descriptor, instead of a path.
# Fixes issue inside containers.
boot.binfmt.registrations.aarch64-linux.openBinary = true;
boot.binfmt.registrations.aarch64-linux.fixBinary = true;
# Libvirt
virtualisation.libvirtd = lib.mkIf config.lumpiasty.pc {
enable = true;
# Enable TPM emulation
# install pkgs.swtpm system-wide for use in virt-manager (optional)
qemu.swtpm.enable = true;
};
# Enable USB redirection (optional)
virtualisation.spiceUSBRedirection.enable = true;
environment.systemPackages = lib.mkIf config.lumpiasty.pc (with pkgs; [
dnsmasq # Needed for libvirt networking
]);
# GUI for managing virtual machines
programs.virt-manager.enable = true;
services.transmission = {
enable = config.lumpiasty.pc && (config.lumpiasty.gaming == false);
package = pkgs.transmission_4; # For some reason 3.x is still default
user = "user";
group = "users";
settings.download-dir = "/home/user/Downloads";
settings.incomplete-dir-enabled = false;
openPeerPorts = true;
};
# Flatpak
services.flatpak.enable = true;
# Users
users.mutableUsers = false;
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
# User user
users.users.user = lib.mkMerge [
(mkUser cfg.user ../../users/user/config.nix)
{
extraGroups = lib.mkIf config.lumpiasty.pc [ "docker" "libvirtd" ];
}
];
home-manager.users.user = mkHome cfg.user ../../users/user/home.nix;
# User drugi
users.users.drugi = mkUser cfg.drugi ../../users/drugi/config.nix;
home-manager.users.drugi = mkHome cfg.drugi ../../users/drugi/home.nix;
};
}