Switch to nixfmt

This commit is contained in:
SebastianStork 2024-05-19 20:00:58 +02:00
parent 1d70117186
commit b38d2df431
55 changed files with 1559 additions and 1540 deletions

136
flake.nix
View file

@ -1,84 +1,70 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
};
wrapper-manager = {
url = "github:viperML/wrapper-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { wrapper-manager = {
self, url = "github:viperML/wrapper-manager";
nixpkgs, inputs.nixpkgs.follows = "nixpkgs";
... };
} @ inputs: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
nixosConfigurations = {
north = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit self;
inherit inputs;
};
modules = [
./hosts/north
"${./.}/users/seb/@north.nix"
];
};
inspiron = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit self;
inherit inputs;
};
modules = [
./hosts/inspiron
"${./.}/users/seb/@inspiron.nix"
];
};
};
formatter.${system} = nixpkgs.legacyPackages.${system}.alejandra.overrideAttrs { disko = {
passthru.tests.version = {}; url = "github:nix-community/disko";
postPatch = '' inputs.nixpkgs.follows = "nixpkgs";
substituteInPlace src/alejandra/src/builder.rs \ };
--replace '2 * build_ctx.indentation' '4 * build_ctx.indentation'
substituteInPlace src/alejandra/src/rules/string.rs \
--replace 'format!(" {}", line)' 'format!(" {}", line)'
substituteInPlace src/alejandra_cli/src/cli.rs \
--replace 'eprint!("{}", random_ad());' ""
rm -r src/alejandra/tests
'';
};
devShells.${system}.default = pkgs.mkShell { sops-nix = {
packages = [pkgs.sops]; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ self, nixpkgs, ... }@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in
{
nixosConfigurations = {
north = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit self;
inherit inputs;
};
modules = [
./hosts/north
"${./.}/users/seb/@north.nix"
];
}; };
inspiron = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit self;
inherit inputs;
};
modules = [
./hosts/inspiron
"${./.}/users/seb/@inspiron.nix"
];
};
};
devShells.${system}.default = pkgs.mkShell { packages = [ pkgs.sops ]; };
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style;
}; };
} }

View file

@ -1,69 +1,71 @@
{pkgs, ...}: { { pkgs, ... }:
imports = [../modules/system]; {
imports = [ ../modules/system ];
system.stateVersion = "23.11"; system.stateVersion = "23.11";
nix.settings = { nix.settings = {
experimental-features = [ experimental-features = [
"nix-command" "nix-command"
"flakes" "flakes"
]; ];
auto-optimise-store = true; auto-optimise-store = true;
warn-dirty = false; warn-dirty = false;
trusted-users = [ trusted-users = [
"root" "root"
"@wheel" "@wheel"
]; ];
}; };
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8"; LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8"; LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8"; LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8"; LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8"; LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8"; LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8"; LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8"; LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8"; LC_TIME = "de_DE.UTF-8";
}; };
console.keyMap = "de-latin1-nodeadkeys"; console.keyMap = "de-latin1-nodeadkeys";
programs.neovim = { programs.neovim = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
}; };
environment.systemPackages = [pkgs.git]; environment.systemPackages = [ pkgs.git ];
fonts.packages = [ fonts.packages = [
pkgs.corefonts pkgs.corefonts
pkgs.roboto pkgs.roboto
pkgs.open-sans pkgs.open-sans
(pkgs.nerdfonts.override { (pkgs.nerdfonts.override {
fonts = [ fonts = [
"JetBrainsMono" "JetBrainsMono"
"NerdFontsSymbolsOnly" "NerdFontsSymbolsOnly"
]; ];
}) })
];
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (pkgs.lib.getName pkg) [
"steam"
"steam-original"
"steam-run"
"corefonts"
"nvidia-x11"
"nvidia-settings"
"spotify"
"obsidian"
]; ];
nixpkgs.config.allowUnfreePredicate = pkg: users.mutableUsers = false;
builtins.elem (pkgs.lib.getName pkg) [
"steam"
"steam-original"
"steam-run"
"corefonts"
"nvidia-x11"
"nvidia-settings"
"spotify"
"obsidian"
];
users.mutableUsers = false;
} }

View file

@ -1,40 +1,41 @@
{pkgs, ...}: { { pkgs, ... }:
imports = [ {
../common.nix imports = [
./hardware.nix ../common.nix
]; ./hardware.nix
];
networking.hostName = "inspiron"; networking.hostName = "inspiron";
environment.sessionVariables.FLAKE = "/home/seb/Projects/nixos/my-config"; environment.sessionVariables.FLAKE = "/home/seb/Projects/nixos/my-config";
myConfig = { myConfig = {
boot-loader = { boot-loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
silent = true; silent = true;
};
dm.gdm.enable = true;
de.hyprland.enable = true;
wlan.enable = true;
bluetooth.enable = true;
sound.enable = true;
vm.qemu.enable = true;
flatpak.enable = true;
vpn.lgs.enable = true;
comma.enable = true;
sops.enable = true;
printing.enable = true;
syncthing.enable = true;
nix-helper = {
enable = true;
auto-gc.enable = true;
};
}; };
boot.kernelPackages = pkgs.linuxPackages_latest; dm.gdm.enable = true;
de.hyprland.enable = true;
services.auto-cpufreq.enable = true; wlan.enable = true;
bluetooth.enable = true;
sound.enable = true;
vm.qemu.enable = true;
flatpak.enable = true;
vpn.lgs.enable = true;
comma.enable = true;
sops.enable = true;
printing.enable = true;
syncthing.enable = true;
nix-helper = {
enable = true;
auto-gc.enable = true;
};
};
boot.kernelPackages = pkgs.linuxPackages_latest;
services.auto-cpufreq.enable = true;
} }

View file

@ -1,25 +1,26 @@
{...}: { { ... }:
fileSystems."/" = { {
device = "/dev/disk/by-uuid/92437114-de06-4a78-9ee3-c7d0ffcabf95"; fileSystems."/" = {
fsType = "ext4"; device = "/dev/disk/by-uuid/92437114-de06-4a78-9ee3-c7d0ffcabf95";
}; fsType = "ext4";
};
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/D8B4-1218"; device = "/dev/disk/by-uuid/D8B4-1218";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = [{device = "/dev/disk/by-uuid/1eba93d1-4853-4534-8cfd-5c14e29c6ff6";}]; swapDevices = [ { device = "/dev/disk/by-uuid/1eba93d1-4853-4534-8cfd-5c14e29c6ff6"; } ];
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"nvme" "nvme"
"xhci_pci" "xhci_pci"
"ahci" "ahci"
"usb_storage" "usb_storage"
"sd_mod" "sd_mod"
]; ];
boot.kernelModules = ["kvm-amd"]; boot.kernelModules = [ "kvm-amd" ];
nixpkgs.hostPlatform = "x86_64-linux"; nixpkgs.hostPlatform = "x86_64-linux";
hardware.cpu.amd.updateMicrocode = true; hardware.cpu.amd.updateMicrocode = true;
} }

View file

@ -1,36 +1,37 @@
{pkgs, ...}: { { pkgs, ... }:
imports = [ {
../common.nix imports = [
./hardware.nix ../common.nix
]; ./hardware.nix
];
networking.hostName = "north"; networking.hostName = "north";
environment.sessionVariables.FLAKE = "/home/seb/Projects/nixos/my-config"; environment.sessionVariables.FLAKE = "/home/seb/Projects/nixos/my-config";
myConfig = { myConfig = {
boot-loader = { boot-loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
silent = true; silent = true;
};
dm.gdm.enable = true;
de.hyprland.enable = true;
sound.enable = true;
vm.qemu.enable = true;
vpn.lgs.enable = true;
comma.enable = true;
sops.enable = true;
printing.enable = true;
syncthing.enable = true;
nix-helper = {
enable = true;
auto-gc.enable = true;
};
}; };
boot.kernelPackages = pkgs.linuxPackages_6_8; dm.gdm.enable = true;
de.hyprland.enable = true;
programs.steam.enable = true; sound.enable = true;
vm.qemu.enable = true;
vpn.lgs.enable = true;
comma.enable = true;
sops.enable = true;
printing.enable = true;
syncthing.enable = true;
nix-helper = {
enable = true;
auto-gc.enable = true;
};
};
boot.kernelPackages = pkgs.linuxPackages_6_8;
programs.steam.enable = true;
} }

View file

@ -1,28 +1,28 @@
{ {
disko.devices.disk.main = { disko.devices.disk.main = {
device = "/dev/nvme0n1"; device = "/dev/nvme0n1";
type = "disk"; type = "disk";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
ESP = { ESP = {
type = "EF00"; type = "EF00";
size = "500M"; size = "500M";
content = { content = {
type = "filesystem"; type = "filesystem";
format = "vfat"; format = "vfat";
mountpoint = "/boot"; mountpoint = "/boot";
}; };
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
}; };
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
}; };
};
} }

View file

@ -1,91 +1,93 @@
{ {
inputs, inputs,
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
imports = [ {
inputs.disko.nixosModules.default imports = [
./disko.nix inputs.disko.nixosModules.default
]; ./disko.nix
];
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"xhci_pci" "xhci_pci"
"ahci" "ahci"
"nvme" "nvme"
"usb_storage" "usb_storage"
"usbhid" "usbhid"
"sd_mod" "sd_mod"
]; ];
boot.kernelModules = [ boot.kernelModules = [
"kvm-amd" "kvm-amd"
"k10temp" "k10temp"
"nct6775" "nct6775"
]; ];
nixpkgs.hostPlatform = "x86_64-linux"; nixpkgs.hostPlatform = "x86_64-linux";
hardware.cpu.amd.updateMicrocode = true; hardware.cpu.amd.updateMicrocode = true;
services.xserver.videoDrivers = ["nvidia"]; services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = true; powerManagement.enable = true;
package = let package =
rcu_patch = pkgs.fetchpatch { let
url = "https://github.com/gentoo/gentoo/raw/c64caf53/x11-drivers/nvidia-drivers/files/nvidia-drivers-470.223.02-gpl-pfn_valid.patch"; rcu_patch = pkgs.fetchpatch {
hash = "sha256-eZiQQp2S/asE7MfGvfe6dA/kdCvek9SYa/FFGp24dVg="; url = "https://github.com/gentoo/gentoo/raw/c64caf53/x11-drivers/nvidia-drivers/files/nvidia-drivers-470.223.02-gpl-pfn_valid.patch";
}; hash = "sha256-eZiQQp2S/asE7MfGvfe6dA/kdCvek9SYa/FFGp24dVg=";
linux_6_8_patch = pkgs.fetchpatch { };
url = "https://gist.github.com/joanbm/24f4d4f4ec69f0c37038a6cc9d132b43/raw/bacb9bf3617529d54cb9a57ae8dc9f29b41d4362/nvidia-470xx-fix-linux-6.8.patch"; linux_6_8_patch = pkgs.fetchpatch {
hash = "sha256-SPLC2uGdjHSy4h9i3YFjQ6se6OCdWYW6tlC0CtqmP50="; url = "https://gist.github.com/joanbm/24f4d4f4ec69f0c37038a6cc9d132b43/raw/bacb9bf3617529d54cb9a57ae8dc9f29b41d4362/nvidia-470xx-fix-linux-6.8.patch";
extraPrefix = "kernel/"; hash = "sha256-SPLC2uGdjHSy4h9i3YFjQ6se6OCdWYW6tlC0CtqmP50=";
stripLen = 1; extraPrefix = "kernel/";
}; stripLen = 1;
in };
config.boot.kernelPackages.nvidiaPackages.mkDriver { in
version = "535.129.03"; config.boot.kernelPackages.nvidiaPackages.mkDriver {
sha256_64bit = "sha256-5tylYmomCMa7KgRs/LfBrzOLnpYafdkKwJu4oSb/AC4="; version = "535.129.03";
sha256_aarch64 = "sha256-i6jZYUV6JBvN+Rt21v4vNstHPIu9sC+2ZQpiLOLoWzM="; sha256_64bit = "sha256-5tylYmomCMa7KgRs/LfBrzOLnpYafdkKwJu4oSb/AC4=";
openSha256 = "sha256-/Hxod/LQ4CGZN1B1GRpgE/xgoYlkPpMh+n8L7tmxwjs="; sha256_aarch64 = "sha256-i6jZYUV6JBvN+Rt21v4vNstHPIu9sC+2ZQpiLOLoWzM=";
settingsSha256 = "sha256-QKN/gLGlT+/hAdYKlkIjZTgvubzQTt4/ki5Y+2Zj3pk="; openSha256 = "sha256-/Hxod/LQ4CGZN1B1GRpgE/xgoYlkPpMh+n8L7tmxwjs=";
persistencedSha256 = "sha256-FRMqY5uAJzq3o+YdM2Mdjj8Df6/cuUUAnh52Ne4koME="; settingsSha256 = "sha256-QKN/gLGlT+/hAdYKlkIjZTgvubzQTt4/ki5Y+2Zj3pk=";
persistencedSha256 = "sha256-FRMqY5uAJzq3o+YdM2Mdjj8Df6/cuUUAnh52Ne4koME=";
patches = [ patches = [
rcu_patch rcu_patch
linux_6_8_patch linux_6_8_patch
]; ];
}; };
}; };
systemd.services.gpu-temp-reader = { systemd.services.gpu-temp-reader = {
wantedBy = ["multi-user.target"]; wantedBy = [ "multi-user.target" ];
requires = ["fancontrol.service"]; requires = [ "fancontrol.service" ];
before = ["fancontrol.service"]; before = [ "fancontrol.service" ];
script = '' script = ''
${lib.getExe' pkgs.coreutils "touch"} /tmp/nvidia-gpu-temp ${lib.getExe' pkgs.coreutils "touch"} /tmp/nvidia-gpu-temp
while :; do while :; do
temp="$(${lib.getExe' config.hardware.nvidia.package "nvidia-smi"} --query-gpu=temperature.gpu --format=csv,noheader,nounits)" temp="$(${lib.getExe' config.hardware.nvidia.package "nvidia-smi"} --query-gpu=temperature.gpu --format=csv,noheader,nounits)"
${lib.getExe' pkgs.coreutils "echo"} "$((temp * 1000))" > /tmp/nvidia-gpu-temp ${lib.getExe' pkgs.coreutils "echo"} "$((temp * 1000))" > /tmp/nvidia-gpu-temp
${lib.getExe' pkgs.coreutils "sleep"} 2 ${lib.getExe' pkgs.coreutils "sleep"} 2
done done
''; '';
}; };
hardware.fancontrol = { hardware.fancontrol = {
enable = true; enable = true;
config = '' config = ''
# pwm1=rear pwm2=cpu pwm3=front+top pwm4=gpu pwm=motherboard? # pwm1=rear pwm2=cpu pwm3=front+top pwm4=gpu pwm=motherboard?
INTERVAL=2 INTERVAL=2
DEVPATH=hwmon1=devices/pci0000:00/0000:00:18.3 hwmon2=devices/platform/nct6775.656 DEVPATH=hwmon1=devices/pci0000:00/0000:00:18.3 hwmon2=devices/platform/nct6775.656
DEVNAME=hwmon1=k10temp hwmon2=nct6798 DEVNAME=hwmon1=k10temp hwmon2=nct6798
FCTEMPS=hwmon2/pwm1=hwmon2/temp1_input hwmon2/pwm2=hwmon1/temp1_input hwmon2/pwm3=hwmon2/temp1_input hwmon2/pwm4=/tmp/nvidia-gpu-temp FCTEMPS=hwmon2/pwm1=hwmon2/temp1_input hwmon2/pwm2=hwmon1/temp1_input hwmon2/pwm3=hwmon2/temp1_input hwmon2/pwm4=/tmp/nvidia-gpu-temp
FCFANS=hwmon2/pwm1=hwmon2/fan1_input hwmon2/pwm2=hwmon2/fan7_input+hwmon2/fan2_input hwmon2/pwm3=hwmon2/fan3_input hwmon2/pwm4=hwmon2/fan4_input FCFANS=hwmon2/pwm1=hwmon2/fan1_input hwmon2/pwm2=hwmon2/fan7_input+hwmon2/fan2_input hwmon2/pwm3=hwmon2/fan3_input hwmon2/pwm4=hwmon2/fan4_input
MINTEMP=hwmon2/pwm1=35 hwmon2/pwm2=45 hwmon2/pwm3=35 hwmon2/pwm4=40 MINTEMP=hwmon2/pwm1=35 hwmon2/pwm2=45 hwmon2/pwm3=35 hwmon2/pwm4=40
MAXTEMP=hwmon2/pwm1=100 hwmon2/pwm2=100 hwmon2/pwm3=100 hwmon2/pwm4=100 MAXTEMP=hwmon2/pwm1=100 hwmon2/pwm2=100 hwmon2/pwm3=100 hwmon2/pwm4=100
MINSTART=hwmon2/pwm1=16 hwmon2/pwm2=16 hwmon2/pwm3=16 hwmon2/pwm4=30 MINSTART=hwmon2/pwm1=16 hwmon2/pwm2=16 hwmon2/pwm3=16 hwmon2/pwm4=30
MINSTOP=hwmon2/pwm1=16 hwmon2/pwm2=16 hwmon2/pwm3=16 hwmon2/pwm4=30 MINSTOP=hwmon2/pwm1=16 hwmon2/pwm2=16 hwmon2/pwm3=16 hwmon2/pwm4=30
''; '';
}; };
} }

View file

@ -1,19 +1,22 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
wrappers, wrappers,
... ...
}: { }:
options.myConfig.clipboard.enable = lib.mkEnableOption ""; {
options.myConfig.clipboard.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.clipboard.enable { config = lib.mkIf config.myConfig.clipboard.enable {
services.cliphist.enable = true; services.cliphist.enable = true;
home.packages = [ home.packages = [
(pkgs.writeScriptBin "clipboard" '' (pkgs.writeScriptBin "clipboard" ''
${lib.getExe pkgs.cliphist} list | ${lib.getExe (wrappers.rofi {inherit (config.myConfig.de) theme;})} -dmenu -display-columns 2 | ${lib.getExe pkgs.cliphist} decode | ${lib.getExe' pkgs.wl-clipboard "wl-copy"} ${lib.getExe pkgs.cliphist} list | ${
'') lib.getExe (wrappers.rofi { inherit (config.myConfig.de) theme; })
]; } -dmenu -display-columns 2 | ${lib.getExe pkgs.cliphist} decode | ${lib.getExe' pkgs.wl-clipboard "wl-copy"}
}; '')
];
};
} }

View file

@ -1,8 +1,8 @@
{ {
imports = [ imports = [
./hyprland ./hyprland
./theme.nix ./theme.nix
./waybar.nix ./waybar.nix
./hypridlelock.nix ./hypridlelock.nix
]; ];
} }

View file

@ -1,31 +1,34 @@
{ {
config, config,
lib, lib,
wrappers, wrappers,
... ...
}: { }:
options.myConfig.de.hypridlelock.enable = lib.mkEnableOption ""; {
options.myConfig.de.hypridlelock.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.de.hypridlelock.enable { config = lib.mkIf config.myConfig.de.hypridlelock.enable {
services.hypridle = { services.hypridle = {
enable = true; enable = true;
settings = { settings = {
general = { general = {
lock_cmd = let lock_cmd =
hyprlockExe = "${lib.getExe wrappers.hyprlock}"; let
in "pidof ${hyprlockExe} || ${hyprlockExe}"; hyprlockExe = "${lib.getExe wrappers.hyprlock}";
before_sleep_cmd = "loginctl lock-session"; in
after_sleep_cmd = "hyprctl dispatch dpms on"; "pidof ${hyprlockExe} || ${hyprlockExe}";
}; before_sleep_cmd = "loginctl lock-session";
after_sleep_cmd = "hyprctl dispatch dpms on";
listener = [
{
timeout = 600;
on-timeout = "loginctl lock-session";
}
];
};
}; };
listener = [
{
timeout = 600;
on-timeout = "loginctl lock-session";
}
];
};
}; };
};
} }

