diff --git a/flake.nix b/flake.nix index cd126a8..a4fad2f 100644 --- a/flake.nix +++ b/flake.nix @@ -69,6 +69,7 @@ in { nixosConfigurations."blossom" = mkSystem nixpkgs "blossom" "x86_64-linux" true []; + nixosConfigurations."hyacinth" = mkSystem nixpkgs "hyacinth" "x86_64-linux" true []; nixosConfigurations."caramel" = mkSystem nixpkgs-raccoon "caramel" "aarch64-linux" false [{ nixpkgs.overlays = [ diff --git a/hosts/hyacinth/default.nix b/hosts/hyacinth/default.nix new file mode 100644 index 0000000..8a29734 --- /dev/null +++ b/hosts/hyacinth/default.nix @@ -0,0 +1,41 @@ +{ config, inputs, modules, overlays, pkgs, ... }: { + networking.hostName = "hyacinth"; + system.stateVersion = "21.11"; + time.timeZone = "Asia/Phnom_Penh"; + + boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; + nixpkgs.overlays = [ inputs.neovim-nightly.overlay ]; + age.secrets = { + passwd.file = ../../secrets/passwd.age; + wg_hyacinth.file = ../../secrets/wg_blossom.age; + wpa_conf.file = ../../secrets/wpa_conf.age; + }; + imports = with modules.system; [ + inputs.home-manager.nixosModule + home-manager + + audio + base + greetd + gui + input + kernel + nix + packages + security + snapper + wireguard + + ./filesystem.nix + ./kernel.nix + ./networking.nix + + ../../users/rin + ]; + programs.corectrl.enable = true; + services.murmur = { + enable = true; + openFirewall = true; + }; +} + diff --git a/hosts/hyacinth/filesystem.nix b/hosts/hyacinth/filesystem.nix new file mode 100644 index 0000000..3d15369 --- /dev/null +++ b/hosts/hyacinth/filesystem.nix @@ -0,0 +1,35 @@ +{ config, ... }: +let + mkLabelMount = label: type: { + device = "/dev/disk/by-label/${label}"; + fsType = type; + options = [ "defaults" "relatime" ]; + }; + mkBtrfsMount = subvol: atime: mkLabelMount "CAKE" "btrfs" // { + options = [ "autodefrag" "compress=zstd:3" "defaults" "discard=async" "space_cache=v2" "ssd" "subvol=${subvol}" (if atime then "relatime" else "noatime") ]; + }; +in +{ + fileSystems = { + "/" = { + device = "rootfs"; + fsType = "tmpfs"; + options = [ "defaults" "size=8G" "mode=755" ]; + }; + "/boot" = mkLabelMount "CUP" "vfat"; + + "/mnt/butter" = mkBtrfsMount "/" true; + "/nix" = mkBtrfsMount "/current/snow" false; + "/home" = mkBtrfsMount "/current/home" true; + "/home/.snapshots" = mkBtrfsMount "/snapshot/home" false; + "/root" = mkBtrfsMount "/current/root" false; + "/var" = mkBtrfsMount "/current/var" false; + "/persist" = { + depends = [ "/var" ]; + device = "/var/persist"; + fsType = "none"; + options = [ "bind" ]; + neededForBoot = true; + }; + }; +} diff --git a/hosts/hyacinth/kernel.nix b/hosts/hyacinth/kernel.nix new file mode 100644 index 0000000..bb93a4b --- /dev/null +++ b/hosts/hyacinth/kernel.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: { + boot = { + loader = { + efi.canTouchEfiVariables = true; + systemd-boot.enable = true; + }; + initrd.availableKernelModules = [ "xhci_pci" "nvme" ]; + initrd.kernelModules = [ "amdgpu" ]; + kernelParams = [ + "amdgpu.gpu_recovery=1" + "intel_pstate=passive" + ]; + kernelPackages = lib.mkForce (pkgs.linuxPackagesFor pkgs.me.linux-lava); + + extraModulePackages = [ config.boot.kernelPackages.v4l2loopback.out ]; + kernelModules = [ "v4l2loopback" ]; + }; + services.xserver.xrandrHeads = [{ + output = "DisplayPort-0"; + primary = true; + monitorConfig = '' + Modeline "1920x1080_165.00" 525.00 1920 2088 2296 2672 1080 1083 1088 1192 -hsync +vsync + Option "PreferredMode" "1920x1080_165.00" + ''; + }]; +} diff --git a/hosts/hyacinth/networking.nix b/hosts/hyacinth/networking.nix new file mode 100644 index 0000000..5abc656 --- /dev/null +++ b/hosts/hyacinth/networking.nix @@ -0,0 +1,21 @@ +{ config, ... }: { + environment.etc."wpa_supplicant.conf".source = config.age.secrets.wpa_conf.path; + networking = { + useDHCP = false; + interfaces.enp5s0.useDHCP = false; + + interfaces.enp5s0.ipv4.addresses = [{ + address = "192.168.100.16"; + prefixLength = 24; + }]; + defaultGateway = "192.168.100.1"; + nameservers = [ "1.1.1.1" ]; + + extraHosts = '' + 192.168.100.12 strawberry + 192.168.100.15 caramel + + 10.100.0.1 sugarcane + ''; + }; +} diff --git a/modules/system/wireguard.nix b/modules/system/wireguard.nix index 97717db..2684d65 100644 --- a/modules/system/wireguard.nix +++ b/modules/system/wireguard.nix @@ -31,9 +31,9 @@ let serverIp ]; }; - blossom = { + hyacinth = { gateway = "192.168.100.1"; - interface = "wlp3s0"; + interface = "enp5s0"; routes = [ serverIp ]; @@ -45,7 +45,7 @@ let publicKey = "VDqcpS0lJzFgwikj61MJ1xc9P8Cuq0NXa+Hc+etn2iA="; allowedIPs = [ "10.100.0.2/32" ]; }; - blossom = { + hyacinth = { publicKey = "6nVhazYdmC15A/nke9VrqIg3sOBVOmqj4GEsyBq7MVo="; allowedIPs = [ "10.100.0.3/32" ]; }; diff --git a/modules/user/bspwm.nix b/modules/user/bspwm.nix index a17e743..d58b790 100644 --- a/modules/user/bspwm.nix +++ b/modules/user/bspwm.nix @@ -2,7 +2,7 @@ { config, pkgs, ... }: { xsession.windowManager.bspwm = { enable = true; - monitors = { eDP-1 = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "0"]; }; + monitors = { "DisplayPort-0" = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "0"]; }; settings = { window_gap = 10; border_width = 0; diff --git a/modules/user/polybar.nix b/modules/user/polybar.nix index 7b288a0..f5343b5 100644 --- a/modules/user/polybar.nix +++ b/modules/user/polybar.nix @@ -13,7 +13,7 @@ script = builtins.readFile ../../scripts/polybar.sh; settings = { "bar/scroller" = { - monitor = "eDP-1"; + monitor = "DisplayPort-0"; width = "100%"; height = 1; background = colours.background1; @@ -28,7 +28,7 @@ }; "bar/top" = { - monitor = "eDP-1"; + monitor = "DisplayPort-0"; width = "100%"; height = 29; background = colours.background1;