switch over hopper fully (+ minor refactoring)

This commit is contained in:
xunuwu 2024-11-21 10:03:31 +01:00
parent c38c6b9b29
commit 6ab8a4e38d
Signed by: xun
SSH key fingerprint: SHA256:Uot/1WoAjWAeqLOHA5vYy4phhVydsH7jCPmBjaPZfgI
97 changed files with 71 additions and 25 deletions

View file

@ -14,11 +14,11 @@ updatekeys:
fd . systemProfiles/secrets -E '*.nix' -t f -x sops updatekeys fd . systemProfiles/secrets -E '*.nix' -t f -x sops updatekeys
remote OPERATION HOST HOSTNAME *FLAGS: remote OPERATION HOST REMOTEHOST *FLAGS:
nixos-rebuild \ nixos-rebuild \
--fast \ --fast \
--flake .#{{HOST}} \ --flake .#{{HOST}} \
--target-host xun@{{HOSTNAME}} \ --target-host {{REMOTEHOST}} \
--use-remote-sudo \ --use-remote-sudo \
{{FLAGS}} \ {{FLAGS}} \
{{OPERATION}} {{OPERATION}}

View file

@ -95,7 +95,7 @@
"browser.aboutConfig.showWarning" = false; # Warning when opening about:config "browser.aboutConfig.showWarning" = false; # Warning when opening about:config
# "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; # "media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
"extensions.autoDisableScopes" = "0"; # Automatically enable extensions "extensions.autoDisableScopes" = "0"; # Automatically enable extensions
"extensions.pocket.enabled" = true; # i actually use pocket # "extensions.pocket.enabled" = true;
"extensions.shield-recipe-client.enabled" = false; "extensions.shield-recipe-client.enabled" = false;
#"reader.parse-on-load.enabled" = false; # "reader view" #"reader.parse-on-load.enabled" = false; # "reader view"

View file

@ -11,10 +11,11 @@
inherit inputs self; inherit inputs self;
}; };
systemProfiles = inputs.haumea.lib.load { source = inputs.haumea.lib.load {
inputs = {inherit inputs lib;}; inputs = {inherit inputs lib;};
src = "${self}/systemProfiles"; src = "${self}/nix";
}; };
systemProfiles = source.systemProfiles;
in { in {
flake.colmena = { flake.colmena = {
meta = { meta = {
@ -151,12 +152,13 @@ in {
core.locale core.locale
core.tools core.tools
core.ssh core.ssh
core.deploy
nix.default # TODO slim this down nix.default # TODO slim this down
network.tailscale network.tailscale
network.avahi network.avahi
network.networkd network.networkd
services.syncthing # services.syncthing # TODO make syncthing not rely on having "xun" user
#network.avahi #network.avahi
#network.networkd #network.networkd

View file

@ -18,6 +18,12 @@ in {
## TODO use impermanence ## TODO use impermanence
## TODO setup fail2ban mayb ## TODO setup fail2ban mayb
users.groups.media = {};
users.users.media = {
isSystemUser = true;
group = "media";
};
security.acme = { security.acme = {
acceptTerms = true; acceptTerms = true;
defaults.email = "xunuwu@gmail.com"; defaults.email = "xunuwu@gmail.com";
@ -264,7 +270,8 @@ in {
{ {
targets = [ targets = [
"127.0.0.1:${toString config.services.prometheus.exporters.node.port}" "127.0.0.1:${toString config.services.prometheus.exporters.node.port}"
# "127.0.0.1:${toString config.services.prometheus.exporters.nextcloud.port}" "127.0.0.1:${toString config.services.prometheus.exporters.systemd.port}"
# "127.0.0.1:${toString config.services.prometheus.exporters.wireguard.port}"
]; ];
} }
]; ];
@ -277,6 +284,11 @@ in {
enable = true; enable = true;
enabledCollectors = ["systemd"]; enabledCollectors = ["systemd"];
}; };
systemd.enable = true;
# wireguard = {
# enable = true;
# wireguardConfig = config.sops.secrets.wireguard.path;
# };
# nextcloud = { # nextcloud = {
# enable = true; # enable = true;
# tokenFile = config.sops.secrets."prometheus/nextcloud".path; # tokenFile = config.sops.secrets."prometheus/nextcloud".path;
@ -294,6 +306,7 @@ in {
environmentFile = config.sops.secrets.slskd.path; environmentFile = config.sops.secrets.slskd.path;
domain = null; # why isnt this the default? domain = null; # why isnt this the default?
settings = { settings = {
remote_file_management = true;
shares.directories = ["/media/library/music"]; shares.directories = ["/media/library/music"];
soulseek = { soulseek = {
listen_port = 14794; listen_port = 14794;
@ -337,7 +350,7 @@ in {
users.users.xun = { users.users.xun = {
isSystemUser = true; isSystemUser = true;
group = "xun"; group = "xun";
extraGroups = ["transmission" "vault"]; extraGroups = ["transmission" "vault" "media"];
}; };
users.groups.vault = {}; users.groups.vault = {};
@ -353,12 +366,10 @@ in {
"log file" = "/var/log/samba/samba.log"; "log file" = "/var/log/samba/samba.log";
"server string" = config.networking.hostName; "server string" = config.networking.hostName;
"hosts allow" = "192.168.50.0/24"; "hosts allow" = "192.168.50.0/24";
"hosts deny" = "0.0.0.0/0";
"guest account" = "nobody";
"map to guest" = "bad user"; "map to guest" = "bad user";
}; };
transmission = { transmission = {
path = "/var/lib/transmission/Downloads"; path = "/var/lib/transmission";
browseable = "yes"; browseable = "yes";
"read only" = "yes"; "read only" = "yes";
"guest ok" = "no"; "guest ok" = "no";
@ -372,6 +383,28 @@ in {
"guest ok" = "no"; "guest ok" = "no";
"create mask" = "0660"; "create mask" = "0660";
"directory mask" = "0770"; "directory mask" = "0770";
"force user" = "xun";
"force group" = "xun";
};
slskd = {
path = "/var/lib/slskd";
browseable = "yes";
"read only" = "no";
"guest ok" = "no";
"create mask" = "0660";
"directory mask" = "0770";
"force user" = "slskd";
"force group" = "slskd";
};
library = {
path = "media/library";
browseable = "yes";
"read only" = "no";
"guest ok" = "no";
"create mask" = "0666";
"directory mask" = "0777";
"force user" = "media";
"force group" = "media";
}; };
}; };
}; };

View file

@ -0,0 +1 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqW5ZkBV2XCdF/ZhwC1DOfrgiLxCC2ym6BO7miHi05M xun@nixdesk"

View file

@ -0,0 +1,24 @@
{
self,
super,
root,
}: {lib, ...}: {
nix.settings.trusted-users = ["deploy"]; # trust closures created by our user
users.groups.deploy = {};
users.users.deploy = {
isSystemUser = true;
useDefaultShell = true;
group = "deploy";
extraGroups = ["wheel"];
hashedPassword = lib.mkForce null;
hashedPasswordFile = lib.mkForce null;
password = lib.mkForce null;
passwordFile = lib.mkForce null;
openssh.authorizedKeys.keys = with root.sshKeys; [
xun_nixdesk
];
};
}

View file

@ -1,14 +0,0 @@
{
self,
super,
root,
}: {
imports = [
super.security
super.users
super.ssh
super.locale
root.nix.default
root.programs.zsh
];
}