View file

@ -1,60 +1,61 @@
{ {
config, config,
lib, lib,
wrappers, wrappers,
... ...
}: { }:
config = lib.mkIf config.myConfig.de.hyprland.enable { {
wayland.windowManager.hyprland = { config = lib.mkIf config.myConfig.de.hyprland.enable {
enable = true; wayland.windowManager.hyprland = {
enable = true;
settings = { settings = {
exec-once = ["${lib.getExe wrappers.hyprpaper}"]; exec-once = [ "${lib.getExe wrappers.hyprpaper}" ];
input = { input = {
kb_layout = "de"; kb_layout = "de";
kb_variant = "nodeadkeys"; kb_variant = "nodeadkeys";
accel_profile = "flat"; accel_profile = "flat";
};
device = {
name = "dell0b9f:00-27c6:0d43-touchpad";
accel_profile = "adaptive";
disable_while_typing = true;
natural_scroll = true;
middle_button_emulation = true;
};
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 1;
layout = "master";
};
master = {
new_is_master = false;
no_gaps_when_only = 1;
mfact = "0.5";
};
decoration = {
rounding = 6;
drop_shadow = false;
};
animations.enabled = false;
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
force_default_wallpaper = 0;
key_press_enables_dpms = true;
};
};
}; };
device = {
name = "dell0b9f:00-27c6:0d43-touchpad";
accel_profile = "adaptive";
disable_while_typing = true;
natural_scroll = true;
middle_button_emulation = true;
};
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 1;
layout = "master";
};
master = {
new_is_master = false;
no_gaps_when_only = 1;
mfact = "0.5";
};
decoration = {
rounding = 6;
drop_shadow = false;
};
animations.enabled = false;
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
force_default_wallpaper = 0;
key_press_enables_dpms = true;
};
};
}; };
};
} }

View file

@ -1,21 +1,16 @@
{ config, lib, ... }:
{ {
config, imports = [
lib, ./config.nix
... ./keybinds.nix
}: let ];
cfg = config.myConfig.de;
in {
imports = [
./config.nix
./keybinds.nix
];
options.myConfig.de.hyprland.enable = lib.mkEnableOption ""; options.myConfig.de.hyprland.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.de.hyprland.enable { config = lib.mkIf config.myConfig.de.hyprland.enable {
myConfig.de = { myConfig.de = {
hypridlelock.enable = true; hypridlelock.enable = true;
waybar.enable = true; waybar.enable = true;
};
}; };
};
} }

View file

@ -1,125 +1,133 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
config = lib.mkIf config.myConfig.de.hyprland.enable { {
wayland.windowManager.hyprland.extraConfig = '' config = lib.mkIf config.myConfig.de.hyprland.enable {
# Bindflags: wayland.windowManager.hyprland.extraConfig = ''
# r = release # Bindflags:
# e = repeat # r = release
# l = locked # e = repeat
# l = locked
# Essentials # Essentials
bind = SUPER SHIFT, C, killactive, bind = SUPER SHIFT, C, killactive,
bind = SUPER SHIFT, V, togglefloating, bind = SUPER SHIFT, V, togglefloating,
bind = SUPER SHIFT, F, fullscreen, 0 bind = SUPER SHIFT, F, fullscreen, 0
bind = SUPER, TAB, cyclenext, bind = SUPER, TAB, cyclenext,
# Launch programs # Launch programs
bind = SUPER, R, exec, rofi -show drun bind = SUPER, R, exec, rofi -show drun
bind = SUPER, RETURN, exec, kitty bind = SUPER, RETURN, exec, kitty
bind = SUPER, V, exec, clipboard bind = SUPER, V, exec, clipboard
bind = SUPER, B, exec, brave bind = SUPER, B, exec, brave
bind = SUPER, F, exec, nemo bind = SUPER, F, exec, nemo
bind = SUPER, C, exec, codium bind = SUPER, C, exec, codium
# Move focus
bind = SUPER, left, movefocus, l
bind = SUPER, right, movefocus, r
bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d
# Move window # Move focus
bind = SUPER SHIFT, left, movewindow, l bind = SUPER, left, movefocus, l
bind = SUPER SHIFT, right, movewindow, r bind = SUPER, right, movefocus, r
bind = SUPER SHIFT, up, movewindow, u bind = SUPER, up, movefocus, u
bind = SUPER SHIFT, down, movewindow, d bind = SUPER, down, movefocus, d
bindm = SUPER, mouse:272, movewindow
# Resize window # Move window
binde = SUPER CONTROL, left, resizeactive, -100 0 bind = SUPER SHIFT, left, movewindow, l
binde = SUPER CONTROL, right, resizeactive, 100 0 bind = SUPER SHIFT, right, movewindow, r
binde = SUPER CONTROL, up, resizeactive, 0 -100 bind = SUPER SHIFT, up, movewindow, u
binde = SUPER CONTROL, down, resizeactive, 0 100 bind = SUPER SHIFT, down, movewindow, d
bindm = SUPER, mouse:273, resizewindow bindm = SUPER, mouse:272, movewindow
# Minimize window # Resize window
bind = SUPER SHIFT, M, togglespecialworkspace, minimize binde = SUPER CONTROL, left, resizeactive, -100 0
bind = SUPER SHIFT, M, movetoworkspace, +0 binde = SUPER CONTROL, right, resizeactive, 100 0
bind = SUPER SHIFT, M, togglespecialworkspace, minimize binde = SUPER CONTROL, up, resizeactive, 0 -100
bind = SUPER SHIFT, M, movetoworkspace, special:minimize binde = SUPER CONTROL, down, resizeactive, 0 100
bind = SUPER SHIFT, M, togglespecialworkspace, minimize bindm = SUPER, mouse:273, resizewindow
# Switch workspace # Minimize window
${lib.concatMapStringsSep "\n" (n: "bind=SUPER, ${toString n}, workspace, ${toString n}") (lib.range 1 9)} bind = SUPER SHIFT, M, togglespecialworkspace, minimize
${lib.concatMapStringsSep "\n" (n: "bind=SUPER:SHIFT, ${toString n}, movetoworkspacesilent, ${toString n}") (lib.range 1 9)} bind = SUPER SHIFT, M, movetoworkspace, +0
bind = SUPER SHIFT, M, togglespecialworkspace, minimize
bind = SUPER SHIFT, M, movetoworkspace, special:minimize
bind = SUPER SHIFT, M, togglespecialworkspace, minimize
# Scroll through workspaces # Switch workspace
bind = SUPER, mouse_down, workspace, e-1 ${lib.concatMapStringsSep "\n" (n: "bind=SUPER, ${toString n}, workspace, ${toString n}") (
bind = SUPER, mouse_up, workspace, e+1 lib.range 1 9
)}
${lib.concatMapStringsSep "\n" (
n: "bind=SUPER:SHIFT, ${toString n}, movetoworkspacesilent, ${toString n}"
) (lib.range 1 9)}
# Manage session # Scroll through workspaces
bindrl = SUPER CONTROL, Q, exit, bind = SUPER, mouse_down, workspace, e-1
bindrl = SUPER CONTROL, P, exec, poweroff bind = SUPER, mouse_up, workspace, e+1
bindrl = SUPER CONTROL, R, exec, reboot
bindrl = SUPER CONTROL, S, exec, systemctl suspend
bindrl = SUPER CONTROL, L, exec, loginctl lock-session
bindrl = SUPER CONTROL, B, exec, sleep 1 && hyprctl dispatch dpms off
bindl = , switch:on:Lid Switch, exec, systemctl suspend
# Control media # Manage session
${let bindrl = SUPER CONTROL, Q, exit,
play-pause = "${lib.getExe pkgs.playerctl} --ignore-player=brave play-pause"; bindrl = SUPER CONTROL, P, exec, poweroff
play-next = "${lib.getExe pkgs.playerctl} --ignore-player=brave next"; bindrl = SUPER CONTROL, R, exec, reboot
play-previous = "${lib.getExe pkgs.playerctl} --ignore-player=brave previous"; bindrl = SUPER CONTROL, S, exec, systemctl suspend
mute = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; bindrl = SUPER CONTROL, L, exec, loginctl lock-session
volume-up = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; bindrl = SUPER CONTROL, B, exec, sleep 1 && hyprctl dispatch dpms off
volume-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; bindl = , switch:on:Lid Switch, exec, systemctl suspend
in ''
bindl = , XF86AudioPlay, exec, ${play-pause}
bindel = SHIFT, XF86AudioRaiseVolume, exec, ${play-next}
bindel = SHIFT, XF86AudioLowerVolume, exec, ${play-previous}
bindl = , XF86AudioMute, exec, ${mute}
bindel = , XF86AudioRaiseVolume, exec, ${volume-up}
bindel = , XF86AudioLowerVolume, exec, ${volume-down}
bindl = SUPER ALT, RETURN, exec, ${play-pause} # Control media
bindel = SUPER ALT, right, exec, ${play-next} ${
bindel = SUPER ALT, left, exec, ${play-previous} let
bindl = SUPER ALT, BACKSPACE, exec, ${mute} play-pause = "${lib.getExe pkgs.playerctl} --ignore-player=brave play-pause";
bindel = SUPER ALT, up, exec, ${volume-up} play-next = "${lib.getExe pkgs.playerctl} --ignore-player=brave next";
bindel = SUPER ALT, down, exec, ${volume-down} play-previous = "${lib.getExe pkgs.playerctl} --ignore-player=brave previous";
''} mute = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
volume-up = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
volume-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
in
''
bindl = , XF86AudioPlay, exec, ${play-pause}
bindel = SHIFT, XF86AudioRaiseVolume, exec, ${play-next}
bindel = SHIFT, XF86AudioLowerVolume, exec, ${play-previous}
bindl = , XF86AudioMute, exec, ${mute}
bindel = , XF86AudioRaiseVolume, exec, ${volume-up}
bindel = , XF86AudioLowerVolume, exec, ${volume-down}
# Adjust brightness bindl = SUPER ALT, RETURN, exec, ${play-pause}
bindel = , XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -e set +2% bindel = SUPER ALT, right, exec, ${play-next}
bindel = , XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -e set 2%- bindel = SUPER ALT, left, exec, ${play-previous}
bindl = SUPER ALT, BACKSPACE, exec, ${mute}
bindel = SUPER ALT, up, exec, ${volume-up}
bindel = SUPER ALT, down, exec, ${volume-down}
''
}
# Screenshot # Adjust brightness
bind = , Print, exec, ${lib.getExe pkgs.grimblast} --notify --freeze copysave output bindel = , XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} -e set +2%
bind = SHIFT, Print, exec, ${lib.getExe pkgs.grimblast} --notify --freeze copysave area bindel = , XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} -e set 2%-
# Escape special workspace # Screenshot
bind = SUPER, ESCAPE, togglespecialworkspace, blank bind = , Print, exec, ${lib.getExe pkgs.grimblast} --notify --freeze copysave output
bind = SUPER, ESCAPE, togglespecialworkspace, blank bind = SHIFT, Print, exec, ${lib.getExe pkgs.grimblast} --notify --freeze copysave area
# Music workspace # Escape special workspace
exec-once = [workspace special:music silent] spotify bind = SUPER, ESCAPE, togglespecialworkspace, blank
workspace = special:music, border:false, gapsout:20, on-created-empty:spotify bind = SUPER, ESCAPE, togglespecialworkspace, blank
bind = SUPER, S, togglespecialworkspace, music
# Chat workspace # Music workspace
exec-once = [workspace special:chat silent] webcord exec-once = [workspace special:music silent] spotify
workspace = special:chat, border:false, gapsout:20, on-created-empty:webcord workspace = special:music, border:false, gapsout:20, on-created-empty:spotify
bind = SUPER, D, togglespecialworkspace, chat bind = SUPER, S, togglespecialworkspace, music
# Flake workspace # Chat workspace
workspace = special:flake, border:false, gapsout:40, on-created-empty:kitty --directory $FLAKE --override background_opacity=0.6 exec-once = [workspace special:chat silent] webcord
windowrulev2 = noblur, class:(kitty), onworkspace:special:flake workspace = special:chat, border:false, gapsout:20, on-created-empty:webcord
bind = SUPER, Q, togglespecialworkspace, flake bind = SUPER, D, togglespecialworkspace, chat
'';
}; # Flake workspace
workspace = special:flake, border:false, gapsout:40, on-created-empty:kitty --directory $FLAKE --override background_opacity=0.6
windowrulev2 = noblur, class:(kitty), onworkspace:special:flake
bind = SUPER, Q, togglespecialworkspace, flake
'';
};
} }

