nixos-t2-iso: init
This commit is contained in:
commit
18b206807a
6 changed files with 146 additions and 0 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 kekrby
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
9
README.md
Normal file
9
README.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
## NixOS Iso for T2 Macs
|
||||||
|
|
||||||
|
You can use this flake to build a NixOS iso that can be used with T2 Macs.
|
||||||
|
|
||||||
|
This repo provides two isos:
|
||||||
|
* `t2-iso-minimal`
|
||||||
|
* `t2-iso-gnome`
|
||||||
|
|
||||||
|
It is reccommended to use `t2-iso-minimal` for installing NixOS. `t2-iso-gnome` can be used to preview what the system will look after the installation.
|
||||||
43
flake.lock
generated
Normal file
43
flake.lock
generated
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1661440621,
|
||||||
|
"narHash": "sha256-BcokGMf6v8sj42jU7/dSLb5iwwkcqG4guRhBihKqpxc=",
|
||||||
|
"owner": "kekrby",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "761380586df33b1d2f31c56784c1ce9aff767afe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kekrby",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1661239211,
|
||||||
|
"narHash": "sha256-pNJzBlSNpWEiFJZnLF2oETYq8cGWx1DJPW33aMtG6n8=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5e804cd8a27f835a402b22e086e36e797716ef8b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
27
flake.nix
Normal file
27
flake.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
description = "A flake for NixOS iso's that work on T2 Macs";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
nixos-hardware.url = "github:kekrby/nixos-hardware";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, nixos-hardware }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
inherit (nixpkgs) lib;
|
||||||
|
|
||||||
|
mergeMap = fn: list: lib.lists.foldr (a: b: a // b) {} (map fn list);
|
||||||
|
in
|
||||||
|
mergeMap (config: {
|
||||||
|
${lib.strings.removeSuffix ".nix" (builtins.baseNameOf config)} = (lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
|
||||||
|
modules = [ config ];
|
||||||
|
|
||||||
|
specialArgs = {
|
||||||
|
inherit nixos-hardware;
|
||||||
|
};
|
||||||
|
}).config.system.build.isoImage;
|
||||||
|
}) (builtins.filter (x: x != null) (lib.attrsets.mapAttrsToList (key: value: if value == "regular" then ./nix/${key} else null) (builtins.readDir ./nix)));
|
||||||
|
}
|
||||||
25
nix/t2-iso-gnome.nix
Normal file
25
nix/t2-iso-gnome.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{ pkgs, lib, nixos-hardware, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
"${modulesPath}/installer/cd-dvd/installation-cd-graphical-gnome.nix"
|
||||||
|
"${modulesPath}/installer/cd-dvd/channel.nix"
|
||||||
|
nixos-hardware.nixosModules.apple-t2
|
||||||
|
];
|
||||||
|
|
||||||
|
# Audio works better with PipeWire
|
||||||
|
hardware.pulseaudio.enable = lib.mkForce false;
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ZFS is broken and prevents building without this
|
||||||
|
nixpkgs.config.allowBroken = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
];
|
||||||
|
}
|
||||||
21
nix/t2-iso-minimal.nix
Normal file
21
nix/t2-iso-minimal.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{ pkgs, nixos-hardware, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
||||||
|
"${modulesPath}/installer/cd-dvd/channel.nix"
|
||||||
|
nixos-hardware.nixosModules.apple-t2
|
||||||
|
];
|
||||||
|
|
||||||
|
# ZFS is broken and prevents building without this
|
||||||
|
nixpkgs.config.allowBroken = true;
|
||||||
|
|
||||||
|
# NetworkManager is preferred because wpa_supplicant does not work well (though wpa_cli seems to work fine for some reason)
|
||||||
|
# wpa_supplicant is enabled by a module imported by the installation CD module so it is turned off so that it does not conflict with NetworkManager
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
networking.wireless.enable = false;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
];
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue