nixos/flake.nix

122 lines
3.3 KiB
Nix

{
description = "Evie's machine configurations";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
wallpapers.url = "git+https://git.xenia.me.uk/xenia/wallpapers.git";
};
outputs = {
nixpkgs,
home-manager,
wallpapers,
...
}: let
common = {lib, ...}: {
nix = {
settings.experimental-features = ["nix-command" "flakes"];
gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 7d";
};
extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
};
nixpkgs.config.allowUnfree = true;
home-manager = {
useGlobalPkgs = true;
useUserPackages = false;
};
networking.networkmanager.enable = true;
services.power-profiles-daemon.enable = true;
virtualisation.podman.enable = true;
programs = {
ssh.startAgent = true;
dconf.enable = true;
fish.enable = true;
zsh.enable = true;
};
fonts.fontconfig.enable = true;
environment.localBinInPath = true;
};
hardware-audio = {pkgs, ...}: {
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
programs.noisetorch.enable = true;
};
hardware-bluetooth = {
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
};
wallpaper = {wayland.windowManager.sway.config.output."*".bg = "${wallpapers.outputs.default} fill";};
in {
nixosConfigurations = {
Legion = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
home-manager.nixosModules.home-manager
common
./hosts/Legion/configuration.nix
./services/Legion.nix
];
};
Vanguard = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
home-manager.nixosModules.home-manager
common
hardware-audio
hardware-bluetooth
./hosts/Vanguard/configuration.nix
{home.users.xenia = {imports = [wallpaper];};}
./wm/sway.nix
./services/sshd
];
};
N0245 = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
home-manager.nixosModules.home-manager
common
hardware-audio
hardware-bluetooth
./hosts/N0245/configuration.nix
./wm/sway.nix
{home.users.elitherl = {imports = [wallpaper];};}
./services/syncthing/N0245.nix
];
};
};
homeConfigurations = {
"tux" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages."aarch64-darwin";
modules = [./hosts/Monarch/home.nix];
};
"xenia" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages."aarch64-linux";
modules = [
./hosts/Northstar/home.nix
wallpaper
];
};
};
};
}