Add config for virtual machine, and add instructions to README #2

Merged
frero merged 3 commits from :add-vm into main 2026-01-17 21:03:05 +01:00
4 changed files with 95 additions and 3 deletions
+1
View File
@@ -1,2 +1,3 @@
*.uasm *.uasm
result result
*.qcow2
+19 -2
View File
@@ -1,6 +1,23 @@
this is wip # QOTD daemon
the idea was to create a uiua program that serves the [qotd port > [! CAUTION]
> This is WIP
The idea was to create a uiua program that serves the [qotd port
17](https://en.wikipedia.org/wiki/QOTD) then host it on one of pvv's machines. 17](https://en.wikipedia.org/wiki/QOTD) then host it on one of pvv's machines.
this to learn about socket programming in uiua, and to show some love to the this to learn about socket programming in uiua, and to show some love to the
oft-forgotten port 17. oft-forgotten port 17.
## Building and running
**Build:**
```console
$ nix build
```
**Run in VM:**
```console
$ nix run .#vm
```
+72
View File
@@ -16,6 +16,19 @@
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
in f system pkgs); in f system pkgs);
in { in {
apps = forAllSystems (
system: pkgs: {
default = {
type = "app";
program = "${lib.getExe self.packages.${system}.default}";
};
vm = {
type = "app";
program = "${self.nixosConfigurations.vm.config.system.build.vm}/bin/run-nixos-vm";
};
}
);
devShells = forAllSystems (system: pkgs: { devShells = forAllSystems (system: pkgs: {
default = pkgs.mkShell { default = pkgs.mkShell {
nativeBuildInputs = [ nativeBuildInputs = [
@@ -33,5 +46,64 @@
}; };
nixosModules.default = ./nix/module.nix; nixosModules.default = ./nix/module.nix;
nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [
self.overlays.default
];
};
modules = [
"${nixpkgs}/nixos/modules/virtualisation/qemu-vm.nix"
self.nixosModules.default
({ config, pkgs, ... }: {
system.stateVersion = config.system.nixos.release;
virtualisation.graphics = false;
users.extraUsers.root.password = "root";
services.getty.autologinUser = "root";
environment.systemPackages = with pkgs; [
netcat
];
users.motd = ''
=======================
Welcome to the qotd vm!
Try running:
nc localhost 17
=======================
'';
services.qotd = {
enable = true;
quotes = [
''
"rm -rf /"
- felixalb on bekkalokk, 2026 (probably)
''
''
( U I U A )
- frero, 2025
''
''
bwaaa :3
- oysteikt on gitea, 2024
''
];
};
})
];
};
}; };
} }
+2
View File
@@ -51,4 +51,6 @@ stdenvNoCC.mkDerivation {
install -Dm555 "$wrapperPath" "$out"/bin/qotd install -Dm555 "$wrapperPath" "$out"/bin/qotd
runHook postInstall runHook postInstall
''; '';
meta.mainProgram = "qotd";
} }