This commit is contained in:
parent
05ae8bb0f2
commit
db6503a855
@ -4,9 +4,7 @@
|
|||||||
|
|
||||||
Raspberry Pi images that support Tailscale and headless SSH can be built using a command. It is easiest to run this command on AArch64 on Linux, such as within a Linux VM or Docker container on an M1 Mac.
|
Raspberry Pi images that support Tailscale and headless SSH can be built using a command. It is easiest to run this command on AArch64 on Linux, such as within a Linux VM or Docker container on an M1 Mac.
|
||||||
|
|
||||||
docker run -v $PWD:/src -it --rm nixos/nix:latest /bin/sh
|
$ docker run -v $PWD:/etc/nixos -it --rm nixos/nix:latest
|
||||||
nix-env -f https://github.com/nix-community/nixos-generators/archive/master.tar.gz -i
|
# cd /etc/nixos
|
||||||
cd /src
|
# nix build .#images.microserver.home.ts.hillion.co.uk
|
||||||
nixos-generate -f sd-aarch64-installer --system aarch64-linux -c hosts/microserver.home.ts.hillion.co.uk/default.nix
|
|
||||||
cp SOME_OUTPUT out.img.zst
|
|
||||||
|
|
||||||
|
129
flake.nix
129
flake.nix
@ -20,66 +20,81 @@
|
|||||||
|
|
||||||
description = "Hillion Nix flake";
|
description = "Hillion Nix flake";
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-chia, flake-utils, agenix, home-manager, impermanence, darwin, ... }@inputs: {
|
outputs =
|
||||||
nixosConfigurations =
|
{ self, nixpkgs, nixpkgs-unstable, nixpkgs-chia, flake-utils, agenix, home-manager, impermanence, darwin, ... }@inputs:
|
||||||
let
|
let
|
||||||
fqdns = builtins.attrNames (builtins.readDir ./hosts);
|
fqdns = builtins.attrNames (builtins.readDir ./hosts);
|
||||||
isNixos = fqdn: !builtins.pathExists ./hosts/${fqdn}/darwin;
|
isDarwin = host: builtins.pathExists ./hosts/${host}/darwin;
|
||||||
getSystemOverlays = system: nixpkgsConfig: [
|
isNixos = fqdn: !isDarwin fqdn;
|
||||||
(final: prev: {
|
needsImage = fqdn: builtins.pathExists ./hosts/${fqdn}/image;
|
||||||
"storj" = final.callPackage ./pkgs/storj.nix { };
|
in
|
||||||
})
|
rec {
|
||||||
];
|
nixosConfigurations =
|
||||||
mkHost = fqdn:
|
let
|
||||||
let system = builtins.readFile ./hosts/${fqdn}/system;
|
getSystemOverlays = system: nixpkgsConfig: [
|
||||||
in
|
(final: prev: {
|
||||||
nixpkgs.lib.nixosSystem {
|
"storj" = final.callPackage ./pkgs/storj.nix { };
|
||||||
inherit system;
|
})
|
||||||
specialArgs = inputs;
|
];
|
||||||
modules = [
|
mkHost = fqdn:
|
||||||
./hosts/${fqdn}/default.nix
|
let system = builtins.readFile ./hosts/${fqdn}/system;
|
||||||
./modules/default.nix
|
in
|
||||||
|
nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
specialArgs = inputs;
|
||||||
|
modules = (if needsImage then [ ] else [ "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-raspberrypi.nix" ]) ++ [
|
||||||
|
./hosts/${fqdn}/default.nix
|
||||||
|
./modules/default.nix
|
||||||
|
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
impermanence.nixosModules.impermanence
|
impermanence.nixosModules.impermanence
|
||||||
|
|
||||||
home-manager.nixosModules.default
|
home-manager.nixosModules.default
|
||||||
{
|
{
|
||||||
home-manager.sharedModules = [
|
home-manager.sharedModules = [
|
||||||
impermanence.nixosModules.home-manager.impermanence
|
impermanence.nixosModules.home-manager.impermanence
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
({ config, ... }: {
|
({ config, ... }: {
|
||||||
nix.registry.nixpkgs.flake = nixpkgs; # pin `nix shell` nixpkgs
|
nix.registry.nixpkgs.flake = nixpkgs; # pin `nix shell` nixpkgs
|
||||||
system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev;
|
system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev;
|
||||||
nixpkgs.overlays = getSystemOverlays config.nixpkgs.hostPlatform.system config.nixpkgs.config;
|
nixpkgs.overlays = getSystemOverlays config.nixpkgs.hostPlatform.system config.nixpkgs.config;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
nixpkgs.lib.genAttrs (builtins.filter isNixos fqdns) mkHost;
|
nixpkgs.lib.genAttrs (builtins.filter isNixos fqdns) mkHost;
|
||||||
|
|
||||||
darwinConfigurations =
|
# images =
|
||||||
let
|
# let
|
||||||
hosts = builtins.attrNames (builtins.readDir ./hosts);
|
# mkImage = fqdn: nixosConfigurations.${fqdn}.config.system.build.sdImage;
|
||||||
isDarwin = host: builtins.pathExists ./hosts/${host}/darwin;
|
# in
|
||||||
mkHost = host:
|
# nixpkgs.lib.genAttrs (builtins.filter needsImage fqdns) mkImage;
|
||||||
let system = builtins.readFile ./hosts/${host}/system;
|
|
||||||
in
|
images = {
|
||||||
darwin.lib.darwinSystem {
|
"microserver" = nixosConfigurations."microserver.home.ts.hillion.co.uk".config.system.build.sdImage;
|
||||||
inherit system;
|
};
|
||||||
inherit inputs;
|
|
||||||
modules = [
|
|
||||||
./hosts/${host}/default.nix
|
|
||||||
agenix.darwinModules.default
|
|
||||||
home-manager.darwinModules.default
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
nixpkgs.lib.genAttrs (builtins.filter isDarwin hosts) mkHost;
|
|
||||||
|
|
||||||
} // flake-utils.lib.eachDefaultSystem (system: {
|
darwinConfigurations =
|
||||||
formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt;
|
let
|
||||||
});
|
hosts = builtins.attrNames (builtins.readDir ./hosts);
|
||||||
|
isDarwin = host: builtins.pathExists ./hosts/${host}/darwin;
|
||||||
|
mkHost = host:
|
||||||
|
let system = builtins.readFile ./hosts/${host}/system;
|
||||||
|
in
|
||||||
|
darwin.lib.darwinSystem {
|
||||||
|
inherit system;
|
||||||
|
inherit inputs;
|
||||||
|
modules = [
|
||||||
|
./hosts/${host}/default.nix
|
||||||
|
agenix.darwinModules.default
|
||||||
|
home-manager.darwinModules.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
nixpkgs.lib.genAttrs (builtins.filter isDarwin hosts) mkHost;
|
||||||
|
} // flake-utils.lib.eachDefaultSystem (system: {
|
||||||
|
formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
0
hosts/microserver.home.ts.hillion.co.uk/image
Normal file
0
hosts/microserver.home.ts.hillion.co.uk/image
Normal file
0
hosts/microserver.parents.ts.hillion.co.uk/image
Normal file
0
hosts/microserver.parents.ts.hillion.co.uk/image
Normal file
Loading…
Reference in New Issue
Block a user