Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions config/k3s/default.nix
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
{
config,
lib,
pkgs,
...
}:
{
# k3s config file stored in home directory
home.file.".config/k3s/config.yaml" = lib.mkIf pkgs.stdenv.isLinux {
source = ./config.yaml;
force = true;
};

# Activation script to sync config to /etc/rancher/k3s/
home.file.".config/k3s/k3s.service" = lib.mkIf pkgs.stdenv.isLinux {
source = pkgs.replaceVars ./k3s.service {
inherit (pkgs) coreutils;
k3s = pkgs.k3s;
};
force = true;
};

home.activation.k3s-config = lib.mkIf pkgs.stdenv.isLinux (
lib.hm.dag.entryAfter [ "writeBoundary" ] ''
$DRY_RUN_CMD ${pkgs.bash}/bin/bash "${./activate.sh}"
Expand Down
25 changes: 25 additions & 0 deletions config/k3s/k3s.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

[Service]
Type=notify
EnvironmentFile=-/etc/default/%N
EnvironmentFile=-/etc/sysconfig/%N
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-@coreutils@/bin/rm -f /run/k3s/containerd/containerd.sock
ExecStart=@k3s@/bin/k3s server
ExecStopPost=-@k3s@/bin/k3s-killall.sh

[Install]
WantedBy=multi-user.target
25 changes: 15 additions & 10 deletions home-manager/programs/k8s/default.nix
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
{ pkgs, ... }:
{ lib, pkgs, ... }:
{
home.packages = with pkgs; [
k9s
kind
kubeconform
kubectl
kubectx
kubernetes-helm
kustomize
];
home.packages =
with pkgs;
[
k9s
kind
kubeconform
kubectl
kubectx
kubernetes-helm
kustomize
]
++ lib.optionals stdenv.isLinux [
k3s
];
}
2 changes: 2 additions & 0 deletions home-manager/services/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ let
dockerPostgres = ./docker-postgres;
dotfilesUpdater = import ./dotfiles-updater { inherit pkgs; };
gasTown = import ./gas-town { inherit pkgs; };
k3s = ./k3s;
keydApplicationMapper = ./keyd-application-mapper;
makeUpdater = import ./make-updater { inherit pkgs; };
neversslKeepalive = import ./neverssl-keepalive { inherit pkgs; };
Expand All @@ -38,6 +39,7 @@ in
dockerPostgres
dotfilesUpdater
gasTown
k3s
keydApplicationMapper
makeUpdater
neversslKeepalive
Expand Down
29 changes: 29 additions & 0 deletions home-manager/services/k3s/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (inputs) host;
serviceFile = "${config.home.homeDirectory}/.config/k3s/k3s.service";
in
lib.mkIf (pkgs.stdenv.isLinux && host.isKyber) {
home.activation.setupK3s = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
if ! ${pkgs.diffutils}/bin/diff -q "${serviceFile}" /etc/systemd/system/k3s.service >/dev/null 2>&1; then
$DRY_RUN_CMD sudo cp "${serviceFile}" /etc/systemd/system/k3s.service
$DRY_RUN_CMD sudo ${pkgs.systemd}/bin/systemctl daemon-reload
$DRY_RUN_CMD sudo ${pkgs.systemd}/bin/systemctl enable --now k3s
fi

K3S_KUBECONFIG="/etc/rancher/k3s/k3s.yaml"
KUBE_DIR="${config.home.homeDirectory}/.kube"
if [ -f "$K3S_KUBECONFIG" ]; then
$DRY_RUN_CMD mkdir -p "$KUBE_DIR"
$DRY_RUN_CMD sudo cp "$K3S_KUBECONFIG" "$KUBE_DIR/config"
$DRY_RUN_CMD sudo chown "$(id -u):$(id -g)" "$KUBE_DIR/config"
$DRY_RUN_CMD chmod 600 "$KUBE_DIR/config"
fi
'';
}
Loading