Compare commits
No commits in common. "a3b03cf91b1d8786c22308e356595366753d1c3a" and "1c9fa418b3c8c7d9504210d87a97b1e68eab856d" have entirely different histories.
a3b03cf91b
...
1c9fa418b3
5
Makefile
5
Makefile
@ -25,8 +25,3 @@ clean-old-nixos-profiles:
|
|||||||
.PHONY: gc
|
.PHONY: gc
|
||||||
gc:
|
gc:
|
||||||
nix store gc
|
nix store gc
|
||||||
|
|
||||||
# Update a flake input by name (ex: 'nixpkgs')
|
|
||||||
.PHONY: update-input
|
|
||||||
update-input:
|
|
||||||
nix flake update $(filter-out $@,$(MAKECMDGOALS))
|
|
@ -92,7 +92,5 @@ in
|
|||||||
|
|
||||||
# Enable wayland support in various chromium based applications
|
# Enable wayland support in various chromium based applications
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
fonts.packages = with pkgs; [ nerd-fonts.symbols-only ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
./matrix.nix
|
./matrix.nix
|
||||||
./zerobin.nix
|
./zerobin.nix
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
|
./radio.nix
|
||||||
./samba.nix
|
./samba.nix
|
||||||
./owncast.nix
|
./owncast.nix
|
||||||
./mailserver.nix
|
./mailserver.nix
|
||||||
|
@ -28,6 +28,7 @@ in
|
|||||||
indexDir = "/var/lib/mailindex";
|
indexDir = "/var/lib/mailindex";
|
||||||
enableManageSieve = true;
|
enableManageSieve = true;
|
||||||
fullTextSearch.enable = true;
|
fullTextSearch.enable = true;
|
||||||
|
fullTextSearch.indexAttachments = true;
|
||||||
fullTextSearch.memoryLimit = 500;
|
fullTextSearch.memoryLimit = 500;
|
||||||
inherit domains;
|
inherit domains;
|
||||||
loginAccounts = {
|
loginAccounts = {
|
||||||
|
@ -8,7 +8,7 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
https = true;
|
https = true;
|
||||||
package = pkgs.nextcloud31;
|
package = pkgs.nextcloud30;
|
||||||
hostName = "neet.cloud";
|
hostName = "neet.cloud";
|
||||||
config.dbtype = "sqlite";
|
config.dbtype = "sqlite";
|
||||||
config.adminuser = "jeremy";
|
config.adminuser = "jeremy";
|
||||||
|
75
common/server/radio.nix
Normal file
75
common/server/radio.nix
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.radio;
|
||||||
|
radioPackage = config.inputs.radio.packages.${config.currentSystem}.radio;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.radio = {
|
||||||
|
enable = lib.mkEnableOption "enable radio";
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "radio";
|
||||||
|
description = ''
|
||||||
|
The user radio should run as
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
group = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "radio";
|
||||||
|
description = ''
|
||||||
|
The group radio should run as
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
dataDir = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/var/lib/radio";
|
||||||
|
description = ''
|
||||||
|
Path to the radio data directory
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
host = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
Domain radio is hosted on
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
nginx = lib.mkEnableOption "enable nginx";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.icecast = {
|
||||||
|
enable = true;
|
||||||
|
hostname = cfg.host;
|
||||||
|
mount = "stream.mp3";
|
||||||
|
fallback = "fallback.mp3";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${cfg.host} = lib.mkIf cfg.nginx {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations."/".root = config.inputs.radio-web;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.${cfg.user} = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = cfg.group;
|
||||||
|
home = cfg.dataDir;
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
users.groups.${cfg.group} = { };
|
||||||
|
systemd.services.radio = {
|
||||||
|
enable = true;
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig.ExecStart = "${radioPackage}/bin/radio ${config.services.icecast.listen.address}:${toString config.services.icecast.listen.port} ${config.services.icecast.mount} 5500";
|
||||||
|
serviceConfig.User = cfg.user;
|
||||||
|
serviceConfig.Group = cfg.group;
|
||||||
|
serviceConfig.WorkingDirectory = cfg.dataDir;
|
||||||
|
preStart = ''
|
||||||
|
mkdir -p ${cfg.dataDir}
|
||||||
|
chown ${cfg.user} ${cfg.dataDir}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -21,6 +21,8 @@
|
|||||||
shellInit = ''
|
shellInit = ''
|
||||||
# disable annoying fish shell greeting
|
# disable annoying fish shell greeting
|
||||||
set fish_greeting
|
set fish_greeting
|
||||||
|
|
||||||
|
alias sudo="doas"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -34,13 +36,6 @@
|
|||||||
io_rand_write = "${pkgs.fio}/bin/fio --name TEST --eta-newline=5s --filename=temp.file --rw=randrw --size=2g --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting; rm temp.file";
|
io_rand_write = "${pkgs.fio}/bin/fio --name TEST --eta-newline=5s --filename=temp.file --rw=randrw --size=2g --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting; rm temp.file";
|
||||||
|
|
||||||
llsblk = "lsblk -o +uuid,fsType";
|
llsblk = "lsblk -o +uuid,fsType";
|
||||||
|
|
||||||
sudo = "doas";
|
|
||||||
|
|
||||||
ls = "pls";
|
|
||||||
ls2 = "eza";
|
|
||||||
|
|
||||||
explorer = "broot";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
|
159
flake.lock
generated
159
flake.lock
generated
@ -14,11 +14,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1750173260,
|
"lastModified": 1723293904,
|
||||||
"narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=",
|
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "531beac616433bac6f9e2a19feb8e99a22a66baf",
|
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -74,11 +74,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744478979,
|
"lastModified": 1700795494,
|
||||||
"narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "43975d782b418ebf4969e9ccba82466728c2851b",
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -101,11 +101,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1749105467,
|
"lastModified": 1727447169,
|
||||||
"narHash": "sha256-hXh76y/wDl15almBcqvjryB50B0BaiXJKk20f314RoE=",
|
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
|
||||||
"owner": "serokell",
|
"owner": "serokell",
|
||||||
"repo": "deploy-rs",
|
"repo": "deploy-rs",
|
||||||
"rev": "6bc76b872374845ba9d645a2f012b764fecd765f",
|
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -117,11 +117,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747046372,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -137,11 +137,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1726560853,
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -150,54 +150,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"git-hooks": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": [
|
|
||||||
"simple-nixos-mailserver",
|
|
||||||
"flake-compat"
|
|
||||||
],
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
|
||||||
"simple-nixos-mailserver",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1750779888,
|
|
||||||
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "git-hooks.nix",
|
|
||||||
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "git-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"simple-nixos-mailserver",
|
|
||||||
"git-hooks",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709087332,
|
|
||||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@ -205,16 +157,15 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752208517,
|
"lastModified": 1740845322,
|
||||||
"narHash": "sha256-aRY1cYOdVdXdNjcL/Twpa27CknO7pVHxooPsBizDraE=",
|
"narHash": "sha256-AXEgFj3C0YJhu9k1OhbRhiA6FnDr81dQZ65U3DhaWpw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c6a01e54af81b381695db796a43360bf6db5702f",
|
"rev": "fcac3d6d88302a5e64f6cb8014ac785e08874c8d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-25.05",
|
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@ -226,11 +177,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752346111,
|
"lastModified": 1728263287,
|
||||||
"narHash": "sha256-SVxCIYnbED0rNYSpm3QQoOhqxYRp1GuE9FkyM5Y2afs=",
|
"narHash": "sha256-GJDtsxz2/zw6g/Nrp4XVWBS5IaZ7ZUkuvxPOBEDe7pg=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "deff7a9a0aa98a08d8c7839fe2658199ce9828f8",
|
"rev": "5fce10c871bab6d7d5ac9e5e7efbb3a2783f5259",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -241,11 +192,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752048960,
|
"lastModified": 1728056216,
|
||||||
"narHash": "sha256-gATnkOe37eeVwKKYCsL+OnS2gU4MmLuZFzzWCtaKLI8=",
|
"narHash": "sha256-IrO06gFUDTrTlIP3Sz+mRB6WUoO2YsgMtOD3zi0VEt0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "7ced9122cff2163c6a0212b8d1ec8c33a1660806",
|
"rev": "b7ca02c7565fbf6d27ff20dd6dbd49c5b82eef28",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -257,20 +208,61 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752162966,
|
"lastModified": 1740374225,
|
||||||
"narHash": "sha256-3MxxkU8ZXMHXcbFz7UE4M6qnIPTYGcE/7EMqlZNnVDE=",
|
"narHash": "sha256-Dnmzy5YWUVj3BNaZo5jRpZslXexbNKEk3ADGGcz9RpY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "10e687235226880ed5e9f33f1ffa71fe60f2638a",
|
"rev": "3349acd765bdffe454f7c8bbc450855577c1a6cf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-25.05",
|
"ref": "master",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"radio": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": [
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1631585589,
|
||||||
|
"narHash": "sha256-q4o/4/2pEuJyaKZwNQC5KHnzG1obClzFB7zWk9XSDfY=",
|
||||||
|
"ref": "main",
|
||||||
|
"rev": "5bf607fed977d41a269942a7d1e92f3e6d4f2473",
|
||||||
|
"revCount": 38,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.neet.dev/zuckerberg/radio.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "main",
|
||||||
|
"rev": "5bf607fed977d41a269942a7d1e92f3e6d4f2473",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.neet.dev/zuckerberg/radio.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"radio-web": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1652121792,
|
||||||
|
"narHash": "sha256-j1Y9MAjUVNgyFSeGzPoqibAnEysJDjZSXukVfQ7+bsQ=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "72e7a9e80b780c84ed8d4a6374bfbb242701f900",
|
||||||
|
"revCount": 5,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.neet.dev/zuckerberg/radio-web.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.neet.dev/zuckerberg/radio-web.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
@ -282,6 +274,8 @@
|
|||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"radio": "radio",
|
||||||
|
"radio-web": "radio-web",
|
||||||
"simple-nixos-mailserver": "simple-nixos-mailserver",
|
"simple-nixos-mailserver": "simple-nixos-mailserver",
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
}
|
}
|
||||||
@ -292,25 +286,24 @@
|
|||||||
"flake-compat": [
|
"flake-compat": [
|
||||||
"flake-compat"
|
"flake-compat"
|
||||||
],
|
],
|
||||||
"git-hooks": "git-hooks",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nixpkgs-25_05": [
|
"nixpkgs-24_05": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747965231,
|
"lastModified": 1722877200,
|
||||||
"narHash": "sha256-BW3ktviEhfCN/z3+kEyzpDKAI8qFTwO7+S0NVA0C90o=",
|
"narHash": "sha256-qgKDNJXs+od+1UbRy62uk7dYal3h98I4WojfIqMoGcg=",
|
||||||
"owner": "simple-nixos-mailserver",
|
"owner": "simple-nixos-mailserver",
|
||||||
"repo": "nixos-mailserver",
|
"repo": "nixos-mailserver",
|
||||||
"rev": "53007af63fade28853408370c4c600a63dd97f41",
|
"rev": "af7d3bf5daeba3fc28089b015c0dd43f06b176f2",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "simple-nixos-mailserver",
|
"owner": "simple-nixos-mailserver",
|
||||||
"ref": "nixos-25.05",
|
"ref": "master",
|
||||||
"repo": "nixos-mailserver",
|
"repo": "nixos-mailserver",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
}
|
}
|
||||||
|
23
flake.nix
23
flake.nix
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
# nixpkgs
|
# nixpkgs
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/master";
|
||||||
|
|
||||||
# Common Utils Among flake inputs
|
# Common Utils Among flake inputs
|
||||||
systems.url = "github:nix-systems/default";
|
systems.url = "github:nix-systems/default";
|
||||||
@ -19,16 +19,16 @@
|
|||||||
|
|
||||||
# Home Manager
|
# Home Manager
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.05";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Mail Server
|
# Mail Server
|
||||||
simple-nixos-mailserver = {
|
simple-nixos-mailserver = {
|
||||||
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05";
|
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
nixpkgs.follows = "nixpkgs";
|
||||||
nixpkgs-25_05.follows = "nixpkgs";
|
nixpkgs-24_05.follows = "nixpkgs";
|
||||||
flake-compat.follows = "flake-compat";
|
flake-compat.follows = "flake-compat";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -43,6 +43,19 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Radio
|
||||||
|
radio = {
|
||||||
|
url = "git+https://git.neet.dev/zuckerberg/radio.git?ref=main&rev=5bf607fed977d41a269942a7d1e92f3e6d4f2473";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
flake-utils.follows = "flake-utils";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
radio-web = {
|
||||||
|
url = "git+https://git.neet.dev/zuckerberg/radio-web.git";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
# Dailybot
|
# Dailybot
|
||||||
dailybuild_modules = {
|
dailybuild_modules = {
|
||||||
url = "git+https://git.neet.dev/zuckerberg/dailybot.git";
|
url = "git+https://git.neet.dev/zuckerberg/dailybot.git";
|
||||||
@ -118,7 +131,7 @@
|
|||||||
name = "nixpkgs-patched";
|
name = "nixpkgs-patched";
|
||||||
src = nixpkgs;
|
src = nixpkgs;
|
||||||
patches = [
|
patches = [
|
||||||
# ./patches/gamepadui.patch
|
./patches/gamepadui.patch
|
||||||
./patches/dont-break-nix-serve.patch
|
./patches/dont-break-nix-serve.patch
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -11,36 +11,6 @@ in
|
|||||||
home.stateVersion = "24.11";
|
home.stateVersion = "24.11";
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
services.ssh-agent.enable = true;
|
|
||||||
|
|
||||||
# System Monitoring
|
|
||||||
programs.btop.enable = true;
|
|
||||||
programs.bottom.enable = true;
|
|
||||||
|
|
||||||
# Modern "ls" replacement
|
|
||||||
programs.pls.enable = true;
|
|
||||||
programs.eza.enable = true;
|
|
||||||
|
|
||||||
# Graphical terminal
|
|
||||||
programs.ghostty.enable = thisMachineIsPersonal;
|
|
||||||
|
|
||||||
# Advanced terminal file explorer
|
|
||||||
programs.broot.enable = true;
|
|
||||||
|
|
||||||
# Shell promt theming
|
|
||||||
programs.fish.enable = true;
|
|
||||||
programs.starship.enable = true;
|
|
||||||
programs.starship.enableFishIntegration = true;
|
|
||||||
programs.starship.enableInteractive = true;
|
|
||||||
# programs.oh-my-posh.enable = true;
|
|
||||||
# programs.oh-my-posh.enableFishIntegration = true;
|
|
||||||
|
|
||||||
# Advanced search
|
|
||||||
programs.ripgrep.enable = true;
|
|
||||||
|
|
||||||
# tldr: Simplified, example based and community-driven man pages.
|
|
||||||
programs.tealdeer.enable = true;
|
|
||||||
|
|
||||||
programs.zed-editor = {
|
programs.zed-editor = {
|
||||||
enable = thisMachineIsPersonal;
|
enable = thisMachineIsPersonal;
|
||||||
extensions = [
|
extensions = [
|
||||||
|
@ -56,6 +56,44 @@
|
|||||||
config.services.drastikbot.dataDir
|
config.services.drastikbot.dataDir
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# music radio
|
||||||
|
vpn-container.enable = true;
|
||||||
|
vpn-container.config = {
|
||||||
|
services.radio = {
|
||||||
|
enable = true;
|
||||||
|
host = "radio.runyan.org";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pia.wireguard.badPortForwardPorts = [ ];
|
||||||
|
services.nginx.virtualHosts = {
|
||||||
|
"radio.runyan.org" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations = {
|
||||||
|
"/stream.mp3" = {
|
||||||
|
proxyPass = "http://vpn.containers:8001/stream.mp3";
|
||||||
|
extraConfig = ''
|
||||||
|
add_header Access-Control-Allow-Origin *;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"/".root = config.inputs.radio-web;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"radio.neet.space" = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
locations = {
|
||||||
|
"/stream.mp3" = {
|
||||||
|
proxyPass = "http://vpn.containers:8001/stream.mp3";
|
||||||
|
extraConfig = ''
|
||||||
|
add_header Access-Control-Allow-Origin *;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
"/".root = config.inputs.radio-web;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# matrix home server
|
# matrix home server
|
||||||
services.matrix = {
|
services.matrix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -214,6 +214,15 @@
|
|||||||
statusCheck = true;
|
statusCheck = true;
|
||||||
id = "0_836_matrix";
|
id = "0_836_matrix";
|
||||||
};
|
};
|
||||||
|
radio = {
|
||||||
|
title = "Radio";
|
||||||
|
description = "Radio service";
|
||||||
|
icon = "generative";
|
||||||
|
url = "https://radio.runyan.org";
|
||||||
|
target = "sametab";
|
||||||
|
statusCheck = true;
|
||||||
|
id = "1_836_radio";
|
||||||
|
};
|
||||||
mumble = {
|
mumble = {
|
||||||
title = "Mumble";
|
title = "Mumble";
|
||||||
description = "voice.neet.space";
|
description = "voice.neet.space";
|
||||||
@ -271,6 +280,7 @@
|
|||||||
};
|
};
|
||||||
servicesList = [
|
servicesList = [
|
||||||
servicesItems.matrix
|
servicesItems.matrix
|
||||||
|
servicesItems.radio
|
||||||
servicesItems.mumble
|
servicesItems.mumble
|
||||||
servicesItems.irc
|
servicesItems.irc
|
||||||
servicesItems.git
|
servicesItems.git
|
||||||
|
@ -75,32 +75,6 @@
|
|||||||
services.lidarr.enable = true;
|
services.lidarr.enable = true;
|
||||||
services.lidarr.user = "public_data";
|
services.lidarr.user = "public_data";
|
||||||
services.lidarr.group = "public_data";
|
services.lidarr.group = "public_data";
|
||||||
services.recyclarr = {
|
|
||||||
enable = true;
|
|
||||||
configuration = {
|
|
||||||
radarr.radarr_main = {
|
|
||||||
api_key = {
|
|
||||||
_secret = "/run/credentials/recyclarr.service/radarr-api-key";
|
|
||||||
};
|
|
||||||
base_url = "http://localhost:7878";
|
|
||||||
|
|
||||||
quality_definition.type = "movie";
|
|
||||||
};
|
|
||||||
sonarr.sonarr_main = {
|
|
||||||
api_key = {
|
|
||||||
_secret = "/run/credentials/recyclarr.service/sonarr-api-key";
|
|
||||||
};
|
|
||||||
base_url = "http://localhost:8989";
|
|
||||||
|
|
||||||
quality_definition.type = "series";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.recyclarr.serviceConfig.LoadCredential = [
|
|
||||||
"radarr-api-key:/run/agenix/radarr-api-key"
|
|
||||||
"sonarr-api-key:/run/agenix/sonarr-api-key"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.transmission = {
|
services.transmission = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -171,8 +145,6 @@
|
|||||||
8686 # lidarr
|
8686 # lidarr
|
||||||
9091 # transmission web
|
9091 # transmission web
|
||||||
];
|
];
|
||||||
age.secrets.radarr-api-key.file = ../../../secrets/radarr-api-key.age;
|
|
||||||
age.secrets.sonarr-api-key.file = ../../../secrets/sonarr-api-key.age;
|
|
||||||
|
|
||||||
# jellyfin
|
# jellyfin
|
||||||
# jellyfin cannot run in the vpn container and use hardware encoding
|
# jellyfin cannot run in the vpn container and use hardware encoding
|
||||||
|
@ -47,7 +47,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
extraComponents = [
|
extraComponents = [
|
||||||
"default_config"
|
"default_config"
|
||||||
"rest_command"
|
|
||||||
"esphome"
|
"esphome"
|
||||||
"met"
|
"met"
|
||||||
"radio_browser"
|
"radio_browser"
|
||||||
@ -76,6 +75,7 @@
|
|||||||
"zha"
|
"zha"
|
||||||
"bluetooth"
|
"bluetooth"
|
||||||
];
|
];
|
||||||
|
# config = null;
|
||||||
config = {
|
config = {
|
||||||
# Includes dependencies for a basic setup
|
# Includes dependencies for a basic setup
|
||||||
# https://www.home-assistant.io/integrations/default_config/
|
# https://www.home-assistant.io/integrations/default_config/
|
||||||
@ -94,15 +94,6 @@
|
|||||||
];
|
];
|
||||||
# Allow using automations generated from the UI
|
# Allow using automations generated from the UI
|
||||||
"automation ui" = "!include automations.yaml";
|
"automation ui" = "!include automations.yaml";
|
||||||
|
|
||||||
"rest_command" = {
|
|
||||||
json_post_request = {
|
|
||||||
url = "{{ url }}";
|
|
||||||
method = "POST";
|
|
||||||
content_type = "application/json";
|
|
||||||
payload = "{{ payload | default('{}') }}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
"gitea-actions-runner"
|
"gitea-actions-runner"
|
||||||
"frigate"
|
"frigate"
|
||||||
"zigbee"
|
"zigbee"
|
||||||
"media-server"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwiXcUFtAvZCayhu4+AIcF+Ktrdgv9ee/mXSIhJbp4q";
|
hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAwiXcUFtAvZCayhu4+AIcF+Ktrdgv9ee/mXSIhJbp4q";
|
||||||
|
Binary file not shown.
@ -60,8 +60,4 @@ with roles;
|
|||||||
|
|
||||||
# zigbee2mqtt secrets
|
# zigbee2mqtt secrets
|
||||||
"zigbee2mqtt.yaml.age".publicKeys = zigbee;
|
"zigbee2mqtt.yaml.age".publicKeys = zigbee;
|
||||||
|
|
||||||
# Sonarr and Radarr secrets
|
|
||||||
"radarr-api-key.age".publicKeys = media-server;
|
|
||||||
"sonarr-api-key.age".publicKeys = media-server;
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 hPp1nw NkdwenOkJJKKoezAE1jG20cxwOFk2DVsbMoTaw6ce0M
|
|
||||||
8sV6ZJupuSaktW2MaAWg0BqtX1j5I0R3Oq1wFKoXP0M
|
|
||||||
-> ssh-ed25519 w3nu8g vJ7zMw2Ruh50ufkxrttuhXT2E3c8bvZnvp0xpkCGhTo
|
|
||||||
xpQOVyGwQhoAi/79ZISCxAvnNiRwMbgQ42H5V0zQe10
|
|
||||||
--- 57doMaI074hj/Ko2mWqFHcqEPRR24C7U1QbDOCPIOKI
|
|
||||||
ó(D‹êøÄ·QÉ2âóvzŸwè¬*®–´ÇaO’¯N/1GijïeøŸz<C5B8>Q(°mgd•y±p¬’<C2AC>P
|
|
||||||
|
|
||||||
ÍaÑC€8¼
|
|
Loading…
x
Reference in New Issue
Block a user