initial commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.null*.nix
|
||||||
13
config.sh
Normal file
13
config.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
CHROOT_DIR=/home/chroot
|
||||||
|
REMOTE_IP=git.cloonar.com
|
||||||
|
|
||||||
|
# Optional
|
||||||
|
|
||||||
|
# maxium time waiting for the SFTP connection to connect
|
||||||
|
# default value is 20
|
||||||
|
#TIMEOUT=20
|
||||||
|
# port to connect to the remote server
|
||||||
|
# default is 22
|
||||||
|
#REMOTE_PORT=22
|
||||||
|
# don't build locally
|
||||||
|
#NOLOCALBUILD=1
|
||||||
36
fleet.nix
Normal file
36
fleet.nix
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
create_users = host: {
|
||||||
|
users.users."${host.username}" = {
|
||||||
|
createHome = false;
|
||||||
|
home = "/home/chroot/" + host.username;
|
||||||
|
isNormalUser = false;
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "sftp_users";
|
||||||
|
openssh.authorizedKeys.keys = [host.key];
|
||||||
|
shell = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = [
|
||||||
|
{
|
||||||
|
username = "router";
|
||||||
|
key = "ssh-ed25519 AAAAC3NzaC2aZGI1OTE5AAAAOIOZKLFCZLM67viQXHYRjraE6WLfvETMkjjgSz0mxMzS root@router";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
imports = builtins.map create_users users;
|
||||||
|
|
||||||
|
users.groups = {sftp_users = {};};
|
||||||
|
|
||||||
|
services.openssh.extraConfig = ''
|
||||||
|
Match Group sftp_users
|
||||||
|
X11Forwarding no
|
||||||
|
AllowTcpForwarding no
|
||||||
|
ChrootDirectory %h
|
||||||
|
ForceCommand internal-sftp
|
||||||
|
'';
|
||||||
|
}
|
||||||
0
hosts/example/configuration.nix
Normal file
0
hosts/example/configuration.nix
Normal file
1
hosts/example/utils
Symbolic link
1
hosts/example/utils
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../utils/
|
||||||
0
hosts/nb-dominik/configuration.nix
Normal file
0
hosts/nb-dominik/configuration.nix
Normal file
1
hosts/nb-dominik/utils
Symbolic link
1
hosts/nb-dominik/utils
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../utils/
|
||||||
53
utils/bento.nix
Normal file
53
utils/bento.nix
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
timer = "*:0/15";
|
||||||
|
in {
|
||||||
|
systemd.services.bento-upgrade = {
|
||||||
|
enable = true;
|
||||||
|
startAt = lib.mkDefault "${timer}";
|
||||||
|
path = with pkgs; [openssh git nixos-rebuild nix gzip];
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
script = ''
|
||||||
|
cd /var/bento
|
||||||
|
/bin/sh update.sh
|
||||||
|
'';
|
||||||
|
restartIfChanged = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.bento-reboot = {
|
||||||
|
# this is disabled by default
|
||||||
|
# to avoid wrong expectations from users
|
||||||
|
enable = false;
|
||||||
|
startAt = "04:00";
|
||||||
|
path = with pkgs; [coreutils systemd];
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
script = ''
|
||||||
|
booted="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})"
|
||||||
|
built="$(readlink /nix/var/nix/profiles/system/{initrd,kernel,kernel-modules})"
|
||||||
|
if [ ! "$booted" = "$built" ]
|
||||||
|
then
|
||||||
|
systemctl kexec || systemctl reboot
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
systemd.sockets.listen-update = {
|
||||||
|
enable = true;
|
||||||
|
wantedBy = ["sockets.target"];
|
||||||
|
requires = ["network.target"];
|
||||||
|
listenStreams = ["51337"];
|
||||||
|
socketConfig.Accept = "yes";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."listen-update@" = {
|
||||||
|
path = with pkgs; [systemd];
|
||||||
|
enable = true;
|
||||||
|
serviceConfig.StandardInput = "socket";
|
||||||
|
serviceConfig.ExecStart = "${pkgs.systemd.out}/bin/systemctl start bento-upgrade.service";
|
||||||
|
serviceConfig.ExecStartPost = "${pkgs.systemd.out}/bin/journalctl -f --no-pager -u bento-upgrade.service";
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user