View file

@ -1,78 +1,80 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: let }:
cfg = config.myConfig.de; let
in { cfg = config.myConfig.de;
options.myConfig.de.theme = lib.mkOption {type = lib.types.str;}; in
{
options.myConfig.de.theme = lib.mkOption { type = lib.types.str; };
config = lib.mkMerge [ config = lib.mkMerge [
(lib.mkIf (cfg.theme == "dark") { (lib.mkIf (cfg.theme == "dark") {
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
gtk = { gtk = {
enable = true; enable = true;
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
theme.name = "Adwaita-dark"; theme.name = "Adwaita-dark";
theme.package = pkgs.gnome.gnome-themes-extra; theme.package = pkgs.gnome.gnome-themes-extra;
iconTheme.name = "Papirus-Dark"; iconTheme.name = "Papirus-Dark";
iconTheme.package = pkgs.papirus-icon-theme; iconTheme.package = pkgs.papirus-icon-theme;
font.name = "Open Sans"; font.name = "Open Sans";
font.package = pkgs.open-sans; font.package = pkgs.open-sans;
}; };
qt = { qt = {
enable = true; enable = true;
platformTheme.name = "adwaita"; platformTheme.name = "adwaita";
style.name = "adwaita-dark"; style.name = "adwaita-dark";
style.package = pkgs.adwaita-qt; style.package = pkgs.adwaita-qt;
}; };
home.pointerCursor = { home.pointerCursor = {
name = "Bibata-Original-Classic"; name = "Bibata-Original-Classic";
package = pkgs.bibata-cursors; package = pkgs.bibata-cursors;
size = 24; size = 24;
gtk.enable = true; gtk.enable = true;
}; };
}) })
(lib.mkIf (cfg.theme == "light") { (lib.mkIf (cfg.theme == "light") {
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-light"; dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-light";
gtk = { gtk = {
enable = true; enable = true;
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
theme.name = "Adwaita"; theme.name = "Adwaita";
theme.package = pkgs.gnome.gnome-themes-extra; theme.package = pkgs.gnome.gnome-themes-extra;
iconTheme.name = "Papirus"; iconTheme.name = "Papirus";
iconTheme.package = pkgs.papirus-icon-theme; iconTheme.package = pkgs.papirus-icon-theme;
font.name = "Open Sans"; font.name = "Open Sans";
font.package = pkgs.open-sans; font.package = pkgs.open-sans;
}; };
qt = { qt = {
enable = true; enable = true;
platformTheme.name = "adwaita"; platformTheme.name = "adwaita";
style.name = "adwaita"; style.name = "adwaita";
style.package = pkgs.adwaita-qt; style.package = pkgs.adwaita-qt;
}; };
home.pointerCursor = { home.pointerCursor = {
name = "Bibata-Original-Ice"; name = "Bibata-Original-Ice";
package = pkgs.bibata-cursors; package = pkgs.bibata-cursors;
size = 24; size = 24;
gtk.enable = true; gtk.enable = true;
}; };
}) })
]; ];
} }

View file

@ -1,18 +1,19 @@
{ {
config, config,
lib, lib,
wrappers, wrappers,
... ...
}: { }:
options.myConfig.de.waybar.enable = lib.mkEnableOption ""; {
options.myConfig.de.waybar.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.de.waybar.enable { config = lib.mkIf config.myConfig.de.waybar.enable {
programs.waybar = { programs.waybar = {
enable = true; enable = true;
package = wrappers.waybar; package = wrappers.waybar;
systemd.enable = true; systemd.enable = true;
};
systemd.user.services.waybar.Unit.After = ["sound.target"];
}; };
systemd.user.services.waybar.Unit.After = [ "sound.target" ];
};
} }

View file

@ -1,12 +1,12 @@
{ {
imports = [ imports = [
./de ./de
./vscode.nix ./vscode.nix
./shell ./shell
./ssh-client.nix ./ssh-client.nix
./git.nix ./git.nix
./equalizer ./equalizer
./sops.nix ./sops.nix
./clipboard.nix ./clipboard.nix
]; ];
} }

View file

@ -1,16 +1,13 @@
{ config, lib, ... }:
{ {
config, options.myConfig.equalizer.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.equalizer.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.equalizer.enable { config = lib.mkIf config.myConfig.equalizer.enable {
services.easyeffects.enable = true; services.easyeffects.enable = true;
xdg.configFile."easyeffects/output" = { xdg.configFile."easyeffects/output" = {
source = ./output; source = ./output;
recursive = true; recursive = true;
};
}; };
};
} }

View file

@ -1,20 +1,17 @@
{ config, lib, ... }:
{ {
config, options.myConfig.git.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.git.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.git.enable { config = lib.mkIf config.myConfig.git.enable {
programs.git = { programs.git = {
enable = true; enable = true;
userName = "SebastianStork"; userName = "SebastianStork";
userEmail = "sebastian.stork@pm.me"; userEmail = "sebastian.stork@pm.me";
extraConfig.init.defaultBranch = "main"; extraConfig.init.defaultBranch = "main";
};
programs.lazygit.enable = true;
}; };
programs.lazygit.enable = true;
};
} }

View file

@ -1,22 +1,20 @@
{ config, lib, ... }:
let
cfg = config.myConfig.shell;
in
{ {
config, imports = [
lib, ./starship.nix
... ./enhancement.nix
}: let ];
cfg = config.myConfig.shell;
in {
imports = [
./starship.nix
./enhancement.nix
];
options.myConfig.shell = { options.myConfig.shell = {
bash.enable = lib.mkEnableOption ""; bash.enable = lib.mkEnableOption "";
zsh.enable = lib.mkEnableOption ""; zsh.enable = lib.mkEnableOption "";
}; };
config = { config = {
programs.bash.enable = cfg.bash.enable; programs.bash.enable = cfg.bash.enable;
programs.zsh.enable = cfg.zsh.enable; programs.zsh.enable = cfg.zsh.enable;
}; };
} }

View file

