diff --git a/base/callisto/configuration.nix b/base/callisto/configuration.nix new file mode 100644 index 0000000..80e99d5 --- /dev/null +++ b/base/callisto/configuration.nix @@ -0,0 +1,247 @@ +# 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’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + #hardware.thinkpad-dock = { + # enable = true; + # dockEvent = "${pkgs.wlr-randr}/bin/wlr-randr --output eDP-1 --pos 0,1362"; + # undockEvent = "${pkgs.wlr-randr}/bin/wlr-randr --output eDP-1 --pos 0,0"; + #}; + programs.gamemode.enable = true; + virtualisation.kvmgt = { + enable = true; + vgpus = { + "i915-GVTg_V4_8" = { + uuid = [ "b4c3049a-74a1-11ef-8112-df4a4be644fd" ]; + }; + }; + }; + programs.steam.enable = true; + virtualisation.libvirtd = { + enable = true; + qemu = { + package = pkgs.qemu_kvm; + runAsRoot = true; + swtpm.enable = true; + ovmf = { + enable = true; + packages = [(pkgs.OVMF.override { + secureBoot = true; + tpmSupport = true; + }).fd]; + }; + }; + }; + services.gnome.gnome-keyring.enable = true; + programs.virt-manager.enable = true; + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + services.tailscale = { + enable = true; + useRoutingFeatures = "client"; + }; + services.blueman.enable = true; + programs.adb.enable = true; + services.greetd = { + enable = true; + restart = true; + settings.default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway"; + user = "greeter"; + }; + }; + services.acpid = { + enable = true; + handlers = { + pauseOnDisconnect = { + event = "jack/headphone HEADPHONE unplug"; + action = "${pkgs.sudo}/bin/sudo -u maya XDG_RUNTIME_DIR=/run/user/1000/ ${pkgs.playerctl}/bin/playerctl pause"; + }; + }; + }; + programs.kdeconnect.enable = true; + programs.dconf.enable = true; + systemd.services.greetd.serviceConfig = { + Type = "idle"; + StandardInput = "tty"; + StandardOutput = "tty"; + StandardError = "journal"; + TTYReset = "true"; + TTYHangup = "true"; + TTYVTDisallocate = "true"; + }; + + systemd.services = { + NetworkManager.requires = ["ModemManager.service"]; + }; + + services.tlp.enable = true; + hardware.graphics = { + enable = true; + extraPackages = with pkgs; [ + mesa + mesa.drivers + intel-media-sdk + intel-vaapi-driver + libvdpau-va-gl + ]; + enable32Bit = true; + extraPackages32 = with pkgs.pkgsi686Linux; [ + intel-vaapi-driver + mesa + mesa.drivers + libvdpau-va-gl + ]; + }; + environment.sessionVariables = { LIBVA_DRIVER_NAME = "i965"; ELECTRON_OZONE_PLATFORM_HINT = "wayland";}; + security.polkit.enable = true; + security.pam = { + services.gtklock = {}; + services.greetd = { + enableGnomeKeyring = true; + gnupg.enable = true; + }; + services.login = { + enableGnomeKeyring = true; + gnupg.enable = true; + }; + }; + services.fprintd.enable = true; + services.udisks2.enable = true; + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "callisto"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = [pkgs.xdg-desktop-portal-gtk]; + config.common.default = "*"; + }; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Australia/Perth"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_AU.UTF-8"; + LC_IDENTIFICATION = "en_AU.UTF-8"; + LC_MEASUREMENT = "en_AU.UTF-8"; + LC_MONETARY = "en_AU.UTF-8"; + LC_NAME = "en_AU.UTF-8"; + LC_NUMERIC = "en_AU.UTF-8"; + LC_PAPER = "en_AU.UTF-8"; + LC_TELEPHONE = "en_AU.UTF-8"; + LC_TIME = "en_AU.UTF-8"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + # Configure keymap in X11 + services.xserver = { + xkb.layout = "au"; + xkb.variant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + hardware.pulseaudio.enable = false; + 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; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.maya = { + isNormalUser = true; + description = "Maya"; + extraGroups = [ "networkmanager" "wheel" "libvirtd" ]; + packages = with pkgs; [ + # thunderbird + git + tree + ]; + }; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + lutris + playerctl + # wget + ]; + + # 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; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # 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 = "24.05"; # Did you read the comment? + +} diff --git a/base/callisto/default.nix b/base/callisto/default.nix new file mode 100644 index 0000000..1749f88 --- /dev/null +++ b/base/callisto/default.nix @@ -0,0 +1,11 @@ +{config, pkgs, ...}:{ + imports = [ + ./configuration.nix + ../overrides.nix + ../ssh.nix + ../firewall.nix + ../substituters.nix + ../fonts.nix + ../udev.nix + ]; +} diff --git a/base/callisto/hardware-configuration.nix b/base/callisto/hardware-configuration.nix new file mode 100644 index 0000000..f9a9c39 --- /dev/null +++ b/base/callisto/hardware-configuration.nix @@ -0,0 +1,42 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelParams = [ "resume" ]; + boot.kernelModules = [ "kvm-intel" "sierra_net" ]; + boot.extraModulePackages = [ ]; + boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/1395f53e-3fcd-46fc-848e-d14cf332cb73"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/A024-3E55"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/0aabcebe-6b84-411f-b59e-d327f91cc799"; } ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wwp0s20u4.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/flake.nix b/flake.nix index e796e7d..4e3ca5e 100644 --- a/flake.nix +++ b/flake.nix @@ -43,6 +43,26 @@ } ]; }; + nixosConfigurations."callisto" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./base/callisto + home-manager.nixosModules.home-manager { + home-manager.extraSpecialArgs = { + inherit inputs; + vars = { + isNixOS = true; + class = "desktop"; + user = "maya"; + useSyncthing = true; + }; + }; + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.maya = ./home; + } + ]; + }; nixosConfigurations."hypermac" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ diff --git a/home/default.nix b/home/default.nix index 46e62ed..0ac4f78 100644 --- a/home/default.nix +++ b/home/default.nix @@ -15,7 +15,7 @@ username = vars.user; #this is set in flake.nix homeDirectory = "/home/${username}"; #change this if you use a non-standard home dir stateVersion = "23.11"; - sessionVariables = { PASSWORD_STORE_DIR = "$HOME/sync/general/pass";}; + sessionVariables = { PASSWORD_STORE_DIR = "$HOME/sync/general/pass"; ELECTRON_OZONE_PLATFORM_HINT = "auto";}; shell.enableBashIntegration = true; file = { ".config/waybar/config".source = config.lib.file.mkOutOfStoreSymlink "${homeDirectory}/.config/nixos/home/waybar/config"; diff --git a/home/packages.nix b/home/packages.nix index cd7f84c..0f5de6a 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -2,8 +2,8 @@ home.packages = with pkgs; [ prismlauncher libgpod - kdePackages.ark vesktop + kdePackages.ark v4l-utils nextcloud-client blender-hip diff --git a/home/sway.nix b/home/sway.nix index 3fc5835..9761f92 100644 --- a/home/sway.nix +++ b/home/sway.nix @@ -9,6 +9,7 @@ terminal = "foot"; output = { "Dell Inc. DELL P2411H MGMHG1681VAU".pos = "0 1050"; + "LG Display 0x0437 Unknown".scale = "1.25"; "Samsung Electric Company SyncMaster HMDQ202016".pos = "75 0"; }; #output = {