# Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { lib, config, pkgs, nixpkgs, ... }: { nix.settings.auto-optimise-store = true; nix.registry.nixpkgs.flake = nixpkgs; # Allow user-mode qemu for running riscv64 binaries # boot.binfmt.emulatedSystems = [ "riscv64-linux" ]; imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix # Secrets specified via: ./secrets.nix ./programs/art.nix ./programs/audio.nix ./programs/cad.nix ./programs/desktop.nix ./programs/games.nix ./programs/office.nix ./programs/programming.nix ./programs/terminal.nix ./programs/video.nix ./programs/remote.nix ./printing.nix # ccache, y'know for blenders and whatnots ./ccache.nix ]; fileSystems."/home/universe/tmp" = { fsType = "tmpfs"; }; fileSystems."/home/universe/Downloads" = { fsType = "tmpfs"; }; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; ## Bridged Network Config networking.hostName = "universedesktop"; sops.secrets.wireless = { }; networking.wireless.environmentFile = config.sops.secrets.wireless.path; networking.wireless.enable = true; networking.wireless.networks = { "@SSID_HOME@".psk = "@PSK_HOME@"; }; hardware.bluetooth.enable = true; # Set your time zone. time.timeZone = "America/Toronto"; # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; #console = { # font = "Lat2-Terminus16"; # keyMap = "us"; # useXkbConfig = true; # use xkbOptions in tty. #}; services.brltty = { enable = true; }; users.users.brltty.isSystemUser = true; # Enable the X11 windowing system. services.xserver.enable = true; # Enable the GNOME Desktop Environment. services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; programs.xwayland.enable = true; # Configure keymap in X11 services.xserver.layout = "us"; # services.xserver.xkbOptions = "grp:switch"; # services.xserver.extraLayouts = { # bqn = { # description = "BQN Symbol Modifiers"; # languages = ["eng"]; # symbolsFile = pkgs.fetchurl { # url = "https://raw.githubusercontent.com/mlochbaum/BQN/master/editors/bqn"; # sha256 = "F2fgLlWghcOrMu0BXGiyNHa0qh9YUyQE80GK0BWU2EY="; # }; # }; # }; # # services.xserver.xkbOptions = { # }; # Enable CUPS to print documents. services.printing.enable = true; # Enable sound. #sound.enable = true; #hardware.pulseaudio.enable = true; # rtkit is optional but recommended security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # If you want to use JACK applications, uncomment this jack.enable = true; }; # services.pipewire = { # config.pipewire = { # "context.properties" = { # #"link.max-buffers" = 64; # "link.max-buffers" = 16; # version < 3 clients can't handle more than this # "log.level" = 2; # https://docs.pipewire.org/page_daemon.html # #"default.clock.rate" = 48000; # #"default.clock.quantum" = 1024; # #"default.clock.min-quantum" = 32; # #"default.clock.max-quantum" = 8192; # }; # }; # }; # environment.etc = { # "wireplumber/bluetooth.lua.d/52-bluez-config.lua".text = '' # bluez_monitor.properties = { # ["bluez5.enable-sbc-xq"] = true, # ["bluez5.enable-msbc"] = true, # ["bluez5.enable-hw-volume"] = true, # ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" # ''; # }; # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; users.groups.net = {}; users.users.universe = { isNormalUser = true; extraGroups = [ "wheel" "adbusers" "net" "brltty" "brlapi" "dialout" ]; packages = with pkgs; [ ]; }; nix = { package = pkgs.nixVersions.stable; # or versioned attributes like nixVersions.nix_2_8 extraOptions = '' keep-outputs = true keep-derivations = true experimental-features = nix-command flakes ''; }; environment.pathsToLink = [ "/share/nix-direnv" ]; nixpkgs.config.allowUnfree = true; services.xserver.videoDrivers = [ "nvidia" ]; # Wayland support boot.kernelParams = ["nvidia_drm.modeset=1"]; hardware.opengl.enable = true; hardware.opengl.driSupport = true; services.fwupd.enable = true; programs.adb.enable = true; # GTK Support programs.dconf.enable = true; # Legacy Python2 Support nixpkgs.config.permittedInsecurePackages = [ "python-2.7.18.6" # BitWarden uses this "nodejs-16.20.0" ]; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ direnv nix-direnv ]; documentation.dev.enable = true; documentation.man.generateCaches = true; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; # programs.gnupg.agent = { # enable = true; # enableSSHSupport = true; # }; # List services that you want to enable: # Enable the OpenSSH daemon. services.openssh.enable = true; services.openssh.ports = [7000]; services.openssh.settings.X11Forwarding = true; # Tailscale services.tailscale = { enable = true; }; # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. networking.firewall.enable = false; # Copy the NixOS configuration file and link it from the resulting system # (/run/current-system/configuration.nix). This is useful in case you # accidentally delete configuration.nix. # system.copySystemConfiguration = true; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave # this value at the release version of the first install of this system. # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "22.05"; # Did you read the comment? }