nix-sops
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
globals,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -96,6 +98,8 @@ in
|
||||
|
||||
environment.systemPackages = with pkgs; [ pinentry-curses ];
|
||||
|
||||
# users.mutableUsers = lib.mkDefault false;
|
||||
|
||||
# Security config
|
||||
security = {
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ in
|
||||
displayManager.defaultSession = "gnome";
|
||||
|
||||
# Enable Flatpak
|
||||
flatpak.enable = false;
|
||||
flatpak.enable = true;
|
||||
|
||||
# disable plasma
|
||||
displayManager.sddm.enable = false;
|
||||
@@ -149,6 +149,8 @@ in
|
||||
|
||||
apps.discover-wrapped.enable = false;
|
||||
|
||||
nix.settings.trusted-users = [ "root" "matt" ];
|
||||
|
||||
services = {
|
||||
# Enable Desktop Environment.
|
||||
displayManager = {
|
||||
@@ -161,7 +163,7 @@ in
|
||||
desktopManager.plasma6.enable = lib.mkDefault true;
|
||||
|
||||
# Enable Flatpak
|
||||
flatpak.enable = lib.mkDefault false;
|
||||
flatpak.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
# xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-kde ];
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
|
||||
shellAliases = {
|
||||
ll = "ls -alh";
|
||||
update = "sudo nixos-rebuild switch";
|
||||
update = "sudo nixos-rebuild switch --max-jobs 10";
|
||||
update-flake = "sudo nix flake update ~/nix-config";
|
||||
update-specialisation = "sudo nixos-rebuild switch --specialisation";
|
||||
update-specialisation = "sudo nixos-rebuild switch --specialisation --max-jobs 10";
|
||||
nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@jallen-nas.local --build-host localhost --flake ~/nix-config#jallen-nas";
|
||||
nas-ssh = "ssh admin@jallen-nas.local";
|
||||
};
|
||||
@@ -55,6 +55,7 @@
|
||||
home.packages = with pkgs; [
|
||||
# gamescope # using chaotic git version
|
||||
# gamescope-wsi # using chaotic git version
|
||||
age
|
||||
bottles
|
||||
chromium
|
||||
deadnix
|
||||
@@ -67,6 +68,7 @@
|
||||
goverlay
|
||||
heroic
|
||||
home-manager
|
||||
jq
|
||||
libreoffice-qt6-fresh
|
||||
lm_sensors
|
||||
lutris
|
||||
@@ -88,8 +90,11 @@
|
||||
python312Packages.pytest
|
||||
python312Packages.pytest-cov
|
||||
python312Packages.pyaml
|
||||
sops
|
||||
spotify
|
||||
ssh-to-pgp
|
||||
tree
|
||||
vesktop
|
||||
virt-manager
|
||||
vmware-horizon-client
|
||||
vorta
|
||||
|
||||
@@ -12,7 +12,10 @@
|
||||
|
||||
beszel-agent.enable = true;
|
||||
|
||||
collabora.enable = true;
|
||||
collabora = {
|
||||
enable = true;
|
||||
environmentFiles = [ config.sops.secrets."jallen-nas/collabora".path ];
|
||||
};
|
||||
|
||||
deluge.enable = true;
|
||||
|
||||
@@ -22,11 +25,18 @@
|
||||
|
||||
jellyseerr.enable = true;
|
||||
|
||||
mariadb.enable = true;
|
||||
mariadb = {
|
||||
enable = true;
|
||||
environmentFiles = [
|
||||
config.sops.secrets."jallen-nas/mariadb/db_pass".path
|
||||
config.sops.secrets."jallen-nas/mariadb/root_pass".path
|
||||
];
|
||||
};
|
||||
|
||||
mealie = {
|
||||
enable = true;
|
||||
baseUrl = "https://mealie.mjallen.dev";
|
||||
port = "9001";
|
||||
maxConcurrency = "4";
|
||||
maxWorkers = "4";
|
||||
allowSignup = "false";
|
||||
@@ -35,7 +45,8 @@
|
||||
nextcloud = {
|
||||
enable = true;
|
||||
httpPort = "9981";
|
||||
httpsPort = "9443";
|
||||
httpsPort = "9943";
|
||||
redisSock = "/var/run/redis-nextcloud/redis.sock";
|
||||
};
|
||||
|
||||
ollama.enable = true;
|
||||
@@ -46,8 +57,6 @@
|
||||
|
||||
radarr.enable = true;
|
||||
|
||||
redis.enable = true;
|
||||
|
||||
sabnzbd.enable = true;
|
||||
|
||||
sonarr.enable = true;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
}:
|
||||
let
|
||||
user = "admin";
|
||||
password = "$y$j9T$EkPXmsmIMFFZ.WRrBYCxS1$P0kwo6e4.WM5DsqUcEqWC3MrZp5KfCjxffraMFZWu06";
|
||||
passwordFile = config.sops.secrets."jallen-nas/admin_password".path;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
@@ -25,9 +25,15 @@ in
|
||||
./ups.nix
|
||||
./samba.nix
|
||||
./services.nix
|
||||
./sops.nix
|
||||
../default.nix
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
# Cockpit
|
||||
services.cockpit = {
|
||||
enable = true;
|
||||
@@ -78,42 +84,39 @@ in
|
||||
};
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
vim
|
||||
wget
|
||||
nano
|
||||
efibootmgr
|
||||
sbctl
|
||||
pciutils
|
||||
vulkan-tools
|
||||
clinfo
|
||||
glances
|
||||
python3
|
||||
nix-ld
|
||||
authentik
|
||||
binutils
|
||||
gcc
|
||||
cryptsetup
|
||||
clinfo
|
||||
cmake
|
||||
duperemove
|
||||
efibootmgr
|
||||
ffmpeg
|
||||
gcc
|
||||
glances
|
||||
htop
|
||||
lm_sensors
|
||||
nano
|
||||
ninja
|
||||
nix-inspect
|
||||
nix-ld
|
||||
nmon
|
||||
nodejs-18_x
|
||||
nut
|
||||
nmon
|
||||
pass
|
||||
protonvpn-cli
|
||||
protonmail-bridge
|
||||
pass
|
||||
cockpit
|
||||
packagekit
|
||||
# gnome.gnome-packagekit
|
||||
unstable.nix-inspect
|
||||
unstable.gpt4all
|
||||
lm_sensors
|
||||
htop
|
||||
pass
|
||||
pciutils
|
||||
protonmail-bridge
|
||||
protonvpn-cli
|
||||
python3
|
||||
sbctl
|
||||
speedtest-cli
|
||||
tailscale
|
||||
tpm2-tools
|
||||
tpm2-tss
|
||||
cryptsetup
|
||||
duperemove
|
||||
speedtest-cli
|
||||
vim
|
||||
vulkan-tools
|
||||
wget
|
||||
];
|
||||
};
|
||||
|
||||
@@ -158,7 +161,7 @@ in
|
||||
"nix-apps"
|
||||
"jallen-nas"
|
||||
]; # Enable ‘sudo’ for the user.
|
||||
initialHashedPassword = password;
|
||||
hashedPasswordFile = passwordFile;
|
||||
shell = pkgs.zsh;
|
||||
openssh.authorizedKeys.keys = [
|
||||
# macBook
|
||||
@@ -192,7 +195,7 @@ in
|
||||
"docker"
|
||||
"podman"
|
||||
]; # Enable ‘sudo’ for the user.
|
||||
hashedPassword = password;
|
||||
hashedPasswordFile = passwordFile;
|
||||
};
|
||||
|
||||
groups.nut.name = "nut";
|
||||
@@ -202,7 +205,7 @@ in
|
||||
isSystemUser = true;
|
||||
createHome = true;
|
||||
home = "/var/lib/nut";
|
||||
hashedPassword = password;
|
||||
hashedPasswordFile = passwordFile;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
38
hosts/nas/impermanence.nix
Normal file
38
hosts/nas/impermanence.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
LT,
|
||||
config,
|
||||
utils,
|
||||
inputs,
|
||||
...
|
||||
}@args:
|
||||
{
|
||||
# Set up impernance configuration for things like bluetooth
|
||||
# In this configuration with /etc and /var/log being persistent, only directories outside of that need to be done here. See hardware configuration for all mountpoints.
|
||||
|
||||
environment.persistence."/nix/persist/system" = {
|
||||
hideMounts = true;
|
||||
directories = [
|
||||
"/var/lib/bluetooth"
|
||||
"/var/lib/nixos"
|
||||
"/var/lib/systemd/coredump"
|
||||
"/etc/NetworkManager/system-connections"
|
||||
"/etc/secureboot"
|
||||
{
|
||||
directory = "/var/lib/colord";
|
||||
user = "colord";
|
||||
group = "colord";
|
||||
mode = "u=rwx,g=rx,o=";
|
||||
}
|
||||
];
|
||||
files = [
|
||||
{
|
||||
file = "/etc/nix/id_rsa";
|
||||
parentDirectory = {
|
||||
mode = "u=rwx,g=,o=";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -10,12 +10,12 @@ let
|
||||
hostname = "jallen-nas";
|
||||
ipAddress = "10.0.1.18";
|
||||
gateway = "10.0.1.1";
|
||||
password = "kR8v&3Qd";
|
||||
allowedPorts = [
|
||||
2342
|
||||
3493
|
||||
61208
|
||||
9090
|
||||
9000
|
||||
# config.services.tailscale.port
|
||||
# 22
|
||||
];
|
||||
@@ -44,9 +44,10 @@ in
|
||||
|
||||
wireless = {
|
||||
enable = true;
|
||||
environmentFile = config.sops.secrets."wifi".path;
|
||||
networks = {
|
||||
"Joey's Jungle 5G" = {
|
||||
psk = password;
|
||||
psk = "@PSK@";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -127,10 +127,11 @@ in
|
||||
};
|
||||
|
||||
tailscale = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
useRoutingFeatures = "client";
|
||||
extraUpFlags = [ "--advertise-exit-node" ];
|
||||
authKeyFile = "/media/nas/ssd/nix-app-data/tailscale/auth";
|
||||
};
|
||||
|
||||
btrfs = {
|
||||
@@ -153,6 +154,39 @@ in
|
||||
"/media/nas/main/isos"
|
||||
];
|
||||
};
|
||||
|
||||
authentik = {
|
||||
enable = true;
|
||||
environmentFile = "/media/nas/ssd/nix-app-data/authentik/.env";
|
||||
|
||||
};
|
||||
|
||||
postgresql = {
|
||||
enable = true;
|
||||
package = pkgs.postgresql_16;
|
||||
dataDir = "/media/nas/ssd/nix-app-data/postgresql";
|
||||
ensureDatabases = [ "authentik" ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "authentik";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
redis = {
|
||||
servers = {
|
||||
authentik = {
|
||||
enable = true;
|
||||
port = 6379;
|
||||
};
|
||||
|
||||
nextcloud = {
|
||||
enable = true;
|
||||
port = 6380;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services = {
|
||||
|
||||
23
hosts/nas/sops.nix
Normal file
23
hosts/nas/sops.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
sops.defaultSopsFile = ../../secrets/secrets.yaml;
|
||||
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||
|
||||
sops.secrets."jallen-nas/admin_password" = {};
|
||||
sops.secrets."jallen-nas/admin_password".neededForUsers = true;
|
||||
|
||||
sops.secrets."wifi" = {};
|
||||
|
||||
sops.secrets."jallen-nas/collabora" = {
|
||||
restartUnits = [ "podman-collabora.service" ];
|
||||
};
|
||||
|
||||
sops.secrets."jallen-nas/mariadb/db_pass" = {
|
||||
restartUnits = [ "podman-mariadb.service" ];
|
||||
};
|
||||
sops.secrets."jallen-nas/mariadb/root_pass" = {
|
||||
restartUnits = [ "podman-mariadb.service" ];
|
||||
};
|
||||
}
|
||||
@@ -106,8 +106,6 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user