From 5c8c68331dd4caac29009e21925689608a296a45 Mon Sep 17 00:00:00 2001 From: Bun Date: Wed, 23 Apr 2025 14:23:29 -0400 Subject: [PATCH] Add Jovian back again to try it out --- flake.lock | 72 +++++++++++++++++---- flake.nix | 17 +++-- hosts/jupiter/boot/default.nix | 8 +++ hosts/jupiter/default.nix | 28 ++++++++ hosts/jupiter/disko/default.nix | 93 +++++++++++++++++++++++++++ hosts/jupiter/filesystems/default.nix | 11 ++++ hosts/jupiter/hardware/default.nix | 20 ++++++ hosts/jupiter/id_ed25519.pub | 1 + hosts/jupiter/network/default.nix | 13 ++++ hosts/jupiter/users/default.nix | 4 ++ hosts/jupiter/users/main/default.nix | 8 +++ 11 files changed, 256 insertions(+), 19 deletions(-) create mode 100644 hosts/jupiter/boot/default.nix create mode 100644 hosts/jupiter/default.nix create mode 100644 hosts/jupiter/disko/default.nix create mode 100644 hosts/jupiter/filesystems/default.nix create mode 100644 hosts/jupiter/hardware/default.nix create mode 100644 hosts/jupiter/id_ed25519.pub create mode 100644 hosts/jupiter/network/default.nix create mode 100644 hosts/jupiter/users/default.nix create mode 100644 hosts/jupiter/users/main/default.nix diff --git a/flake.lock b/flake.lock index 8f6f8049..f5171384 100644 --- a/flake.lock +++ b/flake.lock @@ -2,7 +2,7 @@ "nodes": { "avf": { "locked": { - "lastModified": 1745286281, + "lastModified": 1745372740, "narHash": "sha256-pkbIduXLW85yB5wV6j72Gpxz5JJhuJBZxhXWsJ4BMd8=", "type": "tarball", "url": "https://github.com/nix-community/nixos-avf/releases/download/nixos-24.11/avf-channel-24.11-aarch64.tar.xz" @@ -15,7 +15,7 @@ "avf-channel": { "locked": { "lastModified": 1, - "narHash": "sha256-56qCMHw9q2hkyh6qlbrTKTN102OfZPkXVI4YGLa5Wgc=", + "narHash": "sha256-iA5CEp0rAhYInuOhyoIt5kvp+2fqNtWjd5aezFVlCxs=", "type": "tarball", "url": "https://github.com/nix-community/nixos-avf/releases/download/nixos-24.11/nixos-channel-24.11-aarch64.tar.xz" }, @@ -85,11 +85,11 @@ ] }, "locked": { - "lastModified": 1745224732, - "narHash": "sha256-0OWgbEKhpMLpk3WQi3ugOwxWW4Y6JVpKiQ+o0nuNzus=", + "lastModified": 1745369821, + "narHash": "sha256-mi6cAjuBztm9gFfpiVo6mAn81cCID6nmDXh5Kmyjwyc=", "owner": "nix-community", "repo": "disko", - "rev": "1770bf1ae5da05564f86b969ef21c7228cc1a70b", + "rev": "c5140c6079ff690e85eac0b86e254de16a79a4b7", "type": "github" }, "original": { @@ -282,6 +282,27 @@ "type": "github" } }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "unstable" + ] + }, + "locked": { + "lastModified": 1745389204, + "narHash": "sha256-gGP+nJ513TrZVL3gbri6iJgMUnNwQz+ntGQE/T5H5rs=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "25ef314fdbff45e1ec790416f1ddb030bcd2af61", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "lanzaboote": { "inputs": { "crane": "crane", @@ -340,11 +361,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1745287043, - "narHash": "sha256-y8DH++s3Zt9LDCRDp7+tehFaeLs4WXRxnR3lFC5qbuY=", + "lastModified": 1745373492, + "narHash": "sha256-gZG/Lpqo4vcey27lyXtAt1jy74cTJ0G+mwCT7dBxapA=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "9c4b4690ea3a1f7233e7f9d3bdfa88e464f77d57", + "rev": "41913d868adce57fa88f678e10c3965a2560e541", "type": "github" }, "original": { @@ -353,6 +374,28 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1733808091, @@ -424,11 +467,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1745353885, - "narHash": "sha256-pPO6GlommUHHbjIilUCBeZdHI4SUyGfTJFBrT6rKhfk=", + "lastModified": 1745430461, + "narHash": "sha256-hQs026p3fxkwVxRSF0GIGZ51CiZugNNLyt42IwCh+7g=", "owner": "nix-community", "repo": "NUR", - "rev": "8bb84605f2d228a466a10b97fa8aa2dc2995cd7d", + "rev": "3b16e74eae922df0a2ad3a4da3d1779fcd426c3d", "type": "github" }, "original": { @@ -472,6 +515,7 @@ "disko": "disko", "hm": "hm", "impermanence": "impermanence", + "jovian": "jovian", "lanzaboote": "lanzaboote", "mailserver": "mailserver", "minecraft": "minecraft", @@ -507,11 +551,11 @@ }, "stable": { "locked": { - "lastModified": 1744440957, - "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "lastModified": 1745279238, + "narHash": "sha256-AQ7M9wTa/Pa/kK5pcGTgX/DGqMHyzsyINfN7ktsI7Fo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", + "rev": "9684b53175fc6c09581e94cc85f05ab77464c7e3", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 04311a67..5cb2ce06 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,15 @@ inputs.nixpkgs.follows = "stable"; }; + # Hardware specific + jovian = { + url = "github:Jovian-Experiments/Jovian-NixOS"; + inputs.nixpkgs.follows = "unstable"; + }; + + avf.url = "https://github.com/nix-community/nixos-avf/releases/download/nixos-24.11/avf-channel-24.11-aarch64.tar.xz"; + avf-channel.url = "https://github.com/nix-community/nixos-avf/releases/download/nixos-24.11/nixos-channel-24.11-aarch64.tar.xz"; + # Service inputs mailserver = { url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.11"; @@ -25,10 +34,6 @@ minecraft.url = "github:Infinidoge/nix-minecraft"; - # Android inputs - avf.url = "https://github.com/nix-community/nixos-avf/releases/download/nixos-24.11/avf-channel-24.11-aarch64.tar.xz"; - avf-channel.url = "https://github.com/nix-community/nixos-avf/releases/download/nixos-24.11/nixos-channel-24.11-aarch64.tar.xz"; - # Home inputs hm = { url = "github:nix-community/home-manager/release-24.11"; @@ -53,6 +58,7 @@ mailserver, minecraft, + jovian, avf, avf-channel, @@ -77,7 +83,8 @@ tower = mkNix [ ./hosts/tower ] stable; # Main Desktop envy = mkNix [ ./hosts/envy ] stable; # HP Convertable - intuos = mkNix [ ./hosts/intuos ] unstable; # Wacom Intuos Tablet + intuos = mkNix [ ./hosts/intuos ] stable; # Wacom Intuos Tablet + jupiter = mkNix [ ./hosts/jupiter ] unstable; # Steam Deck redmond = mkNix [ ./hosts/redmond ] stable; # Lenovo Dual-Boot droid = mkNix [ ./hosts/droid ] avf-channel; # Android Virtualization Framework diff --git a/hosts/jupiter/boot/default.nix b/hosts/jupiter/boot/default.nix new file mode 100644 index 00000000..3cf63f7f --- /dev/null +++ b/hosts/jupiter/boot/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader.systemd-boot.enable = true; + plymouth.enable = true; + }; +} diff --git a/hosts/jupiter/default.nix b/hosts/jupiter/default.nix new file mode 100644 index 00000000..56cbf342 --- /dev/null +++ b/hosts/jupiter/default.nix @@ -0,0 +1,28 @@ +{ lib, jovian, ... }: +{ + imports = [ + ./boot + ./disko + ./filesystems + ./hardware + ./network + ./users + ../../modules/system + ]; + + networking = { + hostName = "jupiter"; + wireless.enable = true; + }; + + system = { + desktop.enable = true; + stateVersion = "24.05"; + }; + + jovian = { + steam.enable = true; + hardware.has.amd.gpu = true; + decky-loader.enable = true; + } +} diff --git a/hosts/jupiter/disko/default.nix b/hosts/jupiter/disko/default.nix new file mode 100644 index 00000000..ed71a3db --- /dev/null +++ b/hosts/jupiter/disko/default.nix @@ -0,0 +1,93 @@ +{ config, disko, ... }: +{ + imports = [ disko.nixosModules.disko ]; + + disko.devices = { + disk = { + "${config.networking.hostName}" = { + type = "disk"; + device = "/dev/nvme0n1"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "1M"; + type = "EF02"; + }; + ESP = { + size = "2G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "${config.networking.hostName}-disk"; + settings.allowDiscards = true; + passwordFile = "/tmp/secret.key"; + content = { + type = "lvm_pv"; + vg = "${config.networking.hostName}"; + }; + }; + }; + }; + }; + }; + }; + + lvm_vg = { + "${config.networking.hostName}" = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/prev" = { + mountpoint = "/prev"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + + # Impermanence + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/persist/.snapshots" = { }; + "/persist/home" = { }; + "/persist/home/.snapshots" = { }; + }; + }; + }; + swap = { + size = "8G"; + content = { + type = "swap"; + discardPolicy = "both"; + }; + }; + }; + }; + }; + }; + + # Needed for impermanence + fileSystems."/persist".neededForBoot = true; +} diff --git a/hosts/jupiter/filesystems/default.nix b/hosts/jupiter/filesystems/default.nix new file mode 100644 index 00000000..af599539 --- /dev/null +++ b/hosts/jupiter/filesystems/default.nix @@ -0,0 +1,11 @@ +{ config, ... }: +{ + fileSystems."/mnt/Games" = { + device = "/dev/disk/by-uuid/a026c6c7-04a0-4f34-82bb-ea7e4f3e85c5"; + fsType = "ext4"; + options = [ + "nofail" + "nosuid" + ]; + }; +} diff --git a/hosts/jupiter/hardware/default.nix b/hosts/jupiter/hardware/default.nix new file mode 100644 index 00000000..a3e7b2bf --- /dev/null +++ b/hosts/jupiter/hardware/default.nix @@ -0,0 +1,20 @@ +{ config, lib, modulesPath, ... }: +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + initrd = { + availableKernelModules = [ + "nvme" + "sd_mod" + "sdhci_pci" + "xhci_pci" + ]; + kernelModules = [ "dm-snapshot" ]; + }; + kernelModules = [ "kvm-amd" ]; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/jupiter/id_ed25519.pub b/hosts/jupiter/id_ed25519.pub new file mode 100644 index 00000000..5319a978 --- /dev/null +++ b/hosts/jupiter/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHJ2Gy1Gaq96K85zOSfgWzGY0rIaUcqGS7Si5Nvzg+n diff --git a/hosts/jupiter/network/default.nix b/hosts/jupiter/network/default.nix new file mode 100644 index 00000000..f87dee8a --- /dev/null +++ b/hosts/jupiter/network/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + networking = { + interfaces."wlp1s0".ipv4.addresses = [{ + address = "192.168.2.200"; + prefixLength = 24; + }]; + defaultGateway = { + address = "192.168.2.1"; + interface = "wlp1s0"; + }; + }; +} diff --git a/hosts/jupiter/users/default.nix b/hosts/jupiter/users/default.nix new file mode 100644 index 00000000..57e7f20b --- /dev/null +++ b/hosts/jupiter/users/default.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + imports = [ ./main ]; +} diff --git a/hosts/jupiter/users/main/default.nix b/hosts/jupiter/users/main/default.nix new file mode 100644 index 00000000..26b7a3ad --- /dev/null +++ b/hosts/jupiter/users/main/default.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: +{ + home-manager.users."${config.sysusers.main}".home = { + desktop.enable = true; + remote-desktop.enable = true; + stateVersion = lib.mkForce config.system.stateVersion; + }; +}