@ -1,49 +1,93 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
options.myConfig.shell.enhancement.enable = lib.mkEnableOption ""; {
options.myConfig.shell.enhancement.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.shell.enhancement.enable { config = lib.mkIf config.myConfig.shell.enhancement.enable {
programs.fzf.enable = true; programs.fzf.enable = true;
programs.zoxide = { programs.zoxide = {
enable = true; enable = true;
options = ["--cmd cd"]; options = [ "--cmd cd" ];
}; };
home.shellAliases = let home.shellAliases =
lsAliases = let let
listCmd = "${lib.getExe pkgs.eza} --header --group --time-style=long-iso --group-directories-first --sort=name --icons=auto --git --git-repos-no-status --binary"; lsAliases =
aliasList = lib.mapCartesianProduct ({ let
listCmd = "${lib.getExe pkgs.eza} --header --group --time-style=long-iso --group-directories-first --sort=name --icons=auto --git --git-repos-no-status --binary";
aliasList =
lib.mapCartesianProduct
(
{
a, a,
b, b,
c, c,
}: }:
a + b + c) { a + b + c
a = ["ll" "lt" "l"]; )
b = ["" "a"]; {
c = ["" "d" "f"]; a = [
"ll"
"lt"
"l"
];
b = [
""
"a"
];
c = [
""
"d"
"f"
];
}; };
convertAliasToCmd = str: "${listCmd} " + (builtins.replaceStrings ["ll" "lt" "l" "a" "d" "f"] ["--long " "--tree " "--oneline --dereference " "--all " "--only-dirs " "--only-files "] str); convertAliasToCmd =
aliasAttrs = lib.genAttrs aliasList convertAliasToCmd; str:
in "${listCmd} "
aliasAttrs // {ls = "l";}; + (builtins.replaceStrings
[
"ll"
"lt"
"l"
"a"
"d"
"f"
]
[
"--long "
"--tree "
"--oneline --dereference "
"--all "
"--only-dirs "
"--only-files "
]
str
);
aliasAttrs = lib.genAttrs aliasList convertAliasToCmd;
in
aliasAttrs // { ls = "l"; };
catAlias = let catAlias =
theme = let
{ theme =
dark = ""; {
light = "GitHub"; dark = "";
} light = "GitHub";
.${config.myConfig.de.theme}; }
in {cat = "${lib.getExe pkgs.bat} --plain --theme=${theme}";}; .${config.myConfig.de.theme};
in in
lib.mkMerge [ {
lsAliases cat = "${lib.getExe pkgs.bat} --plain --theme=${theme}";
catAlias };
]; in
}; lib.mkMerge [
lsAliases
catAlias
];
};
} }

View file

@ -1,22 +1,19 @@
{ config, lib, ... }:
{ {
config, options.myConfig.shell.starship.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.shell.starship.enable = lib.mkEnableOption "";
config.programs.starship = lib.mkIf config.myConfig.shell.starship.enable { config.programs.starship = lib.mkIf config.myConfig.shell.starship.enable {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;
enableZshIntegration = true; enableZshIntegration = true;
settings = { settings = {
directory = { directory = {
truncation_length = 0; truncation_length = 0;
truncation_symbol = "/"; truncation_symbol = "/";
truncate_to_repo = true; truncate_to_repo = true;
}; };
};
}; };
};
} }

View file

@ -1,18 +1,19 @@
{ {
self, self,
inputs, inputs,
config, config,
lib, lib,
... ...
}: { }:
imports = [inputs.sops-nix.homeManagerModules.sops]; {
imports = [ inputs.sops-nix.homeManagerModules.sops ];
options.myConfig.sops.enable = lib.mkEnableOption ""; options.myConfig.sops.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.sops.enable { config = lib.mkIf config.myConfig.sops.enable {
sops = { sops = {
age.sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519" ];
defaultSopsFile = "${self}/users/${config.home.username}/secrets.yaml"; defaultSopsFile = "${self}/users/${config.home.username}/secrets.yaml";
};
}; };
};
} }

View file

@ -1,17 +1,14 @@
{ config, lib, ... }:
{ {
config, options.myConfig.ssh-client.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.ssh-client.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.ssh-client.enable { config = lib.mkIf config.myConfig.ssh-client.enable {
programs.ssh = { programs.ssh = {
enable = true; enable = true;
addKeysToAgent = "confirm"; addKeysToAgent = "confirm";
};
services.ssh-agent.enable = true;
}; };
services.ssh-agent.enable = true;
};
} }

View file

@ -1,59 +1,66 @@
{ {
inputs, inputs,
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
options.myConfig.vscode.enable = lib.mkEnableOption ""; {
options.myConfig.vscode.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.vscode.enable { config = lib.mkIf config.myConfig.vscode.enable {
programs.vscode = { programs.vscode = {
enable = true; enable = true;
package = pkgs.vscode-with-extensions.override { package = pkgs.vscode-with-extensions.override {
vscode = pkgs.vscodium; vscode = pkgs.vscodium;
vscodeExtensions = let vscodeExtensions =
open-ext = inputs.nix-vscode-extensions.extensions.${pkgs.system}.open-vsx; let
in [ open-ext = inputs.nix-vscode-extensions.extensions.${pkgs.system}.open-vsx;
open-ext.jnoortheen.nix-ide in
open-ext.yzhang.markdown-all-in-one [
open-ext.jnoortheen.nix-ide
open-ext.yzhang.markdown-all-in-one
open-ext.github.github-vscode-theme open-ext.github.github-vscode-theme
open-ext.pkief.material-icon-theme open-ext.pkief.material-icon-theme
]; ];
}; };
};
systemd.user.tmpfiles.rules = let
settings = builtins.replaceStrings [","] [",\\n"] (builtins.toJSON {
"workbench.colorTheme" =
{
dark = "GitHub Dark";
light = "GitHub Light";
}
.${config.myConfig.de.theme};
"workbench.iconTheme" = "material-icon-theme";
"editor.fontFamily" = "JetBrainsMono Nerd Font";
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = false;
"extensions.autoCheckUpdates" = false;
"files.autoSave" = "afterDelay";
"git.autofetch" = true;
"git.confirmSync" = false;
"nix.enableLanguageServer" = true;
"nix.serverPath" = "${lib.getExe pkgs.nil}";
"update.mode" = "none";
"git.suggestSmartCommit" = false;
"workbench.sideBar.location" = "right";
"editor.renderWhitespace" = "none";
"editor.minimap.enabled" = false;
"window.menuBarVisibility" = "toggle";
"workbench.editor.decorations.colors" = false;
});
in [
"f+ %h/.config/VSCodium/User/settings.json - - - - ${settings}"
"f+ %h/.config/VSCodium/User/settings-default.json - - - - ${settings}"
];
}; };
systemd.user.tmpfiles.rules =
let
settings = builtins.replaceStrings [ "," ] [ ",\\n" ] (
builtins.toJSON {
"workbench.colorTheme" =
{
dark = "GitHub Dark";
light = "GitHub Light";
}
.${config.myConfig.de.theme};
"workbench.iconTheme" = "material-icon-theme";
"editor.fontFamily" = "JetBrainsMono Nerd Font";
"explorer.confirmDelete" = false;
"explorer.confirmDragAndDrop" = false;
"extensions.autoCheckUpdates" = false;
"files.autoSave" = "afterDelay";
"git.autofetch" = true;
"git.confirmSync" = false;
"nix.enableLanguageServer" = true;
"nix.serverPath" = "${lib.getExe pkgs.nil}";
"update.mode" = "none";
"git.suggestSmartCommit" = false;
"workbench.sideBar.location" = "right";
"editor.renderWhitespace" = "none";
"editor.minimap.enabled" = false;
"window.menuBarVisibility" = "toggle";
"workbench.editor.decorations.colors" = false;
}
);
in
[
"f+ %h/.config/VSCodium/User/settings.json - - - - ${settings}"
"f+ %h/.config/VSCodium/User/settings-default.json - - - - ${settings}"
];
};
} }

View file

@ -1,16 +1,13 @@
{ config, lib, ... }:
{ {
config, options.myConfig.bluetooth.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.bluetooth.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.bluetooth.enable { config = lib.mkIf config.myConfig.bluetooth.enable {
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
powerOnBoot = true; powerOnBoot = true;
};
services.blueman.enable = true;
hardware.logitech.wireless.enable = true;
}; };
services.blueman.enable = true;
hardware.logitech.wireless.enable = true;
};
} }

View file

@ -1,40 +1,37 @@
{ config, lib, ... }:
{ {
config, options.myConfig.boot-loader = {
lib, systemd-boot.enable = lib.mkEnableOption "";
... silent = lib.mkEnableOption "";
}: { };
options.myConfig.boot-loader = {
systemd-boot.enable = lib.mkEnableOption "";
silent = lib.mkEnableOption "";
};
config = lib.mkMerge [ config = lib.mkMerge [
(lib.mkIf config.myConfig.boot-loader.systemd-boot.enable { (lib.mkIf config.myConfig.boot-loader.systemd-boot.enable {
boot.tmp.cleanOnBoot = true; boot.tmp.cleanOnBoot = true;
boot.loader = { boot.loader = {
systemd-boot = { systemd-boot = {
enable = true; enable = true;
editor = false; editor = false;
configurationLimit = 20; configurationLimit = 20;
}; };
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
timeout = 3; timeout = 3;
}; };
systemd.watchdog.rebootTime = "10"; systemd.watchdog.rebootTime = "10";
}) })
(lib.mkIf config.myConfig.boot-loader.silent { (lib.mkIf config.myConfig.boot-loader.silent {
boot = { boot = {
kernelParams = [ kernelParams = [
"quiet" "quiet"
"rd.systemd.show_status=false" "rd.systemd.show_status=false"
"rd.udev.log_level=3" "rd.udev.log_level=3"
"udev.log_priority=3" "udev.log_priority=3"
]; ];
consoleLogLevel = 3; consoleLogLevel = 3;
initrd.verbose = false; initrd.verbose = false;
initrd.systemd.enable = true; initrd.systemd.enable = true;
}; };
}) })
]; ];
} }

View file

