Set Azedia up with NixOS for real.
This commit is contained in:
parent
06de266a7f
commit
9d95b34521
|
@ -6,6 +6,9 @@
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix # Created by nixos-generate-config.
|
./hardware-configuration.nix # Created by nixos-generate-config.
|
||||||
./packages.nix
|
./packages.nix
|
||||||
|
./programs-services.nix
|
||||||
|
./system.nix
|
||||||
|
./users.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
|
@ -15,17 +18,10 @@
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
packageOverrides = pkgs: {
|
|
||||||
# Add the unstable channel as a separate package set.
|
|
||||||
unstable = import <nixos-unstable> {
|
|
||||||
# Pass config through so everything is shared between all channels.
|
|
||||||
config = config.nixpkgs.config;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Before changing this value read the documentation for this option!
|
# Before changing this value read the documentation for this option!
|
||||||
# https://search.nixos.org/options?channel=23.05&show=system.stateVersion
|
# https://search.nixos.org/options?channel=23.11&show=system.stateVersion
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.11";
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,13 @@
|
||||||
{
|
{
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
exa
|
bat
|
||||||
|
eza
|
||||||
fd
|
fd
|
||||||
|
git
|
||||||
|
kitty.terminfo
|
||||||
|
raspberrypi-eeprom
|
||||||
|
starship
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Configuration for programs and services.
|
||||||
|
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable `resolved` so the `<hostname>.local` domain works.
|
||||||
|
resolved.enable = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
# General system configuration.
|
||||||
|
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxKernel.packages.linux_rpi4;
|
||||||
|
loader = {
|
||||||
|
grub.enable = false;
|
||||||
|
generic-extlinux-compatible.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
console = {
|
||||||
|
keyMap = "be-latin1";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
shells = [ pkgs.zsh ];
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_GB.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_GB.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_GB.UTF-8";
|
||||||
|
LC_MONETARY = "en_GB.UTF-8";
|
||||||
|
LC_NAME = "en_GB.UTF-8";
|
||||||
|
LC_NUMERIC = "en_GB.UTF-8";
|
||||||
|
LC_PAPER = "en_GB.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_GB.UTF-8";
|
||||||
|
LC_TIME = "en_GB.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "azedia";
|
||||||
|
|
||||||
|
firewall = {
|
||||||
|
# * 22 is for SSH.
|
||||||
|
# * 53, 5353 and 5355 are for `resolved` so we can access the server via
|
||||||
|
# the `<hostname>.local` domain. Maybe not all of the ports are needed
|
||||||
|
# but having them all makes it work.
|
||||||
|
# * 80 and 443 are for Caddy HTTP and HTTPS access respectively.
|
||||||
|
allowedTCPPorts = [ 22 53 5353 5355 80 443 ];
|
||||||
|
allowedUDPPorts = [ 22 53 5353 5355 80 443 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# It probably isn't necessary to manually set the IPs but do it anyway just
|
||||||
|
# in case if something else gets messed up they at least stay the same. Both
|
||||||
|
# IPs are the original ones that were automatically assigned.
|
||||||
|
interfaces.wlan0.ipv4.addresses = [{
|
||||||
|
address = "192.168.0.202";
|
||||||
|
prefixLength = 24;
|
||||||
|
}];
|
||||||
|
|
||||||
|
interfaces.wlan0.ipv6.addresses = [{
|
||||||
|
address = "2a02:1810:9c2d:6b00:afd9:d79c:644d:f12f";
|
||||||
|
prefixLength = 64;
|
||||||
|
}];
|
||||||
|
|
||||||
|
wireless = {
|
||||||
|
enable = true;
|
||||||
|
# The "wireless.env" should have "HOME_SSID=name" and "HOME_PSK=password"
|
||||||
|
# set in it, then NixOS uses them to replace the `@variable@` ones below.
|
||||||
|
environmentFile = "/var/secrets/wireless.env";
|
||||||
|
interfaces = [ "wlan0" ];
|
||||||
|
networks."@HOME_SSID@".psk = "@HOME_PSK@";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Brussels";
|
||||||
|
|
||||||
|
virtualisation = {
|
||||||
|
docker = {
|
||||||
|
enable = true;
|
||||||
|
storageDriver = "btrfs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
users.bauke = {
|
users.bauke = {
|
||||||
description = "Bauke";
|
description = "Bauke";
|
||||||
extraGroups = [ "networkmanager" ];
|
extraGroups = [ "docker" "wheel" ];
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue