This commit is contained in:
2026-07-29 13:59:12 +01:00
commit 072d97d290
13 changed files with 2173 additions and 0 deletions

61
.session Normal file
View File

@@ -0,0 +1,61 @@
let SessionLoad = 1
let s:so_save = &g:so | let s:siso_save = &g:siso | setg so=0 siso=0 | setl so=-1 siso=-1
let v:this_session=expand("<sfile>:p")
doautoall SessionLoadPre
silent only
silent tabonly
cd ~/Projects/nix-server
if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
let s:wipebuf = bufnr('%')
endif
let s:shortmess_save = &shortmess
set shortmess+=aoO
badd +6 flake.nix
badd +21 modules/default.nix
badd +10 modules/parts.nix
badd +12 modules/hosts/server02/default.nix
badd +6 modules/hosts/server02/server02Configuration.nix
badd +20 modules/system/core/default.nix
badd +6 ~/Projects/nix-server/modules/system/core/bootloader.nix
badd +32 modules/system/core/locale.nix
badd +35 modules/system/core/nix-settings.nix
badd +7 modules/system/core/user.nix
badd +9 modules/hosts/server02/hardware-configuration.nix
argglobal
%argdel
$argadd modules/hosts/server02/server02Configuration.nix
edit modules/hosts/server02/server02Configuration.nix
argglobal
balt modules/hosts/server02/hardware-configuration.nix
setlocal foldmethod=manual
setlocal foldexpr=0
setlocal foldmarker={{{,}}}
setlocal foldignore=#
setlocal foldlevel=0
setlocal foldminlines=1
setlocal foldnestmax=20
setlocal foldenable
silent! normal! zE
let &fdl = &fdl
let s:l = 6 - ((5 * winheight(0) + 27) / 55)
if s:l < 1 | let s:l = 1 | endif
keepjumps exe s:l
normal! zt
keepjumps 6
normal! 043|
tabnext 1
if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0 && getbufvar(s:wipebuf, '&buftype') isnot# 'terminal'
silent exe 'bwipe ' . s:wipebuf
endif
unlet! s:wipebuf
set winheight=1 winwidth=20
let &shortmess = s:shortmess_save
let s:sx = expand("<sfile>:p:r")."x.vim"
if filereadable(s:sx)
exe "source " . fnameescape(s:sx)
endif
let &g:so = s:so_save | let &g:siso = s:siso_save
nohlsearch
doautoall SessionLoadPost
unlet SessionLoad
" vim: set ft=vim :

1640
flake.lock generated Normal file

File diff suppressed because it is too large Load Diff

15
flake.nix Normal file
View File

@@ -0,0 +1,15 @@
{
description = "nix flake config for server02";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nix-config.url = "git+https://git.voidarc.co.uk/voidarc/nixos.git?ref=dendritic";
# flake parts
flake-parts.url = "github:hercules-ci/flake-parts";
import-tree.url = "github:vic/import-tree";
wrappers.url = "github:BirdeeHub/nix-wrapper-modules";
};
outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} (inputs.import-tree ./modules);
}

29
modules/default.nix Normal file
View File

@@ -0,0 +1,29 @@
{
self,
moduleWithSystem,
...
}: {
flake.nixosModules.name = moduleWithSystem ({
pkgs,
self',
inputs',
...
}: let
modules = with self.nixosModules; [];
in {
imports = modules;
programs.name = {
enable = true;
package = self'.packages.hello;
};
});
perSystem = {
pkgs,
lib,
self',
...
}: {
packages.hello = pkgs.hello;
};
}

View File

@@ -0,0 +1,18 @@
{
self,
inputs,
...
}: {
flake.nixosConfigurations.server02 = inputs.nixpkgs.lib.nixosSystem {
modules = with self.nixosModules;
[
server02Configuration
core
]
++ (with inputs.nix-config.nixosModules; [
nvim
git
zsh
]);
};
}

View File

@@ -0,0 +1,221 @@
# 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 = ["ehci_pci" "ahci"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/d4e94dc6-9f91-48f7-a15c-5fa692e1e5af";
fsType = "ext4";
};
# fileSystems."/root/storage" =
# { device = "1:2";
# fsType = "fuse.mergerfs";
# };
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/4F7D-B111";
fsType = "vfat";
options = ["fmask=0022" "dmask=0022"];
};
# fileSystems."/root/.drive02" =
# { device = "/dev/disk/by-uuid/842c9326-9cc8-4c96-82d1-c14a233322b1";
# fsType = "ext4";
# };
#
# fileSystems."/root/.drive01" =
# { device = "/dev/disk/by-uuid/bccbe88e-6de3-4590-ac19-4ac5edb107d7";
# fsType = "ext4";
# };
#
# fileSystems."/var/lib/docker/plugins/c4120f8fa8cb60eab3d378a19b017aebe296795e48eed8e3060804b379d87399/propagated-mount" =
# { device = "/var/lib/docker/plugins/c4120f8fa8cb60eab3d378a19b017aebe296795e48eed8e3060804b379d87399/propagated-mount";
# fsType = "none";
# options = [ "bind" ];
# };
#
# fileSystems."/var/lib/docker/overlay2/73c9c82c5efb91ec67ce846db8769f7bfb48c7e05285a39cb10c31663315db02/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/307e8281da20fb717ef42688aff2bc867943e3a99ceced4e254151a04e75f3bc/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/3ac827d97a4191f0da71179c2d054ac9bc290198fa2ef7b174e1a62ff0a9f729/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/8378b4653a99b0245b6404fdb7723bb08ef9562d3418ae332bf1c6250b5c1e28/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/23bfc096943dfdc7fe3eeeca915d3b615a001c84a7118430dad1b9da0943df5a/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/bd6e721ecb747198b8274e35fb3e5006ed3ce661ea8e48ba8eca122aa25e32e3/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/b7bc27eb0dbf0be4c754d25064cdd51582f6d930b8f9a41a144126f4ec54c302/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/350059d31d3d66a4d550c8aeae7308ba1710b3aea0080d67108a9d089cbfd35e/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/5ccc1b072a40fab27559f5e475c80a0ed5ab3bfa98bd8bfff35b2ac0343f3a94/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/920d88be3abb6a4119a779a50fc8b05cffbdd812d02412a2c1a2970a13769856/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/7076053237f83bdfdafa7b0c4b11f441eeb77daea2b19880b3fb5afa4d0cb8e9/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/7bea710f9027985871b4073793c46f91ab689eeca00b877b4c0e252e45cf5e77/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/49966a5297c8a06c76e7759c4d0cdc1f57640db5267fbb10be8e3380a0d3dfae/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/6005a10ed26aecace89554efaf4d3f659497a65672e5617b69436bc6ce55fcce/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/611835e567ba6743b84158825f0772eef4fa9ad6f5dbe21688f191f66d74e67a/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/a1c2936c21bea5fbaf1aeee9868a8257b59a95a0ee469f2cf625043110648e84/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/fa1801418bcc376df004e790340c155369f4a7183b99d62331cfeb55a86bb67b/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/d2001d0a70120897324e689a037251200ecde5bbd471e9ed479c6be41e9dea37/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/841ab54d8f67a54731fdc4c8ce4af1213fab151c24e8363fc2d65ef5bfe559d0/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/bdbf1bdd70c87ff5e36d14bb4d0479c7e030bc40902f7edbec209bd3bce19d76/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/a69f03080494107191f8b7dfaf187e310baf05777fce6717a5c3dc5403986d7a/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/8c484d032fa26caeef8f24753c07ad2d9b8c3faebf4ad023080193400bc84476/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/ea7ebc83f6ed537636a3f5a51d9951913a0e606869171abbc921457149e55dfe/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/aa63044c954417169b4badf1880d7db9db4e22cc8bcbaf6a50a0459f3a46edef/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/7a8c8fcb0f56285089eb83dca9c51c65006b32dc9450c688e75655c7396ac0a3/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/50fd98b78bf6e73bc06e575f4deb9ca3e08ad5356c54726eda4447b2c3d1e3dd/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/cd44f75d0cf10b13b05d0adf4e61fe3d4c3a1a58427516a6b26b17a00ed34f5a/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/3c8d485956a4bf043bb8f9fa66f7a3bd354447ba68c5b5b005d0a9da29c26db4/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/a8ddc365eec265d237d3445ba68756083e5d8b31927e617fe84454e7e7bda160/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/874b2bfac8d4790a4f96303368ae6aa4230566cc5471993adbf16b706aafc995/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/45ab55ae434047649d24b9b3428c573b5febdce23db983c41902fb866b995af2/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/6eff329e22afd55e776e5cae64cec9a159b6edc533fdae492e6e84dbbad41b0b/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
#
# fileSystems."/var/lib/docker/overlay2/9366547c67f8711c7def21f79aade5473dac16efebc449d22fdeaf4efaf9b32c/merged" =
# { device = "overlay";
# fsType = "overlay";
# };
swapDevices = [];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,8 @@
{...}: {
flake.nixosModules.server02Configuration = {...}: {
networking = {
hostName = "mobile02";
};
imports = [./hardware-configuration.nix];
};
}

