Compare commits

..

2 commits

7 changed files with 256 additions and 261 deletions

View file

@ -1,50 +1,60 @@
{ inputs, ... }: { inputs, self, ... }:
{ {
flake.nixosConfigurations.alexandria = inputs.nixpkgs-stable.lib.nixosSystem { flake = {
system = "x86_64-linux"; nixosConfigurations.alexandria = inputs.nixpkgs-stable.lib.nixosSystem {
specialArgs = { inherit inputs; }; system = "x86_64-linux";
modules = [ specialArgs = { inherit inputs; };
inputs.agenix.nixosModules.default modules = [
{ networking.hostName = "alexandria"; } inputs.agenix.nixosModules.default
{ { networking.hostName = "alexandria"; }
nixpkgs.overlays = [ {
inputs.agenix.overlays.default nixpkgs.overlays = [
inputs.self.overlays.default inputs.agenix.overlays.default
]; inputs.self.overlays.default
} ];
}
# Common aspects (always included) # Common aspects (always included)
inputs.self.modules.nixos.common-boot inputs.self.modules.nixos.common-boot
inputs.self.modules.nixos.common-console inputs.self.modules.nixos.common-console
inputs.self.modules.nixos.common-firewall inputs.self.modules.nixos.common-firewall
inputs.self.modules.nixos.common-locale inputs.self.modules.nixos.common-locale
inputs.self.modules.nixos.common-nix inputs.self.modules.nixos.common-nix
inputs.self.modules.nixos.common-openssh inputs.self.modules.nixos.common-openssh
inputs.self.modules.nixos.common-programs inputs.self.modules.nixos.common-programs
inputs.self.modules.nixos.common-security inputs.self.modules.nixos.common-security
inputs.self.modules.nixos.common-services inputs.self.modules.nixos.common-services
inputs.self.modules.nixos.common-tailscale inputs.self.modules.nixos.common-tailscale
# User aspects # User aspects
inputs.self.modules.nixos.user inputs.self.modules.nixos.user
inputs.self.modules.nixos.root inputs.self.modules.nixos.root
# Server aspects # Server aspects
inputs.self.modules.nixos.server-boot inputs.self.modules.nixos.server-boot
inputs.self.modules.nixos.server-nix inputs.self.modules.nixos.server-nix
inputs.self.modules.nixos.server-tailscale inputs.self.modules.nixos.server-tailscale
# Other aspects based on tags # Other aspects based on tags
inputs.self.modules.nixos.fwupd inputs.self.modules.nixos.fwupd
# Host-specific files (from _alexandria/) # Host-specific files (from _alexandria/)
./_alexandria/hardware-configuration.nix ./_alexandria/hardware-configuration.nix
./_alexandria/jellyfin.nix ./_alexandria/jellyfin.nix
./_alexandria/kanidm.nix ./_alexandria/kanidm.nix
./_alexandria/nextcloud.nix ./_alexandria/nextcloud.nix
./_alexandria/nginx.nix ./_alexandria/nginx.nix
./_alexandria/unbound.nix ./_alexandria/unbound.nix
./_alexandria/vaultwarden.nix ./_alexandria/vaultwarden.nix
]; ];
};
deploy.nodes.alexandria = {
hostname = "alexandria";
profiles.system = {
sshUser = "user";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.alexandria;
user = "root";
};
};
}; };
} }

View file

