Compare commits

...

10 Commits

Author SHA1 Message Date
Alexander Heldt
876f3813ae test-vm: Add WHIB backend 2024-12-20 13:05:45 +01:00
Alexander Heldt
51d32e66c4 Update README with documentation about the test-vm 2024-12-20 13:05:45 +01:00
Alexander Heldt
12921700ab test-vm: Echo help message for shutdown alias 2024-12-20 13:05:23 +01:00
Alexander Heldt
94aef10d67 test-vm: Resize terminal to host terminal size 2024-12-20 12:12:16 +01:00
Alexander Heldt
fd31675cac test-vm: Add alias of shutting down the VM 2024-12-20 12:12:16 +01:00
Alexander Heldt
6b79aa8fca test-vm: Auto login a user and assume its sudo 2024-12-20 12:12:16 +01:00
Alexander Heldt
18c95d2f9c test-vm: Increase disk size 2024-12-20 12:12:16 +01:00
Alexander Heldt
00b2946d59 pinwheel: Don't override go version 2024-12-20 12:11:33 +01:00
Alexander Heldt
ea998d33a4 pinwheel: Fix fonts 2024-12-20 12:11:19 +01:00
Alexander Heldt
ea6a846139 Update flake inputs 2024-12-20 12:11:10 +01:00
8 changed files with 177 additions and 45 deletions

View File

@@ -25,3 +25,13 @@ EDITOR=vim agenix -d "some-secret.age" -i ~/.ssh/alex.pinwheel
Or use some other SSH key that is has been used to key the secret.
# Test VM
Build the test VM with the command:
```
cm --build-test-vm
```
and test it with:
```
cm --run-test-vm
```

64
flake.lock generated
View File

@@ -53,11 +53,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1732784553,
"narHash": "sha256-S3PiqgTS8ST07ihFDL2cPExoxHcd9I8ITecpgMz+s4M=",
"lastModified": 1734599675,
"narHash": "sha256-jTfIoLxbVK3r6rFHKs0JS8WEYrmp0AGomzGaPTDZvrE=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "fb81e75180369a888db920df8f6097fbf2f603e9",
"rev": "df40078d8d4f3f0439e52a3f3e44af0005e6072e",
"type": "github"
},
"original": {
@@ -94,11 +94,11 @@
]
},
"locked": {
"lastModified": 1732793095,
"narHash": "sha256-6TrknJ8CpvSSF4gviQSeD+wyj3siRcMvdBKhOXkEMKU=",
"lastModified": 1734622158,
"narHash": "sha256-h/fdzqlCqSa2ZCIqtDc9kshCJm6kQIoKuO0MSSmAX4A=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "2f7739d01080feb4549524e8f6927669b61c6ee3",
"rev": "832920a60833533eaabcc93ab729801bf586fa0c",
"type": "github"
},
"original": {
@@ -114,11 +114,11 @@
]
},
"locked": {
"lastModified": 1730743354,
"narHash": "sha256-gU4NySYyXeAzVaF5bI6BKmj2CdgiwGFnuPjXUId3Dx0=",
"lastModified": 1733056338,
"narHash": "sha256-sp14z0mrqrtmouz1+bU4Jh8/0xi+xwQHF2l7mhGSSVU=",
"owner": "hyprwm",
"repo": "contrib",
"rev": "792f6b83dc719214e0e2a0b380c34f147b28ece2",
"rev": "d7c55140f1785b8d9fef351f1cd2a4c9e1eaa466",
"type": "github"
},
"original": {
@@ -134,11 +134,11 @@
]
},
"locked": {
"lastModified": 1732782112,
"narHash": "sha256-8rxzWGOVyijmE2ojWJxPEWqtUQ7i/lA5TvLoklwI4qw=",
"lastModified": 1733912267,
"narHash": "sha256-I3ubew5jt8YZ27AOtIodRAYo0aew6wxY8UkWCSqz6B4=",
"owner": "viperML",
"repo": "nh",
"rev": "24293d624556d32bd502c440b352e4fef4eeab6d",
"rev": "6a69a145b0c7dbd5616bbded512b8bf8b5d2f8a4",
"type": "github"
},
"original": {
@@ -164,11 +164,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1732483221,
"narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=",
"lastModified": 1734352517,
"narHash": "sha256-mfv+J/vO4nqmIOlq8Y1rRW8hVsGH3M+I2ESMjhuebDs=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405",
"rev": "b12e314726a4226298fe82776b4baeaa7bcf3dcd",
"type": "github"
},
"original": {
@@ -180,11 +180,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1732521221,
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
"lastModified": 1734424634,
"narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
"rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33",
"type": "github"
},
"original": {
@@ -196,16 +196,16 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1732632634,
"narHash": "sha256-+G7n/ZD635aN0sEXQLynU7pWMd3PKDM7yBIXvYmjABQ=",
"lastModified": 1734323986,
"narHash": "sha256-m/lh6hYMIWDYHCAsn81CDAiXoT3gmxXI9J987W5tZrE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6f6076c37180ea3a916f84928cf3a714c5207a30",
"rev": "394571358ce82dff7411395829aa6a3aad45b907",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
@@ -241,7 +241,8 @@
"nix-gc-env": "nix-gc-env",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"pppdotpm-site": "pppdotpm-site"
"pppdotpm-site": "pppdotpm-site",
"whib-backend": "whib-backend"
}
},
"systems": {
@@ -258,6 +259,23 @@
"repo": "default",
"type": "github"
}
},
"whib-backend": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1734695939,
"narHash": "sha256-CzASZ/7siZWTV1JS+sKdYVBLyQdLUPoZdQugtr48CwI=",
"path": "/home/alex/code/own/whib",
"type": "path"
},
"original": {
"path": "/home/alex/code/own/whib",
"type": "path"
}
}
},
"root": "root",

