{ pkgs, system, home-manager, ... }: { imports = [ ./hardware-configuration.nix home-manager.nixosModules.home-manager ]; boot.loader = { efi.canTouchEfiVariables = true; systemd-boot.enable = true; }; environment = { # Excludes some KDE plasma applications from the default # install. We choose to use KDE since, with wayland support, # is is capable of fractional scaling. plasma5.excludePackages = with pkgs.libsForQt5; [ elisa gwenview khelpcenter konsole okular oxygen plasma-browser-integration print-manager ]; systemPackages = with pkgs; [ gcc git ((vim_configurable.override {}).customize { name = "vim"; vimrcConfig.customRC = '' set nocompatible syntax on set colorcolumn=80,100 set expandtab " Spaces instead of tabs. set list " Show hidden characters. set listchars=tab:>\ ,trail:-,nbsp:+ set shiftwidth=2 " # of spaces to use for each (auto)indent. set tabstop=2 " # of spaces a in the file counts for. ''; }) ]; variables = { EDITOR = "vim"; }; }; fonts.packages = with pkgs; [ iosevka ]; hardware.bluetooth.enable = true; home-manager = { useGlobalPkgs = true; useUserPackages = true; users.jrpotter = args@{ pkgs, lib, ... }: let base = import ../../users/jrpotter args // { dconf.settings = { "org/virt-manager/virt-manager/connections" = { autoconnect = ["qemu:///system"]; uris = ["qemu:///system"]; }; }; }; in lib.attrsets.updateManyAttrsByPath [ { path = [ "home" "packages" ]; update = old: old ++ (with pkgs; [ anki-bin bitwarden chromium firefox gimp virt-manager vlc wezterm zotero ]); } ] base; # Used to pass non-default parameters to submodules. extraSpecialArgs = { inherit system; stateVersion = "23.05"; }; }; networking = { hostName = "framework"; networkmanager.enable = true; }; nix.settings.experimental-features = [ "nix-command" "flakes" ]; # virt-manager requires dconf to remember settings. programs.dconf.enable = true; # Recommended when using pipewire (https://nixos.wiki/wiki/PipeWire). security.rtkit.enable = true; services = { mullvad-vpn.enable = true; openssh.enable = true; pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; }; xserver = { enable = true; desktopManager.plasma5.enable = true; desktopManager.xterm.enable = false; displayManager.defaultSession = "plasmawayland"; xkbOptions = "ctrl:swapcaps"; }; }; users.users.jrpotter = { isNormalUser = true; extraGroups = [ "docker" "networkmanager" "libvirtd" "wheel" ]; }; time.timeZone = "America/Denver"; virtualisation = { libvirtd.enable = true; docker.rootless = { enable = true; # Sets the `DOCKER_HOST` variable to the rootless Docker instance for normal # users by default. setSocketVariable = true; }; }; system.stateVersion = "23.05"; }