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 bc8062f330 deploy-rs: More configuration
Right now this fails, because what I assume is a failure with emulation
in WSL, but otherwise I'm linking the overall approach of reusing the
preconfigured nixOSConfigurations in the same flake, as well as
lightweight burden of configuration. Doesn't hurt that it is written in
Rust rather than Python.
2023-04-30 16:59:46 +05:30

127 lines
3.4 KiB
Nix

{
description = "NixOS configuration (flake edition)";
inputs = {
nixpkgs = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
nixos-wsl = {
url = "github:nix-community/NixOS-WSL";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
emacs-overlay = {
url = "github:nix-community/emacs-overlay";
};
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
, nixos-wsl
, home-manager
, emacs-overlay
, agenix
, nixos-hardware
, deploy-rs
, ...
}:
let
common-modules = [
./cachix.nix
./modules/nix.nix
./modules/common.nix
];
in
{
nixosConfigurations = {
# The Workhorse: WSL2 edition
hermes = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = common-modules ++ [
# Overlays
{ nixpkgs.overlays = [ emacs-overlay.overlay ]; }
# Modules and module config
./modules/fish.nix
./modules/users.nix
./modules/fonts.nix
# Host-specific config
./hosts/hermes/configuration.nix
nixos-wsl.nixosModules.wsl
./hosts/hermes/wsl.nix
./hosts/hermes/syncthing.nix
# ./hosts/hermes/backup.nix
agenix.nixosModules.age
./hosts/hermes/secrets/agenix.nix
# User-specific config
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users = {
payas = import ./hosts/hermes/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/fish.nix
./modules/monitoring/monitoring.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
# User-specific config : Home-manager
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.payas = import ./hosts/bebop/home.nix;
}
];
};
};
deploy.nodes = {
bebop = {
hostname = "bebop";
fastConnection = true;
remoteBuild = true;
profiles.system = {
user = "payas";
path = deploy-rs.lib.x86_64-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;
};
}