Nix-Vibe public snapshot (squashed history)
This commit is contained in:
@@ -0,0 +1,216 @@
|
||||
{
|
||||
description = "A vibrant NixOS configuration for multiple machines";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
home-manager-stable = {
|
||||
url = "github:nix-community/home-manager/release-24.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||
};
|
||||
|
||||
disko = {
|
||||
url = "github:nix-community/disko";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nixos-anywhere = {
|
||||
url = "github:nix-community/nixos-anywhere";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nix-flatpak.url = "github:gmodena/nix-flatpak";
|
||||
|
||||
# TeleportFling: standalone screen + audio sender for OBS Teleport.
|
||||
teleportfling.url = "git+http://homeserver:3050/pedley/TeleportFling.git";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self
|
||||
, nixpkgs
|
||||
, nixpkgs-stable
|
||||
, home-manager
|
||||
, home-manager-stable
|
||||
, disko
|
||||
, nixos-anywhere
|
||||
, sops-nix
|
||||
, nix-flatpak
|
||||
, teleportfling
|
||||
, ...
|
||||
}@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
serverOverlays = [
|
||||
# Empty - antigravity removed
|
||||
];
|
||||
# Overlays shared by all desktops/laptops (no CUDA/NDI)
|
||||
desktopOverlays = [
|
||||
(final: prev: {
|
||||
stable = import nixpkgs-stable {
|
||||
system = final.stdenv.hostPlatform.system;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
allowBroken = true;
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
# Full overlay set used by x1carbon only (CUDA + NDI for OBS Studio etc.)
|
||||
overlays = [
|
||||
(final: prev: {
|
||||
stable = import nixpkgs-stable {
|
||||
system = final.stdenv.hostPlatform.system;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
allowBroken = true;
|
||||
cudaSupport = true;
|
||||
cudaCapabilities = [ "6.1" ];
|
||||
};
|
||||
};
|
||||
})
|
||||
(final: prev: {
|
||||
ndi-6 = prev.ndi-6.overrideAttrs (old: {
|
||||
src = prev.fetchurl {
|
||||
url = "https://downloads.ndi.tv/SDK/NDI_SDK_Linux/Install_NDI_SDK_v6_Linux.tar.gz";
|
||||
hash = "sha256-8DFPJFRG3vxIi2POtGiazxqWWu79ray3BXG7IWqMwYM=";
|
||||
};
|
||||
});
|
||||
})
|
||||
];
|
||||
# Packages with known vulnerabilities that are explicitly permitted.
|
||||
# Single-sourced here; referenced by the mkNixosSystem module below.
|
||||
permittedInsecurePackages = [
|
||||
"electron-39.8.10"
|
||||
"qtwebengine-5.15.19"
|
||||
"ventoy-1.1.17"
|
||||
];
|
||||
|
||||
# Specific pkgs for Desktop with CUDA support (using stable to avoid broken CUDA builds)
|
||||
# No longer needed as a separate input, we use overlays now.
|
||||
# pkgsDesktop = ... (Removed)
|
||||
|
||||
# Function to generate a NixOS system configuration
|
||||
hostUsers = {
|
||||
x1carbon = [ "petere" ];
|
||||
caitlin-x1 = [
|
||||
"caitlin"
|
||||
"petere"
|
||||
];
|
||||
x470 = [
|
||||
"petere"
|
||||
"guest"
|
||||
];
|
||||
mary-x270 = [
|
||||
"mary"
|
||||
"petere"
|
||||
];
|
||||
richmond-server = [ "petere" ];
|
||||
homeserver-1 = [ "petere" ];
|
||||
mcf-server = [ "petere" ];
|
||||
mcf-stream = [
|
||||
"guest"
|
||||
"petere"
|
||||
];
|
||||
hp-laptop = [ "petere" ];
|
||||
};
|
||||
|
||||
# Function to generate a NixOS system configuration
|
||||
mkNixosSystem =
|
||||
hostname:
|
||||
{ specialArgs ? { }
|
||||
, modules ? [ ]
|
||||
, hostOverlays ? desktopOverlays
|
||||
, nixpkgsInput ? nixpkgs
|
||||
, homeManagerInput ? home-manager
|
||||
,
|
||||
}:
|
||||
nixpkgsInput.lib.nixosSystem {
|
||||
# Use the original nixpkgs.lib here
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
}
|
||||
// specialArgs; # Removed pkgs from specialArgs
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.permittedInsecurePackages = permittedInsecurePackages;
|
||||
nixpkgs.overlays = hostOverlays;
|
||||
}
|
||||
sops-nix.nixosModules.sops
|
||||
(./hosts + "/${hostname}/configuration.nix")
|
||||
homeManagerInput.nixosModules.home-manager
|
||||
nix-flatpak.nixosModules.nix-flatpak
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.backupFileExtension = "backup";
|
||||
home-manager.extraSpecialArgs = { inherit inputs; };
|
||||
home-manager.sharedModules = [
|
||||
./home-manager/modules/zsh.nix
|
||||
];
|
||||
}
|
||||
]
|
||||
++ (nixpkgs.lib.map # Use original nixpkgs.lib here
|
||||
(user: import (./home-manager/users + "/${user}.nix"))
|
||||
(hostUsers.${hostname} or [ ])
|
||||
)
|
||||
++ modules;
|
||||
};
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
x1carbon = mkNixosSystem "x1carbon" {
|
||||
hostOverlays = overlays;
|
||||
};
|
||||
|
||||
caitlin-x1 = mkNixosSystem "caitlin-x1" { };
|
||||
|
||||
x470 = mkNixosSystem "x470" { };
|
||||
|
||||
mary-x270 = mkNixosSystem "mary-x270" { };
|
||||
|
||||
richmond-server = mkNixosSystem "richmond-server" {
|
||||
hostOverlays = serverOverlays;
|
||||
};
|
||||
|
||||
homeserver-1 = mkNixosSystem "homeserver-1" {
|
||||
hostOverlays = serverOverlays;
|
||||
};
|
||||
|
||||
mcf-server = mkNixosSystem "mcf-server" {
|
||||
hostOverlays = serverOverlays;
|
||||
};
|
||||
|
||||
mcf-stream = mkNixosSystem "mcf-stream" { };
|
||||
|
||||
hp-laptop = mkNixosSystem "hp-laptop" { };
|
||||
};
|
||||
|
||||
packages.${system} = { };
|
||||
|
||||
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt;
|
||||
|
||||
devShells.${system}.default =
|
||||
let
|
||||
devPkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
devPkgs.mkShell {
|
||||
packages = with devPkgs; [
|
||||
sops
|
||||
age
|
||||
nixfmt
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user