diff --git a/hosts/default.nix b/hosts/default.nix index 63e8a53..5f845eb 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -25,21 +25,28 @@ let in { - desktop = lib.nixosSystem { # Desktop profile + desktop = lib.nixosSystem { # Desktop profile inherit system; - specialArgs = { inherit inputs user location; }; # Pass flake variable - modules = [ # Modules that are used. + specialArgs = { inherit inputs user locationhyprland nixos-hardware nur; }; + modules = [ nur.nixosModules.nur - hyprland.nixosModules.default + #hyprland.nixosModules.default ./desktop ./configuration.nix + nixos-hardware.nixosModules.common-cpu-amd + nixos-hardware.nixosModules.common-gpu-amd + nixos-hardware.nixosModules.common-pc-ssd + - home-manager.nixosModules.home-manager { # Home-Manager module that is used. + home-manager.nixosModules.home-manager { + nixpkgs.overlays = [ + nur.overlay + ]; home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { inherit user; }; # Pass flake variable + home-manager.extraSpecialArgs = { inherit user; }; home-manager.users.${user} = { - imports = [(import ./home.nix)] ++ [(import ./desktop/home.nix)]; + imports = [(import ./home.nix)] ++ [(import ./desktop/home.nix)]; }; } ]; @@ -50,10 +57,12 @@ in specialArgs = { inherit inputs user location hyprland nixos-hardware nur; }; modules = [ nur.nixosModules.nur - hyprland.nixosModules.default + #hyprland.nixosModules.default ./laptop ./configuration.nix nixos-hardware.nixosModules.common-cpu-intel + nixos-hardware.nixosModules.common-gpu-intel + nixos-hardware.nixosModules.common-pc-ssd home-manager.nixosModules.home-manager { nixpkgs.overlays = [ diff --git a/hosts/desktop/1 b/hosts/desktop/1 new file mode 100644 index 0000000..73990a7 --- /dev/null +++ b/hosts/desktop/1 @@ -0,0 +1,96 @@ +# +# Hardware settings for Teclast F5 10" Laptop +# NixOS @ sda2 +# +# flake.nix +# └─ ./hosts +# └─ ./laptop +# └─ hardware-configuration.nix * +# +# 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 = [ "ahci" "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci" "rtsx_usb_sdmmc" ]; + boot.initrd.kernelModules = [ "vfio_pci" "vfio" "vfio_iommu_type1" "vfio_virqfd" ]; + boot.kernelModules = [ "kvm" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@home" ]; + }; + + fileSystems."/opt" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@opt" ]; + }; + + fileSystems."/srv" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@srv" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + }; + + fileSystems."/mnt/Herkules" = + { device = "truenas:/mnt/Herkules"; + fsType = "nfs"; + options = [ "noauto,users,x-systemd.automount,x-systemd.device-timeout=10,soft,timeo=14,x-systemd.idle-timeout=1min,sec=sys,exec" ]; + }; + + fileSystems."/mnt/Nova" = + { device = "truenas:/mnt/Nova"; + fsType = "nfs"; + options = [ "noauto,users,x-systemd.automount,x-systemd.device-timeout=10,soft,timeo=14,x-systemd.idle-timeout=1min,sec=sys,exec" ]; + }; + + + swapDevices = [ ]; + + networking = { + useDHCP = false; # Deprecated + hostName = "hades"; + networkmanager = { + enable = true; + }; + interfaces = { + eth0 = { + useDHCP = true; # For versatility sake, manually edit IP on nm-applet. + #ipv4.addresses = [ { + # address = "192.168.0.51"; + # prefixLength = 24; + #} ]; + }; + }; + #defaultGateway = "192.168.0.1"; + #nameservers = [ "192.168.0.4" ]; + #firewall = { + # enable = false; + # #allowedUDPPorts = [ 53 67 ]; + # #allowedTCPPorts = [ 53 80 443 9443 ]; + #}; + }; + + #hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + # high-resolution display + hardware.video.hidpi.enable = lib.mkDefault true; +} diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix new file mode 100644 index 0000000..a963ff2 --- /dev/null +++ b/hosts/desktop/default.nix @@ -0,0 +1,91 @@ +# +# Specific system configuration settings for desktop +# +# flake.nix +# ├─ ./hosts +# │ └─ ./laptop +# │ ├─ default.nix * +# │ └─ hardware-configuration.nix +# └─ ./modules +# ├─ ./desktop +# │ └─ ./hyprland +# │ └─ hyprland.nix +# ├─ ./modules +# │ └─ ./programs +# │ └─ waybar.nix +# └─ ./hardware +# └─ default.nix +# + +{ config, pkgs, user, ... }: + +{ + imports = # For now, if applying to other system, swap files + [(import ./hardware-configuration.nix)] ++ # Current system hardware config @ /etc/nixos/hardware-configuration.nix + #[(import ../../modules/desktop/hyprland/default.nix)] ++ # Window Manager + [(import ../../modules/desktop/sway/default.nix)] ++ # Window Manager + [(import ../../modules/desktop/virtualisation/docker.nix)] ++ # Docker + (import ../../modules/hardware); # Hardware devices + + boot = { # Boot options + kernelPackages = pkgs.linuxPackages_latest; + + loader = { # EFI Boot + systemd-boot.enable = true; + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + timeout = 1; # Grub auto select time + }; + }; + +# hardware.sane = { # Used for scanning with Xsane +# enable = false; +# extraBackends = [ pkgs.sane-airscan ]; +# }; + +# environment = { +# systemPackages = with pkgs; [ +## simple-scan +## intel-media-driver +## alacritty +# ]; +# }; + + programs = { # No xbacklight, this is the alterantive + dconf.enable = true; + light.enable = true; + ssh.startAgent = false; + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryFlavor = "curses"; + }; + }; + + services = { + #auto-cpufreq.enable = true; + blueman.enable = true; + printing = { # Printing and drivers for TS5300 + enable = true; + drivers = [ pkgs.gutenprint ]; + }; + avahi = { # Needed to find wireless printer + enable = true; + nssmdns = true; + publish = { # Needed for detecting the scanner + enable = true; + addresses = true; + userServices = true; + }; + }; + + }; + + #temporary bluetooth fix +# systemd.tmpfiles.rules = [ +# "d /var/lib/bluetooth 700 root root - -" +# ]; +# systemd.targets."bluetooth".after = ["systemd-tmpfiles-setup.service"]; +} diff --git a/hosts/desktop/hardware-configuration.nix b/hosts/desktop/hardware-configuration.nix new file mode 100644 index 0000000..73990a7 --- /dev/null +++ b/hosts/desktop/hardware-configuration.nix @@ -0,0 +1,96 @@ +# +# Hardware settings for Teclast F5 10" Laptop +# NixOS @ sda2 +# +# flake.nix +# └─ ./hosts +# └─ ./laptop +# └─ hardware-configuration.nix * +# +# 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 = [ "ahci" "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci" "rtsx_usb_sdmmc" ]; + boot.initrd.kernelModules = [ "vfio_pci" "vfio" "vfio_iommu_type1" "vfio_virqfd" ]; + boot.kernelModules = [ "kvm" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@home" ]; + }; + + fileSystems."/opt" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@opt" ]; + }; + + fileSystems."/srv" = + { device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "compress=zstd,space_cache=v2,ssd,noatime,subvol=@srv" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + }; + + fileSystems."/mnt/Herkules" = + { device = "truenas:/mnt/Herkules"; + fsType = "nfs"; + options = [ "noauto,users,x-systemd.automount,x-systemd.device-timeout=10,soft,timeo=14,x-systemd.idle-timeout=1min,sec=sys,exec" ]; + }; + + fileSystems."/mnt/Nova" = + { device = "truenas:/mnt/Nova"; + fsType = "nfs"; + options = [ "noauto,users,x-systemd.automount,x-systemd.device-timeout=10,soft,timeo=14,x-systemd.idle-timeout=1min,sec=sys,exec" ]; + }; + + + swapDevices = [ ]; + + networking = { + useDHCP = false; # Deprecated + hostName = "hades"; + networkmanager = { + enable = true; + }; + interfaces = { + eth0 = { + useDHCP = true; # For versatility sake, manually edit IP on nm-applet. + #ipv4.addresses = [ { + # address = "192.168.0.51"; + # prefixLength = 24; + #} ]; + }; + }; + #defaultGateway = "192.168.0.1"; + #nameservers = [ "192.168.0.4" ]; + #firewall = { + # enable = false; + # #allowedUDPPorts = [ 53 67 ]; + # #allowedTCPPorts = [ 53 80 443 9443 ]; + #}; + }; + + #hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + # high-resolution display + hardware.video.hidpi.enable = lib.mkDefault true; +} diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix new file mode 100644 index 0000000..bfa724b --- /dev/null +++ b/hosts/desktop/home.nix @@ -0,0 +1,57 @@ +# +# Home-manager configuration for laptop +# +# flake.nix +# ├─ ./hosts +# │ └─ ./laptop +# │ └─ home.nix * +# └─ ./modules +# └─ ./desktop +# └─ ./hyprland +# └─ hyprland.nix +# + +{ pkgs, ... }: + +{ + imports = + [ + #../../modules/desktop/hyprland/home.nix # Window Manager + ../../modules/desktop/sway/home.nix # Window Manager + ../../modules/home.nix # Window Manager + ]; + + home = { # Specific packages for laptop + packages = with pkgs; [ + # Applications + libreoffice # Office packages + #firefox + chromium + thunderbird + streamlink + streamlink-twitch-gui-bin + element-desktop + pulsemixer + yubioath-desktop + + # Display + #light # xorg.xbacklight not supported. Other option is just use xrandr. + + # Power Management + #auto-cpufreq # Power management + #tlp # Power management + ]; + }; + + programs = { + alacritty.settings.font.size = 11; + }; + + services = { # Applets + blueman-applet.enable = true; # Bluetooth + network-manager-applet.enable = true; # Network + }; + + xsession.preferStatusNotifierItems = true; + +}