initial import
This commit is contained in:
commit
cafee81d46
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
result
|
||||
\#*#
|
||||
*~
|
||||
.*
|
||||
!.git*
|
||||
*poop*
|
284
flake.lock
Normal file
284
flake.lock
Normal file
|
@ -0,0 +1,284 @@
|
|||
{
|
||||
"nodes": {
|
||||
"deploy-rs": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718194053,
|
||||
"narHash": "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"interlude": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1720929675,
|
||||
"narHash": "sha256-Ofvbdb2qM8JyiOw3wpsqAS7C3oxX90KcwSM074kOXLA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "1e7658a97a0e34ec84eda0af2854d00fa1c6657d",
|
||||
"revCount": 2,
|
||||
"type": "git",
|
||||
"url": "https://git.strudelline.net/nix/interlude"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.strudelline.net/nix/interlude"
|
||||
}
|
||||
},
|
||||
"ipcalc": {
|
||||
"locked": {
|
||||
"lastModified": 1720829192,
|
||||
"narHash": "sha256-uo1vVwyhdbEqzUa27/wxvnIZFIRyiTidIDRXeP59FWg=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "e7e8242a9918161d8e0b3fb4b725612aef8a03bb",
|
||||
"revCount": 3,
|
||||
"type": "git",
|
||||
"url": "https://git.strudelline.net/nix/ipcalc"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.strudelline.net/nix/ipcalc"
|
||||
}
|
||||
},
|
||||
"nixlib": {
|
||||
"locked": {
|
||||
"lastModified": 1719708727,
|
||||
"narHash": "sha256-XFNKtyirrGNdehpg7lMNm1skEcBApjqGhaHc/OI95HY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "1bba8a624b3b9d4f68db94fb63aaeb46039ce9e6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-generators": {
|
||||
"inputs": {
|
||||
"nixlib": "nixlib",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1720859326,
|
||||
"narHash": "sha256-i8BiZj5faQS6gsupE0S9xtiyZmWinGpVLwxXWV342aQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"rev": "076ea5b672bb1ea535ee84cfdabd0c2f0b7f20c7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixos-generators",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1702272962,
|
||||
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1720691131,
|
||||
"narHash": "sha256-CWT+KN8aTPyMIx8P303gsVxUnkinIz0a/Cmasz1jyIM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a046c1202e11b62cbede5385ba64908feb7bfac4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-24.05",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1720954236,
|
||||
"narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-24.05",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1720691131,
|
||||
"narHash": "sha256-CWT+KN8aTPyMIx8P303gsVxUnkinIz0a/Cmasz1jyIM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a046c1202e11b62cbede5385ba64908feb7bfac4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-24.05",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"numbers": {
|
||||
"inputs": {
|
||||
"ipcalc": "ipcalc",
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1721177469,
|
||||
"narHash": "sha256-8puiNyCJy6k1Pl25BgE4wUUpifO7f1hraR7JI9lAqW4=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "27af88462c971572a72a9a05c8608dca74e4a4b7",
|
||||
"revCount": 13,
|
||||
"type": "git",
|
||||
"url": "https://git.strudelline.net/cascade/numbers"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.strudelline.net/cascade/numbers"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"deploy-rs": "deploy-rs",
|
||||
"interlude": "interlude",
|
||||
"nixos-generators": "nixos-generators",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"numbers": "numbers",
|
||||
"unstable": "unstable"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1721116560,
|
||||
"narHash": "sha256-++TYlGMAJM1Q+0nMVaWBSEvEUjRs7ZGiNQOpqbQApCU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9355fa86e6f27422963132c2c9aeedb0fb963d93",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
111
flake.nix
Normal file
111
flake.nix
Normal file
|
@ -0,0 +1,111 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "nixpkgs/nixos-24.05";
|
||||
unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
numbers.url = "git+https://git.strudelline.net/cascade/numbers";
|
||||
interlude.url = "git+https://git.strudelline.net/nix/interlude";
|
||||
nixos-generators = { url = "github:nix-community/nixos-generators"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||
deploy-rs.url = "github:serokell/deploy-rs";
|
||||
};
|
||||
outputs = { self, nixpkgs, unstable, numbers, interlude, nixos-generators, deploy-rs }@inputs:
|
||||
with builtins;
|
||||
with nixpkgs.lib;
|
||||
with interlude.lib;
|
||||
let
|
||||
includableModules =
|
||||
let localModules = "${./.}" + "/modules";
|
||||
dirContents = readDir (traceVal localModules);
|
||||
filenames = attrNames (trace "dirContents: ${toJSON dirContents}" dirContents);
|
||||
dirs = (filter (n: dirContents."${n}" == "directory" &&
|
||||
readFileType "${localModules}/${n}/default.nix" == "regular" ) filenames);
|
||||
files = concatMap (filterAndStripSuffix ".nix") (filter (n: dirContents."${n}" == "regular") filenames);
|
||||
in
|
||||
foldl recursiveUpdate {} (
|
||||
(map (x: { nixosModules."${x}" = import (trace "importing ${localModules}/${x}" "${localModules}/${x}"); }) (trace "dirs: ${toJSON dirs}" dirs))
|
||||
++ (map (x: { nixosModules."${x}" = import (trace "importing ${localModules}/${x}.nix" "${localModules}/${x}.nix"); }) (trace "files: ${toJSON files}" files))
|
||||
);
|
||||
buildMachine' = name: mods: cfg: {
|
||||
# the evaluated machine
|
||||
nixosConfigurations."${name}" =
|
||||
let
|
||||
pkgs = import nixpkgs { config = { allowUnfree = true; };};
|
||||
specialArgs = { basePath = "${toString ./.}"; inherit inputs numbers; };
|
||||
in nixosSystem (cfg // {
|
||||
inherit pkgs specialArgs;
|
||||
modules = [
|
||||
self.nixosModules.vmFormats
|
||||
numbers.nixosModules.users
|
||||
self.nixosModules.session
|
||||
({...}: {
|
||||
# fixed values.
|
||||
networking.hostName = traceVal name;
|
||||
system.stateVersion = "24.05";
|
||||
nix.settings.require-sigs = false;
|
||||
})
|
||||
] ++ mods;
|
||||
});
|
||||
};
|
||||
buildMachine = name:
|
||||
# the evaluated machine
|
||||
with numbers.api;
|
||||
let
|
||||
modules = [
|
||||
self.nixosModules.fixFlakeRegistry
|
||||
numbers.nixosModules.networking
|
||||
self.nixosModules.packages
|
||||
self.nixosModules.luks
|
||||
self.nixosModules.systemd-efi
|
||||
numbers.nixosModules.users
|
||||
] ++ (map (x: self.nixosModules."${x}") (hostModules name));
|
||||
arch = hostSystem name;
|
||||
in
|
||||
(buildMachine' name modules { system = arch; })
|
||||
//
|
||||
{
|
||||
deploy.nodes."${name}" = {
|
||||
hostname = "172.16.19.1";
|
||||
profiles.system = {
|
||||
user = "root";
|
||||
path = deploy-rs.lib."${arch}".activate.nixos self.nixosConfigurations."${name}";
|
||||
};
|
||||
};
|
||||
|
||||
# This is highly advised, and will prevent many possible mistakes
|
||||
checks = deploy-rs.lib."${arch}".deployChecks self.deploy;
|
||||
};
|
||||
in
|
||||
foldl recursiveUpdate {
|
||||
nixosModules = {
|
||||
vmFormats = { config, ... }: {
|
||||
imports = [
|
||||
nixos-generators.nixosModules.all-formats
|
||||
];
|
||||
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
|
||||
formatConfigs.iso = { ... }: {
|
||||
isoImage.squashfsCompression = "zstd";
|
||||
};
|
||||
|
||||
# the sample format from nixos-generators
|
||||
# formatConfigs.my-custom-format = { config, modulesPath, ... }: {
|
||||
# imports = [ "${toString modulesPath}/installer/cd-dvd/installation-cd-base.nix" ];
|
||||
# formatAttr = "isoImage";
|
||||
# fileExtension = ".iso";
|
||||
# networking.wireless.networks = {
|
||||
# # ...
|
||||
# };
|
||||
# };
|
||||
};
|
||||
fixFlakeRegistry = { ... }: { nix.registry = {
|
||||
nixpkgs.flake = inputs.nixpkgs;
|
||||
unstable.flake = inputs.unstable;
|
||||
};};
|
||||
};
|
||||
} ( # lists to recursively merge into the config.
|
||||
[ includableModules ]
|
||||
++ (with numbers.api; map (h: buildMachine h) deployableHosts)
|
||||
++ [(buildMachine' "cascade-installer" [self.nixosModules.installer] {} )]
|
||||
#++ [(buildMachine' "cascade-installer" [] {} )]
|
||||
);
|
||||
}
|
87
modules/installer.nix
Normal file
87
modules/installer.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let installer = pkgs.writeShellApplication {
|
||||
name = "cascade-installer";
|
||||
runtimeInputs = with pkgs; [
|
||||
btrfs-progs
|
||||
coreutils
|
||||
cryptsetup
|
||||
dig
|
||||
dosfstools
|
||||
e2fsprogs
|
||||
git
|
||||
lvm2
|
||||
nix
|
||||
parted
|
||||
util-linux
|
||||
];
|
||||
|
||||
text =
|
||||
let
|
||||
shq = lib.escapeShellArg;
|
||||
partedMin = cmd: ''
|
||||
parted -f -a minimal "$DEVICE" --script ${cmd}
|
||||
'';
|
||||
partedOpt = cmd: ''
|
||||
parted -f -a optimal "$DEVICE" --script ${cmd}
|
||||
'';
|
||||
in
|
||||
''
|
||||
if [ "$#" -ne 2 ];then
|
||||
1>&2 echo "usage: $0 hostname full-disk-device"
|
||||
exit 1
|
||||
fi
|
||||
HOSTNAME="$1"
|
||||
DEVICE="$2"
|
||||
LABEL="$HOSTNAME"-luks0
|
||||
LV="$HOSTNAME"-luks
|
||||
|
||||
echo ABOUT TO DESTROY THIS MACHINE
|
||||
sleep 10 || exit 1
|
||||
|
||||
wipefs -a "$DEVICE"
|
||||
|
||||
${partedMin "mklabel gpt"}
|
||||
${partedMin "mkpart ESP fat32 0% 1GB"}
|
||||
${partedMin "set 1 esp on"}
|
||||
${partedOpt "mkpart \"$HOSTNAME\"-luks0 ext4 1GB 100%"}
|
||||
|
||||
sleep 1
|
||||
|
||||
cryptsetup -q luksFormat --type luks2 /dev/disk/by-partlabel/"$LABEL" -d /dev/zero -l 32
|
||||
cryptsetup -q luksOpen /dev/disk/by-partlabel/"$LABEL" "$LABEL" -d /dev/zero -l 32
|
||||
|
||||
pvcreate /dev/mapper/"$LABEL"
|
||||
vgcreate "$LV" /dev/mapper/"$LABEL"
|
||||
lvcreate -L 20G -n "$HOSTNAME"-root "$LV"
|
||||
|
||||
mkfs.fat -F 32 -n BOOT /dev/disk/by-partlabel/ESP
|
||||
mkfs.ext4 -L "$HOSTNAME"-root /dev/"$LV"/"$HOSTNAME"-root
|
||||
|
||||
sleep 1
|
||||
|
||||
# note to future self who "fixes" this:
|
||||
# the -p is to prevent error if the path exists, not to create / which obviously exists.
|
||||
# this is a scenario that happens when rerunning these commands during debugging. just
|
||||
# leave the -p, future me. please just leave it.
|
||||
mkdir -p /mnt
|
||||
mount /dev/disk/by-label/"$HOSTNAME"-root /mnt
|
||||
mkdir -p /mnt/boot
|
||||
mount /dev/disk/by-label/BOOT /mnt/boot
|
||||
mkdir -p /mnt/root
|
||||
|
||||
TOKEN="$(dig +short lan-git-token.cascade TXT | tr -d '"')"
|
||||
umask 0077
|
||||
mkdir -p /root
|
||||
printf 'machine git.strudelline.net\nlogin james\npassword %s\n' "$TOKEN" > /root/.netrc
|
||||
printf 'machine git.strudelline.net\nlogin james\npassword %s\n' "$TOKEN" > /mnt/root/.netrc
|
||||
|
||||
nixos-install --flake git+https://git.strudelline.net/cascade/nixos#"$HOSTNAME" --impure --no-root-password
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
installer
|
||||
];
|
||||
}
|
22
modules/luks.nix
Normal file
22
modules/luks.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
boot.initrd.kernelModules = [ "usb_storage" ];
|
||||
|
||||
boot.initrd.luks.devices = {
|
||||
"${config.networking.hostName}-luks0" = {
|
||||
device = "/dev/disk/by-partlabel/${config.networking.hostName}-luks0";
|
||||
allowDiscards = true;
|
||||
keyFileSize = 32;
|
||||
keyFile = "/dev/zero";
|
||||
};
|
||||
};
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/${config.networking.hostName}-root";
|
||||
fsType = "ext4";
|
||||
};
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/BOOT";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
}
|
43
modules/packages.nix
Normal file
43
modules/packages.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, flake-inputs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
seatd
|
||||
emacs-nox
|
||||
inetutils
|
||||
unzip
|
||||
buildah
|
||||
curl
|
||||
vim
|
||||
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
wget
|
||||
sshfs
|
||||
dig
|
||||
gost
|
||||
elinks
|
||||
dislocker
|
||||
ntfs3g
|
||||
kubectl
|
||||
sops
|
||||
git
|
||||
bc
|
||||
pciutils
|
||||
usbutils
|
||||
file
|
||||
htop
|
||||
brightnessctl
|
||||
kubernetes-helm
|
||||
ripgrep
|
||||
nettools
|
||||
psmisc
|
||||
|
||||
nixos-generators
|
||||
];
|
||||
|
||||
programs.mtr.enable = true;
|
||||
programs.tmux.enable = true;
|
||||
}
|
53
modules/server.nix
Normal file
53
modules/server.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, flake-inputs, ... }:
|
||||
|
||||
{
|
||||
networking.networkmanager.enable = false;
|
||||
|
||||
virtualisation = {
|
||||
kvmgt.enable = true;
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
runAsRoot = true;
|
||||
verbatimConfig = ''
|
||||
cgroup_device_acl = ["/dev/kvmfr0", "/dev/kvm"]
|
||||
'';
|
||||
swtpm = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
docker = {
|
||||
enable = true;
|
||||
enableNvidia = false;
|
||||
};
|
||||
|
||||
containers = {
|
||||
enable = true;
|
||||
policy = {
|
||||
default = [ { type = "insecureAcceptAnything"; } ];
|
||||
transports = {
|
||||
docker-daemon = {
|
||||
"" = [ { type = "insecureAcceptAnything"; } ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.openssh.enable = true;
|
||||
networking.firewall.enable = true;
|
||||
|
||||
environment.systemPackages = [ pkgs.nfs-utils ];
|
||||
services.openiscsi = {
|
||||
enable = true;
|
||||
name = "${config.networking.hostName}-initiatorhost";
|
||||
};
|
||||
|
||||
systemd.network.wait-online.enable = lib.mkDefault false;
|
||||
networking.useDHCP = false;
|
||||
}
|
16
modules/session.nix
Normal file
16
modules/session.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, flake-inputs, ... }:
|
||||
|
||||
{
|
||||
nix = {
|
||||
#package = lib.mkForce pkgs.nixFlakes;
|
||||
settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
};
|
||||
|
||||
environment.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
};
|
||||
}
|
6
modules/systemd-efi.nix
Normal file
6
modules/systemd-efi.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.grub.device = "nodev";
|
||||
}
|
21
rowlet.nix
Normal file
21
rowlet.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, flake-inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
#./hardware-configuration.nix
|
||||
./lib/packages.nix
|
||||
./lib/server.nix
|
||||
./lib/session.nix
|
||||
];
|
||||
|
||||
networking.hostName = "rowlet"; # Define your hostname.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
21
snorlax.nix
Normal file
21
snorlax.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, flake-inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
#./hardware-configuration.nix
|
||||
./lib/packages.nix
|
||||
./lib/server.nix
|
||||
./lib/session.nix
|
||||
];
|
||||
|
||||
networking.hostName = "snorlax"; # Define your hostname.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
21
sobble.nix
Normal file
21
sobble.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, lib, inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
#./hardware-configuration.nix
|
||||
./lib/packages.nix
|
||||
./lib/server.nix
|
||||
./lib/session.nix
|
||||
];
|
||||
|
||||
networking.hostName = "sobble"; # Define your hostname.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
|
||||
system.stateVersion = "24.05";
|
||||
}
|
Loading…
Reference in New Issue
Block a user