From 35742c15115655010fd5f6d8413b390c5ba38c80 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Wed, 4 Oct 2023 21:10:41 -0700 Subject: [PATCH 1/7] chore(genesis-shell): update --- pkgs/desktops/genesis-shell/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/genesis-shell/default.nix b/pkgs/desktops/genesis-shell/default.nix index 2c0c5b5..3ed4e73 100644 --- a/pkgs/desktops/genesis-shell/default.nix +++ b/pkgs/desktops/genesis-shell/default.nix @@ -1,6 +1,6 @@ { lib, fetchFromGitHub, runCommand, flutter, pkg-config, expidus }@pkgs: let - rev = "924750b6cbe96476dc2470e43e32f6dd1324d6e6"; + rev = "bb27f2ef05d3aa8c3250d06df94451dbcf795150"; in flutter.buildFlutterApplication { pname = "genesis-shell"; @@ -10,7 +10,7 @@ flutter.buildFlutterApplication { owner = "ExpidusOS"; repo = "genesis"; inherit rev; - sha256 = "sha256-zu6OABmcsathAr0RpQHuLoE5eOFT2qEVzxQnUrcM96o="; + sha256 = "sha256-M4rlp4QQsN+LX+q+tnFQVJ1NkbTC6p4xoXuB4FqBMwc="; }; depsListFile = ./deps.json; From 1de21821a599df1b27fdd932f30969bd8f9e3291 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 8 Oct 2023 22:28:47 -0700 Subject: [PATCH 2/7] chore: update genesis shell and gokai --- flake.nix | 2 +- pkgs/desktops/genesis-shell/default.nix | 7 +- pkgs/desktops/genesis-shell/deps.json | 223 ++++++++++-------- .../libraries/expidus/gokai/default.nix | 4 +- variants/mainline/lib/make-datafs.nix | 12 +- variants/mainline/lib/make-efipart.nix | 2 +- variants/mainline/lib/make-rootfs.nix | 2 +- 7 files changed, 146 insertions(+), 106 deletions(-) diff --git a/flake.nix b/flake.nix index 5c7e400..fbae7c0 100644 --- a/flake.nix +++ b/flake.nix @@ -48,7 +48,7 @@ }; trivial = prev.trivial.extend (f: p: { - revision = "${self.rev or "diry"}"; + revision = "${self.rev or "dirty"}"; }); }); }); diff --git a/pkgs/desktops/genesis-shell/default.nix b/pkgs/desktops/genesis-shell/default.nix index 3ed4e73..26cfabd 100644 --- a/pkgs/desktops/genesis-shell/default.nix +++ b/pkgs/desktops/genesis-shell/default.nix @@ -1,6 +1,6 @@ { lib, fetchFromGitHub, runCommand, flutter, pkg-config, expidus }@pkgs: let - rev = "bb27f2ef05d3aa8c3250d06df94451dbcf795150"; + rev = "cc0df545568a68265a44643ce7a568966a99a55d"; in flutter.buildFlutterApplication { pname = "genesis-shell"; @@ -10,11 +10,11 @@ flutter.buildFlutterApplication { owner = "ExpidusOS"; repo = "genesis"; inherit rev; - sha256 = "sha256-M4rlp4QQsN+LX+q+tnFQVJ1NkbTC6p4xoXuB4FqBMwc="; + sha256 = "sha256-JE3RYL7zAkQSSDkBQxVKuwtVDHqURzN0RcyqQP3Kb58="; }; depsListFile = ./deps.json; - vendorHash = "sha256-MFiWD7KGrjMga4SxGUNmUIh986xtXM1QjGRK83ENgmI="; + vendorHash = "sha256-1x4683cdTslj6udQKloqwGSs76fCoMSTQ4+aMDnMtPM="; nativeBuildInputs = [ pkg-config @@ -23,6 +23,7 @@ flutter.buildFlutterApplication { flutterBuildFlags = [ "--local-engine=${expidus.gokai.flutter-engine}/out/host_release" "--local-engine-src-path=${expidus.gokai.flutter-engine}" + "--dart-define=COMMIT_HASH=${rev}" ]; buildInputs = [ diff --git a/pkgs/desktops/genesis-shell/deps.json b/pkgs/desktops/genesis-shell/deps.json index d170752..ee56bb6 100644 --- a/pkgs/desktops/genesis-shell/deps.json +++ b/pkgs/desktops/genesis-shell/deps.json @@ -15,31 +15,27 @@ "xdg_directories", "flutter_adaptive_scaffold", "provider", + "shared_preferences_platform_interface", + "file", + "path", + "package_info_plus", "flutter_test", "flutter_lints", - "file" + "win32" ] }, { - "name": "file", - "version": "7.0.0", + "name": "win32", + "version": "5.0.9", "kind": "transitive", "source": "hosted", "dependencies": [ - "meta", - "path" + "ffi" ] }, { - "name": "path", - "version": "1.8.3", - "kind": "transitive", - "source": "hosted", - "dependencies": [] - }, - { - "name": "meta", - "version": "1.9.1", + "name": "ffi", + "version": "2.1.0", "kind": "transitive", "source": "hosted", "dependencies": [] @@ -121,6 +117,13 @@ "term_glyph" ] }, + { + "name": "path", + "version": "1.8.3", + "kind": "direct", + "source": "hosted", + "dependencies": [] + }, { "name": "collection", "version": "1.17.2", @@ -147,6 +150,13 @@ "meta" ] }, + { + "name": "meta", + "version": "1.9.1", + "kind": "transitive", + "source": "hosted", + "dependencies": [] + }, { "name": "material_color_utilities", "version": "0.5.0", @@ -258,6 +268,109 @@ "source": "sdk", "dependencies": [] }, + { + "name": "package_info_plus", + "version": "4.1.0", + "kind": "direct", + "source": "hosted", + "dependencies": [ + "ffi", + "flutter", + "flutter_web_plugins", + "http", + "meta", + "path", + "package_info_plus_platform_interface", + "win32" + ] + }, + { + "name": "package_info_plus_platform_interface", + "version": "2.0.1", + "kind": "transitive", + "source": "hosted", + "dependencies": [ + "flutter", + "meta", + "plugin_platform_interface" + ] + }, + { + "name": "plugin_platform_interface", + "version": "2.1.4", + "kind": "transitive", + "source": "hosted", + "dependencies": [ + "meta" + ] + }, + { + "name": "http", + "version": "1.1.0", + "kind": "transitive", + "source": "hosted", + "dependencies": [ + "async", + "http_parser", + "meta" + ] + }, + { + "name": "http_parser", + "version": "4.0.2", + "kind": "transitive", + "source": "hosted", + "dependencies": [ + "collection", + "source_span", + "string_scanner", + "typed_data" + ] + }, + { + "name": "typed_data", + "version": "1.3.2", + "kind": "transitive", + "source": "hosted", + "dependencies": [ + "collection" + ] + }, + { + "name": "flutter_web_plugins", + "version": "0.0.0", + "kind": "transitive", + "source": "sdk", + "dependencies": [ + "flutter", + "characters", + "collection", + "material_color_utilities", + "meta", + "vector_math", + "web" + ] + }, + { + "name": "file", + "version": "7.0.0", + "kind": "direct", + "source": "hosted", + "dependencies": [ + "meta", + "path" + ] + }, + { + "name": "shared_preferences_platform_interface", + "version": "2.3.1", + "kind": "direct", + "source": "hosted", + "dependencies": [ + "flutter", + "plugin_platform_interface" + ] + }, { "name": "provider", "version": "6.0.5", @@ -329,13 +442,6 @@ "meta" ] }, - { - "name": "ffi", - "version": "2.0.2", - "kind": "transitive", - "source": "hosted", - "dependencies": [] - }, { "name": "args", "version": "2.4.2", @@ -379,30 +485,6 @@ "flutter" ] }, - { - "name": "plugin_platform_interface", - "version": "2.1.4", - "kind": "transitive", - "source": "hosted", - "dependencies": [ - "meta" - ] - }, - { - "name": "flutter_web_plugins", - "version": "0.0.0", - "kind": "transitive", - "source": "sdk", - "dependencies": [ - "flutter", - "characters", - "collection", - "material_color_utilities", - "meta", - "vector_math", - "web" - ] - }, { "name": "event", "version": "2.1.2", @@ -461,15 +543,6 @@ "typed_data" ] }, - { - "name": "typed_data", - "version": "1.3.2", - "kind": "transitive", - "source": "hosted", - "dependencies": [ - "collection" - ] - }, { "name": "path_provider", "version": "2.0.15", @@ -497,15 +570,6 @@ "win32" ] }, - { - "name": "win32", - "version": "3.1.4", - "kind": "transitive", - "source": "hosted", - "dependencies": [ - "ffi" - ] - }, { "name": "path_provider_platform_interface", "version": "2.0.6", @@ -557,29 +621,6 @@ "path_provider_platform_interface" ] }, - { - "name": "http", - "version": "1.1.0", - "kind": "transitive", - "source": "hosted", - "dependencies": [ - "async", - "http_parser", - "meta" - ] - }, - { - "name": "http_parser", - "version": "4.0.2", - "kind": "transitive", - "source": "hosted", - "dependencies": [ - "collection", - "source_span", - "string_scanner", - "typed_data" - ] - }, { "name": "url_launcher", "version": "6.1.12", @@ -748,16 +789,6 @@ "shared_preferences_platform_interface" ] }, - { - "name": "shared_preferences_platform_interface", - "version": "2.3.0", - "kind": "transitive", - "source": "hosted", - "dependencies": [ - "flutter", - "plugin_platform_interface" - ] - }, { "name": "shared_preferences_web", "version": "2.2.0", diff --git a/pkgs/development/libraries/expidus/gokai/default.nix b/pkgs/development/libraries/expidus/gokai/default.nix index 6af127d..04c3e25 100644 --- a/pkgs/development/libraries/expidus/gokai/default.nix +++ b/pkgs/development/libraries/expidus/gokai/default.nix @@ -34,7 +34,7 @@ flutter-engine }@pkgs: let - rev = "37dd43cf87d0976af784257051686a9aad28574b"; + rev = "27227fcccd5c3186f8dc47321cecab9ed1026dfc"; in stdenv.mkDerivation rec { pname = "gokai"; @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { owner = "ExpidusOS"; repo = "gokai"; inherit rev; - sha256 = "sha256-0bSldPyFyj2n4hIal5aEUkTj9KX3fvhm+6kVJ0ylZY0="; + sha256 = "sha256-RXYNrqAGC2dcDbzh8TXafUJfEmBSefJYp6+xUL2Gs9g="; }; passthru = { diff --git a/variants/mainline/lib/make-datafs.nix b/variants/mainline/lib/make-datafs.nix index 33cdaa6..2181bf5 100644 --- a/variants/mainline/lib/make-datafs.nix +++ b/variants/mainline/lib/make-datafs.nix @@ -8,7 +8,7 @@ contents ? [], postVM ? "", mutable ? false, - name ? "expidus-datafs" + name ? "${config.system.build.toplevel.name}-datafs" }: assert (lib.assertMsg (lib.all (attrs: ((attrs.user or null) == null) @@ -76,6 +76,10 @@ let format' = format; in let root="$PWD/root" mkdir -p $root/{config,pkgs,users,var/{cache,db,lib,log,tmp}} + ${concatMapStrings (user: optionalString user.isNormalUser '' + mkdir -p $root/users/${user.name} + '') (attrValues config.users.users)} + mkdir -m 0700 -p $root/config/networks touch $root/config/machine-id touch $root/config/resolv.conf @@ -210,10 +214,14 @@ in pkgs.vmTools.runInLinuxVM (pkgs.runCommand filename { group="''${groups_[$i]}" if [ -n "$user$group" ]; then - chroot $mountPoint chown -R "$user:$group" "/var/run/expidus/$target" + chroot $mountPoint chown -R "$user:$group" "/data/$target" fi done + ${concatMapStrings (user: optionalString user.isNormalUser '' + chroot "$mountPoint" chown -R ${user.name} /data/users/${user.name} + '') (attrValues config.users.users)} + umount $mountPoint/data umount $mountPoint diff --git a/variants/mainline/lib/make-efipart.nix b/variants/mainline/lib/make-efipart.nix index 1291acd..cbff276 100644 --- a/variants/mainline/lib/make-efipart.nix +++ b/variants/mainline/lib/make-efipart.nix @@ -5,7 +5,7 @@ format ? "raw", contents ? [], postVM ? "", - name ? "expidus-efipart" + name ? "${config.system.build.toplevel.name}-efipart" }: assert (lib.assertMsg (lib.all (attrs: ((attrs.user or null) == null) diff --git a/variants/mainline/lib/make-rootfs.nix b/variants/mainline/lib/make-rootfs.nix index 21ca651..fbf92c3 100644 --- a/variants/mainline/lib/make-rootfs.nix +++ b/variants/mainline/lib/make-rootfs.nix @@ -9,7 +9,7 @@ contents ? [], postVM ? "", mutable ? false, - name ? "expidus-rootfs" + name ? "${config.system.build.toplevel.name}-rootfs" }: assert (lib.assertMsg (lib.all (attrs: ((attrs.user or null) == null) From 3daa466a881bae024ba27542d37722ef204ae5a5 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Thu, 12 Oct 2023 18:43:52 -0700 Subject: [PATCH 3/7] chore: create networkmanager dispatcher directory --- variants/mainline/lib/make-rootfs.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/variants/mainline/lib/make-rootfs.nix b/variants/mainline/lib/make-rootfs.nix index fbf92c3..1595092 100644 --- a/variants/mainline/lib/make-rootfs.nix +++ b/variants/mainline/lib/make-rootfs.nix @@ -96,10 +96,9 @@ let format' = format; in let mkdir -p $root/data mkdir -m 0755 -p $root/etc + mkdir -p $root/etc/NetworkManager/dispatcher.d touch $root/etc/EXPIDUS - mkdir $root/etc/NetworkManager - ln -s /data/config/machine-id $root/etc/machine-id ln -s /data/config/resolv.conf $root/etc/resolv.conf ln -s /data/config/networks $root/etc/NetworkManager/system-connections From 468eab2d5629072151142e2fc0d8a6d951e38755 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Thu, 12 Oct 2023 20:52:09 -0700 Subject: [PATCH 4/7] chore: add ssl certificates --- variants/mainline/modules/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/variants/mainline/modules/default.nix b/variants/mainline/modules/default.nix index 4e5fdfc..ec07691 100644 --- a/variants/mainline/modules/default.nix +++ b/variants/mainline/modules/default.nix @@ -83,6 +83,7 @@ with import ./utils.nix channels; "${nixpkgs}/nixos/modules/programs/xwayland.nix" "${nixpkgs}/nixos/modules/security/audit.nix" "${nixpkgs}/nixos/modules/security/apparmor.nix" + "${nixpkgs}/nixos/modules/security/ca.nix" "${nixpkgs}/nixos/modules/security/oath.nix" "${nixpkgs}/nixos/modules/security/pam_mount.nix" "${nixpkgs}/nixos/modules/security/pam_usb.nix" From b0011bc4e2e12a4016369ded01ad1f05e1f70432 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 15 Oct 2023 11:54:44 -0700 Subject: [PATCH 5/7] chore: update flake --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 08e8262..81948c7 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "disko": { "flake": false, "locked": { - "lastModified": 1695864092, - "narHash": "sha256-Hu1SkFPqO7ND95AOzBkZE2jGXSYhfZ965C03O72Kbu8=", + "lastModified": 1697230660, + "narHash": "sha256-Faw7qTLNVZYxW1nBHKhfrKY0lOicJaxxHh5u/Gq4M3Q=", "owner": "nix-community", "repo": "disko", - "rev": "19b62324663b6b9859caf7f335d232cf4f1f6a32", + "rev": "6ad5c9c17cbd5514ce0cc2692dd82dd6d8e5d879", "type": "github" }, "original": { @@ -53,11 +53,11 @@ "nixpkgs": { "flake": false, "locked": { - "lastModified": 1696204936, - "narHash": "sha256-vrAWz9P9WC45EFwtCdZjldGO9DO3JdFXN6Rpkn+2a5Y=", + "lastModified": 1697337051, + "narHash": "sha256-vske7teLWoK+xF4z2EYJbb6u3zIspyqrUZV3zGfIZCw=", "owner": "ExpidusOS", "repo": "nixpkgs", - "rev": "152146f0be1d8fdb606ea617eeadeaf50676b87c", + "rev": "904390053560daddbbee0acd700e2342c02d048f", "type": "github" }, "original": { From 9f3dd99f3d4e4693417591f745f5f693c40b667a Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Mon, 16 Oct 2023 10:13:14 -0700 Subject: [PATCH 6/7] fix: make buildable on apple silicon --- pkgs/tools/system/expidus/config/default.nix | 3 ++- variants/mainline/lib/make-datafs.nix | 1 - variants/mainline/modules/system/build/datafs.nix | 15 ++++++++++++++- .../mainline/modules/system/build/efipart.nix | 15 ++++++++++++++- variants/mainline/modules/system/build/rootfs.nix | 15 ++++++++++++++- variants/mainline/modules/system/config.nix | 8 +++++++- 6 files changed, 51 insertions(+), 6 deletions(-) diff --git a/pkgs/tools/system/expidus/config/default.nix b/pkgs/tools/system/expidus/config/default.nix index 0231a0a..05291a7 100644 --- a/pkgs/tools/system/expidus/config/default.nix +++ b/pkgs/tools/system/expidus/config/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, stdenv, zig }: +{ lib, fetchFromGitHub, targetPlatform, stdenv, zig }: let rev = "956c299546ce3c30d15a4d67404839182b701742"; in @@ -34,5 +34,6 @@ stdenv.mkDerivation { maintainers = with maintainers; [ RossComputerGuy ]; platforms = platforms.linux; mainProgram = "expidus-config"; + broken = targetPlatform.isAarch64; }; } diff --git a/variants/mainline/lib/make-datafs.nix b/variants/mainline/lib/make-datafs.nix index 2181bf5..c16bec0 100644 --- a/variants/mainline/lib/make-datafs.nix +++ b/variants/mainline/lib/make-datafs.nix @@ -83,7 +83,6 @@ let format' = format; in let mkdir -m 0700 -p $root/config/networks touch $root/config/machine-id touch $root/config/resolv.conf - cp --no-preserve=mode,ownership ${config.system.build.systemConfig} $root/config/system.json set -f sources_=(${concatStringsSep " " sources}) diff --git a/variants/mainline/modules/system/build/datafs.nix b/variants/mainline/modules/system/build/datafs.nix index 687629e..02a83eb 100644 --- a/variants/mainline/modules/system/build/datafs.nix +++ b/variants/mainline/modules/system/build/datafs.nix @@ -5,7 +5,7 @@ let datafs = import ../../../lib/make-datafs.nix { inherit config lib pkgs; - inherit (cfg) mutable additionalSpace diskSize options; + inherit (cfg) mutable additionalSpace diskSize options contents; }; in { @@ -21,6 +21,19 @@ in default = "auto"; description = mdDoc "The size to allocate for the disk image, auto to automatically allocate."; }; + contents = mkOption { + example = literalExpression '' + [ { source = pkgs.memtest86 + "/memtest.bin"; + target = "boot/memtest.bin"; + } + ] + ''; + default = []; + description = mdDoc '' + This option lists files to be copied to fixed locations in the + generated image. + ''; + }; options = mkOption { type = with types; listOf str; default = []; diff --git a/variants/mainline/modules/system/build/efipart.nix b/variants/mainline/modules/system/build/efipart.nix index 60d18e5..332a91a 100644 --- a/variants/mainline/modules/system/build/efipart.nix +++ b/variants/mainline/modules/system/build/efipart.nix @@ -5,7 +5,7 @@ let efipart = import ../../../lib/make-efipart.nix { inherit config lib pkgs; - inherit (cfg) diskSize; + inherit (cfg) diskSize contents; }; in { @@ -16,6 +16,19 @@ in default = "512M"; description = mdDoc "The size to allocate for the disk image, auto to automatically allocate."; }; + contents = mkOption { + example = literalExpression '' + [ { source = pkgs.memtest86 + "/memtest.bin"; + target = "boot/memtest.bin"; + } + ] + ''; + default = []; + description = mdDoc '' + This option lists files to be copied to fixed locations in the + generated image. + ''; + }; volume = mkOption { type = types.str; default = "EXPIDUS"; diff --git a/variants/mainline/modules/system/build/rootfs.nix b/variants/mainline/modules/system/build/rootfs.nix index 033332b..f91c4e4 100644 --- a/variants/mainline/modules/system/build/rootfs.nix +++ b/variants/mainline/modules/system/build/rootfs.nix @@ -5,7 +5,7 @@ let rootfs = import ../../../lib/make-rootfs.nix { inherit config lib pkgs; - inherit (cfg) mutable additionalSpace diskSize options; + inherit (cfg) mutable additionalSpace diskSize options contents; additionalPaths = cfg.storePaths; }; in @@ -27,6 +27,19 @@ in default = []; description = mdDoc "The arguments to pass to mkfs"; }; + contents = mkOption { + example = literalExpression '' + [ { source = pkgs.memtest86 + "/memtest.bin"; + target = "boot/memtest.bin"; + } + ] + ''; + default = []; + description = mdDoc '' + This option lists files to be copied to fixed locations in the + generated image. + ''; + }; additionalSpace = mkOption { type = types.str; default = "1024M"; diff --git a/variants/mainline/modules/system/config.nix b/variants/mainline/modules/system/config.nix index 653a820..226561c 100644 --- a/variants/mainline/modules/system/config.nix +++ b/variants/mainline/modules/system/config.nix @@ -13,9 +13,15 @@ with lib; }; }; - config = { + config = mkIf (pkgs.targetPlatform.isAarch64 == false) { system.build.systemConfig = pkgs.writers.writeJSON "expidus-system.json" config.system.config; environment.etc."expidus/default-system.json".source = config.system.build.systemConfig; environment.systemPackages = with pkgs; [ expidus.config ]; + system.datafs.contents = [ + { + source = config.system.build.systemConfig; + target = "config/system.json"; + } + ]; }; } From f467bea16739c80d7c016394a8bfc9ae7ff973f4 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Mon, 16 Oct 2023 12:44:53 -0700 Subject: [PATCH 7/7] fix(efipart): kernel file --- variants/mainline/lib/make-efipart.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/mainline/lib/make-efipart.nix b/variants/mainline/lib/make-efipart.nix index cbff276..33cc6e2 100644 --- a/variants/mainline/lib/make-efipart.nix +++ b/variants/mainline/lib/make-efipart.nix @@ -53,7 +53,7 @@ let format' = format; in let cp -r ${pkgs.refind}/share/refind/fonts $root/EFI/refind/fonts ${optionalString (config.boot.efi.populateRootfs == false) '' - cp ${config.system.build.kernel}/bzImage $root/EFI/expidus/vmlinuz + cp ${config.system.build.kernel}/${pkgs.stdenv.hostPlatform.linux-kernel.target} $root/EFI/expidus/vmlinuz cp ${config.system.build.initialRamdisk}/initrd $root/EFI/expidus/initramfs.img ''}