@ -1,18 +1,20 @@
{ {
inputs, inputs,
config, config,
lib, lib,
... ...
}: let }:
cfg = config.myConfig.comma; let
in { cfg = config.myConfig.comma;
imports = [inputs.nix-index-database.nixosModules.nix-index]; in
{
imports = [ inputs.nix-index-database.nixosModules.nix-index ];
options.myConfig.comma.enable = lib.mkEnableOption ""; options.myConfig.comma.enable = lib.mkEnableOption "";
config = { config = {
programs.command-not-found.enable = !cfg.enable; programs.command-not-found.enable = !cfg.enable;
programs.nix-index.enable = cfg.enable; programs.nix-index.enable = cfg.enable;
programs.nix-index-database.comma.enable = cfg.enable; programs.nix-index-database.comma.enable = cfg.enable;
}; };
} }

View file

@ -1,24 +1,25 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
options.myConfig.de.hyprland.enable = lib.mkEnableOption ""; {
options.myConfig.de.hyprland.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.de.hyprland.enable { config = lib.mkIf config.myConfig.de.hyprland.enable {
programs.hyprland.enable = true; programs.hyprland.enable = true;
environment.sessionVariables = { environment.sessionVariables = {
WLR_NO_HARDWARE_CURSORS = "1"; WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
};
xdg.portal = {
enable = true;
extraPortals = [pkgs.xdg-desktop-portal-gtk];
};
services.gvfs.enable = true;
}; };
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
services.gvfs.enable = true;
};
} }

View file

@ -1,18 +1,18 @@
{ {
imports = [ imports = [
./flatpak.nix ./flatpak.nix
./vm.nix ./vm.nix
./wlan.nix ./wlan.nix
./vpn.nix ./vpn.nix
./comma.nix ./comma.nix
./sops.nix ./sops.nix
./bluetooth.nix ./bluetooth.nix
./de.nix ./de.nix
./dm.nix ./dm.nix
./sound.nix ./sound.nix
./boot-loader.nix ./boot-loader.nix
./printing.nix ./printing.nix
./syncthing.nix ./syncthing.nix
./nix-helper.nix ./nix-helper.nix
]; ];
} }

View file

@ -1,32 +1,36 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: let }:
cfg = config.myConfig.dm; let
in { cfg = config.myConfig.dm;
options.myConfig.dm = { in
gdm.enable = lib.mkEnableOption ""; {
tuigreet.enable = lib.mkEnableOption ""; options.myConfig.dm = {
gdm.enable = lib.mkEnableOption "";
tuigreet.enable = lib.mkEnableOption "";
};
config = {
services.xserver = lib.mkIf cfg.gdm.enable {
enable = true;
displayManager.gdm.enable = true;
}; };
config = { services.greetd = lib.mkIf cfg.tuigreet.enable {
services.xserver = lib.mkIf cfg.gdm.enable { enable = true;
enable = true; settings = {
displayManager.gdm.enable = true; default_session =
}; let
base = config.services.xserver.displayManager.sessionData.desktops;
services.greetd = lib.mkIf cfg.tuigreet.enable { in
enable = true; {
settings = { command = "${lib.getExe pkgs.greetd.tuigreet} --time --asterisks --remember --remember-user-session --sessions ${base}/share/wayland-sessions:${base}/share/xsessions";
default_session = let user = "greeter";
base = config.services.xserver.displayManager.sessionData.desktops; };
in { };
command = "${lib.getExe pkgs.greetd.tuigreet} --time --asterisks --remember --remember-user-session --sessions ${base}/share/wayland-sessions:${base}/share/xsessions";
user = "greeter";
};
};
};
}; };
};
} }

View file

@ -1,23 +1,20 @@
{ config, lib, ... }:
{ {
config, options.myConfig.flatpak.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.flatpak.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.flatpak.enable { config = lib.mkIf config.myConfig.flatpak.enable {
services.flatpak.enable = true; services.flatpak.enable = true;
home-manager.sharedModules = [ home-manager.sharedModules = [
{ {
xdg = { xdg = {
enable = true; enable = true;
systemDirs.data = [ systemDirs.data = [
"/var/lib/flatpak/exports/share" "/var/lib/flatpak/exports/share"
"/home/seb/.local/share/flatpak/exports/share" "/home/seb/.local/share/flatpak/exports/share"
]; ];
}; };
} }
]; ];
}; };
} }

View file

@ -1,36 +1,36 @@
{ config, lib, ... }:
let
cfg = config.myConfig.nix-helper;
in
{ {
config, options.myConfig.nix-helper = {
lib, enable = lib.mkEnableOption "";
... auto-gc.enable = lib.mkEnableOption "";
}: let };
cfg = config.myConfig.nix-helper;
in { config = lib.mkIf cfg.enable {
options.myConfig.nix-helper = { programs.nh.enable = true;
enable = lib.mkEnableOption "";
auto-gc.enable = lib.mkEnableOption ""; environment.shellAliases =
let
rebuild = "sudo -v && nh os";
in
{
nrs = "${rebuild} switch";
nrt = "${rebuild} test";
nrb = "${rebuild} boot";
nrrb = "nrb && reboot";
};
programs.direnv = {
enable = true;
silent = true;
}; };
config = lib.mkIf cfg.enable { programs.nh.clean = lib.mkIf cfg.auto-gc.enable {
programs.nh.enable = true; enable = true;
dates = "daily";
environment.shellAliases = let extraArgs = "--keep 10 --keep-since 3d";
rebuild = "sudo -v && nh os";
in {
nrs = "${rebuild} switch";
nrt = "${rebuild} test";
nrb = "${rebuild} boot";
nrrb = "nrb && reboot";
};
programs.direnv = {
enable = true;
silent = true;
};
programs.nh.clean = lib.mkIf cfg.auto-gc.enable {
enable = true;
dates = "daily";
extraArgs = "--keep 10 --keep-since 3d";
};
}; };
};
} }

View file

@ -1,16 +1,13 @@
{ config, lib, ... }:
{ {
config, options.myConfig.printing.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.printing.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.printing.enable { config = lib.mkIf config.myConfig.printing.enable {
services.printing.enable = true; services.printing.enable = true;
services.avahi = { services.avahi = {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;
openFirewall = true; openFirewall = true;
};
}; };
};
} }

View file

@ -1,18 +1,19 @@
{ {
self, self,
inputs, inputs,
config, config,
lib, lib,
... ...
}: { }:
imports = [inputs.sops-nix.nixosModules.sops]; {
imports = [ inputs.sops-nix.nixosModules.sops ];
options.myConfig.sops.enable = lib.mkEnableOption ""; options.myConfig.sops.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.sops.enable { config = lib.mkIf config.myConfig.sops.enable {
sops = { sops = {
age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
defaultSopsFile = "${self}/hosts/${config.networking.hostName}/secrets.yaml"; defaultSopsFile = "${self}/hosts/${config.networking.hostName}/secrets.yaml";
};
}; };
};
} }

View file

@ -1,19 +1,16 @@
{ config, lib, ... }:
{ {
config, options.myConfig.sound.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.sound.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.sound.enable { config = lib.mkIf config.myConfig.sound.enable {
security.rtkit.enable = true; security.rtkit.enable = true;
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
wireplumber.enable = true; wireplumber.enable = true;
alsa.enable = true; alsa.enable = true;
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
};
}; };
};
} }

View file

