refactorings
This commit is contained in:
parent
761bdf91a0
commit
3361247e7e
6 changed files with 87 additions and 136 deletions
|
@ -1,8 +1,9 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./gui
|
./gui
|
||||||
|
./mainUser.nix
|
||||||
|
./media
|
||||||
./network
|
./network
|
||||||
./terminal
|
./terminal
|
||||||
./mainUser.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
13
nixos/components/media/default.nix
Normal file
13
nixos/components/media/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options.components.media = {
|
||||||
|
enable = lib.mkEnableOption "Media configurations";
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [ ./icecast.nix ];
|
||||||
|
|
||||||
|
config = mkIf config.components.media.enable {
|
||||||
|
# todo extract xorg stuff to prepare wayland
|
||||||
|
};
|
||||||
|
}
|
71
nixos/components/media/icecast.nix
Normal file
71
nixos/components/media/icecast.nix
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
# --------------------------------------------------
|
||||||
|
# How to use?
|
||||||
|
# * start the icecast
|
||||||
|
# * connect via mixxx to it.
|
||||||
|
# * add the podcast to mpd in the same network
|
||||||
|
# --------------------------------------------------
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
# todo : make option
|
||||||
|
user = "username";
|
||||||
|
password = "password";
|
||||||
|
mountPoint = "/radio.mp3";
|
||||||
|
maxListeners = 20;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
options.components.media.icecast.enable = mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
#default = config.components.media.enable;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (config.components.media.icecast.enable) {
|
||||||
|
|
||||||
|
services.icecast = {
|
||||||
|
enable = true;
|
||||||
|
hostname = config.networking.hostName;
|
||||||
|
admin = {
|
||||||
|
user = "palo";
|
||||||
|
password = "palo";
|
||||||
|
};
|
||||||
|
# http://icecast.org/docs/icecast-2.4.1/config-file.html
|
||||||
|
extraConf = ''
|
||||||
|
<mount type="normal">
|
||||||
|
<mount-name>${mountPoint}</mount-name>
|
||||||
|
<username>${user}</username>
|
||||||
|
<password>${password}</password>
|
||||||
|
<max-listeners>${toString maxListeners}</max-listeners>
|
||||||
|
<max-listener-duration>3600</max-listener-duration>
|
||||||
|
<charset>UTF8</charset>
|
||||||
|
<public>1</public>
|
||||||
|
<stream-name>Palos Awesome Stream</stream-name>
|
||||||
|
<stream-description>Kick ass Tracks</stream-description>
|
||||||
|
<stream-url>https://ingolf-wagner.de</stream-url>
|
||||||
|
<genre>classical</genre>
|
||||||
|
<bitrate>320</bitrate>
|
||||||
|
<type>application/ogg</type>
|
||||||
|
<subtype>vorbis</subtype>
|
||||||
|
<hidden>1</hidden>
|
||||||
|
<burst-size>65536</burst-size>
|
||||||
|
<mp3-metadata-interval>4096</mp3-metadata-interval>
|
||||||
|
</mount>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# use port which I can see in iptable -L -v -n
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [ config.services.icecast.listen.port ];
|
||||||
|
allowedUDPPorts = [ config.services.icecast.listen.port ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# don't want to have the service running all the time
|
||||||
|
# ---------------------------------------------------
|
||||||
|
systemd.services.icecast.wantedBy = lib.mkForce [ ];
|
||||||
|
systemd.services.icecast.after = lib.mkForce [ ];
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,7 +3,7 @@
|
||||||
# networking.firewall.trustedInterfaces = [ "wg0" ];
|
# networking.firewall.trustedInterfaces = [ "wg0" ];
|
||||||
networking.firewall.allowedUDPPorts = [ 51820 ];
|
networking.firewall.allowedUDPPorts = [ 51820 ];
|
||||||
sops.secrets.wireguard_private = { };
|
sops.secrets.wireguard_private = { };
|
||||||
|
#boot.kernel.sysctl."net.ipv4.ip_forward" = true;
|
||||||
|
|
||||||
# Enable WireGuard
|
# Enable WireGuard
|
||||||
networking.wg-quick.interfaces = {
|
networking.wg-quick.interfaces = {
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
let
|
|
||||||
|
|
||||||
library = import ../../library { inherit pkgs lib; };
|
|
||||||
|
|
||||||
mixxxBin = pkgs.writeShellScriptBin "mixxx"
|
|
||||||
"${pkgs.mixxx}/bin/mixxx --settingsPath ${config.users.users.mainUser.home}/music-library/mixxx";
|
|
||||||
mixxxDesktop = library.desktopFile mixxxBin { longName = "Mixxx"; };
|
|
||||||
|
|
||||||
mixxxFreeBin = pkgs.writeShellScriptBin "mixxx-free"
|
|
||||||
"${pkgs.mixxx}/bin/mixxx --settingsPath ${config.users.users.mainUser.home}/music-library-free/mixxx";
|
|
||||||
mixxxFreeDesktop = library.desktopFile mixxxFreeBin { longName = "Mixxx"; };
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
system.custom.audio = {
|
|
||||||
enable = true;
|
|
||||||
sinks = [{
|
|
||||||
name = "movieLimiterSink";
|
|
||||||
queue = [
|
|
||||||
{
|
|
||||||
# compress all sounds
|
|
||||||
plugin = "dyson_compress_1403";
|
|
||||||
label = "dysonCompress";
|
|
||||||
control = [
|
|
||||||
"0" # peak limit (dB)
|
|
||||||
"1" # release time (secons)
|
|
||||||
"0.2" # fast compression ration (unknown what that means)
|
|
||||||
"0.8" # compression ratio
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# limit sound
|
|
||||||
plugin = "fast_lookahead_limiter_1913";
|
|
||||||
label = "fastLookaheadLimiter";
|
|
||||||
control = [
|
|
||||||
"20" # input gain (db)
|
|
||||||
"-10" # limit (db)
|
|
||||||
"1.1" # release time (s)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
# avoid deep sounds
|
|
||||||
plugin = "dj_eq_1901";
|
|
||||||
label = "dj_eq";
|
|
||||||
control = [
|
|
||||||
"-9" # low gain (db) (100Hz)
|
|
||||||
"0" # mid gain (db) (1000Hz)
|
|
||||||
"0" # high gain (db) (10000Hz)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.custom = {
|
|
||||||
easytag.enable = true;
|
|
||||||
espeak.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
audacious
|
|
||||||
sox
|
|
||||||
id3v2
|
|
||||||
|
|
||||||
mixxxBin
|
|
||||||
mixxxDesktop
|
|
||||||
mixxxFreeBin
|
|
||||||
mixxxFreeDesktop
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,61 +0,0 @@
|
||||||
# --------------------------------------------------
|
|
||||||
# How to use?
|
|
||||||
# * start the icecast
|
|
||||||
# * connect via mixxx to it.
|
|
||||||
# * add the podcast to mpd in the same network
|
|
||||||
# --------------------------------------------------
|
|
||||||
|
|
||||||
{ pkgs, config, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
user = "username";
|
|
||||||
password = "password";
|
|
||||||
mountPoint = "/radio.mp3";
|
|
||||||
maxListeners = 20;
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
services.icecast = {
|
|
||||||
enable = true;
|
|
||||||
hostname = config.networking.hostName;
|
|
||||||
admin = {
|
|
||||||
user = "palo";
|
|
||||||
password = "palo";
|
|
||||||
};
|
|
||||||
# http://icecast.org/docs/icecast-2.4.1/config-file.html
|
|
||||||
extraConf = ''
|
|
||||||
<mount type="normal">
|
|
||||||
<mount-name>${mountPoint}</mount-name>
|
|
||||||
<username>${user}</username>
|
|
||||||
<password>${password}</password>
|
|
||||||
<max-listeners>${toString maxListeners}</max-listeners>
|
|
||||||
<max-listener-duration>3600</max-listener-duration>
|
|
||||||
<charset>UTF8</charset>
|
|
||||||
<public>1</public>
|
|
||||||
<stream-name>Palos Awesome Stream</stream-name>
|
|
||||||
<stream-description>Kick ass Tracks</stream-description>
|
|
||||||
<stream-url>https://ingolf-wagner.de</stream-url>
|
|
||||||
<genre>classical</genre>
|
|
||||||
<bitrate>320</bitrate>
|
|
||||||
<type>application/ogg</type>
|
|
||||||
<subtype>vorbis</subtype>
|
|
||||||
<hidden>1</hidden>
|
|
||||||
<burst-size>65536</burst-size>
|
|
||||||
<mp3-metadata-interval>4096</mp3-metadata-interval>
|
|
||||||
</mount>
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# use port which I can see in iptable -L -v -n
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPorts = [ config.services.icecast.listen.port ];
|
|
||||||
allowedUDPPorts = [ config.services.icecast.listen.port ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# don't want to have the service running all the time
|
|
||||||
# ---------------------------------------------------
|
|
||||||
systemd.services.icecast.wantedBy = lib.mkForce [ ];
|
|
||||||
systemd.services.icecast.after = lib.mkForce [ ];
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in a new issue