128 lines
3.4 KiB
Nix
128 lines
3.4 KiB
Nix
{
|
|
description = "Koon OS";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.05";
|
|
|
|
unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
|
|
|
nixos-apple-silicon.url =
|
|
"github:nix-community/nixos-apple-silicon?ref=release-2025-05-30";
|
|
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager?ref=release-25.05";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
plasma-manager = {
|
|
url = "github:nix-community/plasma-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.home-manager.follows = "home-manager";
|
|
};
|
|
|
|
nixvim = {
|
|
url = "github:nix-community/nixvim?ref=nixos-25.05";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
sops-nix = {
|
|
url = "github:mic92/sops-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
terranix = {
|
|
url = "github:terranix/terranix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = { self, nixpkgs, unstable, nixos-apple-silicon, home-manager
|
|
, plasma-manager, nixvim, sops-nix, terranix, ... }: {
|
|
|
|
packages.aarch64-linux =
|
|
let
|
|
system = "aarch64-linux";
|
|
|
|
pkgs = import unstable {
|
|
inherit system;
|
|
config = {
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
|
|
terraform = pkgs.terraform.withPlugins (p: [
|
|
p.pocketid
|
|
p.local
|
|
]);
|
|
terraformConfiguration = terranix.lib.terranixConfiguration {
|
|
inherit system;
|
|
modules = [ ./infra/config.nix ];
|
|
};
|
|
in {
|
|
deploy = pkgs.writeShellScriptBin "deploy" ''
|
|
echo Deploying Infrastructure...
|
|
|
|
export TF_VAR_pocketid_api_token=$(${pkgs.sops}/bin/sops -d --extract '["pocketid-api-token"]' secrets/secrets.yaml)
|
|
|
|
cd infra
|
|
|
|
cp ${terraformConfiguration} config.tf.json
|
|
|
|
${terraform}/bin/terraform init
|
|
${terraform}/bin/terraform apply
|
|
|
|
rm -f config.tf.json
|
|
|
|
echo Done
|
|
|
|
echo Encrypting secrets
|
|
|
|
cd ../secrets
|
|
|
|
${pkgs.sops}/bin/sops -e -i sops/oauth.yaml
|
|
|
|
echo Done
|
|
'';
|
|
};
|
|
|
|
nixosConfigurations = {
|
|
max = let
|
|
system = "aarch64-linux";
|
|
pkgs-unstable = import unstable { inherit system; };
|
|
secrets = import ./secrets;
|
|
in nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
specialArgs = { inherit pkgs-unstable secrets; };
|
|
modules = [
|
|
./host/max/default.nix
|
|
nixos-apple-silicon.nixosModules.apple-silicon-support
|
|
sops-nix.nixosModules.sops
|
|
home-manager.nixosModules.home-manager
|
|
{
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
home-manager.extraSpecialArgs = { inherit secrets; };
|
|
home-manager.users.max = { config, pkgs, lib, ... }: {
|
|
imports = [
|
|
sops-nix.homeManagerModules.sops
|
|
nixvim.homeManagerModules.nixvim
|
|
plasma-manager.homeManagerModules.plasma-manager
|
|
./host/max/home.nix # Import your home.nix here
|
|
];
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
ark = let system = "x86_64-linux";
|
|
in unstable.lib.nixosSystem {
|
|
inherit system;
|
|
modules = [
|
|
./host/ark/default.nix
|
|
sops-nix.nixosModules.sops
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|