@ -1,77 +1,76 @@
{ config, lib, ... }:
{ {
config, options.myConfig.syncthing.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.syncthing.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.syncthing.enable { config = lib.mkIf config.myConfig.syncthing.enable {
services.syncthing = { services.syncthing = {
enable = true; enable = true;
user = "seb"; user = "seb";
group = "users"; group = "users";
dataDir = "/home/seb"; dataDir = "/home/seb";
overrideDevices = true; overrideDevices = true;
overrideFolders = true; overrideFolders = true;
settings = { settings = {
devices = { devices = {
north.id = "ROS2S76-ULQWVFC-7KNQQ6Q-MNIWNKT-2QOPPHY-FFQZNVM-GUJRTHE-NZBM3QY"; north.id = "ROS2S76-ULQWVFC-7KNQQ6Q-MNIWNKT-2QOPPHY-FFQZNVM-GUJRTHE-NZBM3QY";
inspiron.id = "GUXHL6J-J2HWYNN-7JZJ5CN-6LPYGJD-H7GYRLQ-ORZ4PJJ-5K4WT7I-MELMIQO"; inspiron.id = "GUXHL6J-J2HWYNN-7JZJ5CN-6LPYGJD-H7GYRLQ-ORZ4PJJ-5K4WT7I-MELMIQO";
};
folders = let
allDevices = [
"north"
"inspiron"
];
staggeredVersioning = {
type = "staggered";
params = {
cleanInterval = "3600"; # 1 hour in seconds
maxAge = "15552000"; # 180 days in seconds
};
};
in {
Documents = {
path = "/home/seb/Documents";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Downloads = {
path = "/home/seb/Downloads";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Pictures = {
path = "/home/seb/Pictures";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Music = {
path = "/home/seb/Music";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Videos = {
path = "/home/seb/Videos";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Projects = {
path = "/home/seb/Projects";
devices = allDevices;
ignorePerms = false;
};
};
};
}; };
folders =
let
allDevices = [
"north"
"inspiron"
];
staggeredVersioning = {
type = "staggered";
params = {
cleanInterval = "3600"; # 1 hour in seconds
maxAge = "15552000"; # 180 days in seconds
};
};
in
{
Documents = {
path = "/home/seb/Documents";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Downloads = {
path = "/home/seb/Downloads";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Pictures = {
path = "/home/seb/Pictures";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Music = {
path = "/home/seb/Music";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Videos = {
path = "/home/seb/Videos";
devices = allDevices;
versioning = staggeredVersioning;
ignorePerms = false;
};
Projects = {
path = "/home/seb/Projects";
devices = allDevices;
ignorePerms = false;
};
};
};
}; };
};
} }

View file

@ -1,28 +1,29 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
options.myConfig.vm.qemu.enable = lib.mkEnableOption ""; {
options.myConfig.vm.qemu.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.vm.qemu.enable { config = lib.mkIf config.myConfig.vm.qemu.enable {
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true; programs.virt-manager.enable = true;
environment.systemPackages = [ environment.systemPackages = [
pkgs.quickemu pkgs.quickemu
pkgs.quickgui pkgs.quickgui
]; ];
home-manager.sharedModules = [ home-manager.sharedModules = [
{ {
dconf.settings."org/virt-manager/virt-manager/connections" = { dconf.settings."org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"]; autoconnect = [ "qemu:///system" ];
uris = ["qemu:///system"]; uris = [ "qemu:///system" ];
}; };
} }
]; ];
}; };
} }

View file

@ -1,37 +1,34 @@
{ config, lib, ... }:
{ {
config, options.myConfig.vpn.lgs.enable = lib.mkEnableOption "";
lib,
...
}: {
options.myConfig.vpn.lgs.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.vpn.lgs.enable { config = lib.mkIf config.myConfig.vpn.lgs.enable {
sops.secrets = { sops.secrets = {
"vpn/lgs/crt" = {}; "vpn/lgs/crt" = { };
"vpn/lgs/key" = {}; "vpn/lgs/key" = { };
};
services.openvpn.servers.lgs = {
autoStart = false;
config = ''
dev tap
persist-tun
persist-key
data-ciphers AES-128-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
auth SHA1
tls-client
client
resolv-retry infinite
remote 194.9.190.11 1194 udp4
nobind
auth-user-pass
ca ${config.sops.secrets."vpn/lgs/crt".path}
tls-auth ${config.sops.secrets."vpn/lgs/key".path} 1
remote-cert-tls server
explicit-exit-notify
'';
};
}; };
services.openvpn.servers.lgs = {
autoStart = false;
config = ''
dev tap
persist-tun
persist-key
data-ciphers AES-128-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
auth SHA1
tls-client
client
resolv-retry infinite
remote 194.9.190.11 1194 udp4
nobind
auth-user-pass
ca ${config.sops.secrets."vpn/lgs/crt".path}
tls-auth ${config.sops.secrets."vpn/lgs/key".path} 1
remote-cert-tls server
explicit-exit-notify
'';
};
};
} }

View file

@ -1,34 +1,35 @@
{ {
config, config,
pkgs, pkgs,
lib, lib,
... ...
}: { }:
options.myConfig.wlan.enable = lib.mkEnableOption ""; {
options.myConfig.wlan.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.wlan.enable { config = lib.mkIf config.myConfig.wlan.enable {
sops.secrets = { sops.secrets = {
"iwd/WLAN-233151" = {}; "iwd/WLAN-233151" = { };
"iwd/Fairphone4" = {}; "iwd/Fairphone4" = { };
"iwd/LGS" = {}; "iwd/LGS" = { };
};
networking.wireless.iwd = {
enable = true;
settings = {
General.EnableNetworkConfiguration = true;
Settings.AutoConnect = true;
Network.NameResolvingService = "resolvconf";
};
};
systemd.tmpfiles.rules = [
"C /var/lib/iwd/WLAN-233151.psk 0600 root root - ${config.sops.secrets."iwd/WLAN-233151".path}"
"C /var/lib/iwd/Fairphone4.psk 0600 root root - ${config.sops.secrets."iwd/Fairphone4".path}"
"C /var/lib/iwd/LGS.8021x 0600 root root - ${config.sops.secrets."iwd/LGS".path}"
];
environment.systemPackages = [pkgs.iwgtk];
}; };
networking.wireless.iwd = {
enable = true;
settings = {
General.EnableNetworkConfiguration = true;
Settings.AutoConnect = true;
Network.NameResolvingService = "resolvconf";
};
};
systemd.tmpfiles.rules = [
"C /var/lib/iwd/WLAN-233151.psk 0600 root root - ${config.sops.secrets."iwd/WLAN-233151".path}"
"C /var/lib/iwd/Fairphone4.psk 0600 root root - ${config.sops.secrets."iwd/Fairphone4".path}"
"C /var/lib/iwd/LGS.8021x 0600 root root - ${config.sops.secrets."iwd/LGS".path}"
];
environment.systemPackages = [ pkgs.iwgtk ];
};
} }

View file

@ -1,35 +1,32 @@
{ self, inputs, ... }:
{ {
self, imports = [ inputs.home-manager.nixosModules.home-manager ];
inputs,
...
}: {
imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
extraSpecialArgs = { extraSpecialArgs = {
inherit self; inherit self;
inherit inputs; inherit inputs;
};
}; };
};
home-manager.sharedModules = [ home-manager.sharedModules = [
../modules/home ../modules/home
../wrappers ../wrappers
{ {
programs.home-manager.enable = true; programs.home-manager.enable = true;
home.stateVersion = "23.11"; home.stateVersion = "23.11";
systemd.user.startServices = "sd-switch"; systemd.user.startServices = "sd-switch";
xdg = { xdg = {
enable = true; enable = true;
userDirs = { userDirs = {
enable = true; enable = true;
createDirectories = true; createDirectories = true;
}; };
}; };
} }
]; ];
} }

View file

@ -1,25 +1,22 @@
{ pkgs, lib, ... }:
{ {
pkgs, imports = [ ./default.nix ];
lib,
...
}: {
imports = [./default.nix];
home-manager.users.seb = { home-manager.users.seb = {
myConfig.de.theme = "light"; myConfig.de.theme = "light";
wayland.windowManager.hyprland.settings.monitor = "eDP-1,1920x1080@60,0x0,1"; wayland.windowManager.hyprland.settings.monitor = "eDP-1,1920x1080@60,0x0,1";
services.hypridle.settings.listener = [ services.hypridle.settings.listener = [
{ {
timeout = 300; timeout = 300;
on-timeout = "${lib.getExe pkgs.brightnessctl} -s && ${lib.getExe pkgs.brightnessctl} -e set 10%"; on-timeout = "${lib.getExe pkgs.brightnessctl} -s && ${lib.getExe pkgs.brightnessctl} -e set 10%";
on-resume = "${lib.getExe pkgs.brightnessctl} -r"; on-resume = "${lib.getExe pkgs.brightnessctl} -r";
} }
{ {
timeout = 1200; timeout = 1200;
on-timeout = "systemctl suspend"; on-timeout = "systemctl suspend";
} }
]; ];
}; };
} }

View file

@ -1,21 +1,18 @@
{ pkgs, lib, ... }:
{ {
pkgs, imports = [ ./default.nix ];
lib,
...
}: {
imports = [./default.nix];
home-manager.users.seb = { home-manager.users.seb = {
home.packages = [ home.packages = [
pkgs.obs-studio pkgs.obs-studio
pkgs.libsForQt5.kdenlive pkgs.libsForQt5.kdenlive
pkgs.gimp pkgs.gimp
]; ];
myConfig.de.theme = "dark"; myConfig.de.theme = "dark";
wayland.windowManager.hyprland.settings.monitor = "DP-2,2560x1440@144,0x0,1"; wayland.windowManager.hyprland.settings.monitor = "DP-2,2560x1440@144,0x0,1";
services.hypridle.settings.general.before_sleep_cmd = lib.mkForce ""; services.hypridle.settings.general.before_sleep_cmd = lib.mkForce "";
}; };
} }

View file

@ -1,19 +1,20 @@
{config, ...}: { { config, ... }:
imports = [../common.nix]; {
imports = [ ../common.nix ];
sops.secrets.seb-password.neededForUsers = true; sops.secrets.seb-password.neededForUsers = true;
users.users.seb = { users.users.seb = {
isNormalUser = true; isNormalUser = true;
description = "Sebastian Stork"; description = "Sebastian Stork";
hashedPasswordFile = config.sops.secrets.seb-password.path; hashedPasswordFile = config.sops.secrets.seb-password.path;
extraGroups = [ extraGroups = [
"wheel" "wheel"
"networkmanager" "networkmanager"
"libvirtd" "libvirtd"
"video" "video"
]; ];
}; };
home-manager.users.seb = ./home.nix; home-manager.users.seb = ./home.nix;
} }

View file

@ -1,48 +1,49 @@
{ {
config, config,
pkgs, pkgs,
osConfig, osConfig,
wrappers, wrappers,
... ...
}: { }:
xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; {
xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
myConfig = { myConfig = {
de.hyprland.enable = osConfig.myConfig.de.hyprland.enable; de.hyprland.enable = osConfig.myConfig.de.hyprland.enable;
shell = { shell = {
bash.enable = true; bash.enable = true;
starship.enable = true; starship.enable = true;
enhancement.enable = true; enhancement.enable = true;
};
ssh-client.enable = true;
git.enable = true;
vscode.enable = true;
equalizer.enable = true;
sops.enable = false;
clipboard.enable = true;
}; };
home.packages = [ ssh-client.enable = true;
pkgs.fastfetch git.enable = true;
vscode.enable = true;
equalizer.enable = true;
sops.enable = false;
clipboard.enable = true;
};
pkgs.brave home.packages = [
pkgs.cinnamon.nemo-with-extensions pkgs.fastfetch
pkgs.jetbrains.idea-community
pkgs.vlc
pkgs.onlyoffice-bin_latest
pkgs.libreoffice
pkgs.hunspell
pkgs.hunspellDicts.de_DE
pkgs.hunspellDicts.en_US
wrappers.bottom pkgs.brave
wrappers.spotify pkgs.cinnamon.nemo-with-extensions
wrappers.obsidian pkgs.jetbrains.idea-community
wrappers.marktext pkgs.vlc
wrappers.webcord pkgs.onlyoffice-bin_latest
(wrappers.kitty {inherit (config.myConfig.de) theme;}) pkgs.libreoffice
(wrappers.rofi {inherit (config.myConfig.de) theme;}) pkgs.hunspell
]; pkgs.hunspellDicts.de_DE
pkgs.hunspellDicts.en_US
wrappers.bottom
wrappers.spotify
wrappers.obsidian
wrappers.marktext
wrappers.webcord
(wrappers.kitty { inherit (config.myConfig.de) theme; })
(wrappers.rofi { inherit (config.myConfig.de) theme; })
];
} }

View file

@ -1,9 +1,5 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.bottom; basePackage = pkgs.bottom;
flags = ["--group"]; flags = [ "--group" ];
} }

View file

@ -1,21 +1,24 @@
{ {
inputs, inputs,
pkgs, pkgs,
lib, lib,
... ...
}: let }:
assembleWrapper = wrapperConfig: let
(inputs.wrapper-manager.lib { assembleWrapper =
inherit pkgs; wrapperConfig:
modules = [{wrappers.wrappedPackage = wrapperConfig;}]; (inputs.wrapper-manager.lib {
}) inherit pkgs;
.config modules = [ { wrappers.wrappedPackage = wrapperConfig; } ];
.wrappers }).config.wrappers.wrappedPackage.wrapped;
.wrappedPackage in
.wrapped; {
in { _module.args.wrappers = lib.pipe (builtins.readDir ./.) [
_module.args.wrappers = lib.pipe (builtins.readDir ./.) [ (lib.filterAttrs (name: value: name != "default.nix"))
(lib.filterAttrs (name: value: name != "default.nix")) (lib.concatMapAttrs (
(lib.concatMapAttrs (name: _: {${lib.removeSuffix ".nix" name} = import ./${name} {inherit assembleWrapper pkgs lib;};})) name: _: {
]; ${lib.removeSuffix ".nix" name} = import ./${name} { inherit assembleWrapper pkgs lib; };
}
))
];
} }

View file

@ -1,25 +1,23 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.hyprlock; basePackage = pkgs.hyprlock;
flags = let flags =
hyprlock-config = pkgs.writeText "hyprlock-config" '' let
background { hyprlock-config = pkgs.writeText "hyprlock-config" ''
monitor = background {
path = screenshot monitor =
blur_size = 4 path = screenshot
blur_passes = 1 blur_size = 4
} blur_passes = 1
input-field { }
monitor = input-field {
} monitor =
''; }
in [ '';
"--config" in
hyprlock-config [
"--config"
hyprlock-config
]; ];
} }

View file

@ -1,19 +1,17 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.hyprpaper; basePackage = pkgs.hyprpaper;
flags = let flags =
hyprpaper-config = pkgs.writeText "hyprpaper-config" '' let
preload = ~/Pictures/.wallpaper hyprpaper-config = pkgs.writeText "hyprpaper-config" ''
wallpaper = , ~/Pictures/.wallpaper preload = ~/Pictures/.wallpaper
splash = false wallpaper = , ~/Pictures/.wallpaper
''; splash = false
in [ '';
"--config" in
hyprpaper-config [
"--config"
hyprpaper-config
]; ];
} }

View file

@ -1,39 +1,45 @@
{ {
assembleWrapper, assembleWrapper,
pkgs, pkgs,
lib, lib,
... ...
}: {theme ? "dark"}: }:
{
theme ? "dark",
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.kitty; basePackage = pkgs.kitty;
flags = let flags =
toKittyConfig = lib.generators.toKeyValue { let
mkKeyValue = key: value: let toKittyConfig = lib.generators.toKeyValue {
value' = ( mkKeyValue =
if lib.isBool value key: value:
then lib.hm.booleans.yesNo value let
else toString value value' = (if lib.isBool value then lib.hm.booleans.yesNo value else toString value);
); in
in "${key} ${value'}"; "${key} ${value'}";
}; };
kitty-config = pkgs.writeText "kitty-config" (toKittyConfig { kitty-config = pkgs.writeText "kitty-config" (toKittyConfig {
font_family = "JetBrainsMono Nerd Font"; font_family = "JetBrainsMono Nerd Font";
confirm_os_window_close = 0; confirm_os_window_close = 0;
background_opacity = "0.85"; background_opacity = "0.85";
enable_audio_bell = false; enable_audio_bell = false;
update_check_interval = 0; update_check_interval = 0;
cursor_shape = "beam"; cursor_shape = "beam";
}); });
kitty-theme = pkgs.writeText "kitty-theme" "include ${pkgs.kitty-themes}/share/kitty-themes/themes/${{ kitty-theme = pkgs.writeText "kitty-theme" "include ${pkgs.kitty-themes}/share/kitty-themes/themes/${
dark = "default.conf"; {
light = "GitHub_Light.conf"; dark = "default.conf";
light = "GitHub_Light.conf";
} }
.${theme}}"; .${theme}
in [ }";
"--config" in
kitty-config [
"--config" "--config"
kitty-theme kitty-config
"--config"
kitty-theme
]; ];
} }

View file

@ -1,9 +1,5 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.marktext; basePackage = pkgs.marktext;
flags = ["--disable-gpu"]; flags = [ "--disable-gpu" ];
} }

View file

@ -1,9 +1,5 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.obsidian; basePackage = pkgs.obsidian;
flags = ["--disable-gpu"]; flags = [ "--disable-gpu" ];
} }

View file

@ -1,22 +1,30 @@
{ {
assembleWrapper, assembleWrapper,
pkgs, pkgs,
lib, lib,
... ...
}: {theme ? "dark"}: }:
{
theme ? "dark",
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.rofi-wayland; basePackage = pkgs.rofi-wayland;
flags = let flags =
color-file = let
{ color-file =
dark = ./dark.rasi; {
light = ./light.rasi; dark = ./dark.rasi;
} light = ./light.rasi;
.${theme}; }
rofi-config = pkgs.concatText "rofi-config" [./config.rasi color-file]; .${theme};
in [ rofi-config = pkgs.concatText "rofi-config" [
"-config" ./config.rasi
rofi-config color-file
];
in
[
"-config"
rofi-config
]; ];
} }

View file

@ -1,9 +1,5 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.spotify; basePackage = pkgs.spotify;
flags = ["--disable-gpu"]; flags = [ "--disable-gpu" ];
} }

View file

@ -1,116 +1,114 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.waybar; basePackage = pkgs.waybar;
flags = let flags =
waybar-config = (pkgs.formats.json {}).generate "waybar-config" { let
layer = "top"; waybar-config = (pkgs.formats.json { }).generate "waybar-config" {
position = "bottom"; layer = "top";
spacing = 10; position = "bottom";
spacing = 10;
modules-left = ["clock"]; modules-left = [ "clock" ];
modules-center = ["hyprland/workspaces"]; modules-center = [ "hyprland/workspaces" ];
modules-right = [ modules-right = [
"tray" "tray"
"network" "network"
"wireplumber" "wireplumber"
"backlight" "backlight"
"battery" "battery"
]; ];
"hyprland/workspaces" = { "hyprland/workspaces" = {
active-only = false; active-only = false;
all-outputs = true; all-outputs = true;
};
clock = {
format = " {:%H.%M}";
tooltip-format = "{:%d.%m.%Y}";
};
network = {
interval = 10;
format = "";
format-wifi = "{icon}";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
tooltip-format-wifi = "{essid} 󰇚 {bandwidthDownBits} 󰕒 {bandwidthUpBits}";
format-ethernet = "󰌗";
tooltip-format-ethernet = "󰇚 {bandwidthDownBits} 󰕒 {bandwidthUpBits}";
format-disconnected = "󰪎";
tooltip-format-disconnected = "Disconnected";
};
wireplumber = {
format = "{icon} {volume}%";
format-muted = "󰝟";
format-icons = [
"󰕿"
"󰖀"
"󰕾"
];
scroll-step = "5";
};
tray = {
icon-size = 20;
spacing = 6;
};
backlight = {
device = "amdgpu_bl1";
format = "{icon} {percent}%";
format-icons = [
"󰃞"
"󰃟"
"󰃠"
];
};
battery = {
states = {
warning = 15;
critical = 5;
};
format = "{icon} {capacity}%";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
};
}; };
waybar-style = pkgs.writeText "waybar-style" ''
* { clock = {
border: none; format = " {:%H.%M}";
border-radius: 0px; tooltip-format = "{:%d.%m.%Y}";
font-family: "Open Sans, Symbols Nerd Font Mono"; };
font-size: 15px;
} network = {
''; interval = 10;
in [ format = "";
"--config"
waybar-config format-wifi = "{icon}";
"--style" format-icons = [
waybar-style "󰤟"
"󰤢"
"󰤥"
"󰤨"
];
tooltip-format-wifi = "{essid} 󰇚 {bandwidthDownBits} 󰕒 {bandwidthUpBits}";
format-ethernet = "󰌗";
tooltip-format-ethernet = "󰇚 {bandwidthDownBits} 󰕒 {bandwidthUpBits}";
format-disconnected = "󰪎";
tooltip-format-disconnected = "Disconnected";
};
wireplumber = {
format = "{icon} {volume}%";
format-muted = "󰝟";
format-icons = [
"󰕿"
"󰖀"
"󰕾"
];
scroll-step = "5";
};
tray = {
icon-size = 20;
spacing = 6;
};
backlight = {
device = "amdgpu_bl1";
format = "{icon} {percent}%";
format-icons = [
"󰃞"
"󰃟"
"󰃠"
];
};
battery = {
states = {
warning = 15;
critical = 5;
};
format = "{icon} {capacity}%";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
};
};
waybar-style = pkgs.writeText "waybar-style" ''
* {
border: none;
border-radius: 0px;
font-family: "Open Sans, Symbols Nerd Font Mono";
font-size: 15px;
}
'';
in
[
"--config"
waybar-config
"--style"
waybar-style
]; ];
} }

View file

@ -1,9 +1,5 @@
{ { assembleWrapper, pkgs, ... }:
assembleWrapper,
pkgs,
...
}:
assembleWrapper { assembleWrapper {
basePackage = pkgs.webcord; basePackage = pkgs.webcord;
flags = ["--disable-gpu"]; flags = [ "--disable-gpu" ];
} }