mirror of
https://github.com/alyraffauf/nixcfg.git
synced 2024-11-21 21:13:54 -05:00
migrate from raffauflabs flake and drop dependency (#102)
* migrate from raffauflabs and drop dependency * slateport/nginx: fix forĝejo url
This commit is contained in:
parent
3cbe9af978
commit
1b0edff306
21
flake.lock
21
flake.lock
|
@ -568,26 +568,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"raffauflabs": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1724047987,
|
|
||||||
"narHash": "sha256-2be2gK4DRyPwLbddSQ5A9I9UjLM/tGrgdltrosE2AsU=",
|
|
||||||
"owner": "alyraffauf",
|
|
||||||
"repo": "raffauflabs",
|
|
||||||
"rev": "fd6bb8de83bb23f0724cf464fe6ac4a3f07ed831",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "alyraffauf",
|
|
||||||
"repo": "raffauflabs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
|
@ -599,7 +579,6 @@
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"raffauflabs": "raffauflabs",
|
|
||||||
"stylix": "stylix"
|
"stylix": "stylix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
lanzaboote = {
|
lanzaboote = {
|
||||||
url = "github:nix-community/lanzaboote/v0.4.1";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
url = "github:nix-community/lanzaboote/v0.4.1";
|
||||||
};
|
};
|
||||||
|
|
||||||
nixhw = {
|
nixhw = {
|
||||||
|
@ -37,11 +37,6 @@
|
||||||
|
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
|
|
||||||
raffauflabs = {
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:alyraffauf/raffauflabs";
|
|
||||||
};
|
|
||||||
|
|
||||||
stylix = {
|
stylix = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:danth/stylix";
|
url = "github:danth/stylix";
|
||||||
|
|
|
@ -6,19 +6,18 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
archiveDirectory = "/mnt/Archive";
|
archiveDirectory = "/mnt/Archive";
|
||||||
domain = "raffauflabs.com";
|
|
||||||
mediaDirectory = "/mnt/Media";
|
mediaDirectory = "/mnt/Media";
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./disko.nix
|
./disko.nix
|
||||||
./home.nix
|
./home.nix
|
||||||
|
./raffauflabs.nix
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
./stylix.nix
|
./stylix.nix
|
||||||
self.inputs.nixhw.nixosModules.common-amd-cpu
|
self.inputs.nixhw.nixosModules.common-amd-cpu
|
||||||
self.inputs.nixhw.nixosModules.common-amd-gpu
|
self.inputs.nixhw.nixosModules.common-amd-gpu
|
||||||
self.inputs.nixhw.nixosModules.common-bluetooth
|
self.inputs.nixhw.nixosModules.common-bluetooth
|
||||||
self.inputs.nixhw.nixosModules.common-ssd
|
self.inputs.nixhw.nixosModules.common-ssd
|
||||||
self.inputs.raffauflabs.nixosModules.raffauflabs
|
|
||||||
self.nixosModules.common-auto-upgrade
|
self.nixosModules.common-auto-upgrade
|
||||||
self.nixosModules.common-base
|
self.nixosModules.common-base
|
||||||
self.nixosModules.common-locale
|
self.nixosModules.common-locale
|
||||||
|
@ -50,8 +49,6 @@ in {
|
||||||
networking.hostName = "mauville";
|
networking.hostName = "mauville";
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
forgejo.settings.service.DISABLE_REGISTRATION = lib.mkForce true;
|
|
||||||
|
|
||||||
samba = {
|
samba = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
|
@ -94,20 +91,6 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
transmission = {
|
|
||||||
enable = true;
|
|
||||||
credentialsFile = config.age.secrets.transmission.path;
|
|
||||||
openFirewall = true;
|
|
||||||
openRPCPort = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
download-dir = mediaDirectory;
|
|
||||||
peer-port = 51413;
|
|
||||||
rpc-bind-address = "0.0.0.0";
|
|
||||||
rpc-port = 9091;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables.GDK_SCALE = "1.25";
|
environment.variables.GDK_SCALE = "1.25";
|
||||||
|
@ -153,39 +136,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
raffauflabs = {
|
|
||||||
inherit domain;
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
containers.oci.freshRSS.enable = true;
|
|
||||||
|
|
||||||
services = {
|
|
||||||
audiobookshelf.enable = true;
|
|
||||||
|
|
||||||
ddclient = {
|
|
||||||
enable = true;
|
|
||||||
passwordFile = config.age.secrets.cloudflare.path;
|
|
||||||
protocol = "cloudflare";
|
|
||||||
};
|
|
||||||
|
|
||||||
forgejo.enable = true;
|
|
||||||
|
|
||||||
navidrome = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
lastfm = {
|
|
||||||
idFile = config.age.secrets.lastfmId.path;
|
|
||||||
secretFile = config.age.secrets.lastfmSecret.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
spotify = {
|
|
||||||
idFile = config.age.secrets.spotifyId.path;
|
|
||||||
secretFile = config.age.secrets.spotifySecret.path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plexMediaServer.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
147
hosts/mauville/raffauflabs.nix
Normal file
147
hosts/mauville/raffauflabs.nix
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
audiobookshelf.port = 13378;
|
||||||
|
domain = "raffauflabs.com";
|
||||||
|
mediaDirectory = "/mnt/Media";
|
||||||
|
musicDirectory = "${mediaDirectory}/Music";
|
||||||
|
|
||||||
|
navidrome = {
|
||||||
|
port = 4533;
|
||||||
|
|
||||||
|
lastfm = {
|
||||||
|
idFile = config.age.secrets.lastfmId.path;
|
||||||
|
secretFile = config.age.secrets.lastfmSecret.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
spotify = {
|
||||||
|
idFile = config.age.secrets.spotifyId.path;
|
||||||
|
secretFile = config.age.secrets.spotifySecret.path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
transmission = {
|
||||||
|
port = 9091;
|
||||||
|
bitTorrentPort = 5143;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
services = {
|
||||||
|
audiobookshelf = {
|
||||||
|
enable = true;
|
||||||
|
port = audiobookshelf.port;
|
||||||
|
};
|
||||||
|
|
||||||
|
forgejo = {
|
||||||
|
enable = true;
|
||||||
|
lfs.enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
actions = {
|
||||||
|
ENABLED = true;
|
||||||
|
DEFAULT_ACTIONS_URL = "https://github.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
cron = {
|
||||||
|
ENABLED = true;
|
||||||
|
RUN_AT_START = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFAULT.APP_NAME = "Forĝejo";
|
||||||
|
|
||||||
|
repository = {
|
||||||
|
DEFAULT_BRANCH = "master";
|
||||||
|
ENABLE_PUSH_CREATE_ORG = true;
|
||||||
|
ENABLE_PUSH_CREATE_USER = true;
|
||||||
|
PREFERRED_LICENSES = "GPL-3.0";
|
||||||
|
};
|
||||||
|
|
||||||
|
federation.ENABLED = true;
|
||||||
|
picture.ENABLE_FEDERATED_AVATAR = true;
|
||||||
|
security.PASSWORD_CHECK_PWN = true;
|
||||||
|
|
||||||
|
server = {
|
||||||
|
LANDING_PAGE = "explore";
|
||||||
|
ROOT_URL = "https://git.${domain}/";
|
||||||
|
};
|
||||||
|
|
||||||
|
service = {
|
||||||
|
ALLOW_ONLY_INTERNAL_REGISTRATION = true;
|
||||||
|
DISABLE_REGISTRATION = true;
|
||||||
|
ENABLE_NOTIFY_MAIL = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
session.COOKIE_SECURE = true;
|
||||||
|
|
||||||
|
ui.DEFAULT_THEME = "forgejo-auto";
|
||||||
|
"ui.meta" = {
|
||||||
|
AUTHOR = "Forĝejo @ ${domain}";
|
||||||
|
DESCRIPTION = "Self-hosted git forge for projects + toys.";
|
||||||
|
KEYWORDS = "git,source code,forge,forĝejo,aly raffauf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plex = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
transmission = {
|
||||||
|
enable = true;
|
||||||
|
credentialsFile = config.age.secrets.transmission.path;
|
||||||
|
openFirewall = true;
|
||||||
|
openRPCPort = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
download-dir = mediaDirectory;
|
||||||
|
peer-port = transmission.bitTorrentPort;
|
||||||
|
rpc-bind-address = "0.0.0.0";
|
||||||
|
rpc-port = transmission.port;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.navidrome.serviceConfig = let
|
||||||
|
navidromeConfig = builtins.toFile "navidrome.json" (lib.generators.toJSON {} {
|
||||||
|
Address = "0.0.0.0";
|
||||||
|
DefaultTheme = "Auto";
|
||||||
|
MusicFolder = musicDirectory;
|
||||||
|
Port = navidrome.port;
|
||||||
|
SubsonicArtistParticipations = true;
|
||||||
|
UIWelcomeMessage = "Welcome to Navidrome @ ${domain}";
|
||||||
|
"Spotify.ID" = "@spotifyClientId@";
|
||||||
|
"Spotify.Secret" = "@spotifyClientSecret@";
|
||||||
|
"LastFM.Enabled" = true;
|
||||||
|
"LastFM.ApiKey" = "@lastFMApiKey@";
|
||||||
|
"LastFM.Secret" = "@lastFMSecret@";
|
||||||
|
"LastFM.Language" = "en";
|
||||||
|
});
|
||||||
|
|
||||||
|
navidrome-secrets = pkgs.writeShellScript "navidrome-secrets" ''
|
||||||
|
lastFMApiKey=$(cat "${navidrome.lastfm.idFile}")
|
||||||
|
lastFMSecret=$(cat "${navidrome.lastfm.secretFile}")
|
||||||
|
spotifyClientId=$(cat "${navidrome.spotify.idFile}")
|
||||||
|
spotifyClientSecret=$(cat "${navidrome.spotify.secretFile}")
|
||||||
|
${pkgs.gnused}/bin/sed -e "s/@lastFMApiKey@/$lastFMApiKey/" -e "s/@lastFMSecret@/$lastFMSecret/" \
|
||||||
|
-e "s/@spotifyClientId@/$spotifyClientId/" -e "s/@spotifyClientSecret@/$spotifyClientSecret/" \
|
||||||
|
${navidromeConfig} > /var/lib/navidrome/navidrome.json
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
BindReadOnlyPaths = [
|
||||||
|
navidrome.lastfm.idFile
|
||||||
|
navidrome.lastfm.secretFile
|
||||||
|
navidrome.spotify.idFile
|
||||||
|
navidrome.spotify.secretFile
|
||||||
|
musicDirectory
|
||||||
|
];
|
||||||
|
|
||||||
|
ExecStartPre = navidrome-secrets;
|
||||||
|
ExecStart = lib.mkForce ''
|
||||||
|
${config.services.navidrome.package}/bin/navidrome --configfile /var/lib/navidrome/navidrome.json \
|
||||||
|
--datafolder /var/lib/navidrome/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,18 +2,16 @@
|
||||||
config,
|
config,
|
||||||
self,
|
self,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
domain = "raffauflabs.com";
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./disko.nix
|
./disko.nix
|
||||||
./home.nix
|
./home.nix
|
||||||
|
./raffauflabs.nix
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
self.inputs.nixhw.nixosModules.common-intel-cpu
|
self.inputs.nixhw.nixosModules.common-intel-cpu
|
||||||
self.inputs.nixhw.nixosModules.common-intel-gpu
|
self.inputs.nixhw.nixosModules.common-intel-gpu
|
||||||
self.inputs.nixhw.nixosModules.common-bluetooth
|
self.inputs.nixhw.nixosModules.common-bluetooth
|
||||||
self.inputs.nixhw.nixosModules.common-ssd
|
self.inputs.nixhw.nixosModules.common-ssd
|
||||||
self.inputs.raffauflabs.nixosModules.raffauflabs
|
|
||||||
self.nixosModules.common-auto-upgrade
|
self.nixosModules.common-auto-upgrade
|
||||||
self.nixosModules.common-base
|
self.nixosModules.common-base
|
||||||
self.nixosModules.common-locale
|
self.nixosModules.common-locale
|
||||||
|
@ -36,14 +34,6 @@ in {
|
||||||
|
|
||||||
hardware.enableAllFirmware = true;
|
hardware.enableAllFirmware = true;
|
||||||
networking.hostName = "slateport";
|
networking.hostName = "slateport";
|
||||||
|
|
||||||
services.k3s = {
|
|
||||||
enable = true;
|
|
||||||
clusterInit = true;
|
|
||||||
role = "server";
|
|
||||||
tokenFile = config.age.secrets.k3s.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
zramSwap.memoryPercent = 100;
|
zramSwap.memoryPercent = 100;
|
||||||
|
|
||||||
|
@ -62,15 +52,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
raffauflabs = {
|
|
||||||
inherit domain;
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
services.ddclient = {
|
|
||||||
enable = true;
|
|
||||||
passwordFile = config.age.secrets.cloudflare.path;
|
|
||||||
protocol = "cloudflare";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
132
hosts/slateport/raffauflabs.nix
Normal file
132
hosts/slateport/raffauflabs.nix
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
{config, ...}: let
|
||||||
|
ip = "192.168.0.103";
|
||||||
|
domain = "raffauflabs.com";
|
||||||
|
in {
|
||||||
|
networking = {
|
||||||
|
firewall.allowedTCPPorts = [80 443];
|
||||||
|
};
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
defaults.email = "alyraffauf@fastmail.com";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
ddclient = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
domains = [
|
||||||
|
"bt.${domain}"
|
||||||
|
"git.${domain}"
|
||||||
|
"music.${domain}"
|
||||||
|
"plex.${domain}"
|
||||||
|
"podcasts.${domain}"
|
||||||
|
domain
|
||||||
|
];
|
||||||
|
|
||||||
|
interval = "10min";
|
||||||
|
passwordFile = config.age.secrets.cloudflare.path;
|
||||||
|
protocol = "cloudflare";
|
||||||
|
ssl = true;
|
||||||
|
use = "web, web=dynamicdns.park-your-domain.com/getip, web-skip='Current IP Address: '";
|
||||||
|
username = "token";
|
||||||
|
zone = domain;
|
||||||
|
};
|
||||||
|
|
||||||
|
fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
bantime = "1h";
|
||||||
|
};
|
||||||
|
|
||||||
|
k3s = {
|
||||||
|
enable = true;
|
||||||
|
clusterInit = true;
|
||||||
|
role = "server";
|
||||||
|
tokenFile = config.age.secrets.k3s.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx = {
|
||||||
|
enable = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
|
||||||
|
virtualHosts = {
|
||||||
|
"bt.${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "${ip}:${toString 9091}";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_buffering off;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"git.${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://${ip}:${toString 3000}";
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 512M;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"music.${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "${ip}:${toString 4533}";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_buffering off;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"plex.${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "${ip}:32400";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
proxy_buffering off;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"podcasts.${domain}" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "${ip}:${toString 13378}";
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 500M;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_redirect http:// https://;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue