This repository has been archived on 2024-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
nixos/flake.nix
Payas Relekar 5daf7e41b5 gitea -> forgejo
Also need to perform one-time migration:
https://nixos.org/manual/nixos/unstable/#module-forgejo
2024-03-16 17:01:07 +05:30

178 lines
5.2 KiB
Nix

{
description = "NixOS configuration (flake edition)";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
deploy-rs.url = "github:serokell/deploy-rs";
};
outputs =
{ self
, nixpkgs
, home-manager
, agenix
, nixos-hardware
, deploy-rs
, ...
}:
let
common-modules = [
./cachix.nix
./modules/nix.nix
./modules/common.nix
./modules/fish.nix
];
in
{
homeConfigurations."payasrelekar" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
system = "x86_64-darwin";
};
modules = [ ./hosts/charles/home.nix ];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
nixosConfigurations = {
# The Workhorse: WSL2 edition
hermes = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = common-modules ++ [
# Modules and module config
./modules/users.nix
./modules/fonts.nix
./modules/plasma-desktop.nix
./modules/audio.nix
./modules/dev-common.nix
# Host-specific config
./hosts/hermes/configuration.nix
./hosts/hermes/syncthing.nix
agenix.nixosModules.age
./hosts/hermes/secrets/agenix.nix
# User-specific config
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users = {
payas = import ./hosts/hermes/home.nix;
root = import ./modules/root-home.nix;
};
};
}
];
};
# GPD MicroPC
phoebe = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = common-modules ++ [
# Modules and module config
./modules/users.nix
./modules/fonts.nix
./modules/plasma-desktop.nix
./modules/audio.nix
./modules/dev-common.nix
# Host-specific config
nixos-hardware.nixosModules.gpd-micropc
./hosts/phoebe/configuration.nix
./hosts/phoebe/syncthing.nix
agenix.nixosModules.age
./hosts/phoebe/secrets/agenix.nix
# User-specific config
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users = {
payas = import ./hosts/phoebe/home.nix;
root = import ./modules/root-home.nix;
};
};
}
];
};
# My Pi
bebop = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = common-modules ++ [
# Modules and module config
./modules/mail.nix
./modules/monitoring/monitoring.nix
./modules/books.nix
./modules/paperless.nix
./modules/minio.nix
./modules/plausible.nix
./modules/vaultwarden.nix
./modules/hledger.nix
./modules/etesync.nix
./modules/uptime_kuma.nix
./modules/rss.nix
./modules/wiki.nix
./modules/home-assistant.nix
# Host-specific config
nixos-hardware.nixosModules.raspberry-pi-4
./hosts/bebop/configuration.nix
./hosts/bebop/syncthing.nix
./hosts/bebop/navidrome.nix
./hosts/bebop/pihole.nix
./hosts/bebop/ssh.nix
./hosts/bebop/cloudflared.nix
./hosts/bebop/forgejo.nix
agenix.nixosModules.age
./hosts/bebop/secrets/agenix.nix
# User-specific config : Home-manager
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.payas = import ./hosts/bebop/home.nix;
};
}
];
};
};
deploy.nodes = {
bebop = {
hostname = "bebop";
fastConnection = true;
remoteBuild = true;
profiles.system = {
sshUser = "payas";
user = "root";
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.bebop;
};
};
};
# This is highly advised, and will prevent many possible mistakes
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
};
}