feat\!: major cleanup
This commit is contained in:
parent
b971a645e3
commit
210c463d79
93 changed files with 34 additions and 4340 deletions
|
|
@ -15,57 +15,17 @@
|
|||
pkgs.git # distributed version control system
|
||||
pkgs.gnumake # a tool to control the generation of non-source files from sources
|
||||
pkgs.parallel # shell tool for executing jobs in parallel
|
||||
pkgs.mercurial # a fast, lightweight scm system for very large distributed projects
|
||||
pkgs.wget # tool for retrieving files using http, https, and ftp
|
||||
pkgs.unstable.neovim-unwrapped # vim text editor fork focused on extensibility and agility
|
||||
pkgs.neofetch # a fast, highly customizable system info script
|
||||
pkgs.neovim # vim text editor fork focused on extensibility and agility
|
||||
pkgs.eza # a modern, maintained replacement for ls
|
||||
pkgs.ripgrep # a utility that combines the usability of the silver searcher with the raw speed of grep
|
||||
pkgs.ripgrep-all # ripgrep, but also search in pdfs, e-books, office documents, zip, tar.gz, and more
|
||||
pkgs.expect # a tool for automating interactive applications
|
||||
pkgs.jq # a lightweight and flexible command-line json processor
|
||||
pkgs.unzip # an extraction utility for archives compressed in .zip format
|
||||
pkgs.unrar # utility for rar archives
|
||||
pkgs.libsecret # a library for storing and retrieving passwords and other secrets
|
||||
pkgs.xidel # command line tool to download and extract data from html/xml pages as well as json apis
|
||||
pkgs.nvd # nix/nixos package version diff tool
|
||||
pkgs.inotify-tools # a c library and a set of command-line programs providing a simple interface to inotify
|
||||
pkgs.mkcert # a simple tool for making locally-trusted development certificates
|
||||
pkgs.hexedit
|
||||
pkgs.gdu # fast disk usage analyzer with console interface written in go
|
||||
pkgs.duf # disk usage/free utility - a better 'df' alternative
|
||||
]
|
||||
++ lib.optionals (config.bchmnn.collections.cli-utils.enable && config.bchmnn.nvidia.enable) [
|
||||
pkgs.nvtopPackages.full
|
||||
]
|
||||
++ lib.optionals config.bchmnn.collections.development.enable [
|
||||
pkgs.gcc13
|
||||
pkgs.clang
|
||||
pkgs.cmake
|
||||
pkgs.universal-ctags # a maintained ctags implementation
|
||||
pkgs.unifdef # selectively remove c preprocessor conditionals
|
||||
pkgs.doxygen # source code documentation generator tool
|
||||
pkgs.rustc
|
||||
pkgs.cargo # downloads your rust project's dependencies and builds your project
|
||||
pkgs.go # go programming language
|
||||
(pkgs.python312.withPackages (
|
||||
p: with p; [
|
||||
ptpython # an advanced python repl
|
||||
ipython # ipython: productive interactive computing
|
||||
pycryptodome # self-contained cryptographic library
|
||||
gmpy2 # interface to gmp, mpfr, and mpc for python 3.7+
|
||||
]
|
||||
))
|
||||
pkgs.lua
|
||||
pkgs.nixpkgs-fmt
|
||||
pkgs.openjdk17
|
||||
pkgs.javaPackages.openjfx17
|
||||
pkgs.gradle_7
|
||||
pkgs.maven
|
||||
pkgs.ant
|
||||
pkgs.nodejs_20
|
||||
pkgs.nodenv
|
||||
pkgs.nodePackages.yarn
|
||||
pkgs.nodePackages.pnpm
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.bchmnn = {
|
||||
audio = {
|
||||
enable = lib.mkEnableOption "audio";
|
||||
pipewire-wine-fix = {
|
||||
enable = lib.mkEnableOption "pipewire-wine-fix";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
services.pipewire =
|
||||
lib.mkIf (config.bchmnn.audio.enable && (!builtins.elem "gnome" config.bchmnn.gui.flavour))
|
||||
{
|
||||
enable = true;
|
||||
audio.enable = true;
|
||||
pulse.enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
jack.enable = true;
|
||||
wireplumber.enable = true;
|
||||
extraConfig.pipewire = lib.mkIf config.bchmnn.audio.pipewire-wine-fix.enable {
|
||||
"90-wine-config" = {
|
||||
"context.properties" = {
|
||||
# "default.clock.rate" = 48000;
|
||||
"default.clock.allowed-rates" = [
|
||||
44100
|
||||
48000
|
||||
];
|
||||
# "default.clock.quantum" = 2048;
|
||||
# "default.clock.min-quantum" = 1024;
|
||||
};
|
||||
};
|
||||
};
|
||||
extraConfig.pipewire-pulse = lib.mkIf config.bchmnn.audio.pipewire-wine-fix.enable {
|
||||
"90-wine-config" = {
|
||||
"pulse.properties" = {
|
||||
"pulse.min.req" = "1024/48000";
|
||||
# "pulse.min.frag" = "1024/48000";
|
||||
# "pulse.min.quantum" = "1024/48000";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = lib.optionals config.bchmnn.audio.enable [
|
||||
pkgs.alsa-utils
|
||||
pkgs.pulseaudio
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
options.bchmnn = {
|
||||
bluetooth = {
|
||||
enable = lib.mkEnableOption "bluetooth";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.bchmnn.bluetooth.enable {
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
|
||||
services.blueman.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{
|
||||
|
||||
options.bchmnn = {
|
||||
bsprak = {
|
||||
enable = lib.mkEnableOption "bsprak";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
environment = {
|
||||
# Tell nix to link header files of all installed packages
|
||||
# in /run/current-system/sw/include
|
||||
pathsToLink = [ "/include" ];
|
||||
variables = {
|
||||
# Tell compilers where to find the header files
|
||||
CPATH = "/run/current-system/sw/include";
|
||||
# Tell linker where to find shared objects
|
||||
LIBRARY_PATH = "/run/current-system/sw/lib";
|
||||
};
|
||||
systemPackages = with pkgs; [
|
||||
git
|
||||
gcc
|
||||
gnumake
|
||||
cmake
|
||||
python3
|
||||
ninja
|
||||
texinfo
|
||||
pkg-config
|
||||
bison
|
||||
flex
|
||||
curl
|
||||
|
||||
# the `.dev` syntax tells nix to also provide header files
|
||||
gmp
|
||||
gmp.dev
|
||||
mpfr
|
||||
mpfr.dev
|
||||
libmpc
|
||||
glib
|
||||
glib.dev
|
||||
pixman
|
||||
expat
|
||||
expat.dev
|
||||
ncurses5
|
||||
ncurses5.dev
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -4,31 +4,5 @@
|
|||
la = "eza --group-directories-first --hyperlink --icons -la";
|
||||
lt = "eza --group-directories-first --hyperlink --icons -la --tree";
|
||||
llt = "unbuffer eza --group-directories-first --hyperlink --icons -la --tree | less -r";
|
||||
|
||||
gg = "cd ~/code";
|
||||
# gs = "git status";
|
||||
gl = "git log --oneline";
|
||||
glg = "git log --oneline --graph --decorate --all";
|
||||
gaa = "git add --all";
|
||||
gc = "git commit -m";
|
||||
gp = "git push";
|
||||
|
||||
ta = "tmux attach";
|
||||
|
||||
nec = "nvim --cmd \"cd $(readlink -f /etc/nixos)\"";
|
||||
ncc = "sudo nixos-rebuild switch --upgrade-all --flake \"$(readlink -f /etc/nixos)\"";
|
||||
nup = "sudo nix-channel --update";
|
||||
ngc = "sudo nix-collect-garbage -d";
|
||||
nda = "nixos-rebuild --flake path:\"$(readlink -f /etc/nixos)\"#APPA --build-host root@dryb.org --target-host root@dryb.org switch";
|
||||
|
||||
dcup = "docker-compose up --detach --remove-orphans";
|
||||
dka = "docker kill $(docker ps -q)";
|
||||
drmc = "docker container rm $(docker container ls -aq)";
|
||||
drmi = "docker image rm $(docker image ls -aq)";
|
||||
drmv = "docker volume rm $(docker volume ls -q)";
|
||||
|
||||
lsip = "curl -s 'https://nordvpn.com/wp-admin/admin-ajax.php?action=get_user_info_data' | jq";
|
||||
xo = "xdg-open";
|
||||
y = "yazi";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,8 @@
|
|||
{
|
||||
imports = [
|
||||
./applications.nix
|
||||
./audio.nix
|
||||
./bluetooth.nix
|
||||
./bsprak.nix
|
||||
./keyd.nix
|
||||
./network.nix
|
||||
./nvidia.nix
|
||||
./power.nix
|
||||
./printing.nix
|
||||
./profiling.nix
|
||||
./security.nix
|
||||
./shell.nix
|
||||
|
|
@ -36,10 +30,6 @@
|
|||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
};
|
||||
mfcl3750cdwlpr = (super.callPackage ../../overlays/mfcl3750cdw.nix { }).driver;
|
||||
mfcl3750cdwcupswrapper = (super.callPackage ../../overlays/mfcl3750cdw.nix { }).cupswrapper;
|
||||
pppdf = (super.python3Packages.callPackage ../../overlays/pppdf { });
|
||||
iglesia-light = (super.callPackage ../../overlays/fonts/iglesia-light.nix { });
|
||||
})
|
||||
];
|
||||
config = {
|
||||
|
|
@ -48,17 +38,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
# provide libraries for non-nix binaries
|
||||
# programs.nix-ld = {
|
||||
# enable = true;
|
||||
# libraries = [
|
||||
# # glibc
|
||||
# # libcxx
|
||||
# # libllvm
|
||||
# # ncurses
|
||||
# ];
|
||||
# };
|
||||
|
||||
system.stateVersion = "23.05";
|
||||
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
|
@ -80,7 +59,6 @@
|
|||
services.dbus = {
|
||||
enable = true;
|
||||
packages = with pkgs; [
|
||||
gcr # gnome crypto services (daemon and tools)
|
||||
dconf
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,73 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
nav = {
|
||||
h = "left";
|
||||
j = "down";
|
||||
k = "up";
|
||||
l = "right";
|
||||
"0" = "home";
|
||||
"4" = "end";
|
||||
u = "pageup";
|
||||
d = "pagedown";
|
||||
q = "previoussong";
|
||||
w = "playpause";
|
||||
e = "nextsong";
|
||||
};
|
||||
alt = {
|
||||
a = "ä";
|
||||
o = "ö";
|
||||
u = "ü";
|
||||
s = "ß";
|
||||
e = "€";
|
||||
};
|
||||
altShift = {
|
||||
a = "Ä";
|
||||
o = "Ö";
|
||||
u = "Ü";
|
||||
};
|
||||
in
|
||||
{
|
||||
environment.systemPackages = with pkgs; [ keyd ];
|
||||
# Enable keyd and remap keys
|
||||
services.keyd = {
|
||||
enable = true;
|
||||
keyboards.default = {
|
||||
ids = [
|
||||
"*"
|
||||
"-04fe:0020" # HHKB
|
||||
"-046d:102a" # Logitech G700s
|
||||
"-046d:c07c" # Logitech G700s Rechargeable Gaming Mouse
|
||||
];
|
||||
settings = {
|
||||
main = {
|
||||
leftalt = "layer(meta)";
|
||||
leftmeta = "layer(alt)";
|
||||
altgr = "layer(control)";
|
||||
rightalt = "layer(control)";
|
||||
capslock = "layer(nav)";
|
||||
};
|
||||
alt = alt;
|
||||
"alt+shift" = altShift;
|
||||
meta = {
|
||||
capslock = "overload(nav, capslock)";
|
||||
};
|
||||
nav = nav;
|
||||
};
|
||||
};
|
||||
keyboards.hhkb = {
|
||||
ids = [ "04fe:0020" ];
|
||||
settings = {
|
||||
main = {
|
||||
rightmeta = "layer(control)";
|
||||
leftcontrol = "layer(nav)";
|
||||
};
|
||||
alt = alt;
|
||||
"alt+shift" = altShift;
|
||||
meta = {
|
||||
leftcontrol = "overload(nav, capslock)";
|
||||
};
|
||||
nav = nav;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -17,13 +17,6 @@
|
|||
enable = lib.mkEnableOption "networkd";
|
||||
};
|
||||
};
|
||||
collections = {
|
||||
vpn = {
|
||||
dryborg = {
|
||||
enable = lib.mkEnableOption "dryborg";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
config = {
|
||||
networking = {
|
||||
|
|
@ -34,46 +27,6 @@
|
|||
NetworkManager-wait-online.enable = false;
|
||||
};
|
||||
|
||||
services.resolved.enable = (
|
||||
config.bchmnn.network.nm.enable || config.bchmnn.collections.vpn.enable
|
||||
);
|
||||
|
||||
environment.systemPackages = lib.optionals (config.bchmnn.collections.vpn.enable) [
|
||||
pkgs.openvpn3
|
||||
pkgs.mullvad-vpn
|
||||
pkgs.wireguard-tools # tools for the wireguard secure network tunnel
|
||||
];
|
||||
services.mullvad-vpn.enable = config.bchmnn.collections.vpn.enable;
|
||||
|
||||
age.secrets =
|
||||
lib.mkIf (config.bchmnn.collections.vpn.enable && config.bchmnn.collections.vpn.dryborg.enable)
|
||||
{
|
||||
keys-wireguard-dryborg-privatekey = {
|
||||
file = ../../secrets/keys/wireguard/dryborg/privatekey.age;
|
||||
};
|
||||
keys-wireguard-dryborg-presharedkey = {
|
||||
file = ../../secrets/keys/wireguard/dryborg/presharedkey.age;
|
||||
};
|
||||
};
|
||||
|
||||
networking.wg-quick.interfaces =
|
||||
lib.mkIf (config.bchmnn.collections.vpn.enable && config.bchmnn.collections.vpn.dryborg.enable)
|
||||
{
|
||||
"vpn.dryb.org" = {
|
||||
autostart = false;
|
||||
privateKeyFile = config.age.secrets.keys-wireguard-dryborg-privatekey.path;
|
||||
address = [ "10.200.200.1/24" ];
|
||||
dns = [ "192.168.2.1" ];
|
||||
peers = [
|
||||
{
|
||||
publicKey = "JY5fb0RS7C8WyPPEeymzuMSUeIhDtICGk1FYJgTRnTs=";
|
||||
presharedKeyFile = config.age.secrets.keys-wireguard-dryborg-presharedkey.path;
|
||||
allowedIPs = [ "0.0.0.0/0" ];
|
||||
endpoint = "vpn.dryb.org:53280";
|
||||
persistentKeepalive = 21;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
services.resolved.enable = config.bchmnn.network.nm.enable;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
options.bchmnn = {
|
||||
nvidia = {
|
||||
enable = lib.mkEnableOption "nvidia";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.bchmnn.nvidia.enable {
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = true;
|
||||
nvidiaSettings = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
};
|
||||
|
||||
services.tlp = {
|
||||
enable = !builtins.elem "gnome" config.bchmnn.gui.flavour;
|
||||
enable = true;
|
||||
settings = config.bchmnn.power.tlp.settings;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
options.bchmnn = {
|
||||
printing = {
|
||||
enable = lib.mkEnableOption "printing";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf config.bchmnn.printing.enable {
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = [ pkgs.mfcl3750cdwcupswrapper ];
|
||||
};
|
||||
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
hardware.printers = {
|
||||
ensurePrinters = [
|
||||
{
|
||||
name = "Brother-MFC-L3750CDW-series";
|
||||
location = "Home";
|
||||
deviceUri = "dnssd://Brother%20MFC-L3750CDW%20series._ipp._tcp.local/?uuid=e3248000-80ce-11db-8000-b4220094c09b";
|
||||
model = "brother_mfcl3750cdw_printer_en.ppd";
|
||||
}
|
||||
];
|
||||
ensureDefaultPrinter = "Brother-MFC-L3750CDW-series";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,6 +1,4 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
|
@ -12,12 +10,6 @@ in
|
|||
enable = true;
|
||||
};
|
||||
|
||||
users.users = lib.mkIf (config.bchmnn.home.enable) {
|
||||
gandalf = {
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
};
|
||||
|
||||
environment = {
|
||||
shellAliases = common.aliases;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,26 +7,15 @@
|
|||
lib.mkIf config.bchmnn.collections.virtualisation.enable {
|
||||
virtualisation = {
|
||||
libvirtd.enable = true;
|
||||
/*
|
||||
podman = {
|
||||
enable = true;
|
||||
# create a `docker` alias for podman, to use it as a drop-in replacement
|
||||
dockerCompat = true;
|
||||
# required for containers under podman-compose to be able to talk to each other.
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
*/
|
||||
docker = {
|
||||
enable = true;
|
||||
};
|
||||
oci-containers = {
|
||||
backend = "docker";
|
||||
# backend = "podman";
|
||||
};
|
||||
containers = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
hardware.nvidia-container-toolkit.enable = config.bchmnn.nvidia.enable;
|
||||
environment.systemPackages = with pkgs; [ virtiofsd ];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,32 +2,6 @@
|
|||
{
|
||||
options.bchmnn = with lib; {
|
||||
|
||||
home = {
|
||||
enable = mkEnableOption "home";
|
||||
};
|
||||
|
||||
user = {
|
||||
extraGroups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
"libvirtd"
|
||||
"docker"
|
||||
"wireshark"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
git = {
|
||||
signing = {
|
||||
key = mkOption {
|
||||
type = types.str;
|
||||
default = "732A612DAD28067D";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
collections = {
|
||||
cli-utils = {
|
||||
enable = mkEnableOption "cli-utils";
|
||||
|
|
@ -38,22 +12,13 @@
|
|||
development = {
|
||||
enable = mkEnableOption "development";
|
||||
};
|
||||
vpn = {
|
||||
enable = mkEnableOption "vpn";
|
||||
};
|
||||
virtualisation = {
|
||||
enable = mkEnableOption "virtualisation";
|
||||
};
|
||||
games = {
|
||||
enable = mkEnableOption "games";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./core
|
||||
./desktop
|
||||
./home-manager
|
||||
./services
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,39 +0,0 @@
|
|||
{ config
|
||||
, lib
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
lib.mkIf config.bchmnn.gui.enable {
|
||||
|
||||
environment.systemPackages =
|
||||
lib.optionals (config.bchmnn.collections.cli-utils.enable) [
|
||||
pkgs.libnotify # a library that sends desktop notifications to a notification daemon
|
||||
pkgs.xdg-utils # a set of command line tools that assist applications with a variety of desktop integration tasks
|
||||
]
|
||||
++ lib.optionals (config.bchmnn.collections.development.enable) [
|
||||
pkgs.ghidra-bin
|
||||
pkgs.mongodb-compass
|
||||
]
|
||||
++ lib.optionals (lib.elem "sway" config.bchmnn.gui.flavour) [
|
||||
pkgs.qt5.qtwayland
|
||||
pkgs.qt6.qtwayland
|
||||
pkgs.wineWowPackages.waylandFull
|
||||
];
|
||||
|
||||
programs = {
|
||||
ausweisapp = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
evolution.enable = !(lib.elem "gnome" config.bchmnn.gui.flavour);
|
||||
kdeconnect.enable = true;
|
||||
virt-manager.enable = config.bchmnn.collections.virtualisation.enable;
|
||||
wireshark.enable = config.bchmnn.collections.development.enable;
|
||||
};
|
||||
|
||||
services.ratbagd.enable = true;
|
||||
# needed for udiskie
|
||||
services.udisks2.enable = true;
|
||||
# enable gvfs to mount android devices
|
||||
services.gvfs.enable = true;
|
||||
}
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./applications.nix
|
||||
./fonts.nix
|
||||
./games.nix
|
||||
./nautilus.nix
|
||||
];
|
||||
|
||||
options.bchmnn = {
|
||||
gui = {
|
||||
enable = lib.mkEnableOption "gui";
|
||||
greeter = {
|
||||
enable = lib.mkEnableOption "greeter";
|
||||
};
|
||||
flavour = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ "sway" ];
|
||||
example = [
|
||||
"sway"
|
||||
"i3"
|
||||
];
|
||||
description = ''
|
||||
The flavour (WM) for your system to use
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf (config.bchmnn.gui.enable && config.bchmnn.gui.flavour != [ ]) {
|
||||
environment.pathsToLink = [ "/libexec" ]; # links /libexec from derivations to /run/current-system/sw
|
||||
programs.sway.enable = builtins.elem "sway" config.bchmnn.gui.flavour;
|
||||
services.xserver.windowManager.i3.enable = builtins.elem "i3" config.bchmnn.gui.flavour;
|
||||
services.libinput.enable = true;
|
||||
services.xserver = {
|
||||
enable = (
|
||||
builtins.elem "i3" config.bchmnn.gui.flavour || builtins.elem "gnome" config.bchmnn.gui.flavour
|
||||
);
|
||||
desktopManager.gnome.enable = builtins.elem "gnome" config.bchmnn.gui.flavour;
|
||||
displayManager = {
|
||||
gdm.enable = builtins.elem "gnome" config.bchmnn.gui.flavour;
|
||||
startx.enable = builtins.elem "i3" config.bchmnn.gui.flavour;
|
||||
};
|
||||
};
|
||||
environment.systemPackages = [
|
||||
(pkgs.writeShellScriptBin "sway-run" ''
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
exec ${pkgs.sway}/bin/sway "$@"
|
||||
'')
|
||||
];
|
||||
environment = {
|
||||
etc = {
|
||||
"greetd/environments".text = (lib.strings.concatLines config.bchmnn.gui.flavour);
|
||||
"greetd/kanshi-config".text = ''
|
||||
profile nomad {
|
||||
output "LVDS-1" enable
|
||||
}
|
||||
profile iroh {
|
||||
output "DP-3" enable mode 2560x1440 position 0,0
|
||||
output "DP-2" enable mode 2560x1440 position 2560,0
|
||||
output "DP-1" enable mode 2560x1440 position 5120,0
|
||||
}
|
||||
profile station {
|
||||
output "LVDS-1" disable
|
||||
output "Dell Inc. DELL U2515H 9X2VY5490XUL" enable mode 1920x1080 position 0,0
|
||||
output "Dell Inc. DELL U2515H 9X2VY5C7138L" enable mode 1920x1080 position 1920,0
|
||||
output "HJW VGA TO HDMI 0x00000100" enable mode 1920x1080 position 3840,0
|
||||
}
|
||||
'';
|
||||
"greetd/sway-config".text = ''
|
||||
exec "${pkgs.kanshi}/bin/kanshi --config /etc/greetd/kanshi-config"
|
||||
exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit"
|
||||
|
||||
bindsym Mod4+shift+e exec swaynag \
|
||||
-t warning \
|
||||
-m 'What do you want to do?' \
|
||||
-b 'Poweroff' 'systemctl poweroff' \
|
||||
-b 'Reboot' 'systemctl reboot'
|
||||
|
||||
include /etc/sway/config.d/*
|
||||
'';
|
||||
};
|
||||
};
|
||||
services.greetd = {
|
||||
enable = config.bchmnn.gui.greeter.enable;
|
||||
settings = {
|
||||
default_session = {
|
||||
command =
|
||||
"sway-run --config /etc/greetd/sway-config"
|
||||
+ lib.optionalString config.bchmnn.nvidia.enable " --unsupported-gpu";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# TODO workaround to get swaylock accepting pw
|
||||
# https://github.com/NixOS/nixpkgs/issues/158025
|
||||
security.pam.services = lib.mkIf (lib.elem "sway" config.bchmnn.gui.flavour) { swaylock = { }; };
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
wlr.enable = true;
|
||||
config.common.default = "*";
|
||||
extraPortals = lib.optionals (lib.elem "sway" config.bchmnn.gui.flavour) [
|
||||
pkgs.xdg-desktop-portal-wlr
|
||||
];
|
||||
};
|
||||
environment.sessionVariables.GST_PLUGIN_SYSTEM_PATH_1_0 =
|
||||
lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0"
|
||||
(
|
||||
with pkgs.gst_all_1;
|
||||
[
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
gst-plugins-bad
|
||||
gst-plugins-ugly
|
||||
]
|
||||
);
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
environment.variables =
|
||||
lib.mkIf (builtins.elem pkgs.intel-media-driver config.hardware.opengl.extraPackages)
|
||||
{ LIBVA_DRIVER_NAME = "iHD"; };
|
||||
};
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
lib.mkIf (config.bchmnn.gui.enable) {
|
||||
# Add fonts
|
||||
fonts = {
|
||||
enableDefaultPackages = true;
|
||||
packages = with pkgs; [
|
||||
(nerdfonts.override { fonts = [ "DejaVuSansMono" ]; })
|
||||
comic-relief
|
||||
iglesia-light
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.bchmnn.collections.games.enable {
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.mangohud
|
||||
pkgs.gamemode
|
||||
];
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ...
|
||||
}:
|
||||
lib.mkIf (config.bchmnn.gui.enable && config.bchmnn.gui.flavour != [ ]) {
|
||||
programs.nautilus-open-any-terminal = {
|
||||
enable = true;
|
||||
terminal = "kitty";
|
||||
};
|
||||
|
||||
environment = lib.mkIf (!builtins.elem "gnome" config.bchmnn.gui.flavour) {
|
||||
sessionVariables.NAUTILUS_4_EXTENSION_DIR = "${pkgs.gnome.nautilus-python}/lib/nautilus/extensions-4";
|
||||
pathsToLink = [ "/share/nautilus-python/extensions" ];
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
gnome.nautilus
|
||||
gnome.nautilus-python
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.gopass # slightly more awesome standard unix password manager for teams. written in go
|
||||
pkgs.gopass-jsonapi # enables communication with gopass via json messages
|
||||
pkgs.bitwarden-cli # secure and free password manager for all of your devices
|
||||
pkgs.yt-dlp # command-line tool to download videos from youtube.com and other sites (youtube-dl fork)
|
||||
pkgs.stress # simple workload generator for posix systems. it imposes a configurable amount of cpu, memory, i/o, and disk stress on the system
|
||||
pkgs.s-tui # stress-terminal ui monitoring tool
|
||||
pkgs.fio # flexible io tester - an io benchmark tool
|
||||
pkgs.ffmpeg # complete, cross-platform solution to record, convert and stream audio and video
|
||||
pkgs.texliveFull # tex live environment
|
||||
pkgs.imagemagick # software suite to create, edit, compose, or convert bitmap images
|
||||
pkgs.ghostscript # postscript interpreter (mainline version)
|
||||
pkgs.pdftk # command-line tool for working with pdfs
|
||||
# pkgs.ventoy-full # bootable usb solution
|
||||
pkgs.unstable.isisdl # downloader for isis of tu-berlin
|
||||
pkgs.sage # open source mathematics software, free alternative to magma, maple, mathematica, and matlab
|
||||
pkgs.filebrowser # filebrowser is a web application for managing files and directories
|
||||
pkgs.apktool # tool for reverse engineering android apk files
|
||||
];
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
{ lib, nixosConfig, ... }:
|
||||
lib.mkIf nixosConfig.bchmnn.audio.enable {
|
||||
xdg.configFile."wireplumber/wireplumber.conf.d/51-scarlett-samplerate.conf" = {
|
||||
text = ''
|
||||
monitor.alsa.rules = [
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
node.name = "~alsa_input.pci.*"
|
||||
cpu.vm.name = "~.*"
|
||||
}
|
||||
{
|
||||
node.name = "~alsa_output.pci.*"
|
||||
cpu.vm.name = "~.*"
|
||||
}
|
||||
]
|
||||
actions = {
|
||||
update-props = {
|
||||
api.alsa.period-size = 2048
|
||||
api.alsa.headroom = 2048
|
||||
session.suspend-timeout-seconds = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{ lib, nixosConfig, ... }:
|
||||
{
|
||||
|
||||
dconf.settings = {
|
||||
"org/virt-manager/virt-manager/connections" =
|
||||
lib.mkIf nixosConfig.bchmnn.collections.virtualisation.enable
|
||||
{
|
||||
autoconnect = [ "qemu:///system" ];
|
||||
uris = [ "qemu:///system" ];
|
||||
};
|
||||
"org/gnome/desktop/interface" = {
|
||||
"color-scheme" = "prefer-light";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
{ lib, config, ... }@inputs:
|
||||
let
|
||||
common = import ../core/common.nix;
|
||||
in
|
||||
{
|
||||
imports = [ inputs.home-manager.nixosModules.home-manager ];
|
||||
|
||||
config = lib.mkIf (config.bchmnn.home.enable) {
|
||||
users.users.gandalf = {
|
||||
isNormalUser = true;
|
||||
extraGroups = config.bchmnn.user.extraGroups;
|
||||
openssh = {
|
||||
authorizedKeys = {
|
||||
keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAOG8Sja2i6nepkEkuxYdu86XbT9vS5uniBmZifSMZ0t jacob.bachmann@posteo.de"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
|
||||
home-manager.users.gandalf = rec {
|
||||
imports = [
|
||||
./gui
|
||||
./scripts
|
||||
./applications.nix
|
||||
./audio.nix
|
||||
./dconf.nix
|
||||
./git.nix
|
||||
./gnupg.nix
|
||||
./keyd.nix
|
||||
./neovim.nix
|
||||
./shell.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
home = {
|
||||
username = "gandalf";
|
||||
homeDirectory = "/home/gandalf";
|
||||
shellAliases = common.aliases;
|
||||
stateVersion = "23.05";
|
||||
};
|
||||
|
||||
xdg.userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
desktop = "${config.home.homeDirectory}/tmp";
|
||||
documents = "${config.home.homeDirectory}/docs";
|
||||
download = "${config.home.homeDirectory}/dl";
|
||||
music = "${config.home.homeDirectory}/music";
|
||||
pictures = "${config.home.homeDirectory}/pics";
|
||||
publicShare = "${config.home.homeDirectory}/public";
|
||||
templates = "${config.home.homeDirectory}/templates";
|
||||
videos = "${config.home.homeDirectory}/vids";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
{ nixosConfig, ... }:
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
signing = {
|
||||
signByDefault = true;
|
||||
key = nixosConfig.bchmnn.git.signing.key;
|
||||
};
|
||||
userEmail = "jacob.bachmann@posteo.de";
|
||||
userName = "Jacob Bachmann";
|
||||
extraConfig = {
|
||||
init = {
|
||||
defaultBranch = "main";
|
||||
};
|
||||
core.editor = "nvim";
|
||||
pull.rebase = false;
|
||||
push.autoSetupRemote = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
pinentry.package = pkgs.pinentry-gnome3;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
colorschemes = rec {
|
||||
custom = {
|
||||
black = "#000000";
|
||||
_black = "000000";
|
||||
white = "#ffffff";
|
||||
_white = "ffffff";
|
||||
|
||||
# https://yeun.github.io/open-color/
|
||||
active = "#ffffff"; # white
|
||||
activeDark = "#4276b9"; # blue
|
||||
_activeDark = "4276b9"; # blue
|
||||
inactive = "#495057"; # gray7
|
||||
inactiveDark = "#212529"; # gray9
|
||||
alert = "#c92a2a"; # red9
|
||||
|
||||
# active = "#ffdeeb"; # pink1
|
||||
# activeDark = "#f783ac"; # pink4
|
||||
# _activeDark = "f783ac"; # pink4
|
||||
# inactive = "#495057"; # gray7
|
||||
# inactiveDark = "#212529"; # gray9
|
||||
# alert = "#c92a2a"; # red9
|
||||
};
|
||||
default = custom;
|
||||
};
|
||||
|
||||
font = "DejaVuSansM Nerd Font";
|
||||
font-size = "14";
|
||||
gtk = "Adwaita";
|
||||
|
||||
wallpaper = rec {
|
||||
neptun = pkgs.fetchurl {
|
||||
url = "https://live.staticflickr.com/65535/52797919139_2444712a38_o_d.png";
|
||||
sha256 = "1a9148d8911fa25afa82d3b843ee620173955a7ca705d525f3e9d00e00696308";
|
||||
meta.licenses = lib.licenses.cc0;
|
||||
};
|
||||
|
||||
everest = pkgs.fetchurl {
|
||||
url = "https://images7.alphacoders.com/546/546508.jpg";
|
||||
sha256 = "90774d977a5f9cde2264fc1c46417b34046f491b5caca7805c9cd17e3463777b";
|
||||
meta.licenses = lib.licenses.cc0;
|
||||
};
|
||||
|
||||
default = everest;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.pointerCursor = {
|
||||
name = "macOS-Monterey";
|
||||
package = pkgs.apple-cursor;
|
||||
size = 32;
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{ lib, nixosConfig, ... }:
|
||||
{
|
||||
imports =
|
||||
with lib;
|
||||
with nixosConfig.bchmnn;
|
||||
optionals gui.enable [
|
||||
./cursor.nix
|
||||
./gtk.nix
|
||||
./programs
|
||||
]
|
||||
++ optionals (gui.enable && elem "sway" gui.flavour) [ ./sway ]
|
||||
++ optionals (gui.enable && elem "i3" gui.flavour) [ ./i3 ];
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
gtk = {
|
||||
enable = true;
|
||||
gtk3.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = 0;
|
||||
};
|
||||
gtk4.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = 0;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.autorandr = {
|
||||
enable = true;
|
||||
|
||||
profiles = {
|
||||
|
||||
nomad = {
|
||||
config = {
|
||||
"LVDS-1" = {
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
samsung = {
|
||||
fingerprint = {
|
||||
"HDMI-0" = "00ffffffffffff004c2d830e000e0001011c0103806b3c780a23ada4544d99260f474abdef80714f81c0810081809500a9c0b300010104740030f2705a80b0588a00501d7400001e023a801871382d40582c4500501d7400001e000000fd00184b0f511e000a202020202020000000fc0053414d53554e470a202020202001b902034cf0535f101f041305142021225d5e626364071603122909070715075057070183010000e2004fe30503016e030c001000b83c20008001020304e3060d01e50e60616566e5018b849001011d80d0721c1620102c2580501d7400009e662156aa51001e30468f3300501d7400001e000000000000000000000000000000a3";
|
||||
};
|
||||
config = {
|
||||
"HDMI-0" = {
|
||||
enable = true;
|
||||
primary = true;
|
||||
mode = "3840x2160";
|
||||
rate = "59.94";
|
||||
position = "0x0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
station = {
|
||||
config = {
|
||||
"LVDS-1" = {
|
||||
enable = false;
|
||||
};
|
||||
"DP-1-3" = {
|
||||
enable = false;
|
||||
mode = "1920x1080";
|
||||
position = "0x0";
|
||||
};
|
||||
"DP-1-2" = {
|
||||
enable = false;
|
||||
mode = "1920x1080";
|
||||
position = "1920x0";
|
||||
};
|
||||
"VGA-1-2" = {
|
||||
enable = false;
|
||||
mode = "1920x1080";
|
||||
position = "3840x0";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,257 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.xsession.windowManager.i3.config;
|
||||
# common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
|
||||
common = (import ../common.nix) {
|
||||
inherit pkgs;
|
||||
inherit lib;
|
||||
};
|
||||
|
||||
start-polybar = pkgs.writeShellScript "start-polybar" ''
|
||||
${pkgs.polybarFull}/bin/polybar-msg cmd quit
|
||||
echo "---" | tee -a /tmp/polybar.log
|
||||
${pkgs.polybarFull}/bin/polybar 2>&1 | tee -a /tmp/polybar.log & disown
|
||||
'';
|
||||
in
|
||||
{
|
||||
|
||||
imports = [
|
||||
./autorandr.nix
|
||||
./polybar.nix
|
||||
./rofi.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
dmenu
|
||||
xclip # tool to access the x clipboard from a console application
|
||||
wireplumber
|
||||
feh # lightweight image viewer (also sets wallpaper)
|
||||
brightnessctl # control screen brightness
|
||||
pavucontrol # control audio
|
||||
playerctl # control player
|
||||
networkmanagerapplet # control network
|
||||
udiskie # automount usb
|
||||
blueman # control bluetooth
|
||||
nextcloud-client # nextcloud client to connect to any instance
|
||||
libsForQt5.kdeconnect-kde # sync phone and pc
|
||||
system-config-printer # printer manager
|
||||
gnome3.adwaita-icon-theme
|
||||
maim
|
||||
];
|
||||
|
||||
xsession = {
|
||||
initExtra = "xset s off";
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
config = {
|
||||
modifier = "Mod4";
|
||||
bars = [ ];
|
||||
terminal = "${config.programs.kitty.package}/bin/kitty";
|
||||
menu = "${config.programs.rofi.package}/bin/rofi -show drun";
|
||||
startup = with pkgs; [
|
||||
{ command = "${start-polybar}"; }
|
||||
{
|
||||
command = "${gnome.gnome-keyring}/bin/gnome-keyring-daemon --start --components=ssh,secrets,pkcs11";
|
||||
}
|
||||
{ command = "${autorandr}/bin/autorandr -c"; }
|
||||
{ command = "${feh}/bin/feh --bg-fill ${common.wallpaper.default}"; }
|
||||
{ command = "${networkmanagerapplet}/bin/nm-applet"; }
|
||||
{ command = "${blueman}/bin/blueman-applet"; }
|
||||
{ command = "${udiskie}/bin/udiskie --tray"; }
|
||||
{ command = "${nextcloud-client}/bin/nextcloud"; }
|
||||
{ command = "${plasma5Packages.kdeconnect-kde}/bin/kdeconnect-indicator"; }
|
||||
{ command = "${system-config-printer}/bin/system-config-printer-applet"; }
|
||||
{
|
||||
command = "${config.programs.kitty.package}/bin/kitty --class dropdown --title dropdown";
|
||||
always = true;
|
||||
}
|
||||
];
|
||||
fonts = {
|
||||
names = [ common.font ];
|
||||
style = "Bold";
|
||||
size = 12.0;
|
||||
};
|
||||
window = {
|
||||
titlebar = false;
|
||||
border = 4;
|
||||
commands = [
|
||||
{
|
||||
command = "floating enable";
|
||||
criteria = {
|
||||
instance = "dropdown";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "resize set 1400 800";
|
||||
criteria = {
|
||||
instance = "dropdown";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "move scratchpad";
|
||||
criteria = {
|
||||
instance = "dropdown";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
gaps = {
|
||||
inner = 5;
|
||||
};
|
||||
colors = {
|
||||
focused = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
focusedInactive = {
|
||||
border = common.colorschemes.default.inactive;
|
||||
background = common.colorschemes.default.inactive;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactive;
|
||||
childBorder = common.colorschemes.default.inactive;
|
||||
};
|
||||
unfocused = {
|
||||
border = common.colorschemes.default.inactiveDark;
|
||||
background = common.colorschemes.default.inactiveDark;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactiveDark;
|
||||
childBorder = common.colorschemes.default.inactiveDark;
|
||||
};
|
||||
urgent = {
|
||||
border = common.colorschemes.default.alert;
|
||||
background = common.colorschemes.default.alert;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.black;
|
||||
childBorder = common.colorschemes.default.alert;
|
||||
};
|
||||
placeholder = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
};
|
||||
keybindings = {
|
||||
# Basics
|
||||
"${cfg.modifier}+Return" = "exec ${cfg.terminal}";
|
||||
"${cfg.modifier}+q" = "kill";
|
||||
"${cfg.modifier}+i" = "exec ${cfg.menu}";
|
||||
"${cfg.modifier}+space" = "exec ${cfg.menu}";
|
||||
"${cfg.modifier}+Shift+c" = "reload";
|
||||
"${cfg.modifier}+Shift+q" = "exec i3-nagbar -t warning -m 'Do you want to exit i3?' -b 'Yes' 'i3-msg exit'";
|
||||
"${cfg.modifier}+Shift+r" = "restart";
|
||||
|
||||
# Focus
|
||||
"${cfg.modifier}+h" = "focus left";
|
||||
"${cfg.modifier}+j" = "focus down";
|
||||
"${cfg.modifier}+k" = "focus up";
|
||||
"${cfg.modifier}+l" = "focus right";
|
||||
|
||||
"${cfg.modifier}+p" = "focus output left";
|
||||
"${cfg.modifier}+n" = "focus output right";
|
||||
|
||||
# Moving
|
||||
"${cfg.modifier}+Shift+h" = "move left";
|
||||
"${cfg.modifier}+Shift+j" = "move down";
|
||||
"${cfg.modifier}+Shift+k" = "move up";
|
||||
"${cfg.modifier}+Shift+l" = "move right";
|
||||
|
||||
# Workspaces
|
||||
"${cfg.modifier}+1" = "workspace number 1";
|
||||
"${cfg.modifier}+2" = "workspace number 2";
|
||||
"${cfg.modifier}+3" = "workspace number 3";
|
||||
"${cfg.modifier}+4" = "workspace number 4";
|
||||
"${cfg.modifier}+5" = "workspace number 5";
|
||||
"${cfg.modifier}+6" = "workspace number 6";
|
||||
"${cfg.modifier}+7" = "workspace number 7";
|
||||
"${cfg.modifier}+8" = "workspace number 8";
|
||||
"${cfg.modifier}+9" = "workspace number 9";
|
||||
"${cfg.modifier}+0" = "workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";
|
||||
"${cfg.modifier}+Shift+2" = "move container to workspace number 2";
|
||||
"${cfg.modifier}+Shift+3" = "move container to workspace number 3";
|
||||
"${cfg.modifier}+Shift+4" = "move container to workspace number 4";
|
||||
"${cfg.modifier}+Shift+5" = "move container to workspace number 5";
|
||||
"${cfg.modifier}+Shift+6" = "move container to workspace number 6";
|
||||
"${cfg.modifier}+Shift+7" = "move container to workspace number 7";
|
||||
"${cfg.modifier}+Shift+8" = "move container to workspace number 8";
|
||||
"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
|
||||
"${cfg.modifier}+Shift+0" = "move container to workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Control+j" = "workspace prev";
|
||||
"${cfg.modifier}+Control+k" = "workspace next";
|
||||
"${cfg.modifier}+Control+Shift+j" = "move workspace to output left";
|
||||
"${cfg.modifier}+Control+Shift+k" = "move workspace to output right";
|
||||
|
||||
# Splits
|
||||
"${cfg.modifier}+b" = "split h";
|
||||
"${cfg.modifier}+v" = "split v";
|
||||
|
||||
# Layouts
|
||||
"${cfg.modifier}+s" = "layout stacking";
|
||||
"${cfg.modifier}+w" = "layout tabbed";
|
||||
"${cfg.modifier}+e" = "layout toggle split";
|
||||
"${cfg.modifier}+f" = "fullscreen toggle";
|
||||
|
||||
"${cfg.modifier}+a" = "focus parent";
|
||||
|
||||
"${cfg.modifier}+d" = "floating toggle";
|
||||
"${cfg.modifier}+Shift+d" = "focus mode_toggle";
|
||||
|
||||
# Scratchpad
|
||||
# "${cfg.modifier}+Shift+minus" = "move scratchpad";
|
||||
# "${cfg.modifier}+minus" = "scratchpad show";
|
||||
|
||||
# Resize mode
|
||||
"${cfg.modifier}+r" = "mode resize";
|
||||
|
||||
# Outer gaps
|
||||
"${cfg.modifier}+equal" = "gaps horizontal current minus 200; gaps vertical current minus 100";
|
||||
"${cfg.modifier}+minus" = "gaps horizontal current plus 200; gaps vertical current plus 100";
|
||||
"${cfg.modifier}+bracketright" = "gaps outer current set 5";
|
||||
"${cfg.modifier}+bracketleft" = "gaps horizontal current set 800; gaps vertical current set 400";
|
||||
|
||||
# Dropdown term
|
||||
"${cfg.modifier}+grave" = "[instance=\"dropdown\"] scratchpad show; [instance=\"dropdown\"] move position center";
|
||||
"${cfg.modifier}+Escape" = "[instance=\"dropdown\"] scratchpad show; [instance=\"dropdown\"] move position center";
|
||||
|
||||
# Multimedia Keys
|
||||
"XF86AudioRaiseVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
"XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
"XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
"XF86AudioMicMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
||||
|
||||
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-";
|
||||
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%+";
|
||||
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
|
||||
# Screenshot
|
||||
"Print" = "exec ${pkgs.maim}/bin/maim --select | xclip -selection clipboard -t image/png";
|
||||
|
||||
# Programs
|
||||
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
|
||||
"${cfg.modifier}+Shift+n" = "exec ${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
"${cfg.modifier}+Shift+a" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
exec --no-startup-id ${pkgs.i3}/bin/i3-msg 'workspace 1'
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,176 +0,0 @@
|
|||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
polybarFull
|
||||
];
|
||||
xdg.configFile."polybar/config.ini" = {
|
||||
text = ''
|
||||
[colors]
|
||||
background = #FFFFFF
|
||||
background-alt = #D3D3D3
|
||||
foreground = #000000
|
||||
primary = #F0C674
|
||||
secondary = #8ABEB7
|
||||
blue = #4276b9
|
||||
alert = #A54242
|
||||
disabled = #707880
|
||||
|
||||
[bar/main]
|
||||
width = 100%
|
||||
height = 24pt
|
||||
radius = 10
|
||||
|
||||
background = ''${colors.background}
|
||||
foreground = ''${colors.foreground}
|
||||
|
||||
line-size = 3pt
|
||||
|
||||
border-size = 4pt
|
||||
border-color = #00000000
|
||||
|
||||
padding-left = 0
|
||||
padding-right = 1
|
||||
|
||||
module-margin = 1
|
||||
|
||||
separator =
|
||||
separator-foreground = ''${colors.disabled}
|
||||
|
||||
font-0 = DejaVuSansM Nerd Font:pixelsize=12;3
|
||||
|
||||
modules-left = xworkspaces xwindow
|
||||
modules-right = systray wlan eth pulseaudio filesystem cpu temperature memory date
|
||||
|
||||
cursor-click = pointer
|
||||
cursor-scroll = ns-resize
|
||||
|
||||
enable-ipc = true
|
||||
|
||||
[module/systray]
|
||||
type = internal/tray
|
||||
|
||||
format-margin = 8pt
|
||||
tray-spacing = 4pt
|
||||
tray-size = 55%
|
||||
|
||||
tray-background = ''${colors.blue}
|
||||
format-background = ''${colors.blue}
|
||||
format-padding = 10px
|
||||
|
||||
format-radius = 5.0
|
||||
|
||||
[module/xworkspaces]
|
||||
type = internal/xworkspaces
|
||||
|
||||
label-active = %name%
|
||||
label-active-background = ''${colors.background-alt}
|
||||
label-active-padding = 1
|
||||
|
||||
label-occupied = %name%
|
||||
label-occupied-padding = 1
|
||||
|
||||
label-urgent = %name%
|
||||
label-urgent-background = ''${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %name%
|
||||
label-empty-foreground = ''${colors.disabled}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:60:...%
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
interval = 25
|
||||
|
||||
mount-0 = /home
|
||||
|
||||
label-mounted = %free%
|
||||
format-mounted = <label-mounted>
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
format-volume = <label-volume> <ramp-volume>
|
||||
|
||||
label-volume = %percentage%%
|
||||
label-muted =
|
||||
ramp-volume-0 =
|
||||
ramp-volume-1 =
|
||||
ramp-volume-2 =
|
||||
|
||||
click-right = pavucontrol
|
||||
|
||||
[module/xkeyboard]
|
||||
type = internal/xkeyboard
|
||||
blacklist-0 = num lock
|
||||
|
||||
label-layout = %layout%
|
||||
label-layout-foreground = ''${colors.primary}
|
||||
|
||||
label-indicator-padding = 2
|
||||
label-indicator-margin = 1
|
||||
label-indicator-foreground = ''${colors.background}
|
||||
label-indicator-background = ''${colors.secondary}
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 2
|
||||
label = %gb_used:2%
|
||||
format = <label>
|
||||
format-margin = 5px
|
||||
|
||||
[module/temperature]
|
||||
type = internal/temperature
|
||||
internal = 1
|
||||
warn-temperature = 80
|
||||
format-warn-padding = 10px
|
||||
format = <label> <ramp>
|
||||
format-warn = <label-warn> <ramp>
|
||||
format-warn-background = #eb4d4b
|
||||
format-warn-foreground = #ffffff
|
||||
|
||||
ramp-0 =
|
||||
ramp-1 =
|
||||
ramp-2 =
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
label = %percentage:2%%
|
||||
format = <label>
|
||||
|
||||
[network-base]
|
||||
type = internal/network
|
||||
interval = 5
|
||||
format-connected = <label-connected>
|
||||
format-disconnected = <label-disconnected>
|
||||
|
||||
[module/wlan]
|
||||
inherit = network-base
|
||||
interface-type = wireless
|
||||
label-connected = %signal%
|
||||
label-disconnected =
|
||||
|
||||
[module/eth]
|
||||
inherit = network-base
|
||||
interface-type = wired
|
||||
label-connected = eth
|
||||
label-disconnected =
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1
|
||||
|
||||
date = %a %b %d %H:%M
|
||||
|
||||
label = %date%
|
||||
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
pseudo-transparency = true
|
||||
; vim:ft=dosini
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
|
||||
inherit (config.lib.formats.rasi) mkLiteral;
|
||||
in
|
||||
{
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
font = common.font + " " + common.font-size;
|
||||
location = "center";
|
||||
extraConfig = {
|
||||
show-icons = mkLiteral "true";
|
||||
};
|
||||
theme = {
|
||||
"prompt" = {
|
||||
"text-color" = mkLiteral common.colorschemes.default.inactive;
|
||||
};
|
||||
"textbox-prompt-colon" = {
|
||||
expand = false;
|
||||
str = ":";
|
||||
margin = mkLiteral "0px 0.3em 0em 0em";
|
||||
"text-color" = mkLiteral common.colorschemes.default.inactive;
|
||||
};
|
||||
"inputbar" = {
|
||||
"padding" = mkLiteral "10px 20px 10px 20px";
|
||||
"border" = mkLiteral "0px 0px 1px dash 0px";
|
||||
"border-color" = mkLiteral common.colorschemes.default.activeDark;
|
||||
"children" = map mkLiteral [ "prompt" "textbox-prompt-colon" "entry" ];
|
||||
};
|
||||
"listview" = {
|
||||
"padding" = mkLiteral "10px";
|
||||
};
|
||||
"element" = {
|
||||
"padding" = mkLiteral "10px";
|
||||
};
|
||||
"element-text" = {
|
||||
"margin" = mkLiteral "0px 0px 0px 20px";
|
||||
};
|
||||
} // lib.foldl'
|
||||
(acc: elem: acc // {
|
||||
${elem} = { "background-color" = mkLiteral common.colorschemes.default.activeDark; };
|
||||
})
|
||||
{ }
|
||||
(lib.mapCartesianProduct ({ a, b, c }: lib.concatStringsSep "." [ a b c ]) {
|
||||
a = [ "element" "element-text" "element-icon" ];
|
||||
b = [ "selected" ];
|
||||
c = [ "normal" "urgent" "active" ];
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
alabaster-theme-patch = builtins.toFile "alabaster.patch" ''
|
||||
diff --git a/alabaster.toml b/alabaster.toml
|
||||
index df312d3..f5e5499 100644
|
||||
--- a/alabaster.toml
|
||||
+++ b/alabaster.toml
|
||||
@@ -2,11 +2,11 @@
|
||||
# author tonsky
|
||||
|
||||
[colors.primary]
|
||||
-background = '#F7F7F7'
|
||||
+background = '#FFFFFF'
|
||||
foreground = '#434343'
|
||||
|
||||
[colors.cursor]
|
||||
-text = '#F7F7F7'
|
||||
+text = '#FFFFFF'
|
||||
cursor = '#434343'
|
||||
|
||||
[colors.normal]
|
||||
'';
|
||||
alacritty-theme-patched = pkgs.alacritty-theme.overrideAttrs (
|
||||
final: previous: { patches = [ alabaster-theme-patch ]; }
|
||||
);
|
||||
in
|
||||
{
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
import = [
|
||||
# Available themes:
|
||||
# https://github.com/alacritty/alacritty-theme
|
||||
"${alacritty-theme-patched}/alabaster.toml"
|
||||
];
|
||||
env.TERM = "xterm-256color";
|
||||
font = {
|
||||
size = 12;
|
||||
normal = {
|
||||
family = common.font;
|
||||
};
|
||||
};
|
||||
scrolling.multiplier = 5;
|
||||
selection.save_to_clipboard = true;
|
||||
window = {
|
||||
padding = {
|
||||
x = 5;
|
||||
y = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
icons = {
|
||||
chromium = ./icons/chromium.png;
|
||||
spotify = ./icons/spotify.png;
|
||||
teams = ./icons/teams.png;
|
||||
outlook = ./icons/outlook.png;
|
||||
whatsapp = ./icons/whatsapp.png;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
package = (pkgs.chromium.override { enableWideVine = true; });
|
||||
extensions = [
|
||||
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
|
||||
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # vimium
|
||||
];
|
||||
};
|
||||
|
||||
xdg.dataFile = {
|
||||
"applications/chromium-development.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Chromium (Development Modus)
|
||||
Exec=${pkgs.chromium}/bin/chromium --allow-file-access-from-files --disable-site-isolation-trials --allow-running-insecure-content --no-referrers --unlimited-storage --user-data-dir=${config.xdg.dataHome}/chromium-development/data --disable-web-security
|
||||
Terminal=false
|
||||
Icon=${icons.chromium}
|
||||
'';
|
||||
"applications/spotify.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Spotify
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://spotify.com
|
||||
Terminal=false
|
||||
Icon=${icons.spotify}
|
||||
'';
|
||||
"applications/teams.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Microsoft Teams
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://teams.microsoft.com
|
||||
Terminal=false
|
||||
Icon=${icons.teams}
|
||||
'';
|
||||
"applications/outlook.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Microsoft Outlook
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://outlook.office365.com/mail
|
||||
Terminal=false
|
||||
Icon=${icons.outlook}
|
||||
'';
|
||||
"applications/whatsapp.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=WhatsApp
|
||||
Exec=${pkgs.chromium}/bin/chromium --app=https://web.whatsapp.com
|
||||
Terminal=false
|
||||
Icon=${icons.whatsapp}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
### `chromium.png`
|
||||
- Source: [https://commons.wikimedia.org/wiki/File:Chromium_Logo.svg](https://commons.wikimedia.org/wiki/File:Chromium_Logo.svg)
|
||||
- Licensing
|
||||
> The Chromium project is published under Creative Commons attribution 2.5 and BSD. The logo is in the public domain, as it does not meet the threshold of originality.
|
||||
|
||||
### `outlook.png`
|
||||
- Source: [https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons](https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons)
|
||||
- Microsoft Fabric Assets License Agreement: [https://aka.ms/fluentui-assets-license](https://aka.ms/fluentui-assets-license)
|
||||
|
||||
### `spotify.png`
|
||||
- Source: [https://commons.wikimedia.org/wiki/File:Spotify_icon.svg](https://commons.wikimedia.org/wiki/File:Spotify_icon.svg)
|
||||
- Attribution: [https://developer.spotify.com/documentation/design#attribution](https://developer.spotify.com/documentation/design#attribution)
|
||||
|
||||
### `teams.png`
|
||||
- Source: [https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons](https://developer.microsoft.com/en-us/fluentui#/styles/web/m365-product-icons)
|
||||
- Attribution: [https://developer.spotify.com/documentation/design#attribution](https://developer.spotify.com/documentation/design#attribution)
|
||||
|
||||
### `whatsapp.png`
|
||||
- Source: [https://commons.wikimedia.org/wiki/File:WhatsApp_logo.svg](https://commons.wikimedia.org/wiki/File:WhatsApp_logo.svg)
|
||||
- WhatsApp brand assets and guidelines: [https://about.meta.com/brand/resources/whatsapp/whatsapp-brand/](https://about.meta.com/brand/resources/whatsapp/whatsapp-brand/)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB |
|
|
@ -1,70 +0,0 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, nixosConfig
|
||||
, ...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./alacritty.nix
|
||||
./chromium
|
||||
./discord.nix
|
||||
./games.nix
|
||||
./keyring.nix
|
||||
./kitty.nix
|
||||
./obs.nix
|
||||
./vscode.nix
|
||||
./zathura.nix
|
||||
];
|
||||
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
firefox # a web browser built from firefox source tree
|
||||
thunderbird # a full-featured e-mail client
|
||||
gnome.gnome-calendar # simple and beautiful calendar application for gnome
|
||||
speechd # common interface to speech synthesis - https://support.mozilla.org/en-us/kb/speechd-setup
|
||||
tor-browser # privacy-focused browser routing traffic through the tor network
|
||||
qbittorrent # featureful free software bittorrent client
|
||||
element-desktop # a feature-rich client for matrix.org
|
||||
bitwarden-desktop # secure and free password manager for all of your devices
|
||||
|
||||
telegram-desktop # telegram desktop messaging app
|
||||
signal-desktop # private, simple, and secure messenger
|
||||
unstable.zoom-us # zoom.us video conferencing application
|
||||
|
||||
gnome.simple-scan # simple scanning utility
|
||||
gnome.gnome-font-viewer # program that can preview fonts and create thumbnails for fonts
|
||||
pppdf
|
||||
feh # a light-weight image viewer
|
||||
mpv
|
||||
vlc # cross-platform media player and streaming server
|
||||
zathura # a highly customizable and functional pdf viewer
|
||||
neovide # a simple graphical user interface for neovim
|
||||
|
||||
gimp # the gnu image manipulation program
|
||||
(calibre.override { unrarSupport = true; })
|
||||
libreoffice # comprehensive, professional-quality productivity suite, a variant of openoffice.org
|
||||
xournalpp # a handwriting notetaking software with pdf annotation support
|
||||
libsForQt5.okular # kde document viewer
|
||||
carla # audio plugin host
|
||||
picard # musicbrainz picard audio file tagger
|
||||
anki # spaced repetition flashcard program
|
||||
obsidian # powerful knowledge base that works on top of a local folder of plain text markdown files
|
||||
|
||||
]
|
||||
++ lib.optionals nixosConfig.bchmnn.printing.enable [
|
||||
system-config-printer # graphical user interface for cups administration
|
||||
|
||||
]
|
||||
++ lib.optionals nixosConfig.services.ratbagd.enable [
|
||||
piper # gtk frontend for ratbagd mouse config daemon
|
||||
|
||||
]
|
||||
++ lib.optionals nixosConfig.bchmnn.collections.development.enable [
|
||||
wireshark # powerful network protocol analyzer
|
||||
jadx # dex to java decompiler
|
||||
unstable.httptoolkit # http(s) debugging, development & testing tool
|
||||
android-studio # the official ide for android (stable channel)
|
||||
|
||||
];
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
vesktop # alternate client for discord with vencord built-in
|
||||
];
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
nixosConfig,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf nixosConfig.bchmnn.collections.games.enable {
|
||||
home.packages = with pkgs; [
|
||||
openjdk17 # the open-source java development kit
|
||||
prismlauncher # a free, open source launcher for minecraft
|
||||
# retroarchFull # multi-platform emulator frontend for libretro cores
|
||||
celestia # real-time 3d simulation of space
|
||||
extremetuxracer # high speed arctic racing game based on tux racer
|
||||
];
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.gnome-keyring = {
|
||||
enable = true;
|
||||
components = [
|
||||
"pkcs11"
|
||||
"secrets"
|
||||
"ssh"
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ gnome.seahorse ];
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
kitty-alabaster-theme-patch = builtins.toFile "kitty-theme-alabaster.patch" ''
|
||||
diff --git a/themes/Alabaster.conf b/themes/Alabaster.conf
|
||||
index 7989049..b0c180e 100644
|
||||
--- a/themes/Alabaster.conf
|
||||
+++ b/themes/Alabaster.conf
|
||||
@@ -6,17 +6,17 @@
|
||||
|
||||
#: The basic colors
|
||||
|
||||
-foreground #000000
|
||||
-background #f7f7f7
|
||||
+foreground #434343
|
||||
+background #ffffff
|
||||
|
||||
-selection_foreground #000000
|
||||
+selection_foreground #434343
|
||||
selection_background #bfdbfe
|
||||
|
||||
|
||||
#: Cursor colors
|
||||
|
||||
-cursor #007acc
|
||||
-cursor_text_color #bfdbfe
|
||||
+cursor #434343
|
||||
+cursor_text_color #ffffff
|
||||
|
||||
|
||||
#: URL underline color when hovering with mouse
|
||||
@@ -55,8 +55,8 @@ color6 #0083b2
|
||||
color14 #00aacb
|
||||
|
||||
#: white
|
||||
-color7 #f7f7f7
|
||||
-color15 #f7f7f7
|
||||
+color7 #bbbbbb
|
||||
+color15 #ffffff
|
||||
|
||||
|
||||
#: kitty window border colors and terminal bell colors
|
||||
'';
|
||||
kitty-theme-patched = pkgs.kitty-themes.overrideAttrs (
|
||||
final: previous: { patches = [ kitty-alabaster-theme-patch ]; }
|
||||
);
|
||||
in
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font.name = common.font;
|
||||
font.size = 12;
|
||||
shellIntegration = {
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
extraConfig = ''
|
||||
include ${kitty-theme-patched}/share/kitty-themes/themes/Alabaster.conf
|
||||
text_composition_strategy legacy
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = [ pkgs.obs-studio-plugins.wlrobs ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
enableExtensionUpdateCheck = true;
|
||||
enableUpdateCheck = false;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
vscodevim.vim
|
||||
editorconfig.editorconfig
|
||||
dbaeumer.vscode-eslint
|
||||
waderyan.gitblame
|
||||
bierner.markdown-mermaid
|
||||
pkief.material-icon-theme
|
||||
christian-kohler.path-intellisense
|
||||
johnpapa.vscode-peacock
|
||||
esbenp.prettier-vscode
|
||||
bradlc.vscode-tailwindcss
|
||||
jnoortheen.nix-ide
|
||||
ms-vscode.cpptools
|
||||
ms-vscode.cmake-tools
|
||||
james-yu.latex-workshop
|
||||
];
|
||||
userSettings = {
|
||||
"window.titleBarStyle" = "custom";
|
||||
"window.menuBarVisibility" = "toggle";
|
||||
|
||||
"workbench.colorTheme" = "Default Light Modern";
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
|
||||
"explorer.confirmDragAndDrop" = false;
|
||||
"explorer.confirmDelete" = false;
|
||||
|
||||
"editor.renderControlCharacters" = true;
|
||||
"editor.renderWhitespace" = "all";
|
||||
"editor.renderFinalNewline" = "on";
|
||||
"editor.tabSize" = 4;
|
||||
"editor.cursorStyle" = "line";
|
||||
"editor.insertSpaces" = false;
|
||||
"editor.lineNumbers" = "on";
|
||||
"editor.wordSeparators" = "/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-";
|
||||
"editor.wordWrap" = "on";
|
||||
"editor.suggestSelection" = "first";
|
||||
"editor.fontFamily" = common.font;
|
||||
"editor.fontSize" = 16;
|
||||
"editor.bracketPairColorization.enabled" = true;
|
||||
"editor.guides.bracketPairs" = "active";
|
||||
"editor.quickSuggestions" = {
|
||||
strings = "on";
|
||||
};
|
||||
"editor.codeActionsOnSave" = {
|
||||
".source.organizeImports" = "explicit";
|
||||
};
|
||||
|
||||
"terminal.integrated.fontFamily" = common.font;
|
||||
|
||||
"files.exclude" = {
|
||||
"**/.classpath" = true;
|
||||
"**/.project" = true;
|
||||
"**/.settings" = true;
|
||||
"**/.factorypath" = true;
|
||||
"**/__pycache__" = true;
|
||||
};
|
||||
|
||||
"vim.normalModeKeyBindingsNonRecursive" = [
|
||||
{
|
||||
"before" = [ "<C-p>" ];
|
||||
"commands" = [ "workbench.action.quickOpen" ];
|
||||
}
|
||||
{
|
||||
"before" = [ "<C-b>" ];
|
||||
"commands" = [
|
||||
"workbench.view.explorer"
|
||||
"workbench.action.toggleSidebarVisibility"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
"[html]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[javascript]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[typescript]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[typescriptreact]" = {
|
||||
"editor.tabSize" = 2;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[python]" = {
|
||||
"editor.tabSize" = 4;
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.formatOnType" = true;
|
||||
};
|
||||
"[yaml]" = {
|
||||
"editor.insertSpaces" = true;
|
||||
"editor.tabSize" = 2;
|
||||
"editor.autoIndent" = "advanced";
|
||||
};
|
||||
"[json]" = {
|
||||
"editor.defaultFormatter" = "vscode.json-language-features";
|
||||
};
|
||||
"[jsonc]" = {
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[java]" = {
|
||||
"editor.defaultFormatter" = "redhat.java";
|
||||
};
|
||||
"[markdown]" = {
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[css]" = {
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
};
|
||||
"[nix]" = {
|
||||
"editor.defaultFormatter" = "jnoortheen.nix-ide";
|
||||
};
|
||||
|
||||
"git.autofetch" = true;
|
||||
"json.schemaDownload.enable" = true;
|
||||
"javascript.updateImportsOnFileMove.enabled" = "always";
|
||||
"typescript.updateImportsOnFileMove.enabled" = "always";
|
||||
|
||||
"nix.enableLanguageServer" = true;
|
||||
"nix.serverPath" = "${pkgs.nil}/bin/nil";
|
||||
"nix.formatterPath" = "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt";
|
||||
};
|
||||
|
||||
keybindings = [
|
||||
{
|
||||
key = "ctrl+tab";
|
||||
command = "workbench.action.nextEditor";
|
||||
}
|
||||
{
|
||||
key = "ctrl+shift+tab";
|
||||
command = "workbench.action.previousEditor";
|
||||
}
|
||||
{
|
||||
key = "alt+left";
|
||||
command = "workbench.action.navigateBack";
|
||||
}
|
||||
{
|
||||
key = "alt+right";
|
||||
command = "workbench.action.navigateForward";
|
||||
}
|
||||
{
|
||||
key = "ctrl+escape";
|
||||
command = "workbench.action.terminal.toggleTerminal";
|
||||
when = "terminal.active";
|
||||
}
|
||||
{
|
||||
key = "ctrl+f";
|
||||
command = "editor.action.formatDocument";
|
||||
when = "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
# a highly customizable and functional pdf viewer
|
||||
programs.zathura = {
|
||||
enable = true;
|
||||
options = {
|
||||
selection-clipboard = "clipboard";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,355 +0,0 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
nixosConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.wayland.windowManager.sway.config;
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./kanshi.nix
|
||||
./swaync
|
||||
./wofi.nix
|
||||
../waybar.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
brightnessctl # this program allows you read and control device brightness
|
||||
pavucontrol # pulseaudio volume control
|
||||
playerctl # command-line utility and library for controlling media players that implement mpris
|
||||
networkmanagerapplet # networkmanager control applet for gnome
|
||||
udiskie # removable disk automounter for udisks
|
||||
dracula-theme # dracula variant of the ant theme
|
||||
gnome3.adwaita-icon-theme
|
||||
wl-clipboard # command-line copy/paste utilities for wayland
|
||||
sway-contrib.grimshot # a helper for screenshots within sway
|
||||
wdisplays # a graphical application for configuring displays in wayland compositors
|
||||
wlr-randr # an xrandr clone for wlroots compositors
|
||||
kanshi # dynamic display configuration tool
|
||||
nextcloud-client # nextcloud themed desktop client
|
||||
libsForQt5.kdeconnect-kde # kde connect provides several features to integrate your phone and your computer
|
||||
system-config-printer # graphical user interface for cups administration
|
||||
emote # modern emoji picker for linux
|
||||
];
|
||||
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
};
|
||||
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
wrapperFeatures = {
|
||||
base = true;
|
||||
gtk = true;
|
||||
};
|
||||
xwayland = true;
|
||||
extraSessionCommands =
|
||||
with lib;
|
||||
with nixosConfig.bchmnn;
|
||||
''
|
||||
export CLUTTER_BACKEND=wayland;
|
||||
export GDK_BACKEND=wayland;
|
||||
export GDK_DPI_SCALE=1;
|
||||
export NIXOS_OZONE_WL=1;
|
||||
export MOZ_ENABLE_WAYLAND=1;
|
||||
export MOZ_USE_XINPUT2=1;
|
||||
export XDG_SESSION_TYPE=wayland;
|
||||
export XDG_CURRENT_DESKTOP=sway;
|
||||
|
||||
# sdl
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
|
||||
# qt
|
||||
export QT_QPA_PLATFORM=wayland-egl
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
|
||||
|
||||
# java
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on";
|
||||
|
||||
''
|
||||
+ optionalString nvidia.enable ''
|
||||
# nvidia
|
||||
export WLR_RENDERER=vulkan;
|
||||
# export LIBVA_DRIVER_NAME,nvidia;
|
||||
# export GBM_BACKEND=nvidia-drm;
|
||||
export __GL_GSYNC_ALLOWED=0;
|
||||
export __GL_VRR_ALLOWED=0;
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia;
|
||||
export WLR_NO_HARDWARE_CURSORS=1;
|
||||
|
||||
# xwayland compat
|
||||
export XWAYLAND_NO_GLAMOR=1;
|
||||
'';
|
||||
config = {
|
||||
modifier = "Mod4";
|
||||
terminal = "${config.programs.kitty.package}/bin/kitty";
|
||||
menu = "${pkgs.wofi}/bin/wofi";
|
||||
# TODO for some reason bar only works when used with exec
|
||||
bars = [ ];
|
||||
startup = with pkgs; [
|
||||
# TODO activate with systemd prbly requires a graphical.target?
|
||||
# { command = "${nixosConfig.systemd.package}/bin/systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP"; }
|
||||
# { command = "${dbus}/bin/dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway"; }
|
||||
# { command = "${nixosConfig.systemd.package}/bin/systemctl --user stop xdg-desktop-portal xdg-desktop-portal-wlr"; }
|
||||
# { command = "${nixosConfig.systemd.package}/bin/systemctl --user start xdg-desktop-portal xdg-desktop-portal-wlr"; }
|
||||
# { command = "${dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK"; }
|
||||
{
|
||||
command = "${config.programs.waybar.package}/bin/waybar -c ${config.xdg.configHome}/waybar/swaybar.json -s ${config.xdg.configHome}/waybar/swaybar.css";
|
||||
}
|
||||
{ command = "${dbus}/bin/dbus-update-activation-environment --all"; }
|
||||
{ command = "${kanshi}/bin/kanshi"; }
|
||||
{ command = "${networkmanagerapplet}/bin/nm-applet"; }
|
||||
{ command = "${blueman}/bin/blueman-applet"; }
|
||||
{ command = "${udiskie}/bin/udiskie --tray"; }
|
||||
{ command = "${swaynotificationcenter}/bin/swaync"; }
|
||||
{ command = "${nextcloud-client}/bin/nextcloud"; }
|
||||
{ command = "${plasma5Packages.kdeconnect-kde}/bin/kdeconnect-indicator"; }
|
||||
{ command = "${system-config-printer}/bin/system-config-printer-applet"; }
|
||||
{ command = "${emote}/bin/emote"; }
|
||||
{ command = "${polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; }
|
||||
];
|
||||
input = {
|
||||
"2:7:SynPS/2_Synaptics_TouchPad" = {
|
||||
accel_profile = "flat";
|
||||
dwt = "enabled";
|
||||
dwtp = "enabled";
|
||||
tap = "enabled";
|
||||
natural_scroll = "enabled";
|
||||
middle_emulation = "enabled";
|
||||
scroll_factor = "0.3";
|
||||
};
|
||||
"2:10:TPPS/2_IBM_TrackPoint" = {
|
||||
accel_profile = "flat";
|
||||
scroll_factor = "0.5";
|
||||
};
|
||||
};
|
||||
output = {
|
||||
"*".bg = "${common.wallpaper.default} fill";
|
||||
};
|
||||
left = "h";
|
||||
down = "j";
|
||||
up = "k";
|
||||
right = "l";
|
||||
|
||||
keybindings = {
|
||||
"${cfg.modifier}+Ctrl+Shift+l" = "exec ${pkgs.swaylock-effects}/bin/swaylock --screenshots --clock --indicator --indicator-radius 100 --indicator-thickness 7 --effect-blur 7x5 --effect-vignette 0.5:0.5 --ring-color ffffff --key-hl-color ${common.colorschemes.default._black} --line-color 00000000 --inside-color 00000088 --inside-ver-color ${common.colorschemes.default._white} --separator-color 00000000 --text-color ${common.colorschemes.default._white} --fade-in 0.1";
|
||||
|
||||
# Basics
|
||||
"${cfg.modifier}+Return" = "exec ${cfg.terminal}";
|
||||
"${cfg.modifier}+q" = "kill";
|
||||
"${cfg.modifier}+Space" = "exec ${cfg.menu}";
|
||||
"${cfg.modifier}+Shift+c" = "reload";
|
||||
"${cfg.modifier}+Shift+q" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
||||
|
||||
# Focus
|
||||
"${cfg.modifier}+${cfg.left}" = "focus left";
|
||||
"${cfg.modifier}+${cfg.down}" = "focus down";
|
||||
"${cfg.modifier}+${cfg.up}" = "focus up";
|
||||
"${cfg.modifier}+${cfg.right}" = "focus right";
|
||||
|
||||
"${cfg.modifier}+p" = "focus output left";
|
||||
"${cfg.modifier}+n" = "focus output right";
|
||||
|
||||
# Moving
|
||||
"${cfg.modifier}+Shift+${cfg.left}" = "move left";
|
||||
"${cfg.modifier}+Shift+${cfg.down}" = "move down";
|
||||
"${cfg.modifier}+Shift+${cfg.up}" = "move up";
|
||||
"${cfg.modifier}+Shift+${cfg.right}" = "move right";
|
||||
|
||||
# Workspaces
|
||||
"${cfg.modifier}+1" = "workspace number 1";
|
||||
"${cfg.modifier}+2" = "workspace number 2";
|
||||
"${cfg.modifier}+3" = "workspace number 3";
|
||||
"${cfg.modifier}+4" = "workspace number 4";
|
||||
"${cfg.modifier}+5" = "workspace number 5";
|
||||
"${cfg.modifier}+6" = "workspace number 6";
|
||||
"${cfg.modifier}+7" = "workspace number 7";
|
||||
"${cfg.modifier}+8" = "workspace number 8";
|
||||
"${cfg.modifier}+9" = "workspace number 9";
|
||||
"${cfg.modifier}+0" = "workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";
|
||||
"${cfg.modifier}+Shift+2" = "move container to workspace number 2";
|
||||
"${cfg.modifier}+Shift+3" = "move container to workspace number 3";
|
||||
"${cfg.modifier}+Shift+4" = "move container to workspace number 4";
|
||||
"${cfg.modifier}+Shift+5" = "move container to workspace number 5";
|
||||
"${cfg.modifier}+Shift+6" = "move container to workspace number 6";
|
||||
"${cfg.modifier}+Shift+7" = "move container to workspace number 7";
|
||||
"${cfg.modifier}+Shift+8" = "move container to workspace number 8";
|
||||
"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
|
||||
"${cfg.modifier}+Shift+0" = "move container to workspace number 10";
|
||||
|
||||
"${cfg.modifier}+Control+${cfg.down}" = "workspace prev";
|
||||
"${cfg.modifier}+Control+${cfg.up}" = "workspace next";
|
||||
"${cfg.modifier}+Control+Shift+${cfg.down}" = "move workspace to output left";
|
||||
"${cfg.modifier}+Control+Shift+${cfg.up}" = "move workspace to output right";
|
||||
|
||||
# Splits
|
||||
"${cfg.modifier}+b" = "splith";
|
||||
"${cfg.modifier}+v" = "splitv";
|
||||
|
||||
# Layouts
|
||||
"${cfg.modifier}+s" = "layout stacking";
|
||||
"${cfg.modifier}+w" = "layout tabbed";
|
||||
"${cfg.modifier}+e" = "layout toggle split";
|
||||
"${cfg.modifier}+f" = "fullscreen toggle";
|
||||
|
||||
"${cfg.modifier}+a" = "focus parent";
|
||||
|
||||
"${cfg.modifier}+d" = "floating toggle";
|
||||
"${cfg.modifier}+Shift+d" = "focus mode_toggle";
|
||||
|
||||
# Scratchpad
|
||||
"${cfg.modifier}+Shift+minus" = "move scratchpad";
|
||||
"${cfg.modifier}+minus" = "scratchpad show";
|
||||
|
||||
# Resize mode
|
||||
"${cfg.modifier}+r" = "mode resize";
|
||||
|
||||
# Multimedia Keys
|
||||
"XF86AudioRaiseVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
"XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
"XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
"XF86AudioMicMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
||||
|
||||
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-";
|
||||
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%+";
|
||||
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
|
||||
# Screenshot
|
||||
"Print" = "exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy area";
|
||||
|
||||
# Programs
|
||||
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
|
||||
"${cfg.modifier}+Shift+n" = "exec ${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
"${cfg.modifier}+Shift+a" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
|
||||
"${cfg.modifier}+period" = "exec ${pkgs.emote}/bin/emote";
|
||||
};
|
||||
fonts = {
|
||||
names = [ common.font ];
|
||||
style = "Bold";
|
||||
size = 12.0;
|
||||
};
|
||||
seat = {
|
||||
"*" = {
|
||||
xcursor_theme = "macOS-Monterey 32";
|
||||
};
|
||||
};
|
||||
window = {
|
||||
titlebar = false;
|
||||
border = 4;
|
||||
};
|
||||
colors = {
|
||||
focused = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
focusedInactive = {
|
||||
border = common.colorschemes.default.inactive;
|
||||
background = common.colorschemes.default.inactive;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactive;
|
||||
childBorder = common.colorschemes.default.inactive;
|
||||
};
|
||||
unfocused = {
|
||||
border = common.colorschemes.default.inactiveDark;
|
||||
background = common.colorschemes.default.inactiveDark;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.inactiveDark;
|
||||
childBorder = common.colorschemes.default.inactiveDark;
|
||||
};
|
||||
urgent = {
|
||||
border = common.colorschemes.default.alert;
|
||||
background = common.colorschemes.default.alert;
|
||||
text = common.colorschemes.default.white;
|
||||
indicator = common.colorschemes.default.black;
|
||||
childBorder = common.colorschemes.default.alert;
|
||||
};
|
||||
placeholder = {
|
||||
border = common.colorschemes.default.active;
|
||||
background = common.colorschemes.default.active;
|
||||
text = common.colorschemes.default.black;
|
||||
indicator = common.colorschemes.default.activeDark;
|
||||
childBorder = common.colorschemes.default.active;
|
||||
};
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
for_window [title="Firefox — Sharing Indicator"] {
|
||||
floating enable
|
||||
}
|
||||
for_window [title="Bluetooth Devices"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [title="Volume Control"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [app_id="nm-connection-editor" title="Network Connections"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [app_id="thunderbird" title="Reminder"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [app_id="com.nextcloud.desktopclient.nextcloud" title="Nextcloud"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
for_window [title="Extension: \(Gopass Bridge\) - gopass bridge — Mozilla Firefox"] {
|
||||
floating enable
|
||||
resize set 700px 450px
|
||||
move position 100ppt 0
|
||||
move left 700px
|
||||
}
|
||||
|
||||
set $ddterm-id dropdown-terminal
|
||||
set $ddterm ${cfg.terminal} --class $ddterm-id
|
||||
set $ddterm-resize resize set 100ppt 40ppt, move position 0 0
|
||||
|
||||
# resize/move new dropdown terminal windows
|
||||
for_window [app_id="$ddterm-id"] {
|
||||
floating enable
|
||||
$ddterm-resize
|
||||
move to scratchpad
|
||||
scratchpad show
|
||||
}
|
||||
|
||||
# show existing or start new dropdown terminal
|
||||
bindsym ${cfg.modifier}+grave exec swaymsg '[app_id="$ddterm-id"] scratchpad show' || $ddterm && sleep .1 && swaymsg '[app_id="$ddterm-id"] $ddterm-resize'
|
||||
bindsym ${cfg.modifier}+Escape exec swaymsg '[app_id="$ddterm-id"] scratchpad show' || $ddterm && sleep .1 && swaymsg '[app_id="$ddterm-id"] $ddterm-resize'
|
||||
# ^-- resize again, case moving to different output
|
||||
|
||||
workspace 1
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.kanshi = {
|
||||
enable = true;
|
||||
|
||||
# TODO: profiles is deprecated
|
||||
profiles = {
|
||||
|
||||
nomad = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "LVDS-1";
|
||||
status = "enable";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
iroh = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "DP-3";
|
||||
status = "enable";
|
||||
mode = "2560x1440";
|
||||
position = "0,0";
|
||||
}
|
||||
{
|
||||
criteria = "DP-2";
|
||||
status = "enable";
|
||||
mode = "2560x1440";
|
||||
position = "2560,0";
|
||||
}
|
||||
{
|
||||
criteria = "DP-1";
|
||||
status = "enable";
|
||||
mode = "2560x1440";
|
||||
position = "5120,0";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
station = {
|
||||
outputs = [
|
||||
{
|
||||
criteria = "LVDS-1";
|
||||
status = "disable";
|
||||
}
|
||||
{
|
||||
criteria = "DP-3";
|
||||
# criteria = "Dell Inc. DELL U2515H 9X2VY5490XUL";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "0,0";
|
||||
}
|
||||
{
|
||||
criteria = "DP-2";
|
||||
# criteria = "Dell Inc. DELL U2515H 9X2VY5C7138L";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "1920,0";
|
||||
}
|
||||
{
|
||||
criteria = "VGA-1";
|
||||
# criteria = "HJW VGA TO HDMI 0x00000100";
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "3840,0";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
{
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"notification-icon-size": 64,
|
||||
"notification-body-image-height": 100,
|
||||
"notification-body-image-width": 200,
|
||||
"timeout": 10,
|
||||
"timeout-low": 5,
|
||||
"timeout-critical": 0,
|
||||
"fit-to-screen": true,
|
||||
"keyboard-shortcuts": true,
|
||||
"image-visibility": "when-available",
|
||||
"transition-time": 200,
|
||||
"hide-on-clear": false,
|
||||
"hide-on-action": true,
|
||||
"script-fail-notify": true,
|
||||
"widgets": [
|
||||
"mpris",
|
||||
"volume",
|
||||
"backlight",
|
||||
"title",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": true,
|
||||
"button-text": "Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"label": {
|
||||
"max-lines": 1,
|
||||
"text": "Notification Center"
|
||||
},
|
||||
"mpris": {
|
||||
"image-size": 96,
|
||||
"image-radius": 12
|
||||
},
|
||||
"volume": {
|
||||
"label": " "
|
||||
},
|
||||
"backlight": {
|
||||
"label": " "
|
||||
},
|
||||
"buttons-grid": {
|
||||
"actions": [
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl poweroff"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl reboot"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "swaylock"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "swaymsg exit"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl suspend"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "iwgtk"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "blueman-manager"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "kooha"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./swaync.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,340 +0,0 @@
|
|||
@define-color cc-bg rgba(0, 0, 0, 1);
|
||||
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||
@define-color noti-bg rgb(17, 17, 27);
|
||||
@define-color noti-bg-darker rgb(43, 43, 57);
|
||||
@define-color noti-bg-hover rgb(27, 27, 43);
|
||||
@define-color noti-bg-focus rgba(27, 27, 27, 0.6);
|
||||
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||
@define-color text-color rgba(169, 177, 214, 1);
|
||||
@define-color text-color-disabled rgb(150, 150, 150);
|
||||
@define-color bg-selected rgb(0, 128, 255);
|
||||
|
||||
* {
|
||||
font-family: DejaVuSansM Nerd Font;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.control-center .notification-row:focus,
|
||||
.control-center .notification-row:hover {
|
||||
opacity: 1;
|
||||
background: @noti-bg-darker
|
||||
}
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 12px;
|
||||
margin: 10px;
|
||||
padding: 0;
|
||||
border: 2px solid #7aa2f7
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 10px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all .15s ease-in-out;
|
||||
border: none
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: none;
|
||||
color: @text-color;
|
||||
transition: all .15s ease-in-out
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0;
|
||||
border-top: none;
|
||||
border-right: none
|
||||
}
|
||||
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
background: #1b1b2b
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
background: #1b1b2b
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px
|
||||
}
|
||||
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent
|
||||
}
|
||||
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: #fff;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
color: rgba(158, 206, 106, 1);
|
||||
text-shadow: none
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
border: 1px solid #7aa2f7;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: .5
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25)
|
||||
}
|
||||
|
||||
.widget-title {
|
||||
color: @text-color;
|
||||
margin: 10px;
|
||||
font-size: 1.5rem
|
||||
}
|
||||
|
||||
.widget-title>button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-title>button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
color: @text-color;
|
||||
margin: 10px;
|
||||
font-size: 1.1rem
|
||||
}
|
||||
|
||||
.widget-dnd>switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.widget-dnd>switch:checked {
|
||||
background: @bg-selected
|
||||
}
|
||||
|
||||
.widget-dnd>switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-label {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.widget-label>label {
|
||||
font-size: 1.5rem;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.widget-mpris {
|
||||
color: @text-color;
|
||||
background: @noti-bg-darker;
|
||||
padding: 10px;
|
||||
margin: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px
|
||||
}
|
||||
|
||||
.widget-mpris-title {
|
||||
font-weight: 700;
|
||||
font-size: 1.25rem
|
||||
}
|
||||
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
font-size: x-large;
|
||||
padding: 8px;
|
||||
margin: 20px 10px 10px;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg-darker;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button {
|
||||
margin: 3px;
|
||||
background: #343b58;
|
||||
border-radius: 12px;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
/* background: @noti-bg-hover; */
|
||||
color: rgba(158, 206, 106, 1)
|
||||
}
|
||||
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.topbar-buttons>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.widget-volume {
|
||||
background: @noti-bg-darker;
|
||||
padding: 8px;
|
||||
margin: 10px;
|
||||
border-radius: 12px;
|
||||
font-size: x-large;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 4px 8px 8px;
|
||||
margin: 0 8px 8px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-backlight {
|
||||
background: @noti-bg-darker;
|
||||
padding: 8px;
|
||||
margin: 10px;
|
||||
border-radius: 12px;
|
||||
font-size: x-large;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem
|
||||
}
|
||||
|
||||
.widget-inhibitors>button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-inhibitors>button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{ pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [
|
||||
swaynotificationcenter
|
||||
libnotify
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"swaync/config.json".source = ./config.json;
|
||||
"swaync/style.css".source = ./style.css;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
common = (import ../common.nix) {
|
||||
pkgs = pkgs;
|
||||
lib = lib;
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
show = "drun";
|
||||
allow_images = true;
|
||||
image_size = 24;
|
||||
no_actions = true;
|
||||
};
|
||||
style = ''
|
||||
* {
|
||||
font-family: '${common.font}', monospace;
|
||||
font-size: ${common.font-size}px;
|
||||
color: ${common.colorschemes.default.black};
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#input {
|
||||
background-color: ${common.colorschemes.default.active};
|
||||
border: 5px;
|
||||
border-color: ${common.colorschemes.default.activeDark};
|
||||
border-radius: 0px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
background-color: ${common.colorschemes.default.active};
|
||||
border: 5px;
|
||||
border-color: ${common.colorschemes.default.activeDark};
|
||||
border-radius: 0px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#entry #text {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: ${common.colorschemes.default.activeDark};
|
||||
}
|
||||
|
||||
#entry:selected #img {
|
||||
background-color: ${common.colorschemes.default.activeDark};
|
||||
}
|
||||
|
||||
#entry:selected #text {
|
||||
background-color: ${common.colorschemes.default.activeDark};
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,396 +0,0 @@
|
|||
{ pkgs, nixosConfig, lib, ... }:
|
||||
let
|
||||
check-battery = pkgs.writeShellScript "check-battery" ''
|
||||
bat=/sys/class/power_supply/BAT0
|
||||
CRIT=''${1:-15}
|
||||
|
||||
FILE=~/.config/waybar/.notified.target
|
||||
|
||||
stat=$(cat $bat/status)
|
||||
perc=$(cat $bat/capacity)
|
||||
|
||||
if [[ $perc -le $CRIT ]] && [[ $stat == "Discharging" ]]; then
|
||||
if [[ ! -f "$FILE" ]]; then
|
||||
notify-send --urgency=critical --icon=dialog-warning "Battery Low" "Current charge: $perc%"
|
||||
touch $FILE
|
||||
fi
|
||||
elif [[ -f "$FILE" ]]; then
|
||||
rm $FILE
|
||||
fi
|
||||
'';
|
||||
vpn-dryb-org-status = pkgs.writeShellScript "vpn-dryb-org-status" ''
|
||||
if ${nixosConfig.systemd.package}/bin/systemctl is-active wg-quick-vpn.dryb.org > /dev/null 2>&1; then
|
||||
echo " "
|
||||
else
|
||||
echo " "
|
||||
fi
|
||||
'';
|
||||
vpn-dryb-org-toggle = pkgs.writeShellScript "vpn-dryb-org-toggle" ''
|
||||
if ${nixosConfig.systemd.package}/bin/systemctl is-active wg-quick-vpn.dryb.org > /dev/null 2>&1; then
|
||||
pkexec ${nixosConfig.systemd.package}/bin/systemctl stop wg-quick-vpn.dryb.org
|
||||
else
|
||||
pkexec ${nixosConfig.systemd.package}/bin/systemctl start wg-quick-vpn.dryb.org
|
||||
fi
|
||||
'';
|
||||
in
|
||||
{
|
||||
xdg.configFile = {
|
||||
"waybar/swaybar.json".text = ''
|
||||
[
|
||||
{
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{percent}% {icon} ",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"battery": {
|
||||
"format": "{capacity}% {icon} ",
|
||||
"format-alt": "{time} {icon} ",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"format-plugged": "{capacity}% ",
|
||||
"on-update": "${check-battery}",
|
||||
"states": {
|
||||
"critical": 15,
|
||||
"warning": 30
|
||||
}
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%a %b %d %H:%M}",
|
||||
"timezones": [
|
||||
"Europe/Berlin"
|
||||
],
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
||||
},
|
||||
"custom/mem": {
|
||||
"exec": "free -h | awk '/Mem:/{printf $3}'",
|
||||
"format": "{} ",
|
||||
"interval": 3,
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/separator": {
|
||||
"format": "|",
|
||||
"interval": "once",
|
||||
"tooltip": false
|
||||
},
|
||||
"disk": {
|
||||
"format": "{specific_free:0.0f}GB ",
|
||||
"unit": "GB"
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"sway/window": {
|
||||
"format": "{title}",
|
||||
},
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"persistent-workspaces": {
|
||||
"1": [],
|
||||
"2": [],
|
||||
"3": [],
|
||||
"4": [],
|
||||
"5": [],
|
||||
"6": [],
|
||||
"7": [],
|
||||
"8": [],
|
||||
"9": [],
|
||||
"10": [],
|
||||
}
|
||||
},
|
||||
"layer": "top",
|
||||
"modules-center": [
|
||||
],
|
||||
"modules-left": [
|
||||
"sway/workspaces",
|
||||
"sway/window",
|
||||
"sway/mode"
|
||||
],
|
||||
"modules-right": [
|
||||
"tray",
|
||||
"network",
|
||||
${lib.optionalString (nixosConfig.bchmnn.collections.vpn.enable && nixosConfig.bchmnn.collections.vpn.dryborg.enable) "\"custom/vpndryborg\","}
|
||||
"custom/separator",
|
||||
"pulseaudio",
|
||||
"custom/separator",
|
||||
"disk",
|
||||
"custom/separator",
|
||||
"custom/mem",
|
||||
"custom/separator",
|
||||
"temperature",
|
||||
"custom/separator",
|
||||
"backlight",
|
||||
"custom/separator",
|
||||
"battery",
|
||||
"custom/separator",
|
||||
"clock"
|
||||
],
|
||||
"name": "swaybar",
|
||||
"network": {
|
||||
"format": "{ifname}",
|
||||
"format-disconnected": "",
|
||||
"format-ethernet": "eth ",
|
||||
"format-wifi": "{signalStrength}% ",
|
||||
"interval": 1,
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"tooltip-format-ethernet": "{ifname} ",
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) "
|
||||
},
|
||||
"custom/vpndryborg": {
|
||||
"exec": "${vpn-dryb-org-status}",
|
||||
"interval": 10,
|
||||
"on-click": "${vpn-dryb-org-toggle}",
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-icons": {
|
||||
"car": "",
|
||||
"default": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"hands-free": "",
|
||||
"headphone": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": ""
|
||||
},
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": " ",
|
||||
"on-click": "${pkgs.pavucontrol}/bin/pavucontrol",
|
||||
"reverse-scrolling": 1
|
||||
},
|
||||
"temperature": {
|
||||
"critical-threshold": 80,
|
||||
"format": "{temperatureC}°C {icon} ",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"tooltip": false
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"show-passive-items": true,
|
||||
"spacing": 4
|
||||
}
|
||||
}
|
||||
]
|
||||
'';
|
||||
|
||||
"waybar/swaybar.css".text = ''
|
||||
window.swaybar,
|
||||
window.swaybar * {
|
||||
border: none;
|
||||
font-family: DejaVuSansM Nerd Font;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window.swaybar #custom-separator {
|
||||
padding-right: 6px;
|
||||
color: #d3d3d3;
|
||||
}
|
||||
|
||||
window.swaybar#waybar {
|
||||
background: linear-gradient(to bottom, #ffffff, #f9f9f9);
|
||||
}
|
||||
|
||||
window.swaybar#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
margin-right: 8px;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
padding: 2px;
|
||||
/* font-size: 18px; */
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.empty {
|
||||
color: #7c818c;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.persistent {
|
||||
/* font-size: 12px; */
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.visible {
|
||||
color: black;
|
||||
/* font-size: 18px; */
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button.focused {
|
||||
background: lightgray;
|
||||
}
|
||||
|
||||
window.swaybar #workspaces button:hover {
|
||||
color: white;
|
||||
background: black;
|
||||
}
|
||||
|
||||
window.swaybar #window {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #mode {
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #tray {
|
||||
margin-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
color: white;
|
||||
background: rgb(66, 118, 185);
|
||||
}
|
||||
|
||||
window.swaybar #network {
|
||||
padding-left: 6px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #custom-vpndryborg {
|
||||
padding-right: 6px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #pulseaudio {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #pulseaudio.muted {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
window.swaybar #disk {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #custom-mem {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #temperature {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #temperature.critical {
|
||||
color: #eb4d4b;
|
||||
}
|
||||
|
||||
window.swaybar #backlight {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #battery {
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window.swaybar #battery.charging {
|
||||
color: #ffffff;
|
||||
background-color: #26A65B;
|
||||
}
|
||||
|
||||
window.swaybar #battery.warning:not(.charging) {
|
||||
background-color: #ffbe61;
|
||||
color: black;
|
||||
}
|
||||
|
||||
window.swaybar #battery.critical:not(.charging) {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
window.swaybar #clock {
|
||||
padding-right: 6px;
|
||||
margin-right: 8px;
|
||||
transition: none;
|
||||
color: black;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.file.".XCompose".source = "${pkgs.keyd}/share/keyd/keyd.compose";
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
gcc
|
||||
nodejs_20
|
||||
tree-sitter # parser generator tool and an incremental parsing library
|
||||
lua-language-server # language server that offers lua language support
|
||||
clang-tools # standalone command line tools for c++ development
|
||||
rust-analyzer # modular compiler frontend for the rust language
|
||||
rustfmt # tool for formatting rust code according to style guidelines
|
||||
gopls # official language server for the go language
|
||||
nixd # nix language server
|
||||
nil # yet another language server for nix
|
||||
nixfmt-rfc-style # official formatter for nix code
|
||||
pyright # type checker for the python language
|
||||
ruff # an extremely fast python linter
|
||||
black # uncompromising python code formatter
|
||||
isort # python utility / library to sort python imports
|
||||
vscode-langservers-extracted # html/css/json/eslint language servers extracted from vscode
|
||||
nodePackages.typescript-language-server
|
||||
tailwindcss-language-server
|
||||
nodePackages.prettier # prettier is an opinionated code formatter
|
||||
prettierd # prettier, as a daemon, for improved formatting speed
|
||||
texlab # implementation of the language server protocol for latex
|
||||
yamlfmt # extensible command line tool or library to format yaml files
|
||||
yamlfix # python yaml formatter that keeps your comments
|
||||
marksman # language server for markdown
|
||||
markdownlint-cli2 # fast, flexible, configuration-based command-line interface for linting markdown/commonmark files with the markdownlint library
|
||||
mdformat # commonmark compliant markdown formatter
|
||||
jdt-language-server # java language server
|
||||
];
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.neovim-unwrapped;
|
||||
defaultEditor = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, nixosConfig, ... }:
|
||||
{
|
||||
imports = [ ./pomodoro.nix ];
|
||||
home.packages = [
|
||||
(import ./git-clone-list.nix { inherit pkgs; })
|
||||
(import ./nix-update.nix { inherit pkgs nixosConfig; })
|
||||
];
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
{ pkgs }:
|
||||
pkgs.writeShellScriptBin "git-clone-list" ''
|
||||
reset="\e[0m"
|
||||
bold="\e[1m"
|
||||
underline="\e[4m"
|
||||
red="\e[31m"
|
||||
green="\e[32m"
|
||||
|
||||
XPATH='//*[@id="user-list-repositories"]//a[not(@class)]/@href'
|
||||
|
||||
function help_screen {
|
||||
echo
|
||||
echo -e "''${bold}''${underline}Usage:''${reset} ''${bold}$0''${reset} <USER> <LIST>"
|
||||
echo
|
||||
echo -e "''${bold}''${underline}Arguments''${reset}:"
|
||||
echo -e " ''${bold}USER''${reset} Github username of target user"
|
||||
echo -e " ''${bold}LIST''${reset} List name of target list"
|
||||
echo
|
||||
}
|
||||
|
||||
function error {
|
||||
echo
|
||||
echo -e "''${red}>>> ''${bold}Error''${reset}''${red}: $1''${reset}"
|
||||
if [ "$2" == "help" ]; then
|
||||
help_screen
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
error "Expected 2 arguments, got $#" help
|
||||
fi
|
||||
|
||||
USER=$1
|
||||
LIST=$2
|
||||
|
||||
NOT_VISITED=("/stars/$USER/lists/$LIST?page=1")
|
||||
VISITED=()
|
||||
REPOS=()
|
||||
|
||||
while [[ "''${#NOT_VISITED[@]}" != 0 ]]; do
|
||||
echo -e "''${green}>>> Fetching https://github.com''${NOT_VISITED[0]} ...''${reset}"
|
||||
while IFS= read -r line; do
|
||||
VISITED+=("''${NOT_VISITED[0]}")
|
||||
unset NOT_VISITED[0]
|
||||
if [[ "$line" == "/stars/$USER/lists/$LIST"* ]]; then
|
||||
if [[ ! "''${VISITED[@]}" =~ "''${line}" ]]; then
|
||||
NOT_VISITED+=("$line")
|
||||
fi
|
||||
else
|
||||
REPOS+=("$line")
|
||||
fi
|
||||
done < <(${pkgs.xidel}/bin/xidel "https://github.com''${NOT_VISITED[0]}" --xpath $XPATH)
|
||||
done
|
||||
|
||||
IT=1
|
||||
|
||||
for repo in "''${REPOS[@]}"; do
|
||||
echo -e "''${green}>>> [$IT/''${#REPOS[@]}] Cloning https://github.com$repo.git ...''${reset}"
|
||||
${pkgs.git}/bin/git clone "https://github.com$repo.git" "''${repo:1}"
|
||||
IT=$((IT + 1))
|
||||
done
|
||||
''
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
{ pkgs, nixosConfig }:
|
||||
pkgs.writeShellScriptBin "nuf" ''
|
||||
reset="\e[0m"
|
||||
red="\e[31m"
|
||||
green="\e[32m"
|
||||
yellow="\e[33m"
|
||||
white_bold="\e[1;37m"
|
||||
tmp=$(mktemp -d)
|
||||
|
||||
function error {
|
||||
rm -rf tmp
|
||||
echo ""
|
||||
echo -e "''${red}>>> ''${bold}Error''${reset}''${red}: $1''${reset}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
FLAKE=$(readlink -f /etc/nixos)
|
||||
|
||||
echo -e "''${green}>>> Updating flake $FLAKE ...''${reset}"
|
||||
${nixosConfig.nix.package}/bin/nix flake update --flake "$FLAKE" || error "Updating failed"
|
||||
|
||||
cd $tmp
|
||||
echo ""
|
||||
echo -e "''${green}>>> Building configuration ...''${reset}"
|
||||
nixos-rebuild build --flake "$FLAKE" || error "Building failed"
|
||||
|
||||
echo ""
|
||||
echo -e "''${green}>>> Running diff ...''${reset}";
|
||||
${pkgs.nvd}/bin/nvd diff /run/current-system result || error "Diff failed"
|
||||
|
||||
cd - > /dev/null
|
||||
rm -rf $tmp
|
||||
|
||||
echo ""
|
||||
echo -e "''${yellow}>>> The new configuration has not been activated.''${reset}"
|
||||
echo -e "''${yellow}>>> Use ''${white_bold}nixos-rebuild switch''${reset}''${yellow} to activate.''${reset}"
|
||||
''
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
pootis = ./pootis.m4a;
|
||||
in
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.openpomodoro-cli
|
||||
(pkgs.writeShellScriptBin "pomostart" ''
|
||||
clear
|
||||
${pkgs.openpomodoro-cli}/bin/openpomodoro-cli start --wait $@
|
||||
while ${pkgs.mpv}/bin/mpv ${pootis} > /dev/null 2>&1; do :; done
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "pomobreak" ''
|
||||
clear
|
||||
${pkgs.openpomodoro-cli}/bin/openpomodoro-cli break --wait $@
|
||||
while ${pkgs.mpv}/bin/mpv ${pootis} > /dev/null 2>&1; do :; done
|
||||
'')
|
||||
];
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
nixosConfig,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
home.file.".XCompose".source = "${pkgs.keyd}/share/keyd/keyd.compose";
|
||||
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
addKeysToAgent = "yes";
|
||||
includes = [ "config.d/*" ];
|
||||
matchBlocks.momo = {
|
||||
host = "momo";
|
||||
hostname = "momo.dryb.org";
|
||||
user = "root";
|
||||
};
|
||||
};
|
||||
|
||||
home.file.".ssh/config.d/.keep".source = builtins.toFile "keep" "";
|
||||
|
||||
services.ssh-agent = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
newSession = true;
|
||||
terminal = "screen-256color";
|
||||
|
||||
clock24 = true;
|
||||
escapeTime = 0;
|
||||
historyLimit = 10000;
|
||||
|
||||
mouse = true;
|
||||
keyMode = "vi";
|
||||
};
|
||||
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
pkgs.exiftool
|
||||
pkgs.mediainfo
|
||||
] ++ lib.optionals nixosConfig.bchmnn.gui.enable [ pkgs.ueberzugpp ];
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "terminalparty";
|
||||
plugins = [
|
||||
"git"
|
||||
"z"
|
||||
];
|
||||
};
|
||||
|
||||
history = {
|
||||
path = "${config.xdg.dataHome}/zsh/histfile";
|
||||
size = 10000;
|
||||
save = 10000;
|
||||
};
|
||||
|
||||
initContent = ''
|
||||
nix_dev_env() {
|
||||
FLAKE="$PWD/flake.nix"
|
||||
[[ -z "$CURRENT_FLAKE_ENV" ]] && \
|
||||
[[ -f $FLAKE ]] && \
|
||||
echo -n "Enter nix develop? (Y/N): " && \
|
||||
read confirm && \
|
||||
[[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] && \
|
||||
ZSH_PREFIX="$ZSH_PREFIX(flake)" \
|
||||
CURRENT_FLAKE_ENV=$FLAKE \
|
||||
nix develop -c $SHELL
|
||||
}
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd nix_dev_env
|
||||
|
||||
export PS1="$ZSH_PREFIX$PS1"
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
imports = [
|
||||
./flare-solvarr.nix
|
||||
./jackett.nix
|
||||
./syncthing.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
options.bchmnn.services.flare-solvarr = {
|
||||
enable = lib.mkEnableOption "flare-solvarr";
|
||||
};
|
||||
|
||||
config = lib.mkIf (config.bchmnn.services.flare-solvarr.enable) {
|
||||
virtualisation = {
|
||||
oci-containers = {
|
||||
containers = {
|
||||
flare-solvarr = {
|
||||
image = "ghcr.io/flaresolverr/flaresolverr:latest";
|
||||
autoStart = true;
|
||||
ports = [ "127.0.0.1:8191:8191" ];
|
||||
environment = {
|
||||
LOG_LEVEL = "info";
|
||||
LOG_HTML = "false";
|
||||
CAPTCHA_SOLVER = "hcaptcha-solver";
|
||||
TZ = "Europe/Berlin";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
{
|
||||
options.bchmnn.services.jackett = {
|
||||
enable = lib.mkEnableOption "jackett";
|
||||
};
|
||||
|
||||
config = {
|
||||
services.jackett = {
|
||||
enable = config.bchmnn.services.jackett.enable;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
{ lib, config, ... }: {
|
||||
|
||||
options.bchmnn.services.syncthing = {
|
||||
enable = lib.mkEnableOption "syncthing";
|
||||
};
|
||||
|
||||
config = lib.mkIf (config.bchmnn.services.syncthing.enable) {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
openDefaultPorts = true;
|
||||
|
||||
settings = {
|
||||
devices = {
|
||||
T430 = {
|
||||
id = "UGQINNI-SC6F24X-5JE7YTP-LZLORTX-7GQ5NKK-YMRDRPK-JHRTWUV-4ILUJQQ";
|
||||
};
|
||||
IROH = {
|
||||
id = "PJA2MBA-66PQQEO-5KICONS-FGHDH46-YRV2X5Y-47UUP77-QXI2WNS-R33FPAK";
|
||||
};
|
||||
};
|
||||
|
||||
folders = {
|
||||
"dl" = {
|
||||
path = "~/dl";
|
||||
id = "z97eb-myxtp";
|
||||
devices = [
|
||||
"IROH"
|
||||
"T430"
|
||||
];
|
||||
};
|
||||
"docs" = {
|
||||
path = "~/docs";
|
||||
id = "rhh6x-dmymv";
|
||||
devices = [
|
||||
"IROH"
|
||||
"T430"
|
||||
];
|
||||
};
|
||||
"music" = {
|
||||
path = "~/music";
|
||||
id = "umzur-ncrf6";
|
||||
devices = [
|
||||
"IROH"
|
||||
"T430"
|
||||
];
|
||||
};
|
||||
"orgfiles" = {
|
||||
path = "~/orgfiles";
|
||||
id = "0f5t9-dl5l5";
|
||||
devices = [ ];
|
||||
versioning = {
|
||||
type = "simple";
|
||||
params.keep = "5";
|
||||
};
|
||||
};
|
||||
"pics" = {
|
||||
path = "~/pics";
|
||||
id = "cuejs-esf7u";
|
||||
devices = [
|
||||
"IROH"
|
||||
"T430"
|
||||
];
|
||||
};
|
||||
"tmp" = {
|
||||
path = "~/tmp";
|
||||
id = "d6k5d-hdxyh";
|
||||
devices = [
|
||||
"IROH"
|
||||
"T430"
|
||||
];
|
||||
};
|
||||
"vids" = {
|
||||
path = "~/vids";
|
||||
id = "bjx9u-ujjwi";
|
||||
devices = [
|
||||
"IROH"
|
||||
"T430"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
user = "gandalf";
|
||||
group = "users";
|
||||
dataDir = "/home/gandalf";
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue