WIP share configuraton between nixos / homemanager

This commit is contained in:
Leon Schwarzäugl 2025-07-16 18:23:00 +02:00
parent 641a0cd84d
commit 302c488569
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
166 changed files with 1029 additions and 1031 deletions

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.amdcpu = lib.mkEnableOption "is this a host with amd cpu";
config = lib.mkIf config.swarselsystems.profiles.amdcpu {
swarselsystems.modules = {
options.swarselprofiles.amdcpu = lib.mkEnableOption "is this a host with amd cpu";
config = lib.mkIf config.swarselprofiles.amdcpu {
swarselmodules = {
optional = {
amdcpu = lib.mkDefault true;
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.amdgpu = lib.mkEnableOption "is this a host with amd gpu";
config = lib.mkIf config.swarselsystems.profiles.amdgpu {
swarselsystems.modules = {
options.swarselprofiles.amdgpu = lib.mkEnableOption "is this a host with amd gpu";
config = lib.mkIf config.swarselprofiles.amdgpu {
swarselmodules = {
optional = {
amdgpu = lib.mkDefault true;
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.btrfs = lib.mkEnableOption "is this a host using btrfs";
config = lib.mkIf config.swarselsystems.profiles.btrfs {
swarselsystems.modules = {
options.swarselprofiles.btrfs = lib.mkEnableOption "is this a host using btrfs";
config = lib.mkIf config.swarselprofiles.btrfs {
swarselmodules = {
optional = {
btrfs = lib.mkDefault true;
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.chaostheatre = lib.mkEnableOption "is this a chaostheatre host";
config = lib.mkIf config.swarselsystems.profiles.chaostheatre {
swarselsystems.modules = {
options.swarselprofiles.chaostheatre = lib.mkEnableOption "is this a chaostheatre host";
config = lib.mkIf config.swarselprofiles.chaostheatre {
swarselmodules = {
packages = lib.mkDefault true;
general = lib.mkDefault true;
home-manager = lib.mkDefault true;

View file

@ -1,12 +1,17 @@
{ lib, config, ... }:
{ lib, config, minimal, ... }:
{
options.swarselsystems.profiles.framework = lib.mkEnableOption "is this a framework brand host";
config = lib.mkIf config.swarselsystems.profiles.framework {
swarselsystems.modules = {
options.swarselprofiles.framework = lib.mkEnableOption "is this a framework brand host";
config = lib.mkIf config.swarselprofiles.framework {
swarselmodules = {
optional = {
framework = lib.mkDefault true;
};
};
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
framework = lib.mkIf (!minimal) true;
};
};
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.hibernation = lib.mkEnableOption "is this a host using hibernation";
config = lib.mkIf config.swarselsystems.profiles.hibernation {
swarselsystems.modules = {
options.swarselprofiles.hibernation = lib.mkEnableOption "is this a host using hibernation";
config = lib.mkIf config.swarselprofiles.hibernation {
swarselmodules = {
optional = {
hibernation = lib.mkDefault true;
};

View file

@ -1,47 +1,45 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.server.local = lib.mkEnableOption "is this a local server";
config = lib.mkIf config.swarselsystems.profiles.server.local {
swarselsystems = {
modules = {
options.swarselprofiles.server.local = lib.mkEnableOption "is this a local server";
config = lib.mkIf config.swarselprofiles.server.local {
swarselmodules = {
general = lib.mkDefault true;
pii = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
sops = lib.mkDefault true;
server = {
general = lib.mkDefault true;
pii = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
sops = lib.mkDefault true;
server = {
general = lib.mkDefault true;
packages = lib.mkDefault true;
nfs = lib.mkDefault true;
nginx = lib.mkDefault true;
ssh = lib.mkDefault true;
kavita = lib.mkDefault true;
restic = lib.mkDefault true;
jellyfin = lib.mkDefault true;
navidrome = lib.mkDefault true;
spotifyd = lib.mkDefault true;
mpd = lib.mkDefault true;
postgresql = lib.mkDefault true;
matrix = lib.mkDefault true;
nextcloud = lib.mkDefault true;
immich = lib.mkDefault true;
paperless = lib.mkDefault true;
transmission = lib.mkDefault true;
syncthing = lib.mkDefault true;
grafana = lib.mkDefault true;
emacs = lib.mkDefault true;
freshrss = lib.mkDefault true;
jenkins = lib.mkDefault false;
kanidm = lib.mkDefault true;
firefly-iii = lib.mkDefault true;
koillection = lib.mkDefault true;
radicale = lib.mkDefault true;
atuin = lib.mkDefault true;
forgejo = lib.mkDefault true;
ankisync = lib.mkDefault true;
};
packages = lib.mkDefault true;
nfs = lib.mkDefault true;
nginx = lib.mkDefault true;
ssh = lib.mkDefault true;
kavita = lib.mkDefault true;
restic = lib.mkDefault true;
jellyfin = lib.mkDefault true;
navidrome = lib.mkDefault true;
spotifyd = lib.mkDefault true;
mpd = lib.mkDefault true;
postgresql = lib.mkDefault true;
matrix = lib.mkDefault true;
nextcloud = lib.mkDefault true;
immich = lib.mkDefault true;
paperless = lib.mkDefault true;
transmission = lib.mkDefault true;
syncthing = lib.mkDefault true;
grafana = lib.mkDefault true;
emacs = lib.mkDefault true;
freshrss = lib.mkDefault true;
jenkins = lib.mkDefault false;
kanidm = lib.mkDefault true;
firefly-iii = lib.mkDefault true;
koillection = lib.mkDefault true;
radicale = lib.mkDefault true;
atuin = lib.mkDefault true;
forgejo = lib.mkDefault true;
ankisync = lib.mkDefault true;
};
};
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.minimal = lib.mkEnableOption "declare this a minimal host";
config = lib.mkIf config.swarselsystems.profiles.minimal {
swarselsystems.modules = {
options.swarselprofiles.minimal = lib.mkEnableOption "declare this a minimal host";
config = lib.mkIf config.swarselprofiles.minimal {
swarselmodules = {
general = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;

View file

@ -1,27 +1,25 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.server.moonside = lib.mkEnableOption "is this a moonside server";
config = lib.mkIf config.swarselsystems.profiles.server.moonside {
swarselsystems = {
modules = {
options.swarselprofiles.server.moonside = lib.mkEnableOption "is this a moonside server";
config = lib.mkIf config.swarselprofiles.server.moonside {
swarselmodules = {
general = lib.mkDefault true;
pii = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
impermanence = lib.mkDefault true;
sops = lib.mkDefault true;
server = {
general = lib.mkDefault true;
pii = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
impermanence = lib.mkDefault true;
sops = lib.mkDefault true;
server = {
general = lib.mkDefault true;
packages = lib.mkDefault true;
nginx = lib.mkDefault true;
ssh = lib.mkDefault true;
oauth2-proxy = lib.mkDefault true;
croc = lib.mkDefault true;
microbin = lib.mkDefault true;
shlink = lib.mkDefault true;
};
packages = lib.mkDefault true;
nginx = lib.mkDefault true;
ssh = lib.mkDefault true;
oauth2-proxy = lib.mkDefault true;
croc = lib.mkDefault true;
microbin = lib.mkDefault true;
shlink = lib.mkDefault true;
};
};
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{ lib, config, minimal, ... }:
{
options.swarselsystems.profiles.personal = lib.mkEnableOption "is this a personal host";
config = lib.mkIf config.swarselsystems.profiles.personal {
swarselsystems.modules = {
options.swarselprofiles.personal = lib.mkEnableOption "is this a personal host";
config = lib.mkIf config.swarselprofiles.personal {
swarselmodules = {
packages = lib.mkDefault true;
pii = lib.mkDefault true;
general = lib.mkDefault true;
@ -55,6 +55,11 @@
ssh = lib.mkDefault true;
};
};
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
personal = lib.mkIf (!minimal) true;
};
};
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.reduced = lib.mkEnableOption "is this a reduced personal host";
config = lib.mkIf config.swarselsystems.profiles.reduced {
swarselsystems.modules = {
options.swarselprofiles.reduced = lib.mkEnableOption "is this a reduced personal host";
config = lib.mkIf config.swarselprofiles.reduced {
swarselmodules = {
packages = lib.mkDefault true;
pii = lib.mkDefault true;
general = lib.mkDefault true;

View file

@ -1,25 +1,23 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.server.syncserver = lib.mkEnableOption "is this a oci syncserver server";
config = lib.mkIf config.swarselsystems.profiles.server.syncserver {
swarselsystems = {
modules = {
options.swarselprofiles.server.syncserver = lib.mkEnableOption "is this a oci syncserver server";
config = lib.mkIf config.swarselprofiles.server.syncserver {
swarselmodules = {
general = lib.mkDefault true;
nix-ld = lib.mkDefault true;
pii = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
sops = lib.mkDefault true;
server = {
general = lib.mkDefault true;
nix-ld = lib.mkDefault true;
pii = lib.mkDefault true;
home-manager = lib.mkDefault true;
xserver = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
sops = lib.mkDefault true;
server = {
general = lib.mkDefault true;
packages = lib.mkDefault true;
nginx = lib.mkDefault true;
ssh = lib.mkDefault true;
forgejo = lib.mkDefault false;
ankisync = lib.mkDefault false;
};
packages = lib.mkDefault true;
nginx = lib.mkDefault true;
ssh = lib.mkDefault true;
forgejo = lib.mkDefault false;
ankisync = lib.mkDefault false;
};
};
};

View file

@ -1,8 +1,8 @@
{ lib, config, ... }:
{
options.swarselsystems.profiles.toto = lib.mkEnableOption "is this a toto (setup) host";
config = lib.mkIf config.swarselsystems.profiles.toto {
swarselsystems.modules = {
options.swarselprofiles.toto = lib.mkEnableOption "is this a toto (setup) host";
config = lib.mkIf config.swarselprofiles.toto {
swarselmodules = {
general = lib.mkDefault true;
packages = lib.mkDefault true;
home-manager = lib.mkDefault true;

View file

@ -1,12 +1,17 @@
{ lib, config, ... }:
{ lib, config, minimal, ... }:
{
options.swarselsystems.profiles.work = lib.mkEnableOption "is this a work host";
config = lib.mkIf config.swarselsystems.profiles.work {
swarselsystems.modules = {
options.swarselprofiles.work = lib.mkEnableOption "is this a work host";
config = lib.mkIf config.swarselprofiles.work {
swarselmodules = {
optional = {
work = lib.mkDefault true;
};
};
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
work = lib.mkIf (!minimal) true;
};
};
};