View File

@@ -37,6 +37,12 @@
url = "git+ssh://gitea@git.ppp.pm:1122/alex/ppp.pm-site.git?ref=main";
inputs.nixpkgs.follows = "nixpkgs";
};
whib-backend = {
# url = "git+ssh://gitea@git.ppp.pm:1122/alex/whib.git?ref=nix-flake";
url = "path:/home/alex/code/own/whib";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
@@ -77,13 +83,20 @@
];
};
test-vm = inputs.nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
inherit inputs;
test-vm =
let
system = "x86_64-linux";
in
inputs.nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
};
modules = [
./hosts/test-vm/configuration.nix
inputs.whib-backend.nixosModules.${system}.default
];
};
modules = [ ./hosts/test-vm/configuration.nix ];
};
};
devShells =

View File

@@ -14,6 +14,8 @@
home.homeDirectory = "/home/alex";
home.packages = [
inputs.whib-backend.packages.${pkgs.system}.whib-import
pkgs.beekeeper-studio
pkgs.bitwarden-desktop
pkgs.gimp
pkgs.zip

View File

@@ -4,7 +4,7 @@
pkgs.noto-fonts
pkgs.noto-fonts-cjk-sans
pkgs.noto-fonts-emoji
pkgs.nerdfonts
pkgs.nerd-fonts.jetbrains-mono
pkgs.liberation_ttf
];
}

View File

@@ -15,20 +15,6 @@ in
};
config = lib.mkIf enabled {
nixpkgs.overlays =
let
buildGo122 = pkgs: pkg: pkg.override { buildGoModule = pkgs.buildGo122Module; };
in
[
(final: prev: {
go = prev.go_1_22;
gopls = buildGo122 prev prev.gopls;
go-tools = buildGo122 prev prev.go-tools;
govulncheck = buildGo122 prev prev.govulncheck;
gotestsum = buildGo122 prev prev.gotestsum;
})
];
home-manager.users.alex = {
programs.go = {
enable = true;

View File

@@ -2,6 +2,7 @@
{
imports = [
./ppp.pm-site.nix
./whib-backend.nix
];
config = {
@@ -10,7 +11,8 @@
networking.hostName = "test-vm";
mod = {
pppdotpm-site.enable = true;
pppdotpm-site.enable = false;
whib-backend.enable = true;
};
users.users.a = {
@@ -18,16 +20,30 @@
extraGroups = [ "wheel" ];
password = "a";
};
services.getty.autologinUser = "a";
security.sudo.wheelNeedsPassword = false;
virtualisation.vmVariant = {
# following configuration is added only when building VM with build-vm
virtualisation = {
diskSize = 4096;
memorySize = 2048;
cores = 3;
graphics = false;
};
};
# Resize terminal to host terminal size
environment.loginShellInit = ''
${pkgs.xterm}/bin/resize
echo alias 'sd' can be used to shutdown the VM
'';
environment.interactiveShellInit = ''
alias sd='sudo shutdown now'
'';
environment.systemPackages = [ ];
system.stateVersion = "24.05";

View File

@@ -0,0 +1,87 @@
{
lib,
config,
...
}:
let
enabled = config.mod.whib-backend.enable;
in
{
options = {
mod.whib-backend = {
enable = lib.mkEnableOption "enable WHIB backend";
};
};
config = lib.mkIf enabled {
services.whib-backend = {
enable = true;
domain = "whib-backend.local";
backend = {
signingKey = "super-secret-key";
};
postgres = {
password = "postgrespassword";
backup = {
interval = "*-*-* **:**:00 UTC"; # Every minute, for testing
gpgPassphraseFile = ./whib-gpgPassfile;
backblazeBucket = "whib-postgres-backups";
backblazeKeyID = "003867c33cd1a9b0000000003";
backblazeKey = "K003+GUNG0lwTOMS5EheKC9YzgxFzuU";
};
};
grafana = {
password = "granfanapassword";
};
};
virtualisation.vmVariant = {
virtualisation = {
sharedDirectories = {
my-shared = {
source = "/home/alex/whib-backup";
target = "/mnt/shared";
};
};
forwardPorts = [
{
# Service API
from = "host";
host.port = 8080;
guest.port = 8080;
}
{
# Service Metrics
from = "host";
host.port = 8181;
guest.port = 8181;
}
{
# Postgres
from = "host";
host.port = 5432;
guest.port = 5432;
}
{
# Grafana
from = "host";
host.port = 3000;
guest.port = 3000;
}
{
# Prometheus
from = "host";
host.port = 9090;
guest.port = 9090;
}
];
};
};
};
}