initial commit

This commit is contained in:
Henry Hiles 2025-08-31 10:43:23 -04:00
commit 9c11ad11dd
No known key found for this signature in database
8 changed files with 7248 additions and 0 deletions

0
README.md Normal file
View file

79
config/common/repart.nix Normal file
View file

@ -0,0 +1,79 @@
{
modulesPath,
crossPkgs,
pkgs,
config,
lib,
...
}: let
efiArch = pkgs.stdenv.hostPlatform.efiArch;
in {
imports = ["${modulesPath}/image/repart.nix"];
boot.loader.grub.enable = false;
systemd.repart = {
enable = true;
partitions."03-root".Type = "root";
};
boot.initrd = {
supportedFilesystems.ext4 = true;
systemd = {
enable = true;
root = "gpt-auto";
};
};
fileSystems = {
"/" = {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-label/ESP";
fsType = "vfat";
};
};
image.repart = {
name = "image";
split = true;
partitions = {
"20-esp" = {
contents = {
"/EFI/EDK2-UEFI-SHELL/SHELL.EFI".source = "${crossPkgs.edk2-uefi-shell.overrideAttrs {env.NIX_CFLAGS_COMPILE = "-Wno-error=maybe-uninitialized";}}/shell.efi";
"/EFI/BOOT/BOOT${lib.toUpper efiArch}.EFI".source = "${pkgs.systemd}/lib/systemd/boot/efi/systemd-boot${efiArch}.efi";
"/EFI/Linux/${config.system.boot.loader.ukiFile}".source = "${config.system.build.uki}/${config.system.boot.loader.ukiFile}";
"/loader/loader.conf".source = crossPkgs.writeText "loader.conf" ''
timeout 5
console-mode keep
'';
"/loader/entries/shell.conf".source = crossPkgs.writeText "shell.conf" ''
title EDK2 UEFI Shell
efi /EFI/EDK2-UEFI-SHELL/SHELL.EFI
'';
};
repartConfig = {
Type = "esp";
Label = "ESP";
Format = "vfat";
SplitName = "system";
SizeMinBytes = "500M";
GrowFileSystem = true;
};
};
"30-root" = {
storePaths = [config.system.build.toplevel];
contents."/boot".source = crossPkgs.runCommand "boot" {} "mkdir $out";
repartConfig = {
Type = "root";
Format = "ext4";
Label = "nixos";
Minimize = "guess";
SplitName = "userdata";
GrowFileSystem = true;
};
};
};
};
}

View file

@ -0,0 +1 @@
{imports = [./kernel.nix];}

File diff suppressed because it is too large Load diff

83
config/sdm845/kernel.nix Normal file
View file

@ -0,0 +1,83 @@
# Based on https://github.com/linyinfeng/dotfiles/blob/ff3e52e30fcc27b8119792aee9b3afe9ce4739b6/nixos/profiles/boot/kernel/sdm845-mainline/default.nix, thank you!
{
inputs,
config,
pkgs,
lib,
...
}: let
tag = "sdm845-6.16-rc2-4";
hash = "sha256-Nu7BwSl40Ytm7nCzyctNed7nqwq7NcVVxHLF3KFMKC4=";
version = lib.elemAt (lib.strings.match "sdm845-([0-9\\.]+(-rc[0-9]+)?)(-[a-zA-Z0-9\\-]+)?" tag) 0;
major = lib.versions.major version;
minor = lib.versions.minor version;
inherit (lib.kernel) yes module;
structuredExtraConfig =
(import ../lib/adjust-standalone-config.nix) (import ./_config.nix {inherit lib;})
// {
# for envfs
EROFS_FS = yes;
NET_9P = module;
CONFIG_NET_9P_VIRTIO = module;
"9P_FS" = module;
# other
RUST = yes;
};
in {
#
passthru.kernel = {
conf2nix = inputs.conf2nix.lib.conf2nix {
configFile = "${inputs.pmaports}/device/community/linux-postmarketos-qcom-sdm845/config-postmarketos-qcom-sdm845.aarch64";
inherit (config.boot.kernelPackages) kernel;
preset = "standalone";
};
};
boot = {
kernelPackages = let
linux_sdm845_fn = {
buildLinux,
lib,
...
} @ args:
buildLinux (
args
// {
inherit version;
modDirVersion = "${lib.versions.pad 3 version}-sdm845";
extraMeta.branch = lib.versions.majorMinor version;
src = pkgs.fetchFromGitLab {
owner = "sdm845-mainline";
repo = "linux";
rev = tag;
inherit hash;
};
defconfig = "defconfig sdm845.config";
enableCommonConfig = false;
autoModules = false;
inherit structuredExtraConfig;
stdenv = let
originalPlatform = pkgs.stdenv.hostPlatform;
hostPlatform = assert pkgs.stdenv.hostPlatform.isAarch64;
originalPlatform
// {
linux-kernel =
originalPlatform.linux-kernel
// {
extraConfig = "";
};
};
in
pkgs.stdenv // {inherit hostPlatform;};
}
// (args.argsOverride or {})
);
linux_sdm845 = pkgs.callPackage linux_sdm845_fn {
kernelPatches = lib.filter (p: !(lib.elem p.name [])) (
pkgs."linuxPackages_${major}_${minor}".kernel.kernelPatches or []
);
};
in
pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor linux_sdm845);
};
}

41
flake.nix Executable file
View file

@ -0,0 +1,41 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
gnome-mobile.url = "github:chuangzhu/nixpkgs-gnome-mobile";
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
conf2nix = {
url = "github:linyinfeng/conf2nix";
nixpkgs.follows = "nixpkgs";
};
pmaports = {
url = "gitlab:postmarketOS/pmaports?host=gitlab.postmarketos.org";
flake = false;
};
};
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
systems = ["x86_64-linux" "aarch64-linux"];
perSystem = {
lib,
self',
pkgs,
system,
...
}: {
_module.args.pkgs = import inputs.nixpkgs {inherit system;};
packages = import inputs.nixpkgs {
hostPlatform = system;
localSystem = system;
buildPlatform = "x86_64-linux";
overlays = [inputs.gnome-mobile.overlays.default];
};
};
flake.nixosModules.default = import ./module.nix;
};
}

View file

@ -0,0 +1,9 @@
# Taken from https://github.com/linyinfeng/kukui-nixos/blob/53027913fffd5bf48382bbcec6217d0352dc7278/lib/adjust-standalone-config.nix, thank you!
{lib}: config:
lib.mapAttrs (
_: value:
if (value.tristate or null) == "y"
then lib.mkOverride 90 value
else lib.mkOverride 110 value
)
config

1
module.nix Normal file
View file

@ -0,0 +1 @@
{}: {}