lots of shit

This commit is contained in:
fwastring 2025-10-06 13:33:47 +02:00
parent b55175a527
commit 5d10961778
17 changed files with 475 additions and 256 deletions

49
flake.lock generated
View file

@ -100,6 +100,24 @@
"type": "github"
}
},
"catppuccin": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1759572023,
"narHash": "sha256-2fzYq/m2PXie5WZO5LhyiZrTIUdUFp1SCLZAwvPL5xo=",
"owner": "catppuccin",
"repo": "nix",
"rev": "eeada12912d80d04733383d231a9d66172858718",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "nix",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
@ -455,7 +473,7 @@
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"nixpkgs": "nixpkgs_2",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
@ -673,7 +691,7 @@
"git-hooks": "git-hooks",
"hercules-ci-effects": "hercules-ci-effects",
"neovim-src": "neovim-src",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix"
},
"locked": {
@ -707,6 +725,22 @@
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759381078,
"narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1757487488,
"narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=",
@ -722,7 +756,7 @@
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs_3": {
"locked": {
"lastModified": 1758029226,
"narHash": "sha256-TjqVmbpoCqWywY9xIZLTf6ANFvDCXdctCjoYuYPYdMI=",
@ -738,7 +772,7 @@
"type": "github"
}
},
"nixpkgs_3": {
"nixpkgs_4": {
"locked": {
"lastModified": 1758035966,
"narHash": "sha256-qqIJ3yxPiB0ZQTT9//nFGQYn8X/PBoJbofA7hRKZnmE=",
@ -754,7 +788,7 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_5": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
@ -820,11 +854,12 @@
},
"root": {
"inputs": {
"catppuccin": "catppuccin",
"home-manager": "home-manager",
"hyprland": "hyprland",
"minimal-tmux": "minimal-tmux",
"neovim-nightly-overlay": "neovim-nightly-overlay",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_4",
"sops-nix": "sops-nix",
"stylix": "stylix",
"typsite": "typsite"
@ -832,7 +867,7 @@
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_4"
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1749004659,

View file

@ -17,6 +17,8 @@
inputs.nixpkgs.follows = "nixpkgs";
};
catppuccin.url = "github:catppuccin/nix";
# Neovim
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
@ -39,7 +41,7 @@
home-manager,
stylix,
sops-nix,
typsite,
catppuccin,
...
}@inputs:
let
@ -81,6 +83,7 @@
stylix.nixosModules.stylix
home-manager.nixosModules.home-manager
sops-nix.nixosModules.sops
catppuccin.nixosModules.catppuccin
];
};
archive = nixpkgs.lib.nixosSystem {

View file

@ -0,0 +1,17 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View file

@ -35,12 +35,26 @@
security.sudo.wheelNeedsPassword = false;
users.users.root.openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDALsdpwvC0w/Aj+1fWtzJyyWoUrGkdh8o2thVHeQQBNo0D7cmVberYmi4Cv9gWGX6PaElrnOl0KRdGyro2wxOYokSxgk2VgWW67BFITAQAbKyG2NhXXPbhb4jccDo7WH7TtOG8IofuJTPRu1Duda6k4RN0I0CkyAN6LGX+zy49cq0qKf9ijXYhCDYNih3+Fu/ig0aW/SYmsVoUl2VFTWdI5x5/wLvIjTEZhmAtYIeYADaLnom356cFrUysZa++FUujQAz3Ow236BvP95XZdTsqvfWNZFNIpC9VYF72JeIDCs5wDIr0GFmanF2On1nar+jJpoOE8SdHt357p5g/PqXV5TisN2xQRkqVwO9tWtMl4sF84jA4ULnY2gQWv9jErMxymUQ1IwuPUzDDlbRHCtfexAtkBy7wv6xslKAzG1QahvF/btNs5Caj3LN31rgAuxyooCbKGKTeBP3kHPKcz1iupgidfbO/QqVXBRQJTEdGyAKa8hVmLQZZPC/XUhxESAk= fw@fw-nix"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8ku8iCb7tXd/tfxYDW+Tj8K9kpfrYZciYUZ6tBpO80inm4EImtfyEeJTuqDWMKov2BftUKs8brNeTBCXUEvU1P0+cpOP9RtYA5tfBXf3su+iVSswJJStIxNboXHrEGKdJJRNsTv/9agshDSUBy6G5TI1cXhv/updornfA4fwOMqOmtlYEn6XCRnsrO6NBLc/uLckdbF75HOsoLvezRvuqTLjpapjaUKGVPrgNXiclIKHmuOx71kgD4FX3rSz9FgKjnfu3a7DBbrHsf/g+N9PjNF1muN9UOV6nK3WwiO9BMWi7NpAWfzJOeZg9chqzI+U6CcsqYVeESgL41so+dnv3 fw@laptop"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP34dnsZSnWdDvd+3BXDwcw7wP0PjPEx2eCdBQJyGD6O fw@laptop"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII60tdNsG0z9q2jHmoTKvkeLQE6OF0bmTsDX1bpqpoG7 fw@jobb"
];
# Restic
users.users.restic = {
isNormalUser = true;
createHome = true;
home = "/home/restic";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP34dnsZSnWdDvd+3BXDwcw7wP0PjPEx2eCdBQJyGD6O fw@laptop"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII60tdNsG0z9q2jHmoTKvkeLQE6OF0bmTsDX1bpqpoG7 fw@jobb"
];
};
# Where repos will live (you can choose a different path/disk)
systemd.tmpfiles.rules = [
"d /srv/restic 0750 restic restic -"
];
networking.firewall.allowedUDPPorts = [
22000
21027
@ -49,6 +63,7 @@
services = {
openssh = {
enable = true;
allowSFTP = true;
};
};

View file

@ -10,7 +10,7 @@
...
}:
let
btusb = pkgs.callPackage ../../moduler/btusb.nix { inherit (config.boot.kernelPackages) kernel; };
# btusb = pkgs.callPackage ../../moduler/btusb.nix { inherit (config.boot.kernelPackages) kernel; };
in
{
imports = [
@ -34,7 +34,7 @@ in
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-latte.yaml";
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
};
programs.ssh.knownHosts = {
@ -51,7 +51,16 @@ in
home-manager.users.fw = {
imports = [
./../../moduler/home.nix
./../../moduler/programs/waybar
inputs.catppuccin.homeModules.catppuccin
];
catppuccin = {
librewolf = {
enable = true;
flavor = "latte";
accent = "peach";
};
};
programs.ranger.enable = true;
stylix.targets = {
lazygit.enable = false;
@ -64,11 +73,11 @@ in
};
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.extraModulePackages = [
(btusb.overrideAttrs (_: {
patches = [ ../../moduler/btusb-add-mt7925.patch ];
}))
];
# boot.extraModulePackages = [
# (btusb.overrideAttrs (_: {
# patches = [ ../../moduler/btusb-add-mt7925.patch ];
# }))
# ];
networking.hostName = myhostname;

View file

@ -8,24 +8,27 @@
myhostname,
...
}:
let
modulesDirectory = ../../moduler;
in
{
# You can import other NixOS modules here
imports = [
./hardware-configuration.nix
../../moduler/base.nix
../../moduler/users.nix
../../moduler/kitchenowl.nix
../../moduler/radicale.nix
../../moduler/vaultwarden.nix
../../moduler/signal.nix
../../moduler/uptime-kuma.nix
../../moduler/services/monitoring
../../moduler/services/headscale
../../moduler/services/mpd
../../moduler/services/actual
../../moduler/services/forgejo
# ../../moduler/wastring.nix
../../moduler/wedding.nix
( modulesDirectory + /base.nix )
( modulesDirectory + /users.nix )
( modulesDirectory + /kitchenowl.nix )
( modulesDirectory + /radicale.nix )
( modulesDirectory + /vaultwarden.nix )
( modulesDirectory + /signal.nix )
( modulesDirectory + /uptime-kuma.nix )
( modulesDirectory + /wedding.nix )
( modulesDirectory + /services/monitoring )
( modulesDirectory + /services/headscale )
( modulesDirectory + /services/mpd )
( modulesDirectory + /services/actual )
( modulesDirectory + /services/forgejo )
];
sops.defaultSopsFile = ../../secrets/sops.yaml;

View file

@ -24,6 +24,7 @@ in
# Nix
devenv
nixfmt-rfc-style
opentofu
# Docker
dive

View file

@ -12,11 +12,9 @@ in
{
environment.systemPackages = with pkgs; [
swww
grim
slurp
wl-clipboard
swappy
ydotool
wl-clipboard
hyprpolkitagent
hyprland-qtutils
waypipe
@ -28,7 +26,7 @@ in
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd hyprland";
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd hyprland";
user = "greeter";
};
};
@ -57,138 +55,6 @@ in
enable = true;
font = lib.mkForce "ComicShannsMono Nerd Font 18";
};
waybar = {
enable = true;
systemd = {
enable = true;
};
settings = {
mainBar = {
modules-left = [
"hyprland/workspaces"
];
modules-right = [
"tray"
"clock"
];
"custom/arrow1" = {
format = "";
};
tray = {
format = "<span>{icon}</span>";
"icon-size" = 14;
spacing = 5;
};
clock = {
format = "<span> </span><span>{:%c}</span>";
};
};
};
style = ''
@define-color bg #eff1f5;
@define-color fg #4c4f69;
@define-color lbg #e6e9ef;
@define-color yellow #df8e1d;
@define-color lavender #7287fd;
@define-color peach #fe640b;
@define-color red #d20f39;
@define-color green #40a02b;
@define-color blue #1e66f5;
@define-color border #dce0e8;
* {
min-height: 0;
margin: 0px 0px 0px 0px;
padding: 0;
border-radius: 7px;
font-family: "ComicShannsMono Nerd Font";
font-size: 14pt;
font-weight: 700;
padding-bottom: 0px;
}
tooltip {
background: @bg;
border-radius: 7px;
border: 2px solid @border;
}
#window {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 7px;
border-radius: 3px;
border-color: @lbg;
background-color: @yellow;
color: @bg;
}
window#waybar.empty #window {
background-color: @bg;
border-bottom: none;
border-right: none;
}
window#waybar {
background-color: @bg;
color: @lavender;
}
/* Workspaces */
@keyframes button_activate {
from { opacity: .3 }
to { opacity: 1.; }
}
#workspaces {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding: 1px;
background-color: @bg;
color: @bg;
}
#workspaces button {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 3px;
padding-right: 9px;
background-color: @bg;
color: @fg;
}
#workspaces button.active {
background-color:@blue;
color: @bg;
}
#workspaces button.urgent {
color: #F38BA8;
}
#workspaces button:hover {
border: solid transparent;
}
#tray {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 10px;
padding-right: 10px;
background-color: @bg;
color: @fg;
}
#clock {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @bg;
background-color: @green;
}
'';
};
};
services = {
cliphist = {
@ -244,7 +110,7 @@ in
"$mod" = "ALT";
monitor = [
"desc: ASUSTek COMPUTER INC ASUS PA279CV S4LMTF159462 (DP-1), 3840x2160@60, 0x0, 1.5"
"desc: ASUSTek COMPUTER INC ASUS PA279CV S4LMTF159462 (DP-1), 3840x2160@60, 0x0, 1.5, transform, 1"
"desc: ASUSTek COMPUTER INC VG279 JBLMQS021792 (DP-1), 1920x1080@144, 0x0, 1"
"eDP-1, 1920x1080@60, 0x0, 1, transform, 2"
",prefered,auto,1"
@ -299,35 +165,31 @@ in
};
animations = {
enabled = false;
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92"
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1"
"easeOutQuint,0.23,1,0.32,1"
"easeInOutCubic,0.65,0.05,0.36,1"
"linear,0,0,1,1"
"almostLinear,0.5,0.5,0.75,1.0#fffff"
"quick,0.15,0,0.1,1"
];
animation = [
"windows, 1, 1.2, md3_decel, popin 60%"
"windowsIn, 1, 1.2, md3_decel, popin 60%"
"windowsOut, 1, 1.2, md3_accel, popin 60%"
"border, 1, 2, default"
"fade, 1, 1.2, md3_decel"
"layersIn, 1, 1.2, menu_decel, slide"
"layersOut, 1, 1.2, menu_accel"
"fadeLayersIn, 1, 1.2, menu_decel"
"fadeLayersOut, 1, 1.2, menu_accel"
"workspaces, 1, 2, menu_decel, slide"
"specialWorkspace, 1, 1.2, md3_decel, slidevert"
"global, 1, 10, default"
"border, 1, 5.39, easeOutQuint"
"windows, 1, 4.79, easeOutQuint"
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
"windowsOut, 1, 1.49, linear, popin 87%"
"fadeIn, 1, 1.73, almostLinear"
"fadeOut, 1, 1.46, almostLinear"
"fade, 1, 3.03, quick"
"layers, 1, 3.81, easeOutQuint"
"layersIn, 1, 4, easeOutQuint, fade"
"layersOut, 1, 1.5, linear, fade"
"fadeLayersIn, 1, 1.79, almostLinear"
"fadeLayersOut, 1, 1.39, almostLinear"
"workspaces, 1, 1.94, almostLinear, fade"
"workspacesIn, 1, 1.21, almostLinear, fade"
"workspacesOut, 1, 1.94, almostLinear, fade"
];
};
@ -405,8 +267,7 @@ in
"$mod, d, exec, ${pkgs.rofi}/bin/rofi -show drun -p 'Run: '"
# Screencapture
"$mod, S, exec, ${pkgs.grim}/bin/grim | wl-copy"
"$mod SHIFT+ALT, S, exec, ${pkgs.grim}/bin/grim -g \"$(slurp)\" ~/$(date +%Y-%m-%d-%H%M%S).png"
"$mod SHIFT, s, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png"
];
bindm = [

View file

@ -8,7 +8,8 @@
programs.kitty = {
enable = true;
font = {
name = "ComicShannsMono Nerd Font";
# name = "ComicShannsMono Nerd Font";
name = "FiraCode Nerd Font Mono";
size = 14;
};
shellIntegration = {

View file

@ -28,5 +28,6 @@
lua-language-server
marksman
typstfmt
tofu-ls
];
}

View file

@ -4,9 +4,11 @@
inputs,
lib,
config,
pkgs, myhostname,
pkgs,
myhostname,
...
}: {
}:
{
services.udev = {
extraRules = ''
KERNEL=="ttyACM0", MODE:="666"
@ -19,6 +21,7 @@
];
};
environment.systemPackages = with pkgs; [
# GUI
feishin
@ -38,6 +41,7 @@
# TUI
mpc
codex
# Browsers
librewolf

View file

@ -0,0 +1,25 @@
{
config,
inputs,
pkgs,
...
}:
let
in
{
programs = {
waybar = {
enable = true;
systemd = {
enable = true;
};
};
};
xdg.configFile."waybar/config.jsonc".source = ./waybar.jsonc;
xdg.configFile."waybar/style.css".source = ./waybar.css;
# catppuccin.waybar = {
# enable = true;
# flavor = "latte";
# };
}

View file

@ -0,0 +1,107 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: FiraCode Nerd Font Bold, sans-serif;
font-size: 16px;
color: #4C4F69; /* Default text color */
}
window#waybar {
background-color: #EFF1F5; /* Catppuccin Base */
border-bottom: 3px solid #B2BCC8; /* Catppuccin Crust */
color: #4C4F69; /* Default text color */
transition-property: background-color;
transition-duration: 0.5s;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.termite {
background-color: #D7DBE6; /* Catppuccin Mantle */
}
window#waybar.chromium {
background-color: #B2BCC8; /* Catppuccin Crust */
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
color: #4C4F69; /* Default text color */
transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
/* Hover effect for buttons */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #F9E2AF; /* Catppuccin Yellow for hover effect */
}
/* Workspace button styles */
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #4C4F69; /* Default text color */
transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
/* Hover effect for workspace buttons */
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
/* Focused or active workspace styles */
#workspaces button.focused, #workspaces button.active {
background-color: #A6E3A1; /* Catppuccin Green for active workspace */
box-shadow: inset 0 -3px #76C7E3; /* Catppuccin Sky for focus highlight */
color: #4C4F69; /* Default text color */
}
/* Urgent workspace styles */
#workspaces button.urgent {
background-color: #F28A8C; /* Catppuccin Rose for urgent workspace */
}
/* Mode (e.g., dark/light mode indicator) */
#mode {
background-color: #A6E3A1; /* Catppuccin Green */
box-shadow: inset 0 -3px #F9E2AF; /* Catppuccin Yellow for highlight */
}
/* Spacing for workspaces and other modules */
#clock,
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
background-color: #F9E2AF; /* Catppuccin Yellow for clock */
color: #4C4F69; /* Default text color */
font-family: FiraCode Nerd Font Bold, sans-serif;
font-size: 16px;
color: #4C4F69; /* Default text color */
}
/* Keyframes for blinking effect (e.g., battery critical) */
@keyframes blink {
to {
background-color: #F9E2AF; /* Catppuccin Yellow */
color: #4C4F69; /* Default text color */
}
}

