create configs for Rico0 and Rico2
This commit is contained in:
parent
4037e9019b
commit
8fc9b6ac4b
31 changed files with 542 additions and 3 deletions
44
flake.nix
44
flake.nix
|
@ -85,6 +85,28 @@
|
|||
}
|
||||
];
|
||||
};
|
||||
Rico0 =
|
||||
let
|
||||
hostname = "Rico0";
|
||||
system = "aarch64-linux";
|
||||
username = "adtya";
|
||||
in
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
pkgs = packages system;
|
||||
specialArgs = { inherit inputs username; };
|
||||
modules = [
|
||||
{
|
||||
system.configurationRevision = lib.mkIf (self ? rev) self.rev;
|
||||
networking.hostName = lib.mkDefault hostname;
|
||||
nixpkgs.hostPlatform = lib.mkDefault system;
|
||||
}
|
||||
lix-module.nixosModules.default
|
||||
sops-nix.nixosModules.sops
|
||||
./common
|
||||
./hosts/rico0
|
||||
];
|
||||
};
|
||||
Rico1 =
|
||||
let
|
||||
hostname = "Rico1";
|
||||
|
@ -107,6 +129,28 @@
|
|||
./hosts/rico1
|
||||
];
|
||||
};
|
||||
Rico2 =
|
||||
let
|
||||
hostname = "Rico2";
|
||||
system = "aarch64-linux";
|
||||
username = "adtya";
|
||||
in
|
||||
nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
pkgs = packages system;
|
||||
specialArgs = { inherit inputs username; };
|
||||
modules = [
|
||||
{
|
||||
system.configurationRevision = lib.mkIf (self ? rev) self.rev;
|
||||
networking.hostName = lib.mkDefault hostname;
|
||||
nixpkgs.hostPlatform = lib.mkDefault system;
|
||||
}
|
||||
lix-module.nixosModules.default
|
||||
sops-nix.nixosModules.sops
|
||||
./common
|
||||
./hosts/rico2
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
// flake-utils.lib.eachDefaultSystem (system:
|
||||
|
|
5
hosts/rico0/containers/default.nix
Normal file
5
hosts/rico0/containers/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
_: {
|
||||
virtualisation.oci-containers = {
|
||||
backend = "podman";
|
||||
};
|
||||
}
|
43
hosts/rico0/default.nix
Normal file
43
hosts/rico0/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
./hardware
|
||||
./programs
|
||||
./services
|
||||
./containers
|
||||
./network.nix
|
||||
./security.nix
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: super: {
|
||||
makeModulesClosure = x:
|
||||
super.makeModulesClosure (x // { allowMissing = true; });
|
||||
})
|
||||
];
|
||||
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
LC_ALL = "en_US.UTF-8";
|
||||
};
|
||||
supportedLocales = [ "en_US.UTF-8/UTF-8" ];
|
||||
};
|
||||
|
||||
time.timeZone = "Asia/Kolkata";
|
||||
system = {
|
||||
switch = {
|
||||
enable = false;
|
||||
enableNg = true;
|
||||
};
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
}
|
13
hosts/rico0/hardware/default.nix
Normal file
13
hosts/rico0/hardware/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
_: {
|
||||
imports = [ ./filesystem.nix ./kernel.nix ];
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
boot = {
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
systemd-boot.enable = true;
|
||||
};
|
||||
supportedFilesystems = [ "vfat" "btrfs" "ext4" ];
|
||||
};
|
||||
}
|
36
hosts/rico0/hardware/filesystem.nix
Normal file
36
hosts/rico0/hardware/filesystem.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
_: {
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-partlabel/RICO0_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@root" "compress-force=zstd" "noatime" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/nix" = {
|
||||
device = "/dev/disk/by-partlabel/RICO0_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@nix" "compress-force=zstd" "noatime" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/persist" = {
|
||||
device = "/dev/disk/by-partlabel/RICO0_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@persist" "compress-force=zstd" "noatime" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/mnt/system" = {
|
||||
device = "/dev/disk/by-partlabel/RICO0_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=/" "compress-force=zstd" "noatime" ];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-partlabel/RICO0_BOOT";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
};
|
||||
}
|
18
hosts/rico0/hardware/kernel.nix
Normal file
18
hosts/rico0/hardware/kernel.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib
|
||||
, pkgs
|
||||
, ...
|
||||
}: {
|
||||
boot = {
|
||||
consoleLogLevel = 3;
|
||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_rpi4;
|
||||
kernel.sysctl = {
|
||||
"vm.swappiness" = 10;
|
||||
"vm.dirty_ratio" = 3;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [ "xhci_pci" ];
|
||||
systemd.enable = true;
|
||||
};
|
||||
};
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||
}
|
43
hosts/rico0/network.nix
Normal file
43
hosts/rico0/network.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ lib, ... }: {
|
||||
networking = {
|
||||
nameservers = [
|
||||
"2620:fe::fe#dns.quad9.net"
|
||||
"9.9.9.9#dns.quad9.net"
|
||||
"2620:fe::9#dns.quad9.net"
|
||||
"149.112.112.112#dns.quad9.net"
|
||||
];
|
||||
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
dhcp = "dhcpcd";
|
||||
dns = "systemd-resolved";
|
||||
wifi = {
|
||||
backend = "iwd";
|
||||
powersave = false;
|
||||
};
|
||||
};
|
||||
|
||||
useDHCP = lib.mkDefault false;
|
||||
|
||||
wireless.iwd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
General = {
|
||||
AddressRandomization = "network";
|
||||
EnableNetworkConfiguration = false;
|
||||
};
|
||||
Settings = {
|
||||
AutoConnect = "yes";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.resolved = {
|
||||
enable = true;
|
||||
dnssec = "true";
|
||||
dnsovertls = "true";
|
||||
domains = [ "~." ];
|
||||
fallbackDns = [ ];
|
||||
};
|
||||
}
|
17
hosts/rico0/programs/default.nix
Normal file
17
hosts/rico0/programs/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
./neovim.nix
|
||||
./starship.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
programs.git.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
sops
|
||||
age
|
||||
libraspberrypi
|
||||
raspberrypi-eeprom
|
||||
];
|
||||
|
||||
}
|
8
hosts/rico0/programs/neovim.nix
Normal file
8
hosts/rico0/programs/neovim.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
_: {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
8
hosts/rico0/programs/starship.nix
Normal file
8
hosts/rico0/programs/starship.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
_: {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
};
|
||||
};
|
||||
}
|
10
hosts/rico0/programs/zsh.nix
Normal file
10
hosts/rico0/programs/zsh.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
_: {
|
||||
programs = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
autosuggestions.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
};
|
||||
};
|
||||
environment.pathsToLink = [ "/share/zsh" ];
|
||||
}
|
9
hosts/rico0/security.nix
Normal file
9
hosts/rico0/security.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
_: {
|
||||
security = {
|
||||
sudo = {
|
||||
wheelNeedsPassword = false;
|
||||
};
|
||||
polkit.enable = true;
|
||||
rtkit.enable = true;
|
||||
};
|
||||
}
|
6
hosts/rico0/services/btrfs.nix
Normal file
6
hosts/rico0/services/btrfs.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
_: {
|
||||
services.btrfs.autoScrub = {
|
||||
enable = true;
|
||||
fileSystems = [ "/mnt/system" ];
|
||||
};
|
||||
}
|
7
hosts/rico0/services/default.nix
Normal file
7
hosts/rico0/services/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
_: {
|
||||
imports = [
|
||||
./btrfs.nix
|
||||
./ssh.nix
|
||||
];
|
||||
|
||||
}
|
21
hosts/rico0/services/ssh.nix
Normal file
21
hosts/rico0/services/ssh.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
_: {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
KbdInteractiveAuthentication = false;
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "no";
|
||||
};
|
||||
hostKeys = [
|
||||
{
|
||||
path = "/persist/secrets/ssh/keys/ssh_host_ed25519_key";
|
||||
type = "ed25519";
|
||||
}
|
||||
{
|
||||
path = "/persist/secrets/ssh/keys/ssh_host_rsa_key";
|
||||
type = "rsa";
|
||||
bits = "4096";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
|
@ -8,6 +8,13 @@
|
|||
./security.nix
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: super: {
|
||||
makeModulesClosure = x:
|
||||
super.makeModulesClosure (x // { allowMissing = true; });
|
||||
})
|
||||
];
|
||||
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
extraLocaleSettings = {
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
}: {
|
||||
boot = {
|
||||
consoleLogLevel = 3;
|
||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_rpi4;
|
||||
kernel.sysctl = {
|
||||
"vm.swappiness" = 10;
|
||||
"vm.dirty_ratio" = 3;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = ["xhci_pci"];
|
||||
systemd.enable = true;
|
||||
availableKernelModules = [ "xhci_pci" ];
|
||||
systemd.enable = true;
|
||||
};
|
||||
};
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||
|
|
5
hosts/rico2/containers/default.nix
Normal file
5
hosts/rico2/containers/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
_: {
|
||||
virtualisation.oci-containers = {
|
||||
backend = "podman";
|
||||
};
|
||||
}
|
43
hosts/rico2/default.nix
Normal file
43
hosts/rico2/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
./hardware
|
||||
./programs
|
||||
./services
|
||||
./containers
|
||||
./network.nix
|
||||
./security.nix
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: super: {
|
||||
makeModulesClosure = x:
|
||||
super.makeModulesClosure (x // { allowMissing = true; });
|
||||
})
|
||||
];
|
||||
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
LC_ALL = "en_US.UTF-8";
|
||||
};
|
||||
supportedLocales = [ "en_US.UTF-8/UTF-8" ];
|
||||
};
|
||||
|
||||
time.timeZone = "Asia/Kolkata";
|
||||
system = {
|
||||
switch = {
|
||||
enable = false;
|
||||
enableNg = true;
|
||||
};
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
}
|
13
hosts/rico2/hardware/default.nix
Normal file
13
hosts/rico2/hardware/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
_: {
|
||||
imports = [ ./filesystem.nix ./kernel.nix ];
|
||||
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
boot = {
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
systemd-boot.enable = true;
|
||||
};
|
||||
supportedFilesystems = [ "vfat" "btrfs" "ext4" ];
|
||||
};
|
||||
}
|
36
hosts/rico2/hardware/filesystem.nix
Normal file
36
hosts/rico2/hardware/filesystem.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
_: {
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-partlabel/RICO2_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@root" "compress-force=zstd" "noatime" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/nix" = {
|
||||
device = "/dev/disk/by-partlabel/RICO2_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@nix" "compress-force=zstd" "noatime" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/persist" = {
|
||||
device = "/dev/disk/by-partlabel/RICO2_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@persist" "compress-force=zstd" "noatime" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
|
||||
"/mnt/system" = {
|
||||
device = "/dev/disk/by-partlabel/RICO2_ROOT";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=/" "compress-force=zstd" "noatime" ];
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-partlabel/RICO2_BOOT";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
};
|
||||
}
|
18
hosts/rico2/hardware/kernel.nix
Normal file
18
hosts/rico2/hardware/kernel.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib
|
||||
, pkgs
|
||||
, ...
|
||||
}: {
|
||||
boot = {
|
||||
consoleLogLevel = 3;
|
||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_rpi4;
|
||||
kernel.sysctl = {
|
||||
"vm.swappiness" = 10;
|
||||
"vm.dirty_ratio" = 3;
|
||||
};
|
||||
initrd = {
|
||||
availableKernelModules = [ "xhci_pci" ];
|
||||
systemd.enable = true;
|
||||
};
|
||||
};
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||
}
|
43
hosts/rico2/network.nix
Normal file
43
hosts/rico2/network.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ lib, ... }: {
|
||||
networking = {
|
||||
nameservers = [
|
||||
"2620:fe::fe#dns.quad9.net"
|
||||
"9.9.9.9#dns.quad9.net"
|
||||
"2620:fe::9#dns.quad9.net"
|
||||
"149.112.112.112#dns.quad9.net"
|
||||
];
|
||||
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
dhcp = "dhcpcd";
|
||||
dns = "systemd-resolved";
|
||||
wifi = {
|
||||
backend = "iwd";
|
||||
powersave = false;
|
||||
};
|
||||
};
|
||||
|
||||
useDHCP = lib.mkDefault false;
|
||||
|
||||
wireless.iwd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
General = {
|
||||
AddressRandomization = "network";
|
||||
EnableNetworkConfiguration = false;
|
||||
};
|
||||
Settings = {
|
||||
AutoConnect = "yes";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.resolved = {
|
||||
enable = true;
|
||||
dnssec = "true";
|
||||
dnsovertls = "true";
|
||||
domains = [ "~." ];
|
||||
fallbackDns = [ ];
|
||||
};
|
||||
}
|
17
hosts/rico2/programs/default.nix
Normal file
17
hosts/rico2/programs/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
./neovim.nix
|
||||
./starship.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
programs.git.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
sops
|
||||
age
|
||||
libraspberrypi
|
||||
raspberrypi-eeprom
|
||||
];
|
||||
|
||||
}
|
8
hosts/rico2/programs/neovim.nix
Normal file
8
hosts/rico2/programs/neovim.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
_: {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
8
hosts/rico2/programs/starship.nix
Normal file
8
hosts/rico2/programs/starship.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
_: {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
};
|
||||
};
|
||||
}
|
10
hosts/rico2/programs/zsh.nix
Normal file
10
hosts/rico2/programs/zsh.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
_: {
|
||||
programs = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
autosuggestions.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
};
|
||||
};
|
||||
environment.pathsToLink = [ "/share/zsh" ];
|
||||
}
|
9
hosts/rico2/security.nix
Normal file
9
hosts/rico2/security.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
_: {
|
||||
security = {
|
||||
sudo = {
|
||||
wheelNeedsPassword = false;
|
||||
};
|
||||
polkit.enable = true;
|
||||
rtkit.enable = true;
|
||||
};
|
||||
}
|
6
hosts/rico2/services/btrfs.nix
Normal file
6
hosts/rico2/services/btrfs.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
_: {
|
||||
services.btrfs.autoScrub = {
|
||||
enable = true;
|
||||
fileSystems = [ "/mnt/system" ];
|
||||
};
|
||||
}
|
7
hosts/rico2/services/default.nix
Normal file
7
hosts/rico2/services/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
_: {
|
||||
imports = [
|
||||
./btrfs.nix
|
||||
./ssh.nix
|
||||
];
|
||||
|
||||
}
|
21
hosts/rico2/services/ssh.nix
Normal file
21
hosts/rico2/services/ssh.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
_: {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
KbdInteractiveAuthentication = false;
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "no";
|
||||
};
|
||||
hostKeys = [
|
||||
{
|
||||
path = "/persist/secrets/ssh/keys/ssh_host_ed25519_key";
|
||||
type = "ed25519";
|
||||
}
|
||||
{
|
||||
path = "/persist/secrets/ssh/keys/ssh_host_rsa_key";
|
||||
type = "rsa";
|
||||
bits = "4096";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue