mirror of
https://github.com/thilobillerbeck/dotfiles.git
synced 2024-11-10 03:19:25 +01:00
150 lines
4.4 KiB
Nix
150 lines
4.4 KiB
Nix
{ lib, pkgs, config, ... }:
|
|
with lib;
|
|
{
|
|
imports = [
|
|
./../programs/alacritty.nix
|
|
./../programs/bat.nix
|
|
./../programs/beets.nix
|
|
./../programs/command-not-found.nix
|
|
./../programs/dircolors.nix
|
|
./../programs/direnv.nix
|
|
./../programs/fzf.nix
|
|
./../programs/git.nix
|
|
./../programs/htop.nix
|
|
./../programs/neovim.nix
|
|
./../programs/starship.nix
|
|
./../programs/topgrade.nix
|
|
./../programs/yt-dlp.nix
|
|
./../programs/zsh.nix
|
|
./../programs/go.nix
|
|
./../programs/firefox.nix
|
|
./../programs/chromium.nix
|
|
./../programs/mpv.nix
|
|
./packages.nix
|
|
];
|
|
|
|
options = {
|
|
machine = {
|
|
username = mkOption {
|
|
type = types.str;
|
|
default = "thilo";
|
|
description = "The username of the user";
|
|
};
|
|
isGeneric = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Whether the system is generic or not";
|
|
};
|
|
isGraphical = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Whether the system is graphical or not";
|
|
};
|
|
isGnome = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Whether the system is gnome or not";
|
|
};
|
|
noiseSuppression.enable = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Whether to enable noise suppression or not";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
news.display = "silent";
|
|
targets.genericLinux.enable = config.machine.isGeneric;
|
|
|
|
home = {
|
|
username = "${config.machine.username}";
|
|
homeDirectory = "/home/${config.machine.username}";
|
|
stateVersion = "22.11";
|
|
file = {
|
|
".config/nano/nanorc".text = ''
|
|
set linenumbers
|
|
include "/usr/share/nano/*.nanorc"
|
|
'';
|
|
".ssh/config_source" = {
|
|
source = ./../dotfiles/ssh-config;
|
|
onChange = ''cat ~/.ssh/config_source > ~/.ssh/config && chmod 600 ~/.ssh/config'';
|
|
};
|
|
".gitignore".source = ./../dotfiles/.gitignore;
|
|
".config/pipewire/pipewire.conf.d/98-motu-m4.conf".source = ./../dotfiles/motu-m4.conf;
|
|
".config/pipewire/pipewire.conf.d/99-noise-suppression.conf".text = ''
|
|
context.modules = [{
|
|
name = libpipewire-module-filter-chain
|
|
args = {
|
|
node.description = "Noise Canceling source"
|
|
media.name = "Noise Canceling source"
|
|
filter.graph = {
|
|
nodes = [{
|
|
type = ladspa
|
|
name = rnnoise
|
|
plugin = ${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so
|
|
label = noise_suppressor_stereo
|
|
control = {
|
|
"VAD Threshold (%)" 50.0
|
|
"VAD Grace Period (ms)" 200
|
|
"Retroactive VAD Grace (ms)" 0
|
|
}
|
|
}]
|
|
}
|
|
capture.props = {
|
|
node.name = "capture.rnnoise_source"
|
|
node.passive = true
|
|
audio.rate = 48000
|
|
}
|
|
playback.props = {
|
|
node.name = "rnnoise_source"
|
|
media.class = Audio/Source
|
|
audio.rate = 48000
|
|
}
|
|
}
|
|
}]
|
|
'';
|
|
};
|
|
activation = {
|
|
setNodeGlobalDir = {
|
|
after = [ "writeBoundary" "createXdgUserDirectories" ];
|
|
before = [ ];
|
|
data = ''
|
|
mkdir -p ${config.home.homeDirectory}/.node-global
|
|
${pkgs.nodejs}/bin/npm config set prefix ${config.home.homeDirectory}/.node-global
|
|
'';
|
|
};
|
|
} // mkIf config.machine.isGeneric {
|
|
linkDesktopApplications = {
|
|
after = [ "writeBoundary" "createXdgUserDirectories" ];
|
|
before = [ ];
|
|
data = ''
|
|
for dir in ${config.home.homeDirectory}/.nix-profile/share/applications/*; do
|
|
chmod +x $(realpath $dir) -v
|
|
done
|
|
'';
|
|
};
|
|
};
|
|
sessionPath = [ "${config.home.homeDirectory}/.node-global/bin" ];
|
|
};
|
|
|
|
programs.home-manager.enable = true;
|
|
|
|
nix = {
|
|
package = mkDefault pkgs.nixUnstable;
|
|
extraOptions = ''
|
|
experimental-features = nix-command flakes
|
|
sandbox = relaxed
|
|
'';
|
|
};
|
|
|
|
gtk = {
|
|
enable = config.machine.isGnome;
|
|
theme = {
|
|
name = "adw-gtk3-dark";
|
|
package = pkgs.adw-gtk3;
|
|
};
|
|
};
|
|
};
|
|
}
|
|
|