diff --git a/nixos/anbox.nix b/nixos/anbox.nix new file mode 100644 index 0000000..e2233e9 --- /dev/null +++ b/nixos/anbox.nix @@ -0,0 +1,43 @@ +{ stdenv, lib, fetchFromGitHub, kernel, kmod, name, ... }: + +let anbox-modules = + fetchFromGitHub { + owner = "choff"; + repo = "anbox-modules"; + rev = "8148a162755bf5500a07cf41a65a02c8f3eb0af9"; + sha256 = "sha256-5YeKwLP0qdtmWbL6AXluyTmVcmKJJOFcZJ5NxXSSgok="; + }; +in +stdenv.mkDerivation rec { + inherit name; + version = "0"; + + src = "${anbox-modules}/${name}"; + + #sourceRoot = "${src}/${ashmem}"; + hardeningDisable = [ "pic" "format" ]; + nativeBuildInputs = kernel.moduleBuildDependencies; + + KERNEL_SRC = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"; + + buildPhase = "make INSTALL_MOD_PATH=$out"; + installPhase = '' + modDir=$out/lib/modules/${kernel.modDirVersion}/kernel/updates/ + mkdir -p $modDir + mv ${name}_linux.ko $modDir/. + ''; + + /* makeFlags = [ + "KERNELRELEASE=${kernel.modDirVersion}" + "KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "INSTALL_MOD_PATH=$(out)" + ]; */ + + meta = with lib; { + description = "Kernel module for anbox - ${name}"; + homepage = "https://github.com/choff/anbox-modules"; + license = licenses.gpl2; + maintainers = [ ]; + platforms = platforms.linux; + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 8a03785..69bd856 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -58,6 +58,10 @@ }; }; + boot.kernelPackages = pkgs.linuxPackages_latest; + /* nixpkgs.config.allowBroken = true; */ + virtualisation.waydroid.enable = true; + security.pam.services.swaylock = { text = '' auth include login diff --git a/nixos/pkg.nix b/nixos/pkg.nix index 12f2da3..d5827ca 100644 --- a/nixos/pkg.nix +++ b/nixos/pkg.nix @@ -1,5 +1,9 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: +let + ashmem = config.boot.kernelPackages.callPackage ./anbox.nix { name = "ashmem"; }; + binder = config.boot.kernelPackages.callPackage ./anbox.nix { name = "binder"; }; +in { xdg = { portal = { @@ -19,6 +23,9 @@ ''; }; + boot.extraModulePackages = [ ashmem binder ]; + boot.kernelModules = [ "ashmem_linux" "binder_linux" ]; + nixpkgs.config = { allowUnfree = true; };