10
modules/parts.nix Normal file
View File

@@ -0,0 +1,10 @@
{
config = {
systems = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
];
};
}

View File

@@ -0,0 +1,24 @@
{
self,
inputs,
...
}: {
flake.nixosModules.bootloader = {
pkgs,
lib,
...
}: {
boot = {
loader = {
timeout = 2;
efi = {
canTouchEfiVariables = true;
};
systemd-boot = {
enable = true;
};
};
kernelPackages = pkgs.linuxPackages_latest;
};
};
}

View File

@@ -0,0 +1,39 @@
{
self,
inputs,
...
}: {
flake.nixosModules.core = {
pkgs,
lib,
...
}: let
modules = with self.nixosModules; [
user
bootloader
nix
locale
];
in {
imports =
[
# /etc/nixos/hardware-configuration.nix
]
++ modules;
services = {
openssh.enable = true;
avahi.enable = true;
};
environment.systemPackages = with pkgs; [
vim
unzip
p7zip-rar
usbutils
lsof
python315
curlWithGnuTls
wget
];
system.stateVersion = "26.02";
};
}

View File

@@ -0,0 +1,32 @@
{
self,
inputs,
...
}: {
flake.nixosModules.locale = {
pkgs,
lib,
...
}: {
time.timeZone = "Europe/London";
i18n = {
defaultLocale = "en_GB.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
};
services.xserver.xkb = {
layout = "gb";
variant = "";
};
console.keyMap = "uk";
};
}

View File

@@ -0,0 +1,52 @@
{inputs, ...}: {
perSystem = {system, ...}: {
_module.args.unfreePkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
};
};
flake.nixosModules.nix = {...}: {
nix = {
registry = {
voidarc = {
from = {
id = "voidarc";
type = "indirect";
};
to = {
type = "git";
url = "https://git.voidarc.co.uk/voidarc/flakes.git";
};
};
};
settings = {
cores = 2;
trusted-users = ["root"];
download-buffer-size = 524288000;
experimental-features = [
"nix-command"
"flakes"
];
};
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
optimise.automatic = true;
gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 5d";
};
};
nixpkgs = {
config = {
allowUnfree = true;
packageOverrides = pkgs: {
unstable = import inputs.nixpkgs-unstable {
config = {
allowUnfree = true;
};
};
};
};
};
};
}

View File

@@ -0,0 +1,24 @@
{
self,
inputs,
...
}: {
flake.nixosModules.user = {
pkgs,
lib,
inputs',
...
}: let
in {
users.users.user01 = {
isNormalUser = true;
initialPassword = "password";
shell = inputs'.nix-config.packages.zsh;
description = "user01";
extraGroups = [
"root"
"wheel"
];
};
};
}