@ -1,59 +1,70 @@
{ inputs, ... }: { inputs, self, ... }:
{ {
flake.nixosConfigurations.io = inputs.nixpkgs.lib.nixosSystem { flake = {
system = "x86_64-linux"; nixosConfigurations.io = inputs.nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; system = "x86_64-linux";
modules = [ specialArgs = { inherit inputs; };
inputs.agenix.nixosModules.default modules = [
{ networking.hostName = "io"; } inputs.agenix.nixosModules.default
{ { networking.hostName = "io"; }
nixpkgs.overlays = [ {
inputs.agenix.overlays.default nixpkgs.overlays = [
inputs.self.overlays.default inputs.agenix.overlays.default
]; inputs.self.overlays.default
} ];
}
# Common aspects (always included) # Common aspects (always included)
inputs.self.modules.nixos.common-boot inputs.self.modules.nixos.common-boot
inputs.self.modules.nixos.common-console inputs.self.modules.nixos.common-console
inputs.self.modules.nixos.common-firewall inputs.self.modules.nixos.common-firewall
inputs.self.modules.nixos.common-locale inputs.self.modules.nixos.common-locale
inputs.self.modules.nixos.common-nix inputs.self.modules.nixos.common-nix
inputs.self.modules.nixos.common-openssh inputs.self.modules.nixos.common-openssh
inputs.self.modules.nixos.common-programs inputs.self.modules.nixos.common-programs
inputs.self.modules.nixos.common-security inputs.self.modules.nixos.common-security
inputs.self.modules.nixos.common-services inputs.self.modules.nixos.common-services
inputs.self.modules.nixos.common-tailscale inputs.self.modules.nixos.common-tailscale
# User aspects # User aspects
inputs.self.modules.nixos.user inputs.self.modules.nixos.user
inputs.self.modules.nixos.root inputs.self.modules.nixos.root
# Desktop aspects # Desktop aspects
inputs.self.modules.nixos.desktop-boot inputs.self.modules.nixos.desktop-boot
inputs.self.modules.nixos.desktop-desktop inputs.self.modules.nixos.desktop-desktop
inputs.self.modules.nixos.desktop-nix inputs.self.modules.nixos.desktop-nix
inputs.self.modules.nixos.desktop-services inputs.self.modules.nixos.desktop-services
# Other aspects based on tags # Other aspects based on tags
inputs.self.modules.nixos.ai inputs.self.modules.nixos.ai
inputs.self.modules.nixos.bluetooth inputs.self.modules.nixos.bluetooth
inputs.self.modules.nixos.dev inputs.self.modules.nixos.dev
inputs.self.modules.nixos.libvirtd inputs.self.modules.nixos.libvirtd
inputs.self.modules.nixos.networkmanager inputs.self.modules.nixos.networkmanager
inputs.self.modules.nixos.podman inputs.self.modules.nixos.podman
# Factory-generated ephemeral module # Factory-generated ephemeral module
(inputs.self.factory.ephemeral { (inputs.self.factory.ephemeral {
rootDevice = "/dev/mapper/cryptroot"; rootDevice = "/dev/mapper/cryptroot";
}) })
# Host-specific files (from _io/) # Host-specific files (from _io/)
./_io/hardware-configuration.nix ./_io/hardware-configuration.nix
./_io/disko.nix ./_io/disko.nix
./_io/boot.nix ./_io/boot.nix
./_io/programs.nix ./_io/programs.nix
./_io/services.nix ./_io/services.nix
]; ];
};
deploy.nodes.io = {
hostname = "io";
profiles.system = {
sshUser = "user";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.io;
user = "root";
remoteBuild = false;
};
};
}; };
} }

View file

@ -1,54 +1,64 @@
{ inputs, ... }: { inputs, self, ... }:
{ {
flake.nixosConfigurations.trantor = inputs.nixpkgs-stable.lib.nixosSystem { flake = {
system = "aarch64-linux"; nixosConfigurations.trantor = inputs.nixpkgs-stable.lib.nixosSystem {
specialArgs = { inherit inputs; }; system = "aarch64-linux";
modules = [ specialArgs = { inherit inputs; };
inputs.agenix.nixosModules.default modules = [
{ networking.hostName = "trantor"; } inputs.agenix.nixosModules.default
{ { networking.hostName = "trantor"; }
nixpkgs.overlays = [ {
inputs.agenix.overlays.default nixpkgs.overlays = [
inputs.self.overlays.default inputs.agenix.overlays.default
]; inputs.self.overlays.default
} ];
}
# Common aspects (always included) # Common aspects (always included)
inputs.self.modules.nixos.common-boot inputs.self.modules.nixos.common-boot
inputs.self.modules.nixos.common-console inputs.self.modules.nixos.common-console
inputs.self.modules.nixos.common-firewall inputs.self.modules.nixos.common-firewall
inputs.self.modules.nixos.common-locale inputs.self.modules.nixos.common-locale
inputs.self.modules.nixos.common-nix inputs.self.modules.nixos.common-nix
inputs.self.modules.nixos.common-openssh inputs.self.modules.nixos.common-openssh
inputs.self.modules.nixos.common-programs inputs.self.modules.nixos.common-programs
inputs.self.modules.nixos.common-security inputs.self.modules.nixos.common-security
inputs.self.modules.nixos.common-services inputs.self.modules.nixos.common-services
inputs.self.modules.nixos.common-tailscale inputs.self.modules.nixos.common-tailscale
# User aspects # User aspects
inputs.self.modules.nixos.user inputs.self.modules.nixos.user
inputs.self.modules.nixos.root inputs.self.modules.nixos.root
# Server aspects # Server aspects
inputs.self.modules.nixos.server-boot inputs.self.modules.nixos.server-boot
inputs.self.modules.nixos.server-nix inputs.self.modules.nixos.server-nix
inputs.self.modules.nixos.server-tailscale inputs.self.modules.nixos.server-tailscale
# Factory-generated ephemeral module # Factory-generated ephemeral module
(inputs.self.factory.ephemeral { (inputs.self.factory.ephemeral {
rootDevice = "/dev/disk/by-id/scsi-360b207ed25d84372a95d1ecf842f8e20-part2"; rootDevice = "/dev/disk/by-id/scsi-360b207ed25d84372a95d1ecf842f8e20-part2";
}) })
# Host-specific files (from _trantor/) # Host-specific files (from _trantor/)
./_trantor/hardware-configuration.nix ./_trantor/hardware-configuration.nix
./_trantor/disko.nix ./_trantor/disko.nix
./_trantor/boot.nix ./_trantor/boot.nix
./_trantor/fail2ban.nix ./_trantor/fail2ban.nix
./_trantor/forgejo.nix ./_trantor/forgejo.nix
./_trantor/networking.nix ./_trantor/networking.nix
./_trantor/nginx.nix ./_trantor/nginx.nix
./_trantor/openssh.nix ./_trantor/openssh.nix
./_trantor/unbound.nix ./_trantor/unbound.nix
]; ];
};
deploy.nodes.trantor = {
hostname = "trantor";
profiles.system = {
sshUser = "user";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.trantor;
user = "root";
};
};
}; };
} }

View file

@ -1,71 +1,80 @@
{ ... }: { ... }:
{ {
flake.modules = { flake.modules = {
nixos.stylix = { inputs, ... }: { nixos.stylix =
imports = [ inputs.stylix.nixosModules.stylix ]; { inputs, ... }:
}; {
imports = [ inputs.stylix.nixosModules.stylix ];
homeManager.stylix = { config, inputs, pkgs, ... }: {
imports = [
inputs.stylix.homeManagerModules.stylix
inputs.zen-browser.homeModules.beta
];
stylix = {
enable = true;
polarity = "dark";
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyodark.yaml";
cursor = {
package = pkgs.kdePackages.breeze;
name = "breeze_cursors";
size = 24;
};
icons = {
enable = true;
package = pkgs.morewaita-icon-theme;
light = "MoreWaita";
dark = "MoreWaita";
};
opacity = {
applications = 1.0;
desktop = 1.0;
popups = config.stylix.opacity.desktop;
terminal = 1.0;
};
fonts = {
serif = {
package = pkgs.source-serif;
name = "Source Serif 4 Display";
};
sansSerif = {
package = pkgs.inter;
name = "Inter";
};
monospace = {
package = pkgs.nerd-fonts.fira-code;
name = "FiraCode Nerd Font";
};
emoji = {
package = pkgs.noto-fonts-color-emoji;
name = "Noto Color Emoji";
};
sizes = {
applications = 10;
desktop = config.stylix.fonts.sizes.applications;
popups = config.stylix.fonts.sizes.applications;
terminal = 12;
};
};
targets.zen-browser = {
enable = true;
profileNames = [ "william" ];
};
}; };
programs.zen-browser = { homeManager.stylix =
enable = true; {
profiles.william = { }; config,
inputs,
pkgs,
...
}:
{
imports = [
inputs.stylix.homeModules.stylix
inputs.zen-browser.homeModules.beta
];
stylix = {
enable = true;
polarity = "dark";
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyodark.yaml";
cursor = {
package = pkgs.kdePackages.breeze;
name = "breeze_cursors";
size = 24;
};
icons = {
enable = true;
package = pkgs.morewaita-icon-theme;
light = "MoreWaita";
dark = "MoreWaita";
};
opacity = {
applications = 1.0;
desktop = 1.0;
popups = config.stylix.opacity.desktop;
terminal = 1.0;
};
fonts = {
serif = {
package = pkgs.source-serif;
name = "Source Serif 4 Display";
};
sansSerif = {
package = pkgs.inter;
name = "Inter";
};
monospace = {
package = pkgs.nerd-fonts.fira-code;
name = "FiraCode Nerd Font";
};
emoji = {
package = pkgs.noto-fonts-color-emoji;
name = "Noto Color Emoji";
};
sizes = {
applications = 10;
desktop = config.stylix.fonts.sizes.applications;
popups = config.stylix.fonts.sizes.applications;
terminal = 12;
};
};
targets.zen-browser = {
enable = true;
profileNames = [ "william" ];
};
};
programs.zen-browser = {
enable = true;
profiles.william = { };
};
}; };
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ inputs, ... }: { inputs, self, ... }:
{ {
flake = { flake = {
@ -114,5 +114,11 @@
]; ];
}; };
}; };
deploy.nodes.io.profiles.user = {
sshUser = "user";
path = inputs.deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations."user@io";
user = "user";
remoteBuild = false;
};
}; };
} }

View file

@ -1,48 +0,0 @@
{ inputs, self, ... }:
{
flake.deploy = {
remoteBuild = true;
nodes = {
alexandria = {
hostname = "alexandria";
profiles.system = {
sshUser = "user";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.alexandria;
user = "root";
};
};
trantor = {
hostname = "trantor";
profiles.system = {
sshUser = "user";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.trantor;
user = "root";
};
};
io = {
hostname = "io";
profiles = {
system = {
sshUser = "user";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.io;
user = "root";
remoteBuild = false;
};
user = {
sshUser = "user";
path = inputs.deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations."user@io";
user = "user";
remoteBuild = false;
};
};
};
};
};
perSystem =
{ system, ... }:
{
checks = inputs.deploy-rs.lib.${system}.deployChecks self.deploy;
};
}

View file

@ -53,10 +53,10 @@
outputs = outputs =
inputs@{ flake-parts, import-tree, ... }: inputs@{ flake-parts, import-tree, ... }:
let let
aspectsModule = import-tree ./aspects; aspectsModules = import-tree ./aspects;
packagesModule = import-tree ./packages; packagesModules = import-tree ./packages;
shellsModule = import-tree ./shells; shellsModules = import-tree ./shells;
terranixModule = import-tree ./terranix; terranixModules = import-tree ./terranix;
in in
flake-parts.lib.mkFlake { inherit inputs; } { flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ systems = [
@ -68,12 +68,9 @@
flake-parts.flakeModules.modules flake-parts.flakeModules.modules
inputs.terranix.flakeModule inputs.terranix.flakeModule
] ]
++ aspectsModule.imports ++ aspectsModules.imports
++ packagesModule.imports ++ packagesModules.imports
++ shellsModule.imports ++ shellsModules.imports
++ terranixModule.imports ++ terranixModules.imports;
++ [
./deploy.nix
];
}; };
} }