View file

@ -0,0 +1,4 @@
{
"modules-left": ["hyprland/workspaces"],
"modules-right": ["clock"]
}

View file

@ -0,0 +1,79 @@
{
lib,
config,
...
}:
let
cfg = config.adguardhome;
in
with lib;
{
options = {
adguardhome = {
enable = mkEnableOption "enables AdGuardHome";
port = lib.mkOption {
type = lib.types.int;
default = 3000;
description = "The port that AdGuardHome is served on.";
};
};
};
config = mkMerge [
(mkIf cfg.enable {
networking.firewall.allowedTCPPorts = [ 53 cfg.port ];
networking.firewall.allowedUDPPorts = [ 53 ];
services.adguardhome = {
enable = true;
settings = {
http = {
# You can select any ip and port, just make sure to open firewalls where needed
address = "0.0.0.0:${cfg.port toString}";
};
dns = {
upstream_dns = [
# Example config with quad9
"9.9.9.9#dns.quad9.net"
"149.112.112.112#dns.quad9.net"
# Uncomment the following to use a local DNS service (e.g. Unbound)
# Additionally replace the address & port as needed
# "127.0.0.1:5335"
];
rewrites = [
{
domain = "macmini.local";
answer = "192.168.1.100";
}
{
domain = "centre.local";
answer = "192.168.1.227";
}
];
};
filtering = {
protection_enabled = true;
filtering_enabled = true;
parental_enabled = false; # Parental control-based DNS requests filtering.
safe_search = {
enabled = false; # Enforcing "Safe search" option for search engines, when possible.
};
};
# The following notation uses map
# to not have to manually create {enabled = true; url = "";} for every filter
# This is, however, fully optional
# filters =
# map
# (url: {
# enabled = true;
# url = url;
# })
# [
# "https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt" # The Big List of Hacked Malware Web Sites
# "https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt" # malicious url blocklist
# ];
};
};
})
];
}

View file

@ -0,0 +1,54 @@
{
lib,
pkgs,
config,
...
}:
with lib;
{
options = {
mpd = {
enable = mkEnableOption "enables MPD";
port = lib.mkOption {
type = lib.types.int;
default = 6600;
description = "The port that MPD is served on.";
};
httpPort = lib.mkOption {
type = lib.types.int;
default = 8006;
description = "The port that MPD is served on.";
};
musicDir = lib.mkOption {
type = lib.types.str;
default = "/home/fw/Music";
description = "the path to the Music";
};
};
};
config = mkMerge [
(mkIf config.mpd.enable {
services.mpd = {
enable = true;
user = "fw";
group = "users";
network = {
port = config.mpd.port;
listenAddress = "any";
};
musicDirectory = config.mpd.musicDir;
extraConfig = ''
audio_output {
type "httpd"
name "My HTTP Stream"
encoder "vorbis" # or "mp3" if you have lame installed
port "${toString config.mpd.httpPort}" # default HTTP port
bind_to_address "0.0.0.0" # listen on all network interfaces
quality "5.0" # Ogg Vorbis quality
}
'';
};
})
];
}