Compare commits
12 Commits
d45c64d92b
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
c33c04987f
|
|||
|
7e74ff0892
|
|||
|
87f35f3bb3
|
|||
|
76c49857db
|
|||
|
1b2f799d77
|
|||
|
4b105b0517
|
|||
|
79fe0645a0
|
|||
|
c8a54817b7
|
|||
|
08db88e202
|
|||
|
6273a5e999
|
|||
|
01240d5fda
|
|||
|
ad688375bf
|
10
README.org
10
README.org
@@ -1,3 +1,13 @@
|
||||
* Aegis
|
||||
|
||||
Declarative configuration for the ZFS backup server, using [[https://nixos.org][NixOS]]
|
||||
|
||||
** Modules
|
||||
|
||||
The configuration is sliced into different files, per category:
|
||||
|
||||
- ZFS pool configuration: hardware-configuration.nix
|
||||
- Network configuration: networking.nix
|
||||
- Systemd services and timers: periodic.nix
|
||||
|
||||
All the modules are imported in *configuration.nix*
|
||||
|
||||
@@ -33,17 +33,13 @@
|
||||
# Cleanup tmp on startup
|
||||
boot.cleanTmpDir = true;
|
||||
|
||||
# Set hostname
|
||||
networking.hostName = "zion";
|
||||
|
||||
# Create coolneng user
|
||||
users.users.coolneng = {
|
||||
# Create coace user
|
||||
users.users.coace = {
|
||||
isNormalUser = true;
|
||||
home = "/home/coolneng";
|
||||
extraGroups = [ "wheel" "docker" ];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFRqINHR7/zc+c3/PuR+NeSsBHXXzBiEtFWSK6QaxQTW coolneng@panacea"
|
||||
];
|
||||
extraGroups = [ "wheel" ];
|
||||
openssh.authorizedKeys.keys = [''
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINNmNckWBxa2fQkUjWLHgQd32C272yB+f9kTcnooszd5 coolneng@panacea
|
||||
''];
|
||||
shell = "${pkgs.fish}/bin/fish";
|
||||
};
|
||||
|
||||
@@ -55,7 +51,6 @@
|
||||
services.timesyncd.enable = true;
|
||||
|
||||
# Enable ZFS support
|
||||
networking.hostId = "4e74ea68";
|
||||
boot.supportedFilesystems = [ "zfs" ];
|
||||
|
||||
# Scrub zpool monthly
|
||||
@@ -68,6 +63,7 @@
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
allowReboot = true;
|
||||
dates = "Sat *-*-* 04:40:00";
|
||||
};
|
||||
|
||||
# Run Nix garbage collector, while avoiding recompilation
|
||||
@@ -88,31 +84,20 @@
|
||||
programs.fish.enable = true;
|
||||
users.users.root = {
|
||||
shell = "${pkgs.fish}/bin/fish";
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFRqINHR7/zc+c3/PuR+NeSsBHXXzBiEtFWSK6QaxQTW coolneng@panacea"
|
||||
];
|
||||
openssh.authorizedKeys.keys = [''
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINNmNckWBxa2fQkUjWLHgQd32C272yB+f9kTcnooszd5 coolneng@panacea
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICo/y05fFCh8VkDN40cgTR5ZqcbxWvzp0+OzaGIn6vEQ root@unit
|
||||
''];
|
||||
};
|
||||
|
||||
# Rotate logs after 7 days
|
||||
services.journald.extraConfig = "SystemMaxFiles=7";
|
||||
|
||||
# Increase inotify limits
|
||||
boot.kernel.sysctl = { "fs.inotify.max_user_watches" = 204800; };
|
||||
|
||||
# MOTD message
|
||||
programs.fish.interactiveShellInit = "${./scripts/motd.sh}";
|
||||
|
||||
# Import other configuration modules
|
||||
imports = [
|
||||
./modules/hardware-configuration.nix
|
||||
./modules/networking.nix
|
||||
./modules/datasync.nix
|
||||
./modules/webstack.nix
|
||||
./modules/devops.nix
|
||||
./modules/monitoring.nix
|
||||
./modules/periodic.nix
|
||||
./modules/communication.nix
|
||||
./modules/information.nix
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
29
modules/hardware-configuration.nix
Normal file
29
modules/hardware-configuration.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
# 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 = [ "usb_storage" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/shield/unit" =
|
||||
{ device = "shield/unit";
|
||||
fsType = "zfs";
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
||||
}
|
||||
22
modules/networking.nix
Normal file
22
modules/networking.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Assign a static IP
|
||||
networking = {
|
||||
hostName = "aegis";
|
||||
hostId = "78bb604d";
|
||||
interfaces.eth0 = {
|
||||
useDHCP = false;
|
||||
ipv4.addresses = [{
|
||||
address = "10.0.1.4";
|
||||
prefixLength = 24;
|
||||
}];
|
||||
};
|
||||
defaultGateway = {
|
||||
address = "10.0.1.1";
|
||||
interface = "eth0";
|
||||
};
|
||||
nameservers = [ "1.1.1.1" "8.8.8.8" ];
|
||||
enableIPv6 = false;
|
||||
};
|
||||
}
|
||||
13
modules/periodic.nix
Normal file
13
modules/periodic.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Idle HDDs when not used
|
||||
systemd.services.hd-idle = {
|
||||
description = "Idle HDDs when not in use";
|
||||
wantedBy = [ "default.target" ];
|
||||
path = with pkgs; [ hd-idle ];
|
||||
script = "${pkgs.hd-idle}/bin/hd-idle";
|
||||
serviceConfig.Type = "simple";
|
||||
after = [ "shield-unit.mount" ];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user