i take back what i said, it should be relevant now, though
Some checks failed
/ nix fmt (push) Has been cancelled
Some checks failed
/ nix fmt (push) Has been cancelled
This commit is contained in:
parent
321f72f070
commit
abd6c558a2
43 changed files with 929 additions and 978 deletions
|
@ -2,8 +2,7 @@
|
|||
merge,
|
||||
configs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
#capsaicin is a custom-built PC
|
||||
capsaicin = merge configs.universal configs.personal;
|
||||
#menthol is a Lenovo Thinkpad T460s
|
||||
|
@ -15,5 +14,4 @@
|
|||
fructose = merge configs.universal (merge configs.sucrose configs.cluster);
|
||||
#aspartame is a VPS from Contabo
|
||||
aspartame = merge configs.universal configs.cluster;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
{
|
||||
aspartame.modules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.overlays = [
|
||||
(
|
||||
final: prev:
|
||||
let
|
||||
final: prev: let
|
||||
caddy-custom = pkgs.callPackage ./caddy-custom.nix {};
|
||||
in
|
||||
let
|
||||
in let
|
||||
# Caddy Layer4 modules
|
||||
l4CaddyModules =
|
||||
lib.lists.map
|
||||
|
@ -24,8 +25,7 @@
|
|||
"modules/l4tls"
|
||||
"modules/l4proxyprotocol"
|
||||
];
|
||||
in
|
||||
{
|
||||
in {
|
||||
caddy-default = caddy-custom;
|
||||
caddy-base = caddy-custom.withPlugins {caddyModules = [];};
|
||||
caddy-l4 = caddy-custom.withPlugins {
|
||||
|
@ -33,7 +33,8 @@
|
|||
vendorHash = "sha256-Bz2tR1/a2okARCWFEeSEeVUx2mdBe0QKUh5qzKUOF8s=";
|
||||
};
|
||||
caddy-many = caddy-custom.withPlugins {
|
||||
caddyModules = [
|
||||
caddyModules =
|
||||
[
|
||||
{
|
||||
name = "transform-encoder";
|
||||
repo = "github.com/caddyserver/transform-encoder";
|
||||
|
@ -44,7 +45,8 @@
|
|||
repo = "github.com/mpilhlt/caddy-conneg";
|
||||
version = "v0.1.4";
|
||||
}
|
||||
] ++ l4CaddyModules;
|
||||
]
|
||||
++ l4CaddyModules;
|
||||
vendorHash = "sha256-OjyJdcbLMSvgkHKR4xMF0BgsuA5kdKgDgV+ocuNHUf4=";
|
||||
};
|
||||
}
|
||||
|
@ -52,21 +54,21 @@
|
|||
];
|
||||
}
|
||||
)
|
||||
({
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
gts = final.callPackage ./gts.nix {};
|
||||
})
|
||||
];
|
||||
})
|
||||
}
|
||||
];
|
||||
personal.modules = [
|
||||
({
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
beeref = final.callPackage ./beeref.nix {}; # I'M GOING TO TRUNCATE *YOU*, BEEREF.
|
||||
})
|
||||
];
|
||||
})
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
fetchurl,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
}: let
|
||||
name = "beeref";
|
||||
version = "0.3.3";
|
||||
src = fetchurl {
|
||||
|
|
|
@ -8,8 +8,7 @@
|
|||
caddy,
|
||||
testers,
|
||||
stdenv,
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
attrsToModule = map (plugin: plugin.repo);
|
||||
attrsToVersionedModule = map (
|
||||
{
|
||||
|
@ -103,8 +102,7 @@ buildGoModule {
|
|||
vendorHash = "sha256-1Api8bBZJ1/oYk4ZGIiwWCSraLzK9L+hsKXkFtk6iVM=";
|
||||
|
||||
passthru = {
|
||||
withPlugins =
|
||||
{
|
||||
withPlugins = {
|
||||
caddyModules,
|
||||
vendorHash ? lib.fakeHash,
|
||||
}:
|
||||
|
|
|
@ -4,8 +4,7 @@
|
|||
fetchFromGitHub,
|
||||
buildGoModule,
|
||||
nixosTests,
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
owner = "superseriousbusiness";
|
||||
repo = "gotosocial";
|
||||
|
||||
|
@ -49,15 +48,13 @@ buildGoModule rec {
|
|||
# checks are currently very unstable in our setup, so we should test manually for now
|
||||
doCheck = false;
|
||||
|
||||
checkFlags =
|
||||
let
|
||||
checkFlags = let
|
||||
# flaky / broken tests
|
||||
skippedTests = [
|
||||
# See: https://github.com/superseriousbusiness/gotosocial/issues/2651
|
||||
"TestPage/minID,_maxID_and_limit_set"
|
||||
];
|
||||
in
|
||||
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
|
||||
in ["-skip=^${builtins.concatStringsSep "$|^" skippedTests}$"];
|
||||
|
||||
passthru.tests.gotosocial = nixosTests.gotosocial;
|
||||
|
||||
|
|
16
apps.mod.nix
16
apps.mod.nix
|
@ -1,9 +1,7 @@
|
|||
{ vscode-server, ... }:
|
||||
{
|
||||
{vscode-server, ...}: {
|
||||
universal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
ps
|
||||
wget
|
||||
|
@ -42,16 +40,14 @@
|
|||
];
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
users.users.emv.extraGroups = ["video"];
|
||||
}
|
||||
)
|
||||
];
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
emulsion
|
||||
ffmpeg
|
||||
|
@ -70,7 +66,6 @@
|
|||
terminator = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
)
|
||||
|
@ -81,8 +76,7 @@
|
|||
];
|
||||
capsaicin.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
cryptsetup
|
||||
keepassxc
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
{
|
||||
|
||||
capsaicin.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
blender # this is because capsaicin is the only one of the two who can take rendering something without starting a forest fire
|
||||
];
|
||||
|
@ -12,8 +10,7 @@
|
|||
];
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
krita
|
||||
inkscape
|
||||
|
@ -26,5 +23,4 @@
|
|||
}
|
||||
)
|
||||
];
|
||||
|
||||
}
|
||||
|
|
|
@ -14,8 +14,7 @@
|
|||
];
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
pwvucontrol
|
||||
pw-volume
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
{
|
||||
cluster-testing.modules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
boot.kernelPatches = [
|
||||
{
|
||||
name = "eBPF-cilium";
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
cluster-testing.modules = [
|
||||
({
|
||||
{
|
||||
/*
|
||||
services.k3s = { # just hogging resources at this moment
|
||||
enable = true;
|
||||
|
@ -40,6 +40,6 @@
|
|||
addonManager.enable = true;
|
||||
}; #chat is this factual
|
||||
*/
|
||||
})
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
cluster-testing.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
clang # this is for cilium
|
||||
llvm_18 # idem
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
{
|
||||
cluster.modules = [
|
||||
({
|
||||
{
|
||||
users.users.emv.extraGroups = [
|
||||
"podman"
|
||||
];
|
||||
})
|
||||
}
|
||||
];
|
||||
sucrose.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = [pkgs.podman-compose];
|
||||
virtualisation = {
|
||||
containers.enable = true;
|
||||
|
|
10
dev.mod.nix
10
dev.mod.nix
|
@ -17,8 +17,7 @@
|
|||
];
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
|
@ -38,11 +37,8 @@
|
|||
];
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
[
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
programs = {
|
||||
direnv = {
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
mupdf
|
||||
];
|
||||
|
|
43
flake.nix
43
flake.nix
|
@ -24,17 +24,14 @@
|
|||
#niri.url = "github:sodiboo/niri-flake";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
} @ inputs:
|
||||
with nixpkgs.lib;
|
||||
let
|
||||
with nixpkgs.lib; let
|
||||
match = flip getAttr;
|
||||
read_dir_recursively =
|
||||
dir:
|
||||
read_dir_recursively = dir:
|
||||
concatMapAttrs (
|
||||
this:
|
||||
match {
|
||||
|
@ -50,7 +47,9 @@
|
|||
|
||||
# `const` helper function is used extensively: the function is constant in regards to the name of the attribute.
|
||||
|
||||
params = inputs // {
|
||||
params =
|
||||
inputs
|
||||
// {
|
||||
configs = raw_configs;
|
||||
molecules = {
|
||||
# number via perfect squares for now, start from 15 squared for personal and 2 squared for others (use primes afterwards, in the same way)
|
||||
|
@ -73,8 +72,7 @@
|
|||
(mapAttrs (const (flip toFunction params)))
|
||||
];
|
||||
|
||||
merge =
|
||||
prev: this:
|
||||
merge = prev: this:
|
||||
{
|
||||
modules = prev.modules or [] ++ this.modules or [];
|
||||
home_modules = prev.home_modules or [] ++ this.home_modules or [];
|
||||
|
@ -85,27 +83,35 @@
|
|||
|
||||
all_modules = attrValues (read_all_modules "${self}");
|
||||
|
||||
raw_configs' = builtins.zipAttrsWith (
|
||||
machine: if machine == "extras" then mergeAttrsList else builtins.foldl' merge { }
|
||||
) all_modules;
|
||||
raw_configs' =
|
||||
builtins.zipAttrsWith (
|
||||
machine:
|
||||
if machine == "extras"
|
||||
then mergeAttrsList
|
||||
else builtins.foldl' merge {}
|
||||
)
|
||||
all_modules;
|
||||
|
||||
raw_configs = builtins.removeAttrs raw_configs' ["extras"];
|
||||
|
||||
extras = raw_configs'.extras or {};
|
||||
|
||||
configs = builtins.mapAttrs (const (
|
||||
configs =
|
||||
builtins.mapAttrs (const (
|
||||
config:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit (config) system;
|
||||
modules = config.modules ++ [
|
||||
modules =
|
||||
config.modules
|
||||
++ [
|
||||
{
|
||||
_module.args.home_modules = config.home_modules;
|
||||
}
|
||||
];
|
||||
}
|
||||
)) raw_configs;
|
||||
in
|
||||
{
|
||||
))
|
||||
raw_configs;
|
||||
in {
|
||||
# for use in nix repl
|
||||
p = s: builtins.trace "\n\n${s}\n" "---";
|
||||
|
||||
|
@ -120,7 +126,8 @@
|
|||
+ (builtins.concatStringsSep "\n" (
|
||||
mapAttrsToList (name: config: ''
|
||||
ln -s ${config.config.system.build.toplevel} $out/${name}
|
||||
'') self.nixosConfigurations
|
||||
'')
|
||||
self.nixosConfigurations
|
||||
))
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
fonts.packages = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
extraCompatPackages = with pkgs; [
|
||||
|
@ -15,8 +14,7 @@
|
|||
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
lutris
|
||||
heroic
|
||||
|
|
|
@ -1,22 +1,29 @@
|
|||
{ nixos-hardware, ... }:
|
||||
let
|
||||
{nixos-hardware, ...}: let
|
||||
config = name: system: additional: {
|
||||
inherit name;
|
||||
value = {
|
||||
inherit system;
|
||||
modules = [
|
||||
modules =
|
||||
[
|
||||
{
|
||||
networking.hostName = name;
|
||||
nixpkgs.hostPlatform = system;
|
||||
}
|
||||
] ++ additional;
|
||||
]
|
||||
++ additional;
|
||||
};
|
||||
};
|
||||
|
||||
filesystem = fsType: path: device: options: {
|
||||
fileSystems.${path} = {
|
||||
fileSystems.${path} =
|
||||
{
|
||||
inherit device fsType;
|
||||
} // (if options == null then { } else { inherit options; });
|
||||
}
|
||||
// (
|
||||
if options == null
|
||||
then {}
|
||||
else {inherit options;}
|
||||
);
|
||||
};
|
||||
|
||||
fs.mergerfs = filesystem "fuse.mergerfs";
|
||||
|
@ -26,9 +33,7 @@ let
|
|||
swap = device: {swapDevices = [{inherit device;}];};
|
||||
|
||||
cpu = brand: {hardware.cpu.${brand}.updateMicrocode = true;};
|
||||
qemu =
|
||||
{ modulesPath, ... }:
|
||||
{
|
||||
qemu = {modulesPath, ...}: {
|
||||
imports = ["${modulesPath}/profiles/qemu-guest.nix"];
|
||||
};
|
||||
in
|
||||
|
@ -39,8 +44,7 @@ in
|
|||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
environment.systemPackages = with pkgs; [mergerfs];
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest; # hope this doesn't break anything -e
|
||||
|
|
14
home.mod.nix
14
home.mod.nix
|
@ -1,10 +1,12 @@
|
|||
{ home-manager, ... }:
|
||||
{
|
||||
{home-manager, ...}: {
|
||||
universal.modules = [
|
||||
home-manager.nixosModules.home-manager
|
||||
(
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
users.users.emv = {
|
||||
isNormalUser = true;
|
||||
description = "emv";
|
||||
|
@ -33,8 +35,7 @@
|
|||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
options.systemd-fuckery = {
|
||||
auto-restart = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
|
@ -43,8 +44,7 @@
|
|||
};
|
||||
|
||||
config = {
|
||||
home.activation.restartSystemdFuckery =
|
||||
let
|
||||
home.activation.restartSystemdFuckery = let
|
||||
ensureRuntimeDir = "XDG_RUNTIME_DIR=\${XDG_RUNTIME_DIR:-/run/user/$(id -u)}";
|
||||
|
||||
systemctl = "env ${ensureRuntimeDir} ${config.systemd.user.systemctlPath}";
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
{
|
||||
universal.modules = [
|
||||
({
|
||||
{
|
||||
time.timeZone = "Europe/Bucharest";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
})
|
||||
}
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
services.xserver.xkb.extraLayouts = {
|
||||
rulemak = {
|
||||
description = "Rulemak, Colemak based Russian phonetic layout";
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
geogebra6 # geogebra5 currently does not work?
|
||||
gimp
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
];
|
||||
|
||||
aspartame.modules = [
|
||||
({
|
||||
{
|
||||
services.fail2ban.enable = true;
|
||||
networking.firewall = {
|
||||
interfaces.eth0.allowedTCPPorts = [
|
||||
|
@ -45,6 +45,6 @@
|
|||
64738 # murmur udp
|
||||
];
|
||||
};
|
||||
})
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -2,8 +2,11 @@
|
|||
# networking? I sure hope it is. (It was not)
|
||||
universal.modules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
plugins = lib.mkForce []; # networkmanager has a shit ton of vpn plugins by default. which we do not care about because we use wireguard. -e
|
||||
|
@ -26,8 +29,7 @@
|
|||
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
toybox
|
||||
];
|
||||
|
@ -54,8 +56,7 @@
|
|||
];
|
||||
glucose.modules = [
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
{...}: {
|
||||
networking = {
|
||||
interfaces.eth0.ipv4.addresses = [
|
||||
{
|
||||
|
@ -74,8 +75,7 @@
|
|||
|
||||
fructose.modules = [
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
{...}: {
|
||||
networking = {
|
||||
interfaces.eth0.ipv4.addresses = [
|
||||
{
|
||||
|
@ -94,8 +94,7 @@
|
|||
|
||||
capsaicin.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
networking.resolvconf.enable = false;
|
||||
networking = {
|
||||
interfaces.eth0.ipv4.addresses = [
|
||||
|
@ -166,8 +165,7 @@
|
|||
|
||||
menthol.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
hardware.bluetooth = {
|
||||
enable = true; # menthol is the only computer that actually has a bluetooth module.
|
||||
powerOnBoot = true; # this will kill the battery, beware.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
universal.modules = [
|
||||
({
|
||||
{
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings.PasswordAuthentication = false; # english is a fake language, apparently it's not "authentification", literally go explode, it makes sense but i am still mad -e
|
||||
|
@ -12,7 +12,7 @@
|
|||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDRf6PfZtcUN5GJ3hcxoxencU2EMRBeu4BIyBSOgKReD emv@capsaicin"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK2r4QfMmGcPUs4mpYd1YgcLKwwNpBmuHbZVT5VC+8W7 emv@menthol"
|
||||
];
|
||||
})
|
||||
}
|
||||
];
|
||||
fructose.modules = [
|
||||
{
|
||||
|
@ -26,15 +26,13 @@
|
|||
{
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
matchBlocks =
|
||||
let
|
||||
matchBlocks = let
|
||||
to = hostname: {
|
||||
inherit hostname;
|
||||
user = "emv";
|
||||
identityFile = "~/.ssh/id_ed25519";
|
||||
};
|
||||
in
|
||||
{
|
||||
in {
|
||||
glucose = to "glucose.wg";
|
||||
fructose = to "fructose.wg";
|
||||
capsaicin = to "capsaicin.wg";
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
nixpkgs,
|
||||
molecules,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
public-keys = {
|
||||
capsaicin = "Jn0yQV0qdi1oPdiMSmQSPk4IYbfR2THuiY5pTl7cLgs=";
|
||||
menthol = "6cDCwXBSC0bpEtpRVtzAFrt+a4BYd2iPjCmQb4xpZnU=";
|
||||
|
@ -19,19 +18,19 @@ let
|
|||
ips = builtins.mapAttrs (nixpkgs.lib.const ip) molecules;
|
||||
ips' = builtins.mapAttrs (name: ip: "${ip}/32") ips;
|
||||
|
||||
port-for = builtins.mapAttrs (
|
||||
port-for =
|
||||
builtins.mapAttrs (
|
||||
machine: {config, ...}: toString config.networking.wireguard.interfaces.wg0.listenPort
|
||||
) self.nixosConfigurations;
|
||||
in
|
||||
{
|
||||
)
|
||||
self.nixosConfigurations;
|
||||
in {
|
||||
extras = {
|
||||
wireguard-ips = ips;
|
||||
};
|
||||
|
||||
universal.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
networking = {
|
||||
# i sure hope it is
|
||||
nat = {
|
||||
|
@ -55,8 +54,7 @@ in
|
|||
|
||||
glucose.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
|
||||
networking.wireguard.interfaces.wg0 = {
|
||||
postSetup = ''
|
||||
|
@ -91,8 +89,7 @@ in
|
|||
|
||||
fructose.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
|
||||
networking.wireguard.interfaces.wg0 = {
|
||||
postSetup = ''
|
||||
|
@ -127,8 +124,7 @@ in
|
|||
|
||||
aspartame.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
|
||||
networking.wireguard.interfaces.wg0 = {
|
||||
postSetup = ''
|
||||
|
|
38
nix.mod.nix
38
nix.mod.nix
|
@ -2,11 +2,8 @@
|
|||
nix-monitored,
|
||||
molecules,
|
||||
...
|
||||
}:
|
||||
let
|
||||
garbage-collection-module =
|
||||
{ lib, ... }:
|
||||
{
|
||||
}: let
|
||||
garbage-collection-module = {lib, ...}: {
|
||||
programs.nh.clean = {
|
||||
enable = true;
|
||||
extraArgs = "--keep 3 --keep-since 7d";
|
||||
|
@ -19,21 +16,17 @@ let
|
|||
};
|
||||
# there are very few circumstances in which we'd be awake at those times.
|
||||
|
||||
systemd.timers =
|
||||
let
|
||||
systemd.timers = let
|
||||
fuck-off.timerConfig = {
|
||||
Persistent = lib.mkForce false;
|
||||
RandomizedDelaySec = lib.mkForce 0;
|
||||
};
|
||||
in
|
||||
{
|
||||
in {
|
||||
nh-clean = fuck-off;
|
||||
nix-optimise = fuck-off;
|
||||
};
|
||||
};
|
||||
distributed-build-module =
|
||||
{ config, ... }:
|
||||
{
|
||||
distributed-build-module = {config, ...}: {
|
||||
nix.distributedBuilds = true;
|
||||
nix.buildMachines = [
|
||||
{
|
||||
|
@ -59,8 +52,7 @@ let
|
|||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
in {
|
||||
universal.modules = [
|
||||
{
|
||||
system.stateVersion = "24.05";
|
||||
|
@ -75,8 +67,7 @@ in
|
|||
};
|
||||
}
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
nixpkgs.overlays = [
|
||||
nix-monitored.overlays.default
|
||||
(final: prev: {
|
||||
|
@ -108,8 +99,7 @@ in
|
|||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
programs.ssh.extraConfig = ''
|
||||
${builtins.concatStringsSep "" (
|
||||
lib.mapAttrsToList (name: n: ''
|
||||
|
@ -117,7 +107,8 @@ in
|
|||
HostName ${name}.wg
|
||||
User remote-builder
|
||||
IdentityFile ${config.sops.secrets.remote-build-ssh-privkey.path}
|
||||
'') molecules
|
||||
'')
|
||||
molecules
|
||||
)}
|
||||
'';
|
||||
|
||||
|
@ -167,8 +158,7 @@ in
|
|||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
# This is publicly served from https://cache.collective-conciousness.monster
|
||||
# That's proxied through aspartame via caddy.
|
||||
services.nix-serve = {
|
||||
|
@ -228,9 +218,11 @@ in
|
|||
|
||||
universal.home_modules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
cachix
|
||||
nil
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.adb.enable = true; # #yeag that's it for now lol
|
||||
users.users.emv.extraGroups = ["adbusers"];
|
||||
services.udev.packages = [pkgs.android-udev-rules];
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
{
|
||||
aspartame.modules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
package = pkgs.caddy-many;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
glucose.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
# services.couchdb = {
|
||||
# enable = true;
|
||||
# adminUser = "Admin";
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
{
|
||||
fructose.modules = [
|
||||
(
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
package = pkgs.forgejo;
|
||||
|
|
|
@ -6,15 +6,13 @@
|
|||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
services.gitea-actions-runner = {
|
||||
package = pkgs.forgejo-runner;
|
||||
instances = {
|
||||
${config.networking.hostName} = {
|
||||
enable = true;
|
||||
hostPackages =
|
||||
with pkgs;
|
||||
hostPackages = with pkgs;
|
||||
lib.mkDefault [
|
||||
bash
|
||||
coreutils
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
{
|
||||
aspartame.modules = [
|
||||
(
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
services.gotosocial = {
|
||||
enable = true;
|
||||
package = pkgs.gts;
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
services.murmur = {
|
||||
enable = true;
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
fructose.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
virtualisation.oci-containers = {
|
||||
containers.pihole = {
|
||||
image = "pihole/pihole:latest";
|
||||
|
|
|
@ -85,8 +85,7 @@
|
|||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
virtualisation.oci-containers = {
|
||||
containers.postgres = {
|
||||
image = "postgres:17";
|
||||
|
@ -111,6 +110,5 @@
|
|||
};
|
||||
}
|
||||
)
|
||||
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
aspartame.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
zola
|
||||
];
|
||||
|
|
40
sops.mod.nix
40
sops.mod.nix
|
@ -1,5 +1,4 @@
|
|||
{ sops-nix, ... }:
|
||||
{
|
||||
{sops-nix, ...}: {
|
||||
universal.modules = [
|
||||
sops-nix.nixosModules.sops
|
||||
{
|
||||
|
@ -11,21 +10,19 @@
|
|||
sops.age.keyFile = "/home/emv/.config/sops/age/keys.txt";
|
||||
}
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets.wireguard-private-key = {
|
||||
key = "wireguard-private-keys/${config.networking.hostName}";
|
||||
};
|
||||
}
|
||||
)
|
||||
({
|
||||
{
|
||||
sops.secrets.remote-build-ssh-privkey = {};
|
||||
})
|
||||
}
|
||||
];
|
||||
aspartame.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets.gts_db_pass = {};
|
||||
sops.templates."gts.env.secrets.yaml".content = ''
|
||||
GTS_DB_PASSWORD=${config.sops.placeholder."gts_db_pass"}
|
||||
|
@ -35,8 +32,7 @@
|
|||
];
|
||||
sucrose.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets."forgejo_runner_${config.networking.hostName}_token" = {};
|
||||
sops.templates."forgejo_runner.env.secrets.yaml".content = ''
|
||||
TOKEN=${config.sops.placeholder."forgejo_runner_${config.networking.hostName}_token"}
|
||||
|
@ -45,12 +41,11 @@
|
|||
)
|
||||
];
|
||||
glucose.modules = [
|
||||
({
|
||||
sops.secrets.binary_cache_secret = { };
|
||||
})
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
sops.secrets.binary_cache_secret = {};
|
||||
}
|
||||
(
|
||||
{config, ...}: {
|
||||
sops.secrets.couchdb_admin_pass = {};
|
||||
sops.secrets.couchdb_admin_account = {};
|
||||
sops.templates."couchdb.env.secrets.yaml".content = ''
|
||||
|
@ -60,8 +55,7 @@
|
|||
}
|
||||
)
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets.murmur_login_password = {};
|
||||
sops.secrets.murmur_welcome_message = {};
|
||||
sops.templates."murmur.env.secrets.yaml".content = ''
|
||||
|
@ -73,8 +67,7 @@
|
|||
];
|
||||
fructose.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets.pihole_webpassword = {};
|
||||
sops.templates."pihole.env.secrets.yaml".content = ''
|
||||
WEBPASSWORD="${config.sops.placeholder."pihole_webpassword"}"
|
||||
|
@ -82,8 +75,7 @@
|
|||
}
|
||||
)
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets.postgresdb_admin_password = {};
|
||||
sops.secrets.forgejo_db_pass = {};
|
||||
sops.templates."postgresdb.env.secrets.yaml".content = ''
|
||||
|
@ -94,8 +86,7 @@
|
|||
];
|
||||
personal.modules = [
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
{config, ...}: {
|
||||
sops.secrets.home1_ssid = {};
|
||||
sops.secrets.home1_psk = {};
|
||||
sops.secrets.home2_ssid = {};
|
||||
|
@ -115,8 +106,7 @@
|
|||
];
|
||||
universal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
sops
|
||||
age
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
{ stylix, ... }:
|
||||
let
|
||||
{stylix, ...}: let
|
||||
wallpapers =
|
||||
builtins.mapAttrs
|
||||
(
|
||||
name: value:
|
||||
{
|
||||
name: value: {
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
stylix.image = pkgs.fetchurl {
|
||||
url = value.url;
|
||||
hash = value.hash or lib.fakeHash;
|
||||
|
@ -38,8 +35,7 @@ let
|
|||
twirly-bh.url = "https://w.wallhaven.cc/full/l8/wallhaven-l8v7kq.jpg";
|
||||
twirly-bh.hash = "sha256-on/wIsdUgKSgl9o/jwKu/Rk2ehK9JgDBoGji+QH5b5s=";
|
||||
};
|
||||
in
|
||||
{
|
||||
in {
|
||||
personal.modules = [
|
||||
stylix.nixosModules.stylix
|
||||
(
|
||||
|
@ -47,8 +43,7 @@ in
|
|||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
stylix.enable = true;
|
||||
|
||||
stylix.polarity = "dark";
|
||||
|
@ -87,8 +82,7 @@ in
|
|||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
systemd-fuckery.auto-restart = ["swaybg"];
|
||||
systemd.user.services."swaybg" = {
|
||||
Unit = {
|
||||
|
|
16
sway.mod.nix
16
sway.mod.nix
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
personal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.sway = {
|
||||
enable = true;
|
||||
package = pkgs.swayfx;
|
||||
|
@ -25,8 +24,7 @@
|
|||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
}: {
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
|
@ -42,13 +40,11 @@
|
|||
};
|
||||
terminal = "terminator";
|
||||
|
||||
keybindings =
|
||||
let
|
||||
keybindings = let
|
||||
mod = config.wayland.windowManager.sway.config.modifier;
|
||||
term = config.wayland.windowManager.sway.config.terminal;
|
||||
rofi = "rofi";
|
||||
in
|
||||
{
|
||||
in {
|
||||
"${mod}+Return" = "exec ${term}"; # opens a terminal window
|
||||
"${mod}+Shift+q" = "kill"; # kills the active window
|
||||
|
||||
|
@ -169,7 +165,7 @@
|
|||
*/
|
||||
|
||||
bars = [
|
||||
({
|
||||
{
|
||||
statusCommand = "\${pkgs.swayrbar}/bin/swayrbar";
|
||||
position = "bottom";
|
||||
trayOutput = "primary";
|
||||
|
@ -208,7 +204,7 @@
|
|||
text = "#ffffff";
|
||||
};
|
||||
};
|
||||
})
|
||||
}
|
||||
];
|
||||
output = {
|
||||
DP-3 = {
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
personal.home_modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.texlive = {
|
||||
enable = true;
|
||||
packageSet = pkgs.texlive;
|
||||
extraPackages = tpkgs: {
|
||||
inherit (tpkgs)
|
||||
inherit
|
||||
(tpkgs)
|
||||
scheme-medium
|
||||
dvisvgm
|
||||
dvipng # in-place output
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
universal.modules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue