Payas Relekar
bc8062f330
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.
127 lines
3.4 KiB
Nix
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;
|
|
};
|
|
}
|