nix on git yippee
This commit is contained in:
commit
981186a787
17 changed files with 579 additions and 0 deletions
190
flake.lock
generated
Normal file
190
flake.lock
generated
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"agenix": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": "darwin",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747575206,
|
||||||
|
"narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=",
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"rev": "4835b1dc898959d8547a871ef484930675cb47f1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryantm",
|
||||||
|
"repo": "agenix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744478979,
|
||||||
|
"narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "43975d782b418ebf4969e9ccba82466728c2851b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681202837,
|
||||||
|
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"agenix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1745494811,
|
||||||
|
"narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1745391562,
|
||||||
|
"narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748162331,
|
||||||
|
"narHash": "sha256-rqc2RKYTxP3tbjA+PB3VMRQNnjesrT0pEofXQTrMsS8=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1682134069,
|
||||||
|
"narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "fd901ef4bf93499374c5af385b2943f5801c0833",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"agenix": "agenix",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"vscode-server": "vscode-server"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vscode-server": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729422940,
|
||||||
|
"narHash": "sha256-DlvJv33ml5UTKgu4b0HauOfFIoDx6QXtbqUF3vWeRCY=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixos-vscode-server",
|
||||||
|
"rev": "8b6db451de46ecf9b4ab3d01ef76e59957ff549f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixos-vscode-server",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
40
flake.nix
Normal file
40
flake.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# flake.nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||||
|
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
||||||
|
agenix.url = "github:ryantm/agenix";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, vscode-server, agenix }: {
|
||||||
|
nixosConfigurations = {
|
||||||
|
valefar = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
./hosts/valefar # imports configuration.nix automatically
|
||||||
|
|
||||||
|
# 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 ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Easy to add more hosts
|
||||||
|
/*server2 = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
./hosts/server2
|
||||||
|
agenix.nixosModules.default
|
||||||
|
# different services for server2
|
||||||
|
];
|
||||||
|
};*/
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
35
host-secrets.nix
Normal file
35
host-secrets.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
users.users.garage = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "garage";
|
||||||
|
home = "/var/lib/garage";
|
||||||
|
description = "Garage service user";
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.garage = {};
|
||||||
|
|
||||||
|
age.secrets = {
|
||||||
|
"build-token".file = ./secrets/build-token.age;
|
||||||
|
|
||||||
|
"garage-rpc-secret" = {
|
||||||
|
file = ./secrets/garage-rpc-secret.age;
|
||||||
|
owner = "garage";
|
||||||
|
group = "garage";
|
||||||
|
mode = "0400";
|
||||||
|
};
|
||||||
|
|
||||||
|
"garage-admin-token" = {
|
||||||
|
file = ./secrets/garage-admin-token.age;
|
||||||
|
owner = "garage";
|
||||||
|
group = "garage";
|
||||||
|
mode = "0400";
|
||||||
|
};
|
||||||
|
|
||||||
|
"garage-metrics-token" = {
|
||||||
|
file = ./secrets/garage-metrics-token.age;
|
||||||
|
owner = "garage";
|
||||||
|
group = "garage";
|
||||||
|
mode = "0400";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
33
hosts/valefar/default.nix
Normal file
33
hosts/valefar/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# hosts/valefar/configuration.nix (or default.nix)
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# Host-specific hardware
|
||||||
|
./hardware.nix
|
||||||
|
./secrets.nix
|
||||||
|
|
||||||
|
# Common modules shared across hosts
|
||||||
|
../../modules/common/system.nix
|
||||||
|
../../modules/common/users.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";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault
|
||||||
|
config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
|
networking.hostName = "valefar";
|
||||||
|
networking.hostId = "2a07da90";
|
||||||
|
|
||||||
|
boot.supportedFilesystems = [ "zfs" ];
|
||||||
|
boot.kernelModules = [ "nct6775" "coretemp" ];
|
||||||
|
}
|
45
hosts/valefar/hardware.nix
Normal file
45
hosts/valefar/hardware.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "uas" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/17b399da-2210-4493-9ae3-c65b20b992a0";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/6340-211B";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/garage" = {
|
||||||
|
device = "garage";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/storage" = {
|
||||||
|
device = "storage";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||||
|
}
|
3
hosts/valefar/secrets.nix
Normal file
3
hosts/valefar/secrets.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
32
modules/common/services.nix
Normal file
32
modules/common/services.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
# system packages + services
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
wget
|
||||||
|
fastfetch
|
||||||
|
lsof
|
||||||
|
btop
|
||||||
|
git
|
||||||
|
openssl
|
||||||
|
stdenv
|
||||||
|
gnumake
|
||||||
|
parted
|
||||||
|
zfs
|
||||||
|
|
||||||
|
code-server
|
||||||
|
];
|
||||||
|
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
enableOnBoot = true;
|
||||||
|
package = pkgs.docker.override {
|
||||||
|
buildGoModule = pkgs.buildGo123Module;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
services.printing.enable = true;
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
services.tailscale.useRoutingFeatures = "both";
|
||||||
|
}
|
51
modules/common/system.nix
Normal file
51
modules/common/system.nix
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
# boot, networking, locale, stateVersion
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
|
||||||
|
boot.supportedFilesystems = [ "zfs" ];
|
||||||
|
fileSystems."/boot".options = [ "umask=0077" ];
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
|
||||||
|
services.zfs.autoScrub.enable = true;
|
||||||
|
services.zfs.trim.enable = true;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
firewall.enable = false;
|
||||||
|
firewall.trustedInterfaces = [
|
||||||
|
"tailscale0"
|
||||||
|
];
|
||||||
|
nameservers = [ "192.168.4.3" "1.1.1.1" ];
|
||||||
|
useDHCP = true;
|
||||||
|
firewall.allowedTCPPorts = [22 80 443 2456 2457 9000 9001 9002];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.resolved = {
|
||||||
|
enable = true;
|
||||||
|
dnssec = "true";
|
||||||
|
domains = [ "~." ];
|
||||||
|
fallbackDns = [ "192.168.4.3" "1.0.0.1#one.one.one.one" ];
|
||||||
|
dnsovertls = "true";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.fancontrol = {
|
||||||
|
enable = true;
|
||||||
|
description = "Fan speed control";
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.lm_sensors}/bin/fancontrol";
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.variables.EDITOR = "neovim";
|
||||||
|
|
||||||
|
time.timeZone = "America/New_York";
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
|
|
12
modules/common/users.nix
Normal file
12
modules/common/users.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
users.users.regent = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "docker" "wheel" ];
|
||||||
|
packages = with pkgs; [ tree ];
|
||||||
|
};
|
||||||
|
|
||||||
|
security.sudo.enable = true;
|
||||||
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
}
|
||||||
|
|
7
secrets/build-token.age
Normal file
7
secrets/build-token.age
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 i9wBeA VasuCf7L03zsABerLELUSNGcI3QLxaE+nvN+5XwLk18
|
||||||
|
Vzdd3tKTL3DJpWe1XNRPSt2YhWxATljyBK6bDUiMai4
|
||||||
|
-> ssh-ed25519 UbxDgg S0b5rEN5xbcZ12Sjx+gI7cyTyMv/PPoHpzfHVGOlMgA
|
||||||
|
Z0n4Qxq8NwQGNpJH8ES90bBt4MuAF/m8V8xNkEWMfPQ
|
||||||
|
--- 1mqOAP0OMMkMkWUcCE/cXqjRr/aZuLDcn6HEC9X2hR4
|
||||||
|
Mz›_H2шկ̰Fqý~÷Û¸'ÕftTÓ5ŠnþaÛ¯^n¯“^Ç^iï=c²N¦L(ÙœBºÐ‚oÂŒìhêO)Ьu˜eî`4[Mž–uèõnMŸZÉI<13>6Á9¥Ÿ¶"ƒq‘öFñíÚ@!n¿K·,ÃMkl
|
7
secrets/garage-admin-token.age
Normal file
7
secrets/garage-admin-token.age
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 i9wBeA 7XwEZNaAWzH5QgPXBW/S7HHSAFO0UgFF0MP+o6Z8ymo
|
||||||
|
hmw36GBOfv/AvT++JpBNRLydL2j3mASS/JrLROG1ifs
|
||||||
|
-> ssh-ed25519 UbxDgg cvcbnv9O2OHt3F4K+0g0ux4sq1MCrZnaLnTNM+5lJho
|
||||||
|
efNO6FWLKj1l2eZx4mk8TucMtE12Y3Hf+JHl/FxodSo
|
||||||
|
--- I7BjJid4vdH0bN0V6aFnFnq86XQNFO/JJLfD4rqE+9Y
|
||||||
|
:<Ä£T›U–ðnÿ¨ÈZnô\Ñ#Ç*ñ<7F>š<EFBFBD>˜Øhý=kôÂã%Ù¨®xëÈK»åd<vÝ"M$»wBÞ#*ŽSÎ{7}f<>C™
|
7
secrets/garage-metrics-token.age
Normal file
7
secrets/garage-metrics-token.age
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 i9wBeA FmWklgH5yY/8itKCgiitrzMRCBp64zgOytDLQE2akgk
|
||||||
|
sfJIlVzowBTLsIHFDmC+SdTb9Ks6wIMQyY9HfewMpNU
|
||||||
|
-> ssh-ed25519 UbxDgg PL+q7o31Gr2dYGZGc/aVdLvDGtB8wVPkMO0MdCXgcDA
|
||||||
|
AgjVKXt23x1wYSOWaS+prfsEEpX6BKimR0KGPrG6bko
|
||||||
|
--- EvOF9JjHYoml+j3tMDfU09+GfHyMS56ZbqkmTZCQHSw
|
||||||
|
Vü”\[´¥Š'ŽŒéÀ±Î+<2B><>î&úb
Œ«T¥ß¯8fo„Êpó<70>ÇÂct)h>¡ñvЇü½bŽÝÕËCWiÛo`LR‰ êF
|
7
secrets/garage-rpc-secret.age
Normal file
7
secrets/garage-rpc-secret.age
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 i9wBeA j+jwToOHaeIOAEuPB7qzlJofOVPQO2mI16HspjKSxAM
|
||||||
|
XXv1+ZQQSgcPNMVD5PjrSj67+7NWgUbWV3fSWG93r90
|
||||||
|
-> ssh-ed25519 UbxDgg DR+Q+abB52OEE1ELl7rSjHT8ObJTD6rY9v94H1YriQQ
|
||||||
|
vA31Tw0ItQAgY649sQogIQPvqJppmDYQ4MVPTGerFhE
|
||||||
|
--- ttD8bkuH/5MXyipRWBb2UbxIwyFftPki50NP0BiJQok
|
||||||
|
g]¶óS(hývüùç¯M<*¡¬*e½”ɉª‰hÅÊ´ՌgyH6ôŽn‘M<E28098>ç<EFBFBD>½¿J2W/‰ýì±áåÙÙ€B߸ؽÏìËUÉ›k*È8¿©E¬!A.&Ç
|
14
secrets/secrets.nix
Normal file
14
secrets/secrets.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
let
|
||||||
|
regent = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ0pU82lV9dSjkgYbdh9utZ5CDM2dPN70S5fBqN1m3Pb regent@orobas.local";
|
||||||
|
users = [ regent ];
|
||||||
|
|
||||||
|
valefar = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJlXq2lSfiWwRwIxsxhffW5FDGmjt0QKYN+BaikmRR71";
|
||||||
|
systems = [ valefar ];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
#"secret1.age".publicKeys = [ user1 system1 ];
|
||||||
|
"build-token.age".publicKeys = users ++ systems;
|
||||||
|
"garage-rpc-secret.age".publicKeys = users ++ systems;
|
||||||
|
"garage-admin-token.age".publicKeys = users ++ systems;
|
||||||
|
"garage-metrics-token.age".publicKeys = users ++ systems;
|
||||||
|
}
|
29
services/forgejo.nix
Normal file
29
services/forgejo.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{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;
|
||||||
|
};
|
||||||
|
# service.DISABLE_REGISTRATION = true;
|
||||||
|
actions = {
|
||||||
|
ENABLED = true;
|
||||||
|
DEFAULT_ACTIONS_URL = "github";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
32
services/garage.nix
Normal file
32
services/garage.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.garage = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.garage;
|
||||||
|
settings = {
|
||||||
|
metadata_dir = "/garage/metadata";
|
||||||
|
data_dir = "/garage/data";
|
||||||
|
db_engine = "lmdb";
|
||||||
|
replication_mode = "none";
|
||||||
|
rpc_bind_addr = "[::]:3901";
|
||||||
|
rpc_public_addr = "[::]:3901";
|
||||||
|
rpc_secret_file = config.age.secrets."garage-rpc-secret".path;
|
||||||
|
s3_api = {
|
||||||
|
s3_region = "garage";
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
35
services/github-runners.nix
Normal file
35
services/github-runners.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue