my nix configs for my servers and desktop

cute refactor

Changed files
+250 -179
hosts
buer
focalor
valefar
modules
caddy
common
forgejo
garage
github-runners
services
+74 -66
flake.nix
···
vscode-server.url = "github:nix-community/nixos-vscode-server";
agenix.url = "github:ryantm/agenix";
-
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
···
};
};
-
outputs = inputs@{ self, nixpkgs, lix-module, vscode-server, agenix, zen-browser, catppuccin, home-manager, ... }: {
-
nixosConfigurations = {
-
focalor = nixpkgs.lib.nixosSystem {
-
system = "x86_64-linux";
-
specialArgs = { inherit inputs; system = "x86_64-linux"; };
-
modules = [
-
./hosts/focalor
-
lix-module.nixosModules.default
-
-
vscode-server.nixosModules.default
-
agenix.nixosModules.default
-
-
({ config, pkgs, ... }: {
-
services.vscode-server.enable = true;
-
services.vscode-server.nodejsPackage = pkgs.nodejs_20;
-
environment.systemPackages = [ agenix.packages.x86_64-linux.default ];
-
})
-
catppuccin.nixosModules.catppuccin
-
home-manager.nixosModules.home-manager {
-
home-manager.useGlobalPkgs = true;
-
home-manager.backupFileExtension = "HMBackup";
-
home-manager.users.regent.imports = [
-
./home/regent/home.nix
-
catppuccin.homeModules.catppuccin
-
];
-
home-manager.extraSpecialArgs = { inherit inputs; system = "x86_64-linux";};
-
}
-
];
-
};
-
valefar = nixpkgs.lib.nixosSystem {
-
system = "x86_64-linux";
-
modules = [
-
./hosts/valefar # imports configuration.nix automatically
-
lix-module.nixosModules.default
-
-
# External modules
-
vscode-server.nixosModules.default
-
agenix.nixosModules.default
-
-
# Global external module config
-
({ config, pkgs, ... }: {
-
services.vscode-server.enable = true;
-
services.vscode-server.nodejsPackage = pkgs.nodejs_20;
-
environment.systemPackages = [ agenix.packages.x86_64-linux.default ];
-
})
-
];
-
};
-
buer = nixpkgs.lib.nixosSystem {
-
system = "x86_64-linux";
-
modules = [
-
./hosts/buer
-
agenix.nixosModules.default
-
];
};
-
-
# Easy to add more hosts
-
/*server2 = nixpkgs.lib.nixosSystem {
-
system = "x86_64-linux";
-
modules = [
-
./hosts/server2
-
agenix.nixosModules.default
-
# different services for server2
-
];
-
};*/
};
-
};
-
}
···
vscode-server.url = "github:nix-community/nixos-vscode-server";
agenix.url = "github:ryantm/agenix";
+
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
···
};
};
+
outputs =
+
{ self, ... }@inputs:
+
with inputs;
+
let
+
nixosModules = builtins.listToAttrs (
+
map (module: {
+
name = module;
+
value = import (./modules + "/${module}");
+
}) (builtins.attrNames (builtins.readDir ./modules))
+
);
+
in
+
{
+
nixosConfigurations = {
+
focalor = nixpkgs.lib.nixosSystem {
+
system = "x86_64-linux";
+
specialArgs = {
+
inherit inputs;
+
system = "x86_64-linux";
+
};
+
modules = [
+
./hosts/focalor
+
lix-module.nixosModules.default
+
vscode-server.nixosModules.default
+
agenix.nixosModules.default
+
catppuccin.nixosModules.catppuccin
+
home-manager.nixosModules.home-manager
+
{
+
home-manager.useGlobalPkgs = true;
+
home-manager.backupFileExtension = "HMBackup";
+
home-manager.users.regent.imports = [
+
./home/regent/home.nix
+
catppuccin.homeModules.catppuccin
+
];
+
home-manager.extraSpecialArgs = {
+
inherit inputs;
+
system = "x86_64-linux";
+
};
+
}
+
];
+
};
+
+
valefar = nixpkgs.lib.nixosSystem {
+
system = "x86_64-linux";
+
modules = [
+
./hosts/valefar
+
lix-module.nixosModules.default
+
vscode-server.nixosModules.default
+
agenix.nixosModules.default
+
{ imports = builtins.attrValues nixosModules; }
+
];
+
};
+
+
buer = nixpkgs.lib.nixosSystem {
+
system = "x86_64-linux";
+
modules = [
+
./hosts/buer
+
+
agenix.nixosModules.default
+
];
+
};
+
+
# Easy to add more hosts
+
/*
+
server2 = nixpkgs.lib.nixosSystem {
+
system = "x86_64-linux";
+
modules = [
+
./hosts/server2
+
agenix.nixosModules.default
+
# different services for server2
+
];
+
};
+
*/
};
};
+
}
+3 -1
hosts/buer/default.nix
···
../../modules/common/services.nix
# Services specific to this host
-
../../services/garage.nix
#../../services/forgejo.nix
# Common secrets
../../host-secrets.nix
];
# pin host platform & microcode
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
···
../../modules/common/services.nix
# Services specific to this host
#../../services/forgejo.nix
# Common secrets
../../host-secrets.nix
];
+
+
system.stateVersion = "24.11";
+
modules.garage.enable = true;
# pin host platform & microcode
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+3 -3
hosts/focalor/default.nix
···
# Nvidia
../../modules/common/nvidia.nix
-
# Services specific to this host
-
#../../services/xyz.nix
-
# Common secrets
#../../host-secrets.nix
];
# pin host platform & microcode
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
···
environment.systemPackages = with pkgs; [
#lm_sensors
code-server
];
environment.sessionVariables.WLR_RENDERER = "vulkan";
···
# Nvidia
../../modules/common/nvidia.nix
# Common secrets
#../../host-secrets.nix
];
+
+
system.stateVersion = "24.11";
# pin host platform & microcode
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
···
environment.systemPackages = with pkgs; [
#lm_sensors
code-server
+
agenix.packages.x86_64-linux.default
];
environment.sessionVariables.WLR_RENDERER = "vulkan";
+10 -4
hosts/valefar/default.nix
···
../../modules/common/services.nix
../../modules/common/efi.nix
-
# Services specific to this host
-
../../services/garage.nix
-
../../services/forgejo.nix
-
# Common secrets
../../host-secrets.nix
];
# pin host platform & microcode
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
···
services.zfs.autoScrub.enable = true;
services.zfs.trim.enable = true;
environment.systemPackages = with pkgs; [
lm_sensors
code-server
];
virtualisation.docker = {
···
../../modules/common/services.nix
../../modules/common/efi.nix
# Common secrets
../../host-secrets.nix
];
+
+
# Enable modules
+
modules.garage.enable = true;
+
modules.forgejo.enable = true;
+
+
system.stateVersion = "24.11";
# pin host platform & microcode
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
···
services.zfs.autoScrub.enable = true;
services.zfs.trim.enable = true;
+
services.vscode-server.enable = true;
+
services.vscode-server.nodejsPackage = pkgs.nodejs_20;
+
environment.systemPackages = with pkgs; [
lm_sensors
code-server
+
agenix.packages.x86_64-linux.default
];
virtualisation.docker = {
+14
modules/caddy/caddy.nix
···
···
+
{lib, pkgs, config, ...}:
+
+
{
+
+
services.caddy = {
+
enable = true;
+
+
virtualHosts = {
+
"s3.nekomimi.pet".extraConfig = ''
+
reverse_proxy http://127.0.0.1:3903
+
''
+
};
+
};
+
}
-2
modules/common/system.nix
···
time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
-
-
system.stateVersion = "24.11";
}
···
time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
}
+49
modules/forgejo/default.nix
···
···
+
{ lib, pkgs, config, ... }:
+
+
with lib;
+
let
+
cfg = config.modules.forgejo;
+
sshPort = 2222;
+
httpPort = 5000;
+
in
+
{
+
options = {
+
modules = {
+
forgejo = {
+
enable = mkEnableOption "Deploy forgejo";
+
};
+
};
+
};
+
+
config = mkIf cfg.enable {
+
networking.firewall.allowedTCPPorts = [
+
sshPort
+
httpPort
+
];
+
+
services.forgejo = {
+
enable = true;
+
database = {
+
type = "sqlite3";
+
path = "/var/lib/forgejo/forgejo.db";
+
};
+
lfs.enable = true;
+
settings = {
+
server = {
+
domain = "git.nekomimi.pet";
+
ROOT_URL = "https://git.nekomimi.pet";
+
LANDING_PAGE = "explore";
+
HTTP_PORT = 5000;
+
SSH_LISTEN_PORT = 2222;
+
SSH_PORT = 2222;
+
START_SSH_SERVER = true;
+
};
+
# service.DISABLE_REGISTRATION = true;
+
actions = {
+
ENABLED = true;
+
DEFAULT_ACTIONS_URL = "github";
+
};
+
};
+
};
+
};
+
}
+50
modules/garage/default.nix
···
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
let
+
cfg = config.modules.garage;
+
in
+
{
+
options = {
+
modules = {
+
garage = {
+
enable = mkEnableOption "Deploy garage";
+
};
+
};
+
};
+
+
config = mkIf cfg.enable {
+
services.garage = {
+
enable = true;
+
package = pkgs.garage;
+
settings = {
+
metadata_dir = "/garage/metadata";
+
data_dir = "/garage/data";
+
db_engine = "lmdb";
+
replication_mode = "2";
+
rpc_bind_addr = "[::]:3901";
+
rpc_public_addr = "${config.networking.hostName}:3901";
+
rpc_secret_file = config.age.secrets."garage-rpc-secret".path;
+
s3_api = {
+
s3_region = config.networking.hostName;
+
api_bind_addr = "[::]:3900";
+
root_domain = ".s3.nekomimi.pet";
+
};
+
s3_web = {
+
bind_addr = "[::]:3902";
+
root_domain = ".web.nekomimi.pet";
+
index = "index.html";
+
};
+
admin = {
+
api_bind_addr = "[::]:3903";
+
admin_token_file = config.age.secrets."garage-admin-token".path;
+
metrics_token_file = config.age.secrets."garage-metrics-token".path;
+
};
+
bootstrap_peers = [
+
"d548d0c9ae9aec9e26fe0bd2ca3efe75f654fa350bad5cb02bc9aebc9850ba8f@[2a04:52c0:135:48d1::2]:3901" # buer
+
"5504cb25910dcef4a4312006691d651c099cde7c3a88df9ca79aa350571e6e65@[2601:5c2:8400:26c0:4ecc:6aff:fef7:98ca]:3901" #valefar
+
];
+
};
+
};
+
};
+
}
+47
modules/github-runners/default.nix
···
···
+
{ lib, pkgs, config, ... }:
+
+
with lib;
+
let
+
cfg = config.modules.github-runners;
+
extraPackages =
+
let gtar = pkgs.runCommandNoCC "gtar" { } ''
+
mkdir -p $out/bin
+
ln -s ${lib.getExe pkgs.gnutar} $out/bin/gtar
+
'';
+
in
+
with pkgs; [
+
nix
+
nixci
+
cachix
+
coreutils
+
which
+
jq
+
gtar
+
docker
+
curl
+
];
+
in
+
{
+
options = {
+
modules = {
+
github-runners = {
+
enable = mkEnableOption "Deploy github runners";
+
};
+
};
+
};
+
+
config = mkIf cfg.enable {
+
services.github-runners = {
+
simplelink = {
+
enable = true;
+
name = "simplelink";
+
url = "https://github.com/waveringana/simplelink";
+
token = config.age.secrets."build-token".path;
+
user = "regent";
+
group = "docker";
+
extraPackages = extraPackages;
+
};
+
};
+
};
+
}
+
-32
services/forgejo.nix
···
-
{lib, pkgs, config, ...}:
-
-
let
-
cfg = config.services.forgejo;
-
srv = cfg.settings.server;
-
in
-
{
-
services.forgejo = {
-
enable = true;
-
database = {
-
type = "sqlite3";
-
path = "/var/lib/forgejo/forgejo.db";
-
};
-
lfs.enable = true;
-
settings = {
-
server = {
-
domain = "git.nekomimi.pet";
-
ROOT_URL = "https://git.nekomimi.pet";
-
LANDING_PAGE = "explore";
-
HTTP_PORT = 5000;
-
SSH_LISTEN_PORT = 2222;
-
SSH_PORT = 2222;
-
START_SSH_SERVER = true;
-
};
-
# service.DISABLE_REGISTRATION = true;
-
actions = {
-
ENABLED = true;
-
DEFAULT_ACTIONS_URL = "github";
-
};
-
};
-
};
-
}
···
-36
services/garage.nix
···
-
{ config, lib, pkgs, ... }:
-
-
{
-
services.garage = {
-
enable = true;
-
package = pkgs.garage;
-
settings = {
-
metadata_dir = "/garage/metadata";
-
data_dir = "/garage/data";
-
db_engine = "lmdb";
-
replication_mode = "2";
-
rpc_bind_addr = "[::]:3901";
-
rpc_public_addr = "${config.networking.hostName}:3901";
-
rpc_secret_file = config.age.secrets."garage-rpc-secret".path;
-
s3_api = {
-
s3_region = config.networking.hostName;
-
api_bind_addr = "[::]:3900";
-
root_domain = ".s3.nekomimi.pet";
-
};
-
s3_web = {
-
bind_addr = "[::]:3902";
-
root_domain = ".web.nekomimi.pet";
-
index = "index.html";
-
};
-
admin = {
-
api_bind_addr = "[::]:3903";
-
admin_token_file = config.age.secrets."garage-admin-token".path;
-
metrics_token_file = config.age.secrets."garage-metrics-token".path;
-
};
-
bootstrap_peers = [
-
"d548d0c9ae9aec9e26fe0bd2ca3efe75f654fa350bad5cb02bc9aebc9850ba8f@[2a04:52c0:135:48d1::2]:3901" # buer
-
"5504cb25910dcef4a4312006691d651c099cde7c3a88df9ca79aa350571e6e65@[2601:5c2:8400:26c0:4ecc:6aff:fef7:98ca]:3901" #valefar
-
];
-
};
-
};
-
}
···
-35
services/github-runners.nix
···
-
{ lib, pkgs, ... }:
-
-
let extraPackages =
-
let gtar = pkgs.runCommandNoCC "gtar" { } ''
-
mkdir -p $out/bin
-
ln -s ${lib.getExe pkgs.gnutar} $out/bin/gtar
-
'';
-
in
-
with pkgs; [
-
nix
-
nixci
-
cachix
-
coreutils
-
which
-
jq
-
gtar
-
docker
-
curl
-
];
-
-
in
-
{
-
services.github-runners = {
-
simplelink = {
-
enable = true;
-
name = "simplelink";
-
url = "https://github.com/waveringana/simplelink";
-
token = config.age.secrets."build-token".path;
-
user = "regent";
-
group = "docker";
-
extraPackages = extraPackages;
-
};
-
};
-
}
-
···