completely refactor and modularize flake
This commit is contained in:
parent
3b1ed7e281
commit
b7210fcf8e
141 changed files with 884 additions and 2605 deletions
11
modules/default/common/autoupdate.nix
Normal file
11
modules/default/common/autoupdate.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ ... }:
|
||||
{
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
dates = "04:00";
|
||||
flake = "git+ssh://gitea@git.huwe.mooo.com/willifan/nix-config";
|
||||
persistent = true;
|
||||
randomizedDelaySec = "5min";
|
||||
fixedRandomDelay = true;
|
||||
};
|
||||
}
|
8
modules/default/common/boot.nix
Normal file
8
modules/default/common/boot.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ ... }:
|
||||
{
|
||||
boot = {
|
||||
loader.systemd-boot.enable = true;
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
initrd.systemd.enable = true;
|
||||
};
|
||||
}
|
35
modules/default/common/default.nix
Normal file
35
modules/default/common/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ lib, config, hostname, ... }:
|
||||
{
|
||||
|
||||
|
||||
|
||||
imports = [
|
||||
./desktop
|
||||
./nixvim
|
||||
./server
|
||||
|
||||
./autoupdate.nix
|
||||
./boot.nix
|
||||
./envvar.nix
|
||||
./garbage-collect.nix
|
||||
./keyd.nix
|
||||
./locales.nix
|
||||
./mimetype.nix
|
||||
./optimise.nix
|
||||
./options.nix
|
||||
./packages.nix
|
||||
./sops.nix
|
||||
./stylix.nix
|
||||
./syncthing.nix
|
||||
./users.nix
|
||||
];
|
||||
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
hostName = "${hostname}";
|
||||
};
|
||||
console.keyMap = "de";
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
system.stateVersion = "23.11";
|
||||
}
|
39
modules/default/common/desktop/applications.nix
Normal file
39
modules/default/common/desktop/applications.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ lib, config, pkgs, attrs, system, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
environment.systemPackages =
|
||||
(with pkgs; [
|
||||
|
||||
bc
|
||||
jq
|
||||
xorg.xrandr
|
||||
|
||||
feh
|
||||
|
||||
enpass
|
||||
vesktop
|
||||
obsidian
|
||||
kicad
|
||||
protonmail-desktop
|
||||
signal-desktop
|
||||
|
||||
piper
|
||||
|
||||
qemu
|
||||
|
||||
libreoffice
|
||||
blender
|
||||
gimp
|
||||
inkscape
|
||||
prusa-slicer
|
||||
UVtools
|
||||
audacity
|
||||
|
||||
glib
|
||||
])
|
||||
++
|
||||
[
|
||||
attrs.zen.packages.${system}.specific
|
||||
];
|
||||
|
||||
}
|
28
modules/default/common/desktop/boot.nix
Normal file
28
modules/default/common/desktop/boot.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
boot = {
|
||||
plymouth = {
|
||||
enable = true;
|
||||
# theme = "bgrt";
|
||||
# logo = "${pkgs.nixos-icons}/share/icons/hicolor/48x48/apps/nix-snowflake-white.png";
|
||||
# font = "${pkgs.dejavu_fonts.minimal}/share/fonts/truetype/DejaVuSans.ttf";
|
||||
};
|
||||
|
||||
consoleLogLevel = 0;
|
||||
initrd.verbose = false;
|
||||
kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"loglevel=3"
|
||||
"rd.systemd.show_status=false"
|
||||
"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
];
|
||||
# Hide the OS choice for bootloaders.
|
||||
# It's still possible to open the bootloader list by pressing any key
|
||||
# It will just not appear on screen unless a key is pressed
|
||||
loader.timeout = 0;
|
||||
|
||||
};
|
||||
}
|
20
modules/default/common/desktop/default.nix
Normal file
20
modules/default/common/desktop/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./applications.nix
|
||||
./boot.nix
|
||||
./emulation.nix
|
||||
./hyprland.nix
|
||||
./keyboard.nix
|
||||
./nfs-client.nix
|
||||
./nix-ld.nix
|
||||
./pipewire.nix
|
||||
./polkit.nix
|
||||
./printers.nix
|
||||
./remoteBuilder.nix
|
||||
./ssh-server.nix
|
||||
./thunar.nix
|
||||
];
|
||||
|
||||
|
||||
}
|
10
modules/default/common/desktop/emulation.nix
Normal file
10
modules/default/common/desktop/emulation.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
melonDS
|
||||
dolphin-emu
|
||||
lime3ds
|
||||
cemu
|
||||
steam-rom-manager
|
||||
];
|
||||
}
|
37
modules/default/common/desktop/games/ROG_Pugio_II_fixes.nix
Normal file
37
modules/default/common/desktop/games/ROG_Pugio_II_fixes.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
services.udev.extraRules = ''
|
||||
# Disable mouse as gamepad
|
||||
ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1906", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-joystick'"
|
||||
ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1908", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-joystick'"
|
||||
ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1906", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-event-joystick'"
|
||||
ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1908", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-event-joystick'"
|
||||
'';
|
||||
|
||||
services.ratbagd = {
|
||||
enable = true;
|
||||
package = pkgs.libratbag.overrideAttrs (previousAttrs: {
|
||||
postInstall = ''
|
||||
# Ensure the target directory exists
|
||||
mkdir -p $out/share/libratbag/
|
||||
# cat the custom configuration file
|
||||
cat << EOF > $out/share/libratbag/asus-rog-pugio-II.device
|
||||
[Device]
|
||||
Name=ASUS ROG Pugio II
|
||||
DeviceMatch=usb:0b05:1906;usb:0b05:1908
|
||||
Driver=asus
|
||||
|
||||
[Driver/asus]
|
||||
Profiles=3
|
||||
Buttons=10
|
||||
Leds=3
|
||||
Dpis=4
|
||||
Wireless=1
|
||||
DpiRange=100:16000@100
|
||||
ButtonMapping=f0;f1;f2;e4;e5;e6;0;e8;e9;e1;e2
|
||||
EOF
|
||||
'';
|
||||
});
|
||||
};
|
||||
}
|
16
modules/default/common/desktop/games/default.nix
Normal file
16
modules/default/common/desktop/games/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
imports = [
|
||||
|
||||
./ROG_Pugio_II_fixes.nix
|
||||
./mangohud.nix
|
||||
./minecraft.nix
|
||||
./moonlight.nix
|
||||
./steam.nix
|
||||
./tetrio.nix
|
||||
./yuzu.nix
|
||||
|
||||
];
|
||||
|
||||
}
|
6
modules/default/common/desktop/games/mangohud.nix
Normal file
6
modules/default/common/desktop/games/mangohud.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
mangohud
|
||||
];
|
||||
}
|
6
modules/default/common/desktop/games/minecraft.nix
Normal file
6
modules/default/common/desktop/games/minecraft.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
prismlauncher
|
||||
];
|
||||
}
|
8
modules/default/common/desktop/games/moonlight.nix
Normal file
8
modules/default/common/desktop/games/moonlight.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.moonlight-qt
|
||||
];
|
||||
|
||||
}
|
16
modules/default/common/desktop/games/steam.nix
Normal file
16
modules/default/common/desktop/games/steam.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
gamescopeSession = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
hardware.steam-hardware.enable = true;
|
||||
|
||||
services.udev.extraRules = ''
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", MODE="0660", TAG+="uaccess"
|
||||
'';
|
||||
|
||||
}
|
8
modules/default/common/desktop/games/tetrio.nix
Normal file
8
modules/default/common/desktop/games/tetrio.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.tetrio-desktop
|
||||
];
|
||||
|
||||
}
|
6
modules/default/common/desktop/games/yuzu.nix
Normal file
6
modules/default/common/desktop/games/yuzu.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
yuzu
|
||||
];
|
||||
}
|
18
modules/default/common/desktop/hyprland.nix
Normal file
18
modules/default/common/desktop/hyprland.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.desktop.autologin.enable {
|
||||
|
||||
security.pam.services.hyprlock = {};
|
||||
|
||||
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = rec {
|
||||
initial_session = {
|
||||
command = ''Hyprland'';
|
||||
user = "willifan";
|
||||
};
|
||||
default_session = initial_session;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
13
modules/default/common/desktop/keyboard.nix
Normal file
13
modules/default/common/desktop/keyboard.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
qmk-udev-rules
|
||||
vial
|
||||
];
|
||||
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
services.udev.extraRules = ''
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||
'';
|
||||
|
||||
}
|
18
modules/default/common/desktop/nfs-client.nix
Normal file
18
modules/default/common/desktop/nfs-client.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
nfs-utils
|
||||
];
|
||||
services.autofs = {
|
||||
enable = true;
|
||||
autoMaster = let
|
||||
mapConf = pkgs.writeText "auto.nfs" ''
|
||||
roms -fstype=nfs4 192.168.178.19:/roms
|
||||
'';
|
||||
in ''
|
||||
/mnt/nfs ${mapConf}
|
||||
'';
|
||||
};
|
||||
|
||||
}
|
7
modules/default/common/desktop/nix-ld.nix
Normal file
7
modules/default/common/desktop/nix-ld.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
programs.nix-ld.enable = true;
|
||||
|
||||
programs.nix-ld.libraries = with pkgs; [
|
||||
];
|
||||
}
|
13
modules/default/common/desktop/pipewire.nix
Normal file
13
modules/default/common/desktop/pipewire.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
# If you want to use JACK applications, uncomment this
|
||||
#jack.enable = true;
|
||||
};
|
||||
}
|
24
modules/default/common/desktop/polkit.nix
Normal file
24
modules/default/common/desktop/polkit.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
polkit_gnome
|
||||
];
|
||||
|
||||
security.polkit.enable = true;
|
||||
systemd = {
|
||||
user.services.polkit-gnome-authentication-agent-1 = {
|
||||
description = "polkit-gnome-authentication-agent-1";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
wants = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 1;
|
||||
TimeoutStopSec = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
13
modules/default/common/desktop/printers.nix
Normal file
13
modules/default/common/desktop/printers.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = [ pkgs.gutenprint pkgs.gutenprintBin ];
|
||||
};
|
||||
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
}
|
22
modules/default/common/desktop/remoteBuilder.nix
Normal file
22
modules/default/common/desktop/remoteBuilder.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
nix.buildMachines = [ {
|
||||
hostName = "Anton";
|
||||
sshUser = "builder";
|
||||
systems = [ "x86_64-linux" "aarch64-linux" ];
|
||||
protocol = "ssh";
|
||||
# if the builder supports building for multiple architectures,
|
||||
# replace the previous line by, e.g.
|
||||
# systems = ["x86_64-linux" "aarch64-linux"];
|
||||
maxJobs = 1;
|
||||
speedFactor = 2;
|
||||
supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
|
||||
mandatoryFeatures = [ ];
|
||||
}];
|
||||
nix.distributedBuilds = true;
|
||||
# optional, useful when the builder has a faster internet connection than yours
|
||||
nix.extraOptions = ''
|
||||
builders-use-substitutes = true
|
||||
'';
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
}
|
22
modules/default/common/desktop/ssh-server.nix
Normal file
22
modules/default/common/desktop/ssh-server.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
ports = [ 22 ];
|
||||
settings = {
|
||||
PasswordAuthentication = false;
|
||||
AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
|
||||
UseDns = true;
|
||||
X11Forwarding = false;
|
||||
PermitRootLogin = "prohibit-password"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
|
||||
};
|
||||
};
|
||||
|
||||
users.users.willifan.openssh.authorizedKeys.keys = [
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMRriQfw3pusl04fGhCNVoRRpye71ZwkDXAtKB/FP1DLXA4cYrwjLzv/fG1hXi7lAMp2vLiABAg/UaTE8roGzlt62XsFNwc1TI5M8m67J0kLkCtz3MkIixe/3GOFXr03g80DPncLyoIYPvvNd/TftTBK4yrrZPvMJaRrZhW/QdLPQpdHalcNRZ4bnBOCtCoqQ6RGrRi2EeKaJDYIFNl13b9FxrXEJcXnbSDdr1KI3q7a+vkefI2knUf2Uk7ufOWTQ1aqc0heGtCNlHzwZUzW/dfrpPmoVPq3Fqxqd9uXqxMk1Z3VnOwWcK3VXfzzBXKTsX0MaUgF1EqxibkYs9bDZqLEXoRucBqk3wwMPy8RJXqQOupoqa2xEOoduBf1qDHEEm69coHCpPm2mQVUrwsPrmTHmOjh9ir0mkVBDRgHvhq/ctQTVO5/SE2NCgPdlvUV5s44LLsUyxBp5JWwXZWlVys+7Dhil6mtRDcH4CXceJn0VZ61Zv2jrCTxQjKsroitSkNbpAkKajQ9moLMAblsSwJzl3uvJJ3ydlxjZefwTO/GjyuJMY2sIU2Tu0YbIVgMyq5L782LduVlyWj+RLWoEu19OfMqQvTWhJnQPAbR82qGzlfTGRLUxoY+G5MYipJwgrBQ2TnpWvfpTrZxFrglSfekz0v54lWzNZpW+irImh4w== willifan@proton.me"
|
||||
];
|
||||
|
||||
nix.settings.trusted-users = [ "willifan" ];
|
||||
|
||||
}
|
19
modules/default/common/desktop/thunar.nix
Normal file
19
modules/default/common/desktop/thunar.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
lib.mkIf config.desktop.enable {
|
||||
services.gvfs.enable = true;
|
||||
|
||||
services.tumbler.enable = true;
|
||||
|
||||
programs.file-roller.enable = true;
|
||||
|
||||
programs.thunar = {
|
||||
enable = true;
|
||||
plugins = with pkgs.xfce; [
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
16
modules/default/common/envvar.nix
Normal file
16
modules/default/common/envvar.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ ... }:
|
||||
{
|
||||
environment.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
XDG_CACHE_HOME = "$HOME/.cache";
|
||||
XDG_CONFIG_HOME = "$HOME/.config";
|
||||
XDG_DATA_HOME = "$HOME/.local/share";
|
||||
XDG_STATE_HOME = "$HOME/.local/state";
|
||||
|
||||
# Not officially in the specification
|
||||
#XDG_BIN_HOME = "$HOME/.local/bin";
|
||||
#PATH = [
|
||||
# "${XDG_BIN_HOME}"
|
||||
#];
|
||||
};
|
||||
}
|
9
modules/default/common/garbage-collect.nix
Normal file
9
modules/default/common/garbage-collect.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }:
|
||||
{
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "04:30";
|
||||
persistent = true;
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
}
|
23
modules/default/common/keyd.nix
Normal file
23
modules/default/common/keyd.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
services.keyd = {
|
||||
enable = true;
|
||||
keyboards.default = {
|
||||
ids = [ "*" ];
|
||||
settings = {
|
||||
main = {
|
||||
rightalt = "overload(altgr, rightalt)";
|
||||
capslock = "overload(control, esc)";
|
||||
};
|
||||
altgr = {
|
||||
a = ''macro(compose a ")'';
|
||||
o = ''macro(compose o ")'';
|
||||
u = ''macro(compose u ")'';
|
||||
s = ''macro(compose s s)'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
16
modules/default/common/locales.nix
Normal file
16
modules/default/common/locales.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ ... }:
|
||||
{
|
||||
time.timeZone = "Europe/Berlin";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||
LC_MONETARY = "de_DE.UTF-8";
|
||||
LC_NAME = "de_DE.UTF-8";
|
||||
LC_NUMERIC = "de_DE.UTF-8";
|
||||
LC_PAPER = "de_DE.UTF-8";
|
||||
LC_TELEPHONE = "de_DE.UTF-8";
|
||||
LC_TIME = "de_DE.UTF-8";
|
||||
};
|
||||
}
|
15
modules/default/common/mimetype.nix
Normal file
15
modules/default/common/mimetype.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
xdg.mime.defaultApplications = {
|
||||
"application/pdf" = "zen.desktop";
|
||||
"text/html" = "zen.desktop";
|
||||
"x-scheme-handler/http" = "zen.desktop";
|
||||
"x-scheme-handler/https" = "zen.desktop";
|
||||
"x-scheme-handler/about" = "zen.desktop";
|
||||
"x-scheme-handler/unknown" = "zen.desktop";
|
||||
};
|
||||
|
||||
environment.sessionVariables.DEFAULT_BROWSER = "zen";
|
||||
|
||||
}
|
12
modules/default/common/nixvim/TODO.md
Normal file
12
modules/default/common/nixvim/TODO.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
# Plugins
|
||||
add cmp
|
||||
try out nvimtree
|
||||
add lualine
|
||||
add autopairs
|
||||
indent blankline??
|
||||
todo comments
|
||||
undo tree
|
||||
bufferline?
|
||||
startup?
|
||||
KEYBINDS
|
||||
|
9
modules/default/common/nixvim/autopairs.nix
Normal file
9
modules/default/common/nixvim/autopairs.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.nvim-autopairs = {
|
||||
enable = true;
|
||||
settings = {
|
||||
disable_filetype = ["TelescopePrompt" "vim"];
|
||||
};
|
||||
};
|
||||
}
|
49
modules/default/common/nixvim/cmp.nix
Normal file
49
modules/default/common/nixvim/cmp.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
cmp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
autoEnableSources = true;
|
||||
experimental = {ghost_text = false;};
|
||||
performance = {
|
||||
debounce = 60;
|
||||
fetchingTimeout = 200;
|
||||
maxViewEntries = 30;
|
||||
};
|
||||
snippet = {expand = "luasnip";};
|
||||
formatting = {fields = ["kind" "abbr" "menu"];};
|
||||
sources = [
|
||||
{name = "git";}
|
||||
{name = "nvim_lsp";}
|
||||
{name = "emoji";}
|
||||
{
|
||||
name = "buffer"; # text within current buffer
|
||||
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
|
||||
keywordLength = 3;
|
||||
}
|
||||
{
|
||||
name = "path"; # file system paths
|
||||
keywordLength = 3;
|
||||
}
|
||||
{
|
||||
name = "luasnip"; # snippets
|
||||
keywordLength = 3;
|
||||
}
|
||||
];
|
||||
|
||||
window = {
|
||||
completion = {border = "solid";};
|
||||
documentation = {border = "solid";};
|
||||
};
|
||||
};
|
||||
};
|
||||
cmp-nvim-lsp = {enable = true;}; # lsp
|
||||
cmp-buffer = {enable = true;};
|
||||
cmp-path = {enable = true;}; # file system paths
|
||||
cmp_luasnip = {enable = true;}; # snippets
|
||||
cmp-cmdline = {enable = false;}; # autocomplete for cmdline
|
||||
};
|
||||
|
||||
}
|
24
modules/default/common/nixvim/default.nix
Normal file
24
modules/default/common/nixvim/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
};
|
||||
|
||||
imports = [
|
||||
./autopairs.nix
|
||||
./cmp.nix
|
||||
./filetype.nix
|
||||
./gitsigns.nix
|
||||
./illuminate.nix
|
||||
./lsp.nix
|
||||
./navic.nix
|
||||
./neotree.nix
|
||||
./settings.nix
|
||||
./treesitter.nix
|
||||
./whichkey.nix
|
||||
./yazi.nix
|
||||
];
|
||||
|
||||
}
|
14
modules/default/common/nixvim/filetype.nix
Normal file
14
modules/default/common/nixvim/filetype.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim.files = {
|
||||
"ftplugin/nix.lua" = {
|
||||
opts = {
|
||||
expandtab = true;
|
||||
shiftwidth = 2;
|
||||
tabstop = 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
28
modules/default/common/nixvim/gitsigns.nix
Normal file
28
modules/default/common/nixvim/gitsigns.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins.gitsigns = {
|
||||
enable = true;
|
||||
settings = {
|
||||
signs = {
|
||||
add = {
|
||||
text = " ";
|
||||
};
|
||||
change = {
|
||||
text = " ";
|
||||
};
|
||||
delete = {
|
||||
text = " ";
|
||||
};
|
||||
untracked = {
|
||||
text = "";
|
||||
};
|
||||
topdelete = {
|
||||
text = " ";
|
||||
};
|
||||
changedelete = {
|
||||
text = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
18
modules/default/common/nixvim/illuminate.nix
Normal file
18
modules/default/common/nixvim/illuminate.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
illuminate = {
|
||||
enable = true;
|
||||
underCursor = false;
|
||||
filetypesDenylist = [
|
||||
"Outline"
|
||||
"TelescopePrompt"
|
||||
"alpha"
|
||||
"harpoon"
|
||||
"reason"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
}
|
80
modules/default/common/nixvim/lsp.nix
Normal file
80
modules/default/common/nixvim/lsp.nix
Normal file
|
@ -0,0 +1,80 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
lsp-lines = {enable = true;};
|
||||
lsp-format = {enable = true;};
|
||||
lsp = {
|
||||
enable = true;
|
||||
inlayHints = true;
|
||||
servers = {
|
||||
clangd = {enable = true;};
|
||||
html = {enable = true;};
|
||||
lua_ls = {enable = true;};
|
||||
nixd = {enable = true;};
|
||||
pyright = {enable = true;};
|
||||
gopls = {enable = true;};
|
||||
jsonls = {enable = true;};
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
yamlls = {enable = true;};
|
||||
};
|
||||
|
||||
keymaps = {
|
||||
silent = true;
|
||||
lspBuf = {
|
||||
gd = {
|
||||
action = "definition";
|
||||
desc = "Goto Definition";
|
||||
};
|
||||
gr = {
|
||||
action = "references";
|
||||
desc = "Goto References";
|
||||
};
|
||||
gD = {
|
||||
action = "declaration";
|
||||
desc = "Goto Declaration";
|
||||
};
|
||||
gI = {
|
||||
action = "implementation";
|
||||
desc = "Goto Implementation";
|
||||
};
|
||||
gT = {
|
||||
action = "type_definition";
|
||||
desc = "Type Definition";
|
||||
};
|
||||
K = {
|
||||
action = "hover";
|
||||
desc = "Hover";
|
||||
};
|
||||
"<leader>cw" = {
|
||||
action = "workspace_symbol";
|
||||
desc = "Workspace Symbol";
|
||||
};
|
||||
"<leader>cr" = {
|
||||
action = "rename";
|
||||
desc = "Rename";
|
||||
};
|
||||
};
|
||||
diagnostic = {
|
||||
"<leader>cd" = {
|
||||
action = "open_float";
|
||||
desc = "Line Diagnostics";
|
||||
};
|
||||
"[d" = {
|
||||
action = "goto_next";
|
||||
desc = "Next Diagnostic";
|
||||
};
|
||||
"]d" = {
|
||||
action = "goto_prev";
|
||||
desc = "Previous Diagnostic";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
42
modules/default/common/nixvim/navic.nix
Normal file
42
modules/default/common/nixvim/navic.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
navic = {
|
||||
enable = true;
|
||||
settings = {
|
||||
separator = " ";
|
||||
highlight = true;
|
||||
lsp = {
|
||||
autoAttach = true;
|
||||
};
|
||||
icons = {
|
||||
Array = " ";
|
||||
Boolean = " ";
|
||||
Class = " ";
|
||||
Constant = " ";
|
||||
Constructor = " ";
|
||||
Enum = " ";
|
||||
EnumMember = " ";
|
||||
Event = " ";
|
||||
Field = " ";
|
||||
File = " ";
|
||||
Function = " ";
|
||||
Interface = " ";
|
||||
Key = " ";
|
||||
Method = " ";
|
||||
Module = " ";
|
||||
Namespace = " ";
|
||||
Null = " ";
|
||||
Number = " ";
|
||||
Object = " ";
|
||||
Operator = " ";
|
||||
Package = " ";
|
||||
String = " ";
|
||||
Struct = " ";
|
||||
TypeParameter = " ";
|
||||
Variable = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
42
modules/default/common/nixvim/neotree.nix
Normal file
42
modules/default/common/nixvim/neotree.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
neo-tree = {
|
||||
enable = true;
|
||||
sources = ["filesystem" "buffers" "git_status" "document_symbols"];
|
||||
addBlankLineAtTop = false;
|
||||
|
||||
filesystem = {
|
||||
bindToCwd = false;
|
||||
followCurrentFile = {
|
||||
enabled = true;
|
||||
};
|
||||
};
|
||||
|
||||
defaultComponentConfigs = {
|
||||
indent = {
|
||||
withExpanders = true;
|
||||
expanderCollapsed = "";
|
||||
expanderExpanded = "";
|
||||
expanderHighlight = "NeoTreeExpander";
|
||||
};
|
||||
|
||||
gitStatus = {
|
||||
symbols = {
|
||||
added = " ";
|
||||
conflict = " ";
|
||||
deleted = "";
|
||||
ignored = " ";
|
||||
modified = " ";
|
||||
renamed = "";
|
||||
staged = "";
|
||||
unstaged = "";
|
||||
untracked = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
101
modules/default/common/nixvim/settings.nix
Normal file
101
modules/default/common/nixvim/settings.nix
Normal file
|
@ -0,0 +1,101 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim = {
|
||||
config = {
|
||||
extraConfigLuaPre =
|
||||
# lua
|
||||
''
|
||||
vim.fn.sign_define("diagnosticsignerror", { text = " ", texthl = "diagnosticerror", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define("diagnosticsignwarn", { text = " ", texthl = "diagnosticwarn", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define("diagnosticsignhint", { text = "", texthl = "diagnostichint", linehl = "", numhl = "" })
|
||||
vim.fn.sign_define("diagnosticsigninfo", { text = " ", texthl = "diagnosticinfo", linehl = "", numhl = "" })
|
||||
'';
|
||||
|
||||
clipboard = {
|
||||
providers.wl-copy.enable = true;
|
||||
};
|
||||
|
||||
opts = {
|
||||
# Show line numbers
|
||||
number = true;
|
||||
|
||||
# Show relative line numbers
|
||||
relativenumber = true;
|
||||
|
||||
# Use the system clipboard
|
||||
clipboard = "unnamedplus";
|
||||
|
||||
# Number of spaces that represent a <TAB>
|
||||
tabstop = 2;
|
||||
softtabstop = 2;
|
||||
|
||||
# Show tabline always
|
||||
showtabline = 2;
|
||||
|
||||
# Use spaces instead of tabs
|
||||
expandtab = true;
|
||||
|
||||
# Enable smart indentation
|
||||
smartindent = true;
|
||||
|
||||
# Number of spaces to use for each step of (auto)indent
|
||||
shiftwidth = 2;
|
||||
|
||||
# Enable break indent
|
||||
breakindent = true;
|
||||
|
||||
# Highlight the screen line of the cursor
|
||||
cursorline = true;
|
||||
|
||||
# Minimum number of screen lines to keep above and below the cursor
|
||||
scrolloff = 8;
|
||||
|
||||
# Enable mouse support
|
||||
mouse = "a";
|
||||
|
||||
# Set folding method to manual
|
||||
foldmethod = "manual";
|
||||
|
||||
# Disable folding by default
|
||||
foldenable = false;
|
||||
|
||||
# Wrap long lines at a character in 'breakat'
|
||||
linebreak = true;
|
||||
|
||||
# Disable spell checking
|
||||
spell = false;
|
||||
|
||||
# Disable swap file creation
|
||||
swapfile = false;
|
||||
|
||||
# Time in milliseconds to wait for a mapped sequence to complete
|
||||
timeoutlen = 300;
|
||||
|
||||
# Enable 24-bit RGB color in the TUI
|
||||
termguicolors = true;
|
||||
|
||||
# Don't show mode in the command line
|
||||
showmode = false;
|
||||
|
||||
# Open new split below the current window
|
||||
splitbelow = true;
|
||||
|
||||
# Keep the screen when splitting
|
||||
splitkeep = "screen";
|
||||
|
||||
# Open new split to the right of the current window
|
||||
splitright = true;
|
||||
|
||||
# Hide command line unless needed
|
||||
cmdheight = 0;
|
||||
|
||||
# Remove EOB
|
||||
fillchars = {
|
||||
eob = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
13
modules/default/common/nixvim/treesitter.nix
Normal file
13
modules/default/common/nixvim/treesitter.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.nixvim.plugins = {
|
||||
treesitter = {
|
||||
enable = true;
|
||||
settings = {
|
||||
indent.enable = true;
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
10
modules/default/common/nixvim/whichkey.nix
Normal file
10
modules/default/common/nixvim/whichkey.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
which-key = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
10
modules/default/common/nixvim/yazi.nix
Normal file
10
modules/default/common/nixvim/yazi.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.nixvim.plugins = {
|
||||
yazi = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
7
modules/default/common/optimise.nix
Normal file
7
modules/default/common/optimise.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ ... }:
|
||||
{
|
||||
nix.optimise = {
|
||||
automatic = true;
|
||||
dates = [ "05:00" ];
|
||||
};
|
||||
}
|
13
modules/default/common/options.nix
Normal file
13
modules/default/common/options.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
options = {
|
||||
desktop.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
server.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
};
|
||||
}
|
8
modules/default/common/packages.nix
Normal file
8
modules/default/common/packages.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ pkgs, ...}:
|
||||
{
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
tealdeer
|
||||
];
|
||||
|
||||
}
|
14
modules/default/common/server/builder.nix
Normal file
14
modules/default/common/server/builder.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.server.enable {
|
||||
users.users.builder = {
|
||||
group = "builder";
|
||||
isNormalUser = true;
|
||||
homeMode = "111";
|
||||
openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCRgaPLmdimjvCM7jvlXkRPbw0KOmMdtgTcBahgIWNm8QAFkPX8T42RNDgTb7QG+XqRU4+t4VgM0xt6ldcOTrrcJ2bHW8ybeXM5DU7z2f0aCp3OULosbDHoWiEdxvNmIHcFKgMbL7K/ieVYx5wrPkU+63inK5GrzWIaOOd8O4Q/z7M/XIwOAz2Kb3B4muCG9b9cKAGodOkRT81aJsK0aE84Cy4DbzCgz34FWvfGPWSHQZ/fLNlKrtKI0lCEG5r7r1Tw1wXDAFb7d+enypUwy+KlQDJLkDp0O1dJPEmY0RKXMRL2xFl3jrQ4LgOAyWhXF2ERc2bkky4YaIQfLX3NaMRqVRmUCVpnGRcYqdbn2ulsUOmC0Or/bnJa7/sKFBhFb8aEoxD7/w4h5ugh0xVWMFvwjDb0gymXjNPgvefagAhi8qhxf/6X4AZK4x7y/tcIKpW3QfyrdX7bWQ7itBpMPtYH6WWyoKfypnAGeUtdwcXsb5cwGoJ4s9S/E1CwyZxdC38ydrDYFeRih7+KDHnOqZFnLwBb6yLdpvUhyMkksAzVxh8cvObVgjUFQMAwKvLKVzlv28BLgaWj+K+oFakytRtYZv7CsCneZyL3s/nDKs2ChhYgiXvVicZi+sC8FXZIl6wXWHYj5i/p5A/6ulVFgkfDna051hNewerXuTlyMMbTRw== willifan@pm.me" ];
|
||||
};
|
||||
users.groups.builder = { };
|
||||
nix.settings.trusted-users = [ "builder" "willifan" ];
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
nix.settings.extra-platforms = config.boot.binfmt.emulatedSystems;
|
||||
}
|
8
modules/default/common/server/default.nix
Normal file
8
modules/default/common/server/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
|
||||
imports = [
|
||||
./builder.nix
|
||||
./ssh-server.nix
|
||||
];
|
||||
}
|
21
modules/default/common/server/ssh-server.nix
Normal file
21
modules/default/common/server/ssh-server.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ lib, config, ... }:
|
||||
lib.mkIf config.server.enable {
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
ports = [ 22 ];
|
||||
settings = {
|
||||
PasswordAuthentication = false;
|
||||
AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
|
||||
UseDns = true;
|
||||
X11Forwarding = false;
|
||||
PermitRootLogin = "prohibit-password"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
|
||||
};
|
||||
};
|
||||
|
||||
users.users.willifan.openssh.authorizedKeys.keys = [
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMRriQfw3pusl04fGhCNVoRRpye71ZwkDXAtKB/FP1DLXA4cYrwjLzv/fG1hXi7lAMp2vLiABAg/UaTE8roGzlt62XsFNwc1TI5M8m67J0kLkCtz3MkIixe/3GOFXr03g80DPncLyoIYPvvNd/TftTBK4yrrZPvMJaRrZhW/QdLPQpdHalcNRZ4bnBOCtCoqQ6RGrRi2EeKaJDYIFNl13b9FxrXEJcXnbSDdr1KI3q7a+vkefI2knUf2Uk7ufOWTQ1aqc0heGtCNlHzwZUzW/dfrpPmoVPq3Fqxqd9uXqxMk1Z3VnOwWcK3VXfzzBXKTsX0MaUgF1EqxibkYs9bDZqLEXoRucBqk3wwMPy8RJXqQOupoqa2xEOoduBf1qDHEEm69coHCpPm2mQVUrwsPrmTHmOjh9ir0mkVBDRgHvhq/ctQTVO5/SE2NCgPdlvUV5s44LLsUyxBp5JWwXZWlVys+7Dhil6mtRDcH4CXceJn0VZ61Zv2jrCTxQjKsroitSkNbpAkKajQ9moLMAblsSwJzl3uvJJ3ydlxjZefwTO/GjyuJMY2sIU2Tu0YbIVgMyq5L782LduVlyWj+RLWoEu19OfMqQvTWhJnQPAbR82qGzlfTGRLUxoY+G5MYipJwgrBQ2TnpWvfpTrZxFrglSfekz0v54lWzNZpW+irImh4w== willifan@proton.me"
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCd8g40ehDWL44XbzDY4qbka6FD4oCGA8stA5EqKdORhUqXAqEjw8s8kqNbok13RtSRpC5cgt8dsXG+lXL7A5oldq1u02+yl3YJtyt0nl+cH0WUEHdx7z3uWZPfI2WJh7Q14n0bl/31Rnxsw2A93JTrWqRCs4sV8CG4K8b5WhQSTJEbSO61z7tMEETfag+20FSA2sPP+QZCbxIGdRfTx/aA2pUlkSy5ih0WjwCJlI2wkTQsdsmHuZnPse0QRejbORSfHc/jh7KFFV/KR/UHs4X1EH4dOo4lebigUdtoUwlK9ciBaK1fFCLERJNWMCJOK5zfd3nUEbk7+hXVkAPTB/mDxYub8trpZSCu+3X3z10GM/AuSlk/8lrNQxUpovLffb8bJWSdAH7QdMM/fdgt0YHxt/FEpz5fiB7RHxQ4w/CQC+a+FOVDGFddd4uinX+999ZpshHKnB+R0Yi/7C+XoyhgytNATsPQlWYF367DWXA4cfSmpxchmi1EK4M0XBC8UxtF/EW0ULV2WFAFrO77LKKZ0UkjT7UWv6F3CofY1tAI4Kem6ervegXlasUe3AogiTuIvXfQm5kUk2fgK//VTe4vqQY+BqezHDYgSVbB/FASd0Z5vv+f7zRdqOhLH3ybkjTeQ4MlS0HHO2BCaAKjCmSBBn6w2pC92Qz32uK28w7yhQ== root@Lenni"
|
||||
];
|
||||
|
||||
}
|
21
modules/default/common/sops.nix
Normal file
21
modules/default/common/sops.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
|
||||
sops.defaultSopsFile = ../../../secrets/secrets.yaml;
|
||||
sops.defaultSopsFormat = "yaml";
|
||||
|
||||
sops.age.keyFile = "/home/willifan/.config/sops/age/keys.txt";
|
||||
|
||||
sops.secrets."ssh/root/private" = {
|
||||
owner = "root";
|
||||
};
|
||||
|
||||
sops.secrets."syncthing/password" = {
|
||||
mode = "440";
|
||||
group = "syncthing";
|
||||
};
|
||||
|
||||
users.groups.syncthing = { };
|
||||
|
||||
}
|
33
modules/default/common/stylix.nix
Normal file
33
modules/default/common/stylix.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
wallpaper = pkgs.fetchurl {
|
||||
url = "https://files.huwe.mooo.com/Oneshot.png";
|
||||
hash = "sha256-LaIzLCW86sbldE9lk7psbYKaTCjwaPLcoD3il6FalTw=";
|
||||
};
|
||||
plymouth_logo = pkgs.fetchurl {
|
||||
url = "https://files.huwe.mooo.com/outlinenobackground.png";
|
||||
hash = "sha256-HdErySgSwNSPEHyBywLyZCAss4vUhsY8BvCPe5hST6Q=";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
|
||||
autoEnable = true;
|
||||
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/pasque.yaml";
|
||||
override = {
|
||||
base0D = "F3196E";
|
||||
base0F = "CFAACF";
|
||||
};
|
||||
|
||||
image = wallpaper;
|
||||
|
||||
polarity = "dark";
|
||||
|
||||
targets.plymouth.logo = plymouth_logo;
|
||||
|
||||
};
|
||||
|
||||
}
|
65
modules/default/common/syncthing.nix
Normal file
65
modules/default/common/syncthing.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
deviceList = builtins.attrNames config.common.syncthing.devices;
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
common.syncthing = {
|
||||
|
||||
enable = lib.mkEnableOption "enable syncthing";
|
||||
|
||||
devices = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule {
|
||||
|
||||
options.id = lib.mkOption { type = lib.types.str; };
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config.home-manager.users.willifan.services.syncthing = lib.mkIf config.common.syncthing.enable {
|
||||
enable = lib.mkDefault true;
|
||||
overrideDevices = lib.mkDefault true;
|
||||
overrideFolders = lib.mkDefault true;
|
||||
passwordFile = config.sops.secrets."syncthing/password".path;
|
||||
settings = {
|
||||
gui.user = "willifan";
|
||||
devices = config.common.syncthing.devices;
|
||||
folders = lib.mkDefault {
|
||||
"Documents" = {
|
||||
id = "jtl6g-qjmwo";
|
||||
path = "/mnt/data/Documents";
|
||||
devices = deviceList;
|
||||
};
|
||||
"Enpass" = lib.mkDefault {
|
||||
id = "ciksm-xsw4m";
|
||||
path = "/mnt/data/Enpass";
|
||||
devices = deviceList;
|
||||
};
|
||||
"Pictures" = lib.mkDefault {
|
||||
id = "po4qj-q9t0t";
|
||||
path = "/mnt/data/Pictures";
|
||||
devices = deviceList;
|
||||
};
|
||||
"Videos" = lib.mkDefault {
|
||||
id = "4wqf5-xasng";
|
||||
path = "/mnt/data/Videos";
|
||||
devices = deviceList;
|
||||
};
|
||||
"Notes" = lib.mkDefault {
|
||||
id = "oc61n-iewgj";
|
||||
path = "/mnt/data/Notes";
|
||||
devices = deviceList;
|
||||
};
|
||||
"Music" = lib.mkDefault {
|
||||
id = "xxh8a-3y2tq";
|
||||
path = "/mnt/data/Music";
|
||||
devices = deviceList;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
10
modules/default/common/users.nix
Normal file
10
modules/default/common/users.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
users.users.willifan = {
|
||||
isNormalUser = true;
|
||||
description = "willifan";
|
||||
extraGroups = [ "networkmanager" "wheel" "syncthing" ];
|
||||
shell = pkgs.bash;
|
||||
};
|
||||
|
||||
}
|
7
modules/default/default.nix
Normal file
7
modules/default/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./common
|
||||
./home-manager
|
||||
];
|
||||
}
|
20
modules/default/home-manager/default.nix
Normal file
20
modules/default/home-manager/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
imports = [
|
||||
./desktop
|
||||
./shell
|
||||
./tmux
|
||||
./utils
|
||||
./git.nix
|
||||
./stylix.nix
|
||||
];
|
||||
|
||||
home-manager.users.willifan = {
|
||||
imports = [
|
||||
];
|
||||
|
||||
home.stateVersion = "23.11";
|
||||
};
|
||||
|
||||
}
|
17
modules/default/home-manager/desktop/default.nix
Normal file
17
modules/default/home-manager/desktop/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
imports = [
|
||||
./hyprland
|
||||
|
||||
./options.nix
|
||||
./kitty.nix
|
||||
./vscodium.nix
|
||||
];
|
||||
|
||||
home-manager.users.willifan = {
|
||||
imports = [
|
||||
];
|
||||
};
|
||||
|
||||
}
|
21
modules/default/home-manager/desktop/hyprland/default.nix
Normal file
21
modules/default/home-manager/desktop/hyprland/default.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
|
||||
|
||||
#home-manager.users.willifan = {
|
||||
imports = [
|
||||
./fuzzel.nix
|
||||
./hyprexit.nix
|
||||
./hypridle.nix
|
||||
./hyprlock.nix
|
||||
./hyprpaper.nix
|
||||
./mako.nix
|
||||
./utils.nix
|
||||
./wlogout.nix
|
||||
./options.nix
|
||||
./hyprland.nix
|
||||
];
|
||||
#};
|
||||
|
||||
}
|
15
modules/default/home-manager/desktop/hyprland/fuzzel.nix
Normal file
15
modules/default/home-manager/desktop/hyprland/fuzzel.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
programs.fuzzel = lib.mkIf config.desktop.fuzzel.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
main = {
|
||||
lines = 12;
|
||||
width = 45;
|
||||
line-height = 20;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
11
modules/default/home-manager/desktop/hyprland/hyprexit.nix
Normal file
11
modules/default/home-manager/desktop/hyprland/hyprexit.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
home.packages = lib.mkIf config.desktop.hyprexit.enable [
|
||||
(pkgs.writeShellScriptBin "hyprexit" ''
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch exit
|
||||
${pkgs.systemd}/bin/loginctl terminate-user willifan
|
||||
'')
|
||||
];
|
||||
};
|
||||
}
|
40
modules/default/home-manager/desktop/hyprland/hypridle.nix
Normal file
40
modules/default/home-manager/desktop/hyprland/hypridle.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
services.hypridle = lib.mkIf config.desktop.hypridle.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
general = {
|
||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = "loginctl lock-session && sleep 2"; # lock before suspend.
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
||||
};
|
||||
|
||||
listener = [
|
||||
#{
|
||||
# timeout = 150; # 2.5min.
|
||||
# on-timeout = brightnessctl -s set 10; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
# on-resume = brightnessctl -r; # monitor backlight restor.
|
||||
#}
|
||||
|
||||
{
|
||||
timeout = 300; # 5min
|
||||
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 380; # 5.5min
|
||||
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 600; # 30min
|
||||
on-timeout = "systemctl suspend-then-hibernate"; # suspend pc
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
263
modules/default/home-manager/desktop/hyprland/hyprland.nix
Normal file
263
modules/default/home-manager/desktop/hyprland/hyprland.nix
Normal file
|
@ -0,0 +1,263 @@
|
|||
{ pkgs, lib, config, ...}:
|
||||
lib.mkIf config.desktop.hyprland.enable {
|
||||
home-manager.users.willifan = {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.variables = ["--all"];
|
||||
package = pkgs.hyprland;
|
||||
settings = {
|
||||
|
||||
|
||||
"$SCRIPTS" = "$XDG_CONFIG_HOME/desktop-utils/scripts";
|
||||
|
||||
misc = {
|
||||
disable_hyprland_logo=true;
|
||||
};
|
||||
|
||||
monitor = [
|
||||
", preffered, auto, 1"
|
||||
] ++ lib.optionals config.desktop.hyprland.hardware.Lenni.enable [
|
||||
"eDP-1, preferred, 0x0, 1.6"
|
||||
] ++ lib.optionals config.desktop.hyprland.hardware.Puenktchen.enable [
|
||||
"desc:ViewSonic Corporation VX2705-2KP W6Z205100250, 2560x1440@144Hz, 0x384, 1.25"
|
||||
"desc:ViewSonic Corporation VX2705-2KP W6Z210400766, 2560x1440@144Hz, 2048x384, 1.25"
|
||||
"desc:BNQ BenQ BL2283 CAM01567019, 1920x1080@60Hz, 4096x0, 1.0, transform, 3"
|
||||
];
|
||||
# Execute your favorite apps at launch
|
||||
exec-once = [
|
||||
''hyprctl dispatch exec "[workspace 1 silent] zen"''
|
||||
''hyprctl dispatch exec "[workspace 2 silent] kitty"''
|
||||
#''hyprctl dispatch exec "[workspace 3 silent] "''
|
||||
#''hyprctl dispatch exec "[workspace 4 silent] "''
|
||||
#''hyprctl dispatch exec "[workspace 8 silent] "''
|
||||
''hyprctl dispatch exec "[workspace 9 silent] vesktop"''
|
||||
''hyprctl dispatch exec "[workspace special:ctrl silent] thunar"''
|
||||
''hyprctl dispatch exec "[workspace special:alt silent] obsidian"''
|
||||
#''hyprctl dispatch exec "[workspace special:altgr silent]"''
|
||||
#''hyprctl dispatch exec "[workspace special:strg silent] "''
|
||||
];
|
||||
|
||||
xwayland.force_zero_scaling = true;
|
||||
|
||||
input = {
|
||||
kb_layout = "us";
|
||||
kb_variant = "";
|
||||
kb_model = "";
|
||||
kb_options = "compose:menu";
|
||||
kb_rules = "";
|
||||
|
||||
|
||||
follow_mouse = 1;
|
||||
|
||||
touchdevice.transform = lib.mkIf config.desktop.hyprland.hardware.Lillie.enable 3;
|
||||
|
||||
touchpad.natural_scroll = "yes";
|
||||
|
||||
sensitivity = -0.8; # -1.0 - 1.0, 0 means no modification.
|
||||
numlock_by_default = 1;
|
||||
special_fallthrough = true;
|
||||
};
|
||||
|
||||
|
||||
|
||||
general = {
|
||||
|
||||
gaps_in = 2;
|
||||
gaps_out = 5;
|
||||
border_size = 2;
|
||||
# "col.active_border" = "rgba(ffa44bee)";
|
||||
# "col.inactive_border" = "rgba(595959aa)";
|
||||
|
||||
layout = "dwindle";
|
||||
|
||||
resize_on_border = true;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
|
||||
rounding = 10;
|
||||
|
||||
blur = {
|
||||
enabled = false;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
new_optimizations = 1;
|
||||
};
|
||||
|
||||
shadow.enabled = true;
|
||||
shadow.range = 4;
|
||||
shadow.render_power = 3;
|
||||
# "col.shadow" = "rgba(1a1a1aee)";
|
||||
};
|
||||
|
||||
misc = {
|
||||
vfr = true;
|
||||
mouse_move_enables_dpms = true;
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
"specialWorkspace, 1, 8, default, slidefadevert 20%"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = "yes"; # you probably want this
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = "on";
|
||||
workspace_swipe_create_new = "false";
|
||||
workspace_swipe_touch = lib.mkIf config.desktop.hyprland.hardware.Lillie.enable "true";
|
||||
};
|
||||
|
||||
device = lib.mkIf config.desktop.hyprland.hardware.Lenni.enable {
|
||||
name = "pixa3854:00-093a:0274-touchpad";
|
||||
sensitivity = 0;
|
||||
natural_scroll = "yes";
|
||||
};
|
||||
|
||||
windowrule = [
|
||||
"idleinhibit fullscreen, ^(firefox)$"
|
||||
"float, ^(thunar)$"
|
||||
"stayfocused, title:^(Enpass Assistant)$"
|
||||
"pin, title:^(Enpass Assistant)$"
|
||||
"center, title:^(Enpass Assistant)$"
|
||||
"float, ^(Enpass)$"
|
||||
"center, ^(Enpass)$"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"center, xwayland:(1)"
|
||||
"nofocus,class:^jetbrains-(?!toolbox),floating:1,title:^win\d+$"
|
||||
''workspace +0, workspace:name:special:ctrl, floating:0''
|
||||
''float, workspace:name:special:altgr, onworkspace:w[2]''
|
||||
''float, workspace:name:special:strg, onworkspace:w[1]''
|
||||
''workspace +0, workspace:name:special:strg, floating:0''
|
||||
];
|
||||
|
||||
"$mainMod" = "SUPER";
|
||||
|
||||
bind = [
|
||||
''$mainMod, Q, exec, kitty''
|
||||
''$mainMod, C, killactive, ''
|
||||
''$mainMod, M, exit, ''
|
||||
''$mainMod, E, exec, thunar''
|
||||
''$mainMod, V, togglefloating, ''
|
||||
''$mainMod, R, exec, fuzzel''
|
||||
''$mainMod, P, exec, Enpass''
|
||||
''$mainMod, F, fullscreen''
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
''$mainMod, h, movefocus, l''
|
||||
''$mainMod, l, movefocus, r''
|
||||
''$mainMod, k, movefocus, u''
|
||||
''$mainMod, j, movefocus, d''
|
||||
|
||||
'', XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle''
|
||||
'', XF86AudioPrev, exec, playerctl previous''
|
||||
'', XF86AudioPlay, exec, playerctl play-pause''
|
||||
'', XF86AudioNext, exec, playerctl next''
|
||||
'', print, exec, grim -g "$(slurp)" - | wl-copy -t image/png''
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
''$mainMod, 1, exec, $SCRIPTS/workspaces.sh 1''
|
||||
''$mainMod, 2, exec, $SCRIPTS/workspaces.sh 2''
|
||||
''$mainMod, 3, exec, $SCRIPTS/workspaces.sh 3''
|
||||
''$mainMod, 4, exec, $SCRIPTS/workspaces.sh 4''
|
||||
''$mainMod, 5, exec, $SCRIPTS/workspaces.sh 5''
|
||||
''$mainMod, 6, exec, $SCRIPTS/workspaces.sh 6''
|
||||
''$mainMod, 7, exec, $SCRIPTS/workspaces.sh 7''
|
||||
''$mainMod, 8, exec, $SCRIPTS/workspaces.sh 8''
|
||||
''$mainMod, 9, exec, $SCRIPTS/workspaces.sh 9''
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
''$mainMod SHIFT, 1, movetoworkspace, 1''
|
||||
''$mainMod SHIFT, 2, movetoworkspace, 2''
|
||||
''$mainMod SHIFT, 3, movetoworkspace, 3''
|
||||
''$mainMod SHIFT, 4, movetoworkspace, 4''
|
||||
''$mainMod SHIFT, 5, movetoworkspace, 5''
|
||||
''$mainMod SHIFT, 6, movetoworkspace, 6''
|
||||
''$mainMod SHIFT, 7, movetoworkspace, 7''
|
||||
''$mainMod SHIFT, 8, movetoworkspace, 8''
|
||||
''$mainMod SHIFT, 9, movetoworkspace, 9''
|
||||
|
||||
# Monitor focus
|
||||
''$mainMod ALT, 1, focusmonitor, 0''
|
||||
''$mainMod ALT, 2, focusmonitor, 1''
|
||||
''$mainMod ALT, 3, focusmonitor, 2''
|
||||
''$mainMod ALT, 4, focusmonitor, 3''
|
||||
''$mainMod ALT, 5, focusmonitor, 4''
|
||||
''$mainMod ALT, 6, focusmonitor, 5''
|
||||
''$mainMod ALT, 7, focusmonitor, 6''
|
||||
''$mainMod ALT, 8, focusmonitor, 7''
|
||||
''$mainMod ALT, 9, focusmonitor, 8''
|
||||
''$mainMod ALT, 0, focusmonitor, 9''
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
''$mainMod, mouse_down, workspace, e+1''
|
||||
''$mainMod, mouse_up, workspace, e-1''
|
||||
];
|
||||
|
||||
binde = [
|
||||
'', XF86AudioLowerVolume, exec, $SCRIPTS/volume.sh -5''
|
||||
'', XF86AudioRaiseVolume, exec, $SCRIPTS/volume.sh 5''
|
||||
];
|
||||
|
||||
bindel = [
|
||||
'', XF86MonBrightnessDown, exec, $SCRIPTS/brightness.sh -4800''
|
||||
'', XF86MonBrightnessUp, exec, $SCRIPTS/brightness.sh 4800''
|
||||
];
|
||||
|
||||
bindr = [
|
||||
''SUPERCTRL, Control_L, togglespecialworkspace, ctrl''
|
||||
''SUPERALT, Alt_L, togglespecialworkspace, alt''
|
||||
''SUPERALT, ALT_R, togglespecialworkspace, altgr''
|
||||
''SUPERCTRL, Control_R, togglespecialworkspace, strg''
|
||||
];
|
||||
|
||||
bindm = [
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
''$mainMod, mouse:272, movewindow''
|
||||
''$mainMod, mouse:273, resizewindow''
|
||||
];
|
||||
|
||||
# ------------------------------------------
|
||||
# ########################################
|
||||
# ####### Workspaces ###########
|
||||
# ########################################
|
||||
# ------------------------------------------
|
||||
|
||||
workspace = [
|
||||
"1, persistent:true"
|
||||
"2, persistent:true"
|
||||
"3, persistent:true"
|
||||
"4, persistent:true"
|
||||
"5, persistent:true"
|
||||
"6, persistent:true"
|
||||
"7, persistent:true"
|
||||
"8, persistent:true"
|
||||
"8, persistent:true"
|
||||
"9, persistent:true"
|
||||
|
||||
"name:special:ctrl, persistent:true"
|
||||
"name:special:alt, persistent:true"
|
||||
"name:special:altgr, persistent:true"
|
||||
"name:special:strg, persistent:true"
|
||||
];
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
56
modules/default/home-manager/desktop/hyprland/hyprlock.nix
Normal file
56
modules/default/home-manager/desktop/hyprland/hyprlock.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
programs.hyprlock = lib.mkIf config.desktop.hyprlock.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
background = {
|
||||
monitor = "";
|
||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||
blur_passes = 3; # 0 disables blurring
|
||||
blur_size = 7;
|
||||
noise = 0.0117;
|
||||
contrast = 0.8916;
|
||||
brightness = 0.8172;
|
||||
vibrancy = 0.1696;
|
||||
vibrancy_darkness = 0.0;
|
||||
};
|
||||
|
||||
input-field = {
|
||||
monitor = "";
|
||||
size = "300, 75";
|
||||
outline_thickness = 3;
|
||||
dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = false;
|
||||
dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
|
||||
fade_on_empty = true;
|
||||
fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
|
||||
placeholder_text = "<i>Input Password...</i>"; # Text rendered in the input box when it's empty.
|
||||
hide_input = false;
|
||||
rounding = -1; # -1 means complete rounding (circle/oval)
|
||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
|
||||
fail_transition = 300; # transition time in ms between normal outer_color and fail_color
|
||||
capslock_color = -1;
|
||||
numlock_color = -1;
|
||||
bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
|
||||
invert_numlock = false; # change color if numlock is off
|
||||
position = "0, -20";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
|
||||
label = {
|
||||
monitor = "";
|
||||
text = "Hi there, $USER";
|
||||
color = "rgba(200, 200, 200, 1.0)";
|
||||
font_size = 25;
|
||||
font_family = "Noto Sans";
|
||||
position = "0, 80";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
15
modules/default/home-manager/desktop/hyprland/hyprpaper.nix
Normal file
15
modules/default/home-manager/desktop/hyprland/hyprpaper.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
services.hyprpaper = lib.mkIf config.desktop.hyprpaper.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
splash = true;
|
||||
|
||||
ipc = "off";
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
11
modules/default/home-manager/desktop/hyprland/mako.nix
Normal file
11
modules/default/home-manager/desktop/hyprland/mako.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
services.mako = lib.mkIf config.desktop.mako.enable {
|
||||
enable = true;
|
||||
borderRadius = 10;
|
||||
borderSize = 2;
|
||||
|
||||
};
|
||||
};
|
||||
}
|
65
modules/default/home-manager/desktop/hyprland/options.nix
Normal file
65
modules/default/home-manager/desktop/hyprland/options.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
options = {
|
||||
desktop = {
|
||||
autologin.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
fuzzel.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
hyprexit.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
hypridle.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
|
||||
hyprland = {
|
||||
enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
hardware = {
|
||||
Lenni.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
Puenktchen.enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
Lillie.enable = lib.mkOption{
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hyprlock.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
hyprpaper.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
mako.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
utils.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
wlogout.enable = lib.mkOption {
|
||||
default = config.desktop.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
24
modules/default/home-manager/desktop/hyprland/utils.nix
Normal file
24
modules/default/home-manager/desktop/hyprland/utils.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
home.packages = lib.mkIf config.desktop.utils.enable [
|
||||
|
||||
pkgs.hyprpicker
|
||||
pkgs.hyprcursor
|
||||
|
||||
pkgs.grim
|
||||
pkgs.slurp
|
||||
pkgs.wl-clipboard
|
||||
pkgs.playerctl
|
||||
|
||||
pkgs.dconf
|
||||
|
||||
pkgs.jq
|
||||
|
||||
pkgs.pulseaudio
|
||||
pkgs.inotify-tools
|
||||
pkgs.papirus-icon-theme
|
||||
pkgs.eww
|
||||
];
|
||||
};
|
||||
}
|
83
modules/default/home-manager/desktop/hyprland/wlogout.nix
Normal file
83
modules/default/home-manager/desktop/hyprland/wlogout.nix
Normal file
|
@ -0,0 +1,83 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
programs.wlogout = lib.mkIf config.desktop.wlogout.enable {
|
||||
enable = true;
|
||||
layout = [
|
||||
{
|
||||
label = "shutdown";
|
||||
action = "systemctl poweroff";
|
||||
text = "Shutdown";
|
||||
}
|
||||
{
|
||||
label = "hyprland";
|
||||
action = "hyprctl dispatch exit";
|
||||
text = "Exit Hyprland";
|
||||
}
|
||||
{
|
||||
label = "whatever";
|
||||
action = "";
|
||||
text = "whatever";
|
||||
}
|
||||
{
|
||||
label = "reboot";
|
||||
action = "systemctl reboot";
|
||||
text = "Reboot";
|
||||
}
|
||||
{
|
||||
label = "suspend";
|
||||
action = "systemctl suspend";
|
||||
text = "Suspend";
|
||||
}
|
||||
{
|
||||
label = "hibernate";
|
||||
action = "systemctl hibernate";
|
||||
text = "Hibernate";
|
||||
}
|
||||
];
|
||||
|
||||
style = ''
|
||||
@import url("file:///home/willifan/.config/gtk-4.0/gtk.css");
|
||||
* {
|
||||
background-image: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: rgba(12, 12, 12, 0.9);
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 10px;
|
||||
border-color: #ffa44b;
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 25%;
|
||||
}
|
||||
|
||||
button:focus, button:active, button:hover {
|
||||
/*background-color: #3700B3;*/
|
||||
outline-style: none;
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/suspend.png"));
|
||||
}
|
||||
|
||||
#hibernate {
|
||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/hibernate.png"));
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/shutdown.png"));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/reboot.png"));
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
11
modules/default/home-manager/desktop/kitty.nix
Normal file
11
modules/default/home-manager/desktop/kitty.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
programs.kitty = lib.mkIf config.desktop.kitty.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
enable_audio_bell = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
9
modules/default/home-manager/desktop/options.nix
Normal file
9
modules/default/home-manager/desktop/options.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
options = {
|
||||
desktop = {
|
||||
kitty.enable = lib.mkEnableOption { default = config.desktop.enable; };
|
||||
vscodium.enable = lib.mkEnableOption { default = config.desktop.enable; };
|
||||
};
|
||||
};
|
||||
}
|
62
modules/default/home-manager/desktop/vscodium.nix
Normal file
62
modules/default/home-manager/desktop/vscodium.nix
Normal file
|
@ -0,0 +1,62 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
programs.vscode = lib.mkIf config.desktop.vscodium.enable {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
|
||||
userSettings = {
|
||||
"[nix]"."editor.tabSize" = 2;
|
||||
"explorer.confirmDragAndDrop" = false;
|
||||
"cmake.showOptionsMovedNotification" = false;
|
||||
"extensions.autoUpdate" = false;
|
||||
};
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
# System
|
||||
arrterian.nix-env-selector
|
||||
bbenoist.nix
|
||||
#fireblast.hyprlang-vscode
|
||||
#eww-yuck.yuck
|
||||
|
||||
#Rust
|
||||
rust-lang.rust-analyzer
|
||||
serayuzgur.crates
|
||||
bungcip.better-toml
|
||||
vadimcn.vscode-lldb
|
||||
usernamehw.errorlens
|
||||
|
||||
#C/C++
|
||||
ms-vscode.cpptools
|
||||
twxs.cmake
|
||||
ms-vscode.cmake-tools
|
||||
|
||||
#Shell
|
||||
timonwong.shellcheck
|
||||
mads-hartmann.bash-ide-vscode
|
||||
|
||||
#Git
|
||||
#phil294.git-log--graph
|
||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "hyprlang-vscode";
|
||||
publisher = "fireblast";
|
||||
version = "0.0.1";
|
||||
sha256 = "lSMihMIue0qu9+97EgT5dqjbzsey0TLZDpJby+Piip4=";
|
||||
}
|
||||
{
|
||||
name = "yuck";
|
||||
publisher = "eww-yuck";
|
||||
version = "0.0.3";
|
||||
sha256 = "DITgLedaO0Ifrttu+ZXkiaVA7Ua5RXc4jXQHPYLqrcM=";
|
||||
}
|
||||
{
|
||||
name = "git-log--graph";
|
||||
publisher = "phil294";
|
||||
version = "0.1.15";
|
||||
sha256 = "lvjDkvXSX7rw7HyyK3WWQLnGezvL6FPEgtjIi8KWkU0=";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
14
modules/default/home-manager/git.nix
Normal file
14
modules/default/home-manager/git.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitAndTools.gitFull;
|
||||
userName = "willifan";
|
||||
userEmail = "willifan@pm.me";
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
5
modules/default/home-manager/options.nix
Normal file
5
modules/default/home-manager/options.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
|
||||
|
||||
}
|
20
modules/default/home-manager/shell/bash.nix
Normal file
20
modules/default/home-manager/shell/bash.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs = {
|
||||
bash = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
ls = "eza";
|
||||
};
|
||||
};
|
||||
|
||||
starship = {
|
||||
enableBashIntegration = true;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
# programs.bash.blesh.enable = true;
|
||||
|
||||
}
|
16
modules/default/home-manager/shell/default.nix
Normal file
16
modules/default/home-manager/shell/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
|
||||
home-manager.users.willifan = {
|
||||
imports = [
|
||||
./bash.nix
|
||||
./eza.nix
|
||||
./hyfetch.nix
|
||||
./nushell.nix
|
||||
./ssh.nix
|
||||
./starship.nix
|
||||
./zoxide.nix
|
||||
];
|
||||
};
|
||||
|
||||
}
|
8
modules/default/home-manager/shell/eza.nix
Normal file
8
modules/default/home-manager/shell/eza.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
}
|
53
modules/default/home-manager/shell/hyfetch.nix
Normal file
53
modules/default/home-manager/shell/hyfetch.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
programs.hyfetch = {
|
||||
enable = true;
|
||||
settings = {
|
||||
preset = "transgender";
|
||||
mode = "rgb";
|
||||
light_dark = "dark";
|
||||
lightness = 0.69;
|
||||
color_align = {
|
||||
mode = "horizontal";
|
||||
custom_colors = [];
|
||||
fore_back = null;
|
||||
};
|
||||
backend = "fastfetch";
|
||||
args = null;
|
||||
distro = null;
|
||||
pride_month_shown = [];
|
||||
pride_month_disable = false;
|
||||
};
|
||||
};
|
||||
programs.fastfetch = {
|
||||
enable = true;
|
||||
settings = {
|
||||
modules = [
|
||||
"title"
|
||||
"separator"
|
||||
"os"
|
||||
"host"
|
||||
{
|
||||
type = "localip";
|
||||
showIpv6 = false;
|
||||
showMac = false;
|
||||
showSpeed = false;
|
||||
showMtu = false;
|
||||
showLoop = false;
|
||||
showFlags = false;
|
||||
}
|
||||
"kernel"
|
||||
"uptime"
|
||||
"packages"
|
||||
"shell"
|
||||
"wm"
|
||||
"cpu"
|
||||
"gpu"
|
||||
"memory"
|
||||
"break"
|
||||
"colors"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
13
modules/default/home-manager/shell/nushell.nix
Normal file
13
modules/default/home-manager/shell/nushell.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs = {
|
||||
nushell = {
|
||||
enable = true;
|
||||
};
|
||||
starship = {
|
||||
enableNushellIntegration = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
3
modules/default/home-manager/shell/ssh.nix
Normal file
3
modules/default/home-manager/shell/ssh.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{ ... }:
|
||||
{
|
||||
}
|
159
modules/default/home-manager/shell/starship.nix
Normal file
159
modules/default/home-manager/shell/starship.nix
Normal file
|
@ -0,0 +1,159 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
format = lib.concatStrings [
|
||||
"[ ](fg:twelve bg:trans_blue)"
|
||||
"[ ](bg:trans_blue)[ ](fg:trans_blue bg:trans_pink)"
|
||||
"$hostname"
|
||||
"[ ](bg:trans_pink)[ ](fg:trans_pink bg:trans_white)"
|
||||
"$directory"
|
||||
"[ ](bg:trans_white)[ ](fg:trans_white bg:trans_pink)"
|
||||
"("
|
||||
"$git_branch"
|
||||
"$git_status"
|
||||
")"
|
||||
"[ ](bg:trans_pink)[ ](fg:trans_pink bg:trans_blue)"
|
||||
"$character"
|
||||
];
|
||||
|
||||
right_format = lib.concatStrings [
|
||||
"$cmd_duration"
|
||||
"("
|
||||
"$python"
|
||||
"$conda"
|
||||
"$c"
|
||||
"$cmake"
|
||||
"$golang"
|
||||
"$haskell"
|
||||
"$rust"
|
||||
")"
|
||||
];
|
||||
|
||||
palette = "stylix";
|
||||
|
||||
# Disables the blank line at the start of the prompt
|
||||
add_newline = true;
|
||||
|
||||
|
||||
palettes.stylix = {
|
||||
first = config.lib.stylix.colors.withHashtag.base00;
|
||||
second = config.lib.stylix.colors.withHashtag.base01;
|
||||
third = config.lib.stylix.colors.withHashtag.base02;
|
||||
fourth = config.lib.stylix.colors.withHashtag.base03;
|
||||
fifth = config.lib.stylix.colors.withHashtag.base04;
|
||||
sixth = config.lib.stylix.colors.withHashtag.base05;
|
||||
seventh = config.lib.stylix.colors.withHashtag.base06;
|
||||
eighth = config.lib.stylix.colors.withHashtag.base07;
|
||||
baseeight = config.lib.stylix.colors.withHashtag.base08;
|
||||
basenine = config.lib.stylix.colors.withHashtag.base09;
|
||||
ten = config.lib.stylix.colors.withHashtag.base0A;
|
||||
eleven = config.lib.stylix.colors.withHashtag.base0B;
|
||||
twelve = config.lib.stylix.colors.withHashtag.base0C;
|
||||
thirteen = config.lib.stylix.colors.withHashtag.base0D;
|
||||
fourteen = config.lib.stylix.colors.withHashtag.base0E;
|
||||
fifteen = config.lib.stylix.colors.withHashtag.base0F;
|
||||
trans_blue = "#55CDFD";
|
||||
trans_pink = "#F6AAB7";
|
||||
trans_white = "#FFFFFF";
|
||||
pride_red = "#FF1E26";
|
||||
pride_orange = "#FE941E";
|
||||
pride_yellow = "#FFFF00";
|
||||
pride_green = "#06BD00";
|
||||
pride_blue = "#001A98";
|
||||
pride_violet = "#760088";
|
||||
# Text color:
|
||||
black = "#272D37";
|
||||
white = "#CBF4F8";
|
||||
github = "#B02B10";
|
||||
};
|
||||
|
||||
hostname = {
|
||||
ssh_only = false;
|
||||
style = "bg:trans_pink fg:twelve";
|
||||
format = "[$hostname](bold $style)";
|
||||
};
|
||||
|
||||
directory = {
|
||||
style = "bg:trans_white fg:twelve";
|
||||
format = "[ $path](bold $style)($style)[$read_only](bold $style)";
|
||||
truncation_symbol = "…/";
|
||||
truncate_to_repo = true;
|
||||
read_only =" ";
|
||||
};
|
||||
|
||||
c = {
|
||||
symbol = " ";
|
||||
version_format = "\${raw}";
|
||||
style = "bg:fourth fg:white";
|
||||
format = "[$symbol($version) ]($style)";
|
||||
};
|
||||
|
||||
cmake = {
|
||||
symbol = "△ ";
|
||||
version_format = "\${raw}";
|
||||
style = "bg:fourth fg:white";
|
||||
format = "[$symbol($version) ]($style)";
|
||||
};
|
||||
|
||||
golang = {
|
||||
symbol = " ";
|
||||
version_format = "\${raw}";
|
||||
style = "bg:fourth fg:white";
|
||||
format = "[$symbol($version) ]($style)";
|
||||
};
|
||||
|
||||
python = {
|
||||
symbol = " ";
|
||||
version_format = "\${raw}";
|
||||
style = "bg:fourth fg:white";
|
||||
python_binary = ["./venv/bin/python" "./env/Scripts/python" "python" "python3" "python2"];
|
||||
format = "[$symbol($version)]($style)[ (\($virtualenv\)) ](bg:fourth fg:white)";
|
||||
};
|
||||
|
||||
conda = {
|
||||
symbol = " ";
|
||||
style = "bg:fourth fg:white";
|
||||
ignore_base = false;
|
||||
format = "[$symbol ($environment) ]($style)";
|
||||
};
|
||||
|
||||
haskell = {
|
||||
symbol = " ";
|
||||
version_format = "\${raw}";
|
||||
style = "bg:fourth fg:white";
|
||||
format = "[$symbol($version) ]($style)";
|
||||
};
|
||||
|
||||
rust = {
|
||||
symbol = " ";
|
||||
version_format = "\${raw}";
|
||||
style = "bg:fourth fg:white";
|
||||
format = "[$symbol($version) ]($style)";
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
symbol = " ";
|
||||
style = "bg:trans_pink fg:twelve";
|
||||
format = "[$symbol $branch ](bold $style)";
|
||||
};
|
||||
|
||||
git_status = {
|
||||
style = "bold bg:trans_pink fg:twelve";
|
||||
format = "([\($all_status$ahead_behind\)](bold $style))";
|
||||
};
|
||||
|
||||
cmd_duration = {
|
||||
style = "bg:eighth fg:twelve";
|
||||
format = "[ $duration ](bold $style)";
|
||||
};
|
||||
|
||||
character = {
|
||||
success_symbol = "[:3 ](bold fg:twelve bg:trans_blue)[](fg:trans_blue)";
|
||||
error_symbol = "[:o ](bold fg:twelve bg:trans_blue)[](fg:trans_blue)";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
11
modules/default/home-manager/shell/zoxide.nix
Normal file
11
modules/default/home-manager/shell/zoxide.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
options = [
|
||||
"--cmd cd"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
68
modules/default/home-manager/stylix.nix
Normal file
68
modules/default/home-manager/stylix.nix
Normal file
|
@ -0,0 +1,68 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
wallpaper = pkgs.fetchurl {
|
||||
url = "https://files.huwe.mooo.com/Oneshot.png";
|
||||
hash = "sha256-LaIzLCW86sbldE9lk7psbYKaTCjwaPLcoD3il6FalTw=";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
home-manager.users.willifan = {
|
||||
stylix = {
|
||||
enable = true;
|
||||
|
||||
autoEnable = true;
|
||||
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/pasque.yaml";
|
||||
override = {
|
||||
base0D = "F3196E";
|
||||
base0F = "CFAACF";
|
||||
};
|
||||
|
||||
cursor = {
|
||||
name = "Bibata-Modern-Classic";
|
||||
package = pkgs.bibata-cursors;
|
||||
size = 18;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
# packages = [ pkgs.nerdfonts ];
|
||||
# emoji = {
|
||||
# package = pkgs.;
|
||||
# name = "";
|
||||
# };
|
||||
monospace = {
|
||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||
name = "JetBrainsMono Nerd Font";
|
||||
};
|
||||
# sansSerif = {
|
||||
# package = pkgs.;
|
||||
# name = "";
|
||||
# };
|
||||
# serif = {
|
||||
# package = pkgs.;
|
||||
# name = "";
|
||||
# };
|
||||
};
|
||||
|
||||
image = wallpaper;
|
||||
|
||||
opacity = {
|
||||
applications = 0.9;
|
||||
desktop = 0.9;
|
||||
popups = 0.9;
|
||||
terminal = 0.9;
|
||||
};
|
||||
|
||||
polarity = "dark";
|
||||
|
||||
iconTheme = {
|
||||
enable = true;
|
||||
dark = "Papirus-Dark";
|
||||
package = pkgs.papirus-icon-theme;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
}
|
10
modules/default/home-manager/tmux/default.nix
Normal file
10
modules/default/home-manager/tmux/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ ... }:
|
||||
{
|
||||
|
||||
home-manager.users.willifan = {
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
9
modules/default/home-manager/utils/default.nix
Normal file
9
modules/default/home-manager/utils/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }:
|
||||
{
|
||||
home-manager.users.willifan = {
|
||||
services.avizo.enable = true;
|
||||
programs.bat.enable = true;
|
||||
programs.btop.enable = true;
|
||||
programs.yazi.enable = true;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue