aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix8
-rw-r--r--hosts/adam/audio.nix11
-rw-r--r--hosts/adam/configuration.nix79
-rw-r--r--hosts/adam/home.nix49
-rw-r--r--hosts/lilith/configuration.nix37
-rw-r--r--hosts/lilith/home.nix34
-rw-r--r--hosts/sachiel/configuration.nix5
-rw-r--r--lib/default.nix34
-rw-r--r--modules/default.nix10
-rw-r--r--modules/desktop/default.nix9
-rw-r--r--modules/desktop/dunst.nix43
-rw-r--r--modules/desktop/hyprland/hyprlock.nix (renamed from modules/home-manager/hyprlock.nix)4
-rw-r--r--modules/desktop/sway/default.nix117
-rw-r--r--modules/desktop/sway/swayidle.nix45
-rw-r--r--modules/desktop/sway/swaylock.nix26
-rw-r--r--modules/desktop/waybar.nix130
-rw-r--r--modules/home-manager/default.nix28
-rw-r--r--modules/home-manager/dev.nix45
-rw-r--r--modules/home-manager/dunst.nix41
-rw-r--r--modules/home-manager/firefox.nix245
-rw-r--r--modules/home-manager/foot.nix57
-rw-r--r--modules/home-manager/gh.nix10
-rw-r--r--modules/home-manager/git.nix34
-rw-r--r--modules/home-manager/gpg.nix22
-rw-r--r--modules/home-manager/latex.nix29
-rw-r--r--modules/home-manager/neovim/default.nix39
-rw-r--r--modules/home-manager/nixcord.nix26
-rw-r--r--modules/home-manager/opencode.nix19
-rw-r--r--modules/home-manager/spicetify.nix33
-rw-r--r--modules/home-manager/sway.nix82
-rw-r--r--modules/home-manager/swayidle.nix29
-rw-r--r--modules/home-manager/tmux.nix42
-rw-r--r--modules/home-manager/typst.nix16
-rw-r--r--modules/home-manager/vscode.nix60
-rw-r--r--modules/home-manager/waybar.nix147
-rw-r--r--modules/home-manager/zathura.nix31
-rw-r--r--modules/home-manager/zsh.nix67
-rw-r--r--modules/programs/anki.nix (renamed from modules/home-manager/anki.nix)7
-rw-r--r--modules/programs/default.nix20
-rw-r--r--modules/programs/firefox.nix248
-rw-r--r--modules/programs/foot.nix60
-rw-r--r--modules/programs/gh.nix17
-rw-r--r--modules/programs/git.nix39
-rw-r--r--modules/programs/gpg.nix25
-rw-r--r--modules/programs/latex.nix32
-rw-r--r--modules/programs/neovim/default.nix42
-rw-r--r--modules/programs/neovim/init.lua (renamed from modules/home-manager/neovim/init.lua)0
-rw-r--r--modules/programs/nixcord.nix32
-rw-r--r--modules/programs/opencode.nix22
-rw-r--r--modules/programs/spicetify.nix38
-rw-r--r--modules/programs/tmux.nix45
-rw-r--r--modules/programs/typst.nix19
-rw-r--r--modules/programs/vscode.nix63
-rw-r--r--modules/programs/zathura.nix34
-rw-r--r--modules/programs/zsh.nix74
-rw-r--r--modules/services/default.nix15
-rw-r--r--modules/services/mullvad.nix16
-rw-r--r--modules/services/pipewire.nix19
-rw-r--r--modules/services/polkit.nix25
-rw-r--r--modules/services/printer.nix21
-rw-r--r--modules/system/default.nix10
-rw-r--r--modules/system/localisation.nix23
-rw-r--r--modules/system/network.nix14
-rw-r--r--modules/system/nix-options.nix18
-rw-r--r--modules/system/users.nix22
65 files changed, 1454 insertions, 1289 deletions
diff --git a/flake.nix b/flake.nix
index 2cbf628..d59dc52 100644
--- a/flake.nix
+++ b/flake.nix
@@ -41,10 +41,6 @@
username = "schererleander";
system = linux-system;
overlays = overlays;
- sharedModules = [
- inputs.nixcord.homeModules.nixcord
- inputs.spicetify-nix.homeManagerModules.spicetify
- ];
};
sachiel = lib.mkSystem {
host = "sachiel";
@@ -60,10 +56,6 @@
username = username;
system = darwin-system;
overlays = overlays;
- sharedModules = [
- inputs.nixcord.homeModules.nixcord
- inputs.spicetify-nix.homeManagerModules.spicetify
- ];
};
};
}
diff --git a/hosts/adam/audio.nix b/hosts/adam/audio.nix
deleted file mode 100644
index e34b073..0000000
--- a/hosts/adam/audio.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ ... }:
-
-{
- security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- };
-}
diff --git a/hosts/adam/configuration.nix b/hosts/adam/configuration.nix
index d391b64..88defa1 100644
--- a/hosts/adam/configuration.nix
+++ b/hosts/adam/configuration.nix
@@ -1,16 +1,17 @@
{
- pkgs,
+ inputs,
+ system,
host,
+ pkgs,
username,
...
}:
{
-
imports = [
./hardware-configuration.nix
- ./audio.nix
- ./wooting.nix
+ ../../modules
+ ../../modules/system
];
boot = {
@@ -51,59 +52,37 @@
environment.variables.AMD_VULKAN_ICD = "RADV";
- # Network
- networking = {
- hostName = host;
- networkmanager.enable = true;
- };
+ home-manager.users.${username} = {
+ home.username = username;
+ home.homeDirectory = "/home/${username}";
- # Improve startup time
- systemd.services.NetworkManager-wait-online.enable = false;
+ programs.home-manager.enable = true;
- # Time
- time.timeZone = "Europe/Berlin";
+ home.packages = with pkgs; [
+ obsidian
+ firefox
+ imv
+ mpv
- # Keymap
- console.keyMap = "de";
+ nextcloud-client
- # User
- users.users.${username} = {
- isNormalUser = true;
- extraGroups = [
- "networkmanager"
- "wheel"
- "video"
- "input"
+ xdg-utils
+ pulsemixer
];
- shell = pkgs.zsh;
- ignoreShellProgramCheck = true;
+ home.stateVersion = "25.05";
};
- services = {
- openssh.enable = true;
- gnome.gnome-keyring.enable = true;
- };
-
- xdg.portal = {
- enable = true;
- wlr.enable = true;
- };
-
- security.polkit.enable = true;
-
- programs.dconf.enable = true;
-
- # Mullvad vpn
- services.mullvad-vpn = {
- enable = true;
- package = pkgs.mullvad-vpn;
- };
-
- nix.settings.experimental-features = [
- "nix-command"
- "flakes"
- ];
- nixpkgs.config.allowUnfree = true;
+ nx.desktop.sway.enable = true;
+ nx.desktop.waybar.enable = true;
+ nx.desktop.dunst.enable = true;
+ nx.programs.gh.enable = true;
+ nx.programs.gpg.enable = true;
+ nx.programs.neovim.enable = true;
+ nx.programs.tmux.enable = true;
+ nx.programs.zsh.enable = true;
+ nx.programs.foot.enable = true;
+ nx.programs.spicetify.enable = true;
+ nx.programs.zathura.enable = true;
system.stateVersion = "25.05";
}
diff --git a/hosts/adam/home.nix b/hosts/adam/home.nix
index ebdfa59..8f22d97 100644
--- a/hosts/adam/home.nix
+++ b/hosts/adam/home.nix
@@ -5,51 +5,10 @@
../../modules/home-manager
];
- home.username = username;
- home.homeDirectory = "/home/${username}";
-
- programs.home-manager.enable = true;
-
- home.packages = with pkgs; [
- obsidian
- firefox
- imv
- mpv
-
- xdg-utils
- pulsemixer
-
- # fonts
- noto-fonts
- noto-fonts-cjk-sans
+ noto-fonts-cjk-sans
noto-fonts-emoji
];
- gtk = {
- enable = true;
- theme = {
- name = "Adwaita-dark";
- package = pkgs.gnome-themes-extra;
- };
- gtk3.extraConfig = {
- Settings = ''
- gtk-application-prefer-dark-theme=1
- '';
- };
- gtk4.extraConfig = {
- Settings = ''
- gtk-application-prefer-dark-theme=1
- '';
- };
- };
-
- home.pointerCursor = {
- gtk.enable = true;
- name = "Adwaita";
- package = pkgs.adwaita-icon-theme;
- size = 24;
- };
-
programs.zsh.shellAliases = {
open = "xdg-open";
};
@@ -57,9 +16,11 @@
dev.enable = true;
sway.enable = true;
- dunst.enable = true;
- waybar.enable = true;
foot.enable = true;
+ waybar.enable = true;
+ dunst.enable = true;
+ hyprlock.enable = true;
+
spicetify.enable = true;
zathura.enable = true;
nixcord.enable = true;
diff --git a/hosts/lilith/configuration.nix b/hosts/lilith/configuration.nix
index 897fc1d..390a8a3 100644
--- a/hosts/lilith/configuration.nix
+++ b/hosts/lilith/configuration.nix
@@ -1,10 +1,43 @@
-{ host, username, ... }:
+{
+ pkgs,
+ host,
+ username,
+ ...
+}:
{
+ imports = [
+ ../../modules
+ ];
+
users.users.${username}.home = "/Users/${username}";
networking.hostName = host;
+ home-manager.users.${username} = {
+ home.username = username;
+ home.homeDirectory = "/Users/${username}";
+
+ programs.home-manager.enable = true;
+
+ home.packages = with pkgs; [
+ htop
+ ffmpeg
+ wget
+ imagemagick
+
+ gcc
+ maven
+ cmake
+ gnupg
+ lua
+
+ zathura
+
+ nerd-fonts.symbols-only
+ ];
+ };
+
system.primaryUser = username;
system.defaults = {
dock = {
@@ -49,5 +82,7 @@
onActivation.upgrade = true;
};
+ nx.
+
system.stateVersion = 5;
}
diff --git a/hosts/lilith/home.nix b/hosts/lilith/home.nix
deleted file mode 100644
index 55af127..0000000
--- a/hosts/lilith/home.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ pkgs, username, ... }:
-
-{
- imports = [
- ../../modules/home-manager
- ];
-
- home.username = username;
- home.homeDirectory = "/Users/${username}";
-
- home.packages = with pkgs; [
- htop
- ffmpeg
- wget
- imagemagick
-
- gcc
- maven
- cmake
- gnupg
- lua
-
- zathura
-
- nerd-fonts.symbols-only
- ];
-
- dev.enable = true;
- spicetify.enable = true;
- latex.enable = true;
- anki.enable = true;
-
- home.stateVersion = "25.05";
-}
diff --git a/hosts/sachiel/configuration.nix b/hosts/sachiel/configuration.nix
index 4a9b297..4372836 100644
--- a/hosts/sachiel/configuration.nix
+++ b/hosts/sachiel/configuration.nix
@@ -183,7 +183,10 @@
];
repo = "h8xn8qvo@h8xn8qvo.repo.borgbase.com:repo";
encryption.mode = "none";
- environment.BORG_RSH = "ssh -i /home/${username}/.ssh/borgbase-nextcloud -o StrictHostKeyChecking=accept-new";
+ environment = {
+ BORG_RSH = "ssh -i /home/${username}/.ssh/borgbase-nextcloud -o StrictHostKeyChecking=accept-new";
+ TMPDIR = "/var/tmp";
+ };
compression = "auto,lzma";
startAt = "daily";
readWritePaths = [
diff --git a/lib/default.nix b/lib/default.nix
index 6ad0a1f..a020b20 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -11,29 +11,16 @@ in
username,
system,
overlays ? [ ],
- sharedModules ? [ ],
extraModules ? [ ],
extraSpecialArgs ? { },
}:
let
darwinHost = isDarwin system;
builder = if darwinHost then inputs.nix-darwin.lib.darwinSystem else inputs.nixpkgs.lib.nixosSystem;
- hmModule =
- if darwinHost then
- inputs.home-manager.darwinModules.home-manager
- else
- inputs.home-manager.nixosModules.home-manager;
hostDir = ../hosts/${host};
hostCfg = hostDir + /configuration.nix;
- hostHome = hostDir + /home.nix;
-
- hmEnabled = builtins.pathExists hostHome;
nixpkgsModule = {
- nix.settings.experimental-features = [
- "nix-command"
- "flakes"
- ];
nixpkgs.overlays = overlays;
nixpkgs.config.allowUnfree = true;
};
@@ -41,28 +28,9 @@ in
modules = [
hostCfg
nixpkgsModule
+ (if darwinHost then inputs.home-manager.darwinModules.home-manager else inputs.home-manager.nixosModules.home-manager)
]
++ lib.optionals darwinHost [ inputs.mac-app-util.darwinModules.default ]
- ++ lib.optionals hmEnabled [
- hmModule
- {
- home-manager.useGlobalPkgs = true;
- home-manager.useUserPackages = true;
- home-manager.backupFileExtension = "backup";
- home-manager.extraSpecialArgs = {
- inherit
- inputs
- system
- host
- username
- ;
- }
- // extraSpecialArgs;
- home-manager.users.${username} = import hostHome;
- home-manager.sharedModules =
- sharedModules ++ lib.optional darwinHost inputs.mac-app-util.homeManagerModules.default;
- }
- ]
++ extraModules;
in
builder {
diff --git a/modules/default.nix b/modules/default.nix
new file mode 100644
index 0000000..97c1bb5
--- /dev/null
+++ b/modules/default.nix
@@ -0,0 +1,10 @@
+{ ... }:
+
+{
+ imports = [
+ ./desktop
+ ./programs
+ ./services
+ #./system
+ ];
+}
diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix
new file mode 100644
index 0000000..636e917
--- /dev/null
+++ b/modules/desktop/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+
+{
+ imports = [
+ ./sway
+ ./dunst.nix
+ ./waybar.nix
+ ];
+}
diff --git a/modules/desktop/dunst.nix b/modules/desktop/dunst.nix
new file mode 100644
index 0000000..46e6445
--- /dev/null
+++ b/modules/desktop/dunst.nix
@@ -0,0 +1,43 @@
+{
+ config,
+ lib,
+ pkgs,
+ username,
+ ...
+}:
+
+{
+ options.nx.desktop.dunst.enable = lib.mkEnableOption "Enable dunst notification";
+ config = lib.mkIf config.nx.desktop.dunst.enable {
+ home-manager.users.${username} = {
+ home.packages = with pkgs; [
+ libnotify
+ ];
+
+ services.dunst = {
+ enable = true;
+ settings = {
+ global = {
+ font = "monospace 10";
+ offset = "(15, 15)";
+ frame_width = 0;
+ };
+ urgency_low = {
+ foreground = "#FFFFFF";
+ background = "#000000E6";
+ };
+
+ urgency_normal = {
+ foreground = "#FFFFFF";
+ background = "#000000E6";
+ };
+
+ urgency_critical = {
+ foreground = "#FFFFFF";
+ background = "#000000E6";
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/hyprlock.nix b/modules/desktop/hyprland/hyprlock.nix
index 99810d2..425f83c 100644
--- a/modules/home-manager/hyprlock.nix
+++ b/modules/desktop/hyprland/hyprlock.nix
@@ -6,8 +6,8 @@
}:
{
- options.hyprlock.enable = lib.mkEnableOption "Hyprlock is a screen locker for Hyprland.";
- config = lib.mkIf config.hyprlock.enable {
+ options.nx.desktop.hyprlock.enable = lib.mkEnableOption "Hyprlock is a screen locker for Hyprland.";
+ config = lib.mkIf config.nx.desktop.hyprlock.enable {
programs.hyprlock = {
enable = true;
settings = {
diff --git a/modules/desktop/sway/default.nix b/modules/desktop/sway/default.nix
new file mode 100644
index 0000000..7de94a6
--- /dev/null
+++ b/modules/desktop/sway/default.nix
@@ -0,0 +1,117 @@
+{
+ config,
+ username,
+ lib,
+ pkgs,
+ ...
+}:
+
+let
+ mod = config.home-manager.users.${username}.wayland.windowManager.sway.config.modifier;
+in
+{
+ imports = [
+ ./swayidle.nix
+ ./swaylock.nix
+ ];
+
+ options.nx.desktop.sway.enable = lib.mkEnableOption "Enable sway and setup";
+ config = lib.mkIf config.nx.desktop.sway.enable {
+ home-manager.users.${username} = {
+ home.packages = with pkgs; [
+ wmenu
+ swaybg
+ sway-contrib.grimshot
+ wl-clipboard
+ xdg-utils
+ ];
+
+ wayland.windowManager.sway = {
+ enable = true;
+ systemd = {
+ enable = true;
+ xdgAutostart = true;
+ };
+ config = {
+ input = {
+ "*" = {
+ xkb_layout = "de";
+ };
+ };
+
+ output = {
+ DP-1 = {
+ resolution = "1920x1080@240Hz";
+ bg = "/etc/nixos/images/pond.jpg fill";
+ };
+ };
+
+ gaps = {
+ inner = 15;
+ };
+
+ window = {
+ titlebar = false;
+ border = 0;
+ };
+
+ modifier = "Mod4";
+
+ keybindings = lib.mkOptionDefault {
+ "${mod}+q" = "kill";
+ "${mod}+Shift+s" = "exec grimshot savecopy area";
+ "XF86AudioPlay" = "exec playerctl play-pause";
+ "XF86AudioPrev" = "exec playerctl previous";
+ "XF86AudioNext" = "exec playerctl next";
+ "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ +5%";
+ "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ -5%";
+ "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_DEVICE@ toggle";
+ };
+
+ menu = "${pkgs.wmenu}/bin/wmenu-run -b -N 000000E6";
+ terminal = "${pkgs.foot}/bin/foot";
+ defaultWorkspace = "workspace number 1";
+
+ bars = [
+ {
+ "command" = "${pkgs.waybar}/bin/waybar";
+ }
+ ];
+ };
+ checkConfig = false;
+ wrapperFeatures.base = true;
+ wrapperFeatures.gtk = true;
+ };
+
+ home.sessionVariables = {
+ XDG_CURRENT_DESKTOP = "sway";
+ XDG_SCREENSHOTS_DIR = "~/Pictures/Screenshots/";
+ };
+
+ gtk = {
+ enable = true;
+ theme = {
+ name = "Adwaita-dark";
+ package = pkgs.gnome-themes-extra;
+ };
+ gtk3.extraConfig = {
+ Settings = ''
+ gtk-application-prefer-dark-theme=1
+ '';
+ };
+ gtk4.extraConfig = {
+ Settings = ''
+ gtk-application-prefer-dark-theme=1
+ '';
+ };
+ };
+
+ home.pointerCursor = {
+ gtk.enable = true;
+ name = "Adwaita";
+ package = pkgs.adwaita-icon-theme;
+ size = 24;
+ };
+ };
+ };
+}
diff --git a/modules/desktop/sway/swayidle.nix b/modules/desktop/sway/swayidle.nix
new file mode 100644
index 0000000..0708abc
--- /dev/null
+++ b/modules/desktop/sway/swayidle.nix
@@ -0,0 +1,45 @@
+{
+ config,
+ lib,
+ pkgs,
+ username,
+ ...
+}:
+
+{
+ options.nx.desktop.swayidle.enable = lib.mkEnableOption "Enable swayidle configuration" // {
+ default = config.nx.desktop.sway.enable;
+ };
+ config = lib.mkIf config.nx.desktop.swayidle.enable {
+ home-manager.users."${username}" = {
+ services.swayidle = {
+ enable = true;
+ timeouts = [
+ {
+ timeout = 300;
+ command = "${pkgs.swaylock}/bin/swaylock -f -c 000000";
+ }
+ {
+ timeout = 600;
+ command = "${pkgs.sway}/bin/swaymsg 'output * dpms off";
+ resumeCommand = "${pkgs.sway}/bin/swaymsg output * dpms on";
+ }
+ {
+ timeout = 900;
+ command = "${pkgs.systemd}/bin/systemctl suspend";
+ }
+ ];
+ events = [
+ {
+ event = "after-resume";
+ command = "${pkgs.sway}/bin/swaymsg output * dpms on";
+ }
+ {
+ event = "before-sleep";
+ command = "${pkgs.swaylock}/bin/swaylock -f -c 000000";
+ }
+ ];
+ };
+ };
+ };
+}
diff --git a/modules/desktop/sway/swaylock.nix b/modules/desktop/sway/swaylock.nix
new file mode 100644
index 0000000..66e418b
--- /dev/null
+++ b/modules/desktop/sway/swaylock.nix
@@ -0,0 +1,26 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+
+{
+ options.nx.desktop.swaylock.enable = lib.mkEnableOption "Enable and setup swaylock" // {
+ default = config.nx.desktop.sway.enable;
+ };
+ config = lib.mkIf config.nx.desktop.swaylock.enable {
+ home-manager.users."${username}" = {
+ programs.swaylock = {
+ enable = true;
+ settings = {
+ font = "monospace 12";
+ color = "00000000";
+ ring-color = "ffffffff";
+ key-hl-color = "ff0000ff";
+ bs-hl-color = "ff0000ff";
+ };
+ };
+ };
+ };
+}
diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix
new file mode 100644
index 0000000..874b50f
--- /dev/null
+++ b/modules/desktop/waybar.nix
@@ -0,0 +1,130 @@
+{
+ config,
+ lib,
+ username,
+ ...
+}:
+
+{
+ options.nx.desktop.waybar.enable = lib.mkEnableOption "Enable and configure Waybar";
+ config = lib.mkIf config.nx.desktop.waybar.enable {
+ home-manager.users."${username}" = {
+ programs.waybar = {
+ enable = true;
+ settings = {
+ mainBar = {
+ height = 32;
+ layer = "top";
+ position = "bottom";
+ modules-center = [ "mpris" ];
+ modules-left = [ "sway/workspaces" ];
+ modules-right = [
+ "privacy"
+ "tray"
+ "battery"
+ "pulseaudio"
+ "network"
+ "bluetooth"
+ "clock"
+ ];
+
+ mpris = {
+ format = "{title}";
+ tooltip-format = "{artist} - {album}";
+ };
+
+ tray = {
+ spacing = 10;
+ };
+
+ privacy = {
+ icon-size = 16;
+ };
+
+ cpu = {
+ format = "󰻠";
+ tooltip = true;
+ };
+
+ memory = {
+ format = "";
+ };
+
+ temperature = {
+ critical-threshold = 80;
+ format = "";
+ };
+
+ network = {
+ format-disconnect = "󰌙";
+ format-ethernet = "󰌘";
+ format-wifi = "{icon}";
+ format-icons = [
+ "󰤟"
+ "󰤢"
+ "󰤥"
+ "󰤨"
+ ];
+
+ tooltip-format-wifi = "{essid} | {signalStrength}%";
+ tooltip-format-ethernet = "{ifname}";
+ };
+
+ bluetooth = {
+ format = " {status}";
+ format-disabled = "";
+ format-no-controller = "";
+ format-connected = " {device_alias}";
+ tooltip = false;
+ };
+
+ clock = {
+ format-alt = "{:%Y-%m-%d}";
+ tooltip-format = "{:%Y-%m-%d | %H:%M}";
+ };
+
+ pulseaudio = {
+ format = "{icon}";
+ format-icons = {
+ default = [
+ ""
+ ""
+ ""
+ ];
+ };
+ tooltip-format = "{desc} | {volume}%";
+ };
+ };
+ };
+
+ style = ''
+ * {
+ border: none;
+ border-radius: 0;
+ font-family: monospace;
+ font-size: 12px;
+ background: none;
+ }
+
+ window#waybar {
+ background: rgba(0, 0, 0, 0.9);
+ }
+
+ #workspaces button {
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+
+ #workspaces button.focused {
+ font-weight: bold;
+ }
+
+ #clock, #pulseaudio, #tray, #network, #battery, #bluetooth, #cpu, #memory, #temperature, #custom-expand, #group-expand {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ '';
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix
deleted file mode 100644
index 408e4bf..0000000
--- a/modules/home-manager/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ ... }:
-
-{
- imports = [
- ./git.nix
- ./gh.nix
- ./zsh.nix
- ./tmux.nix
- ./neovim/default.nix
- ./zathura.nix
- ./vscode.nix
- ./gpg.nix
- ./nixcord.nix
- ./foot.nix
- ./dev.nix
- ./sway.nix
- ./waybar.nix
- ./firefox.nix
- ./spicetify.nix
- ./anki.nix
- ./dunst.nix
- ./hyprlock.nix
- ./swayidle.nix
- #./opencode.nix
- ./latex.nix
- ./typst.nix
- ];
-}
diff --git a/modules/home-manager/dev.nix b/modules/home-manager/dev.nix
deleted file mode 100644
index 4a9ef23..0000000
--- a/modules/home-manager/dev.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
-
- options.dev.enable = lib.mkEnableOption "Development tools";
- config = lib.mkIf config.dev.enable {
- zsh.enable = true;
- git.enable = true;
- gh.enable = true;
- #opencode.enable = true;
- vscode.enable = true;
- neovim.enable = true;
- tmux.enable = true;
- gpg.enable = true;
-
- home.packages = with pkgs; [
- zoxide
-
- fzf
- ffmpeg
- imagemagick
- gh
- ripgrep
-
- gcc
- maven
- cmake
- jdk
- go
- lua
- nodejs
- tailwindcss
-
- nerd-fonts.symbols-only
-
- jetbrains.idea-community
- opencode
- ];
- };
-}
diff --git a/modules/home-manager/dunst.nix b/modules/home-manager/dunst.nix
deleted file mode 100644
index da6b539..0000000
--- a/modules/home-manager/dunst.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
- options.dunst.enable = lib.mkEnableOption "Enable dunst notification";
- config = lib.mkIf config.dunst.enable {
- home.packages = with pkgs; [
- libnotify
- ];
-
- services.dunst = {
- enable = true;
- settings = {
- global = {
- font = "monospace 10";
- offset = "(15, 15)";
- frame_width = 0;
- };
- urgency_low = {
- foreground = "#FFFFFF";
- background = "#000000E6";
- };
-
- urgency_normal = {
- foreground = "#FFFFFF";
- background = "#000000E6";
- };
-
- urgency_critical = {
- foreground = "#FFFFFF";
- background = "#000000E6";
- };
- };
-
- };
- };
-}
diff --git a/modules/home-manager/firefox.nix b/modules/home-manager/firefox.nix
deleted file mode 100644
index 861394d..0000000
--- a/modules/home-manager/firefox.nix
+++ /dev/null
@@ -1,245 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs,
- ...
-}:
-
-{
- options.firefox.enable = lib.mkEnableOption "Setup firefox";
- config = lib.mkIf config.firefox.enable {
- programs.firefox = {
- enable = true;
- profiles.default = {
- extensions = {
- packages = with inputs.firefox-addons.packages.${pkgs.system}; [
- ublock-origin
- istilldontcareaboutcookies
- sponsorblock
- decentraleyes
- vimium-c
- ];
-
- force = true;
-
- settings."uBlock0@raymondhill.net".settings = {
- UserMessaging = {
- uiTheme = "dark";
- uiAccentCustom = true;
- uiAccentCustom0 = "#2C2C2C";
- cloudStorageEnabled = false;
- contextMenuEnabled = false;
- };
- # Block annoying login with google banner
- userFilters = ''
- ||accounts.google.com/gsi/*
- '';
- };
- };
-
- search.engines = {
- nix-packages = {
- name = "Nix Packages";
- urls = [
- {
- template = "https://search.nixos.org/packages";
- params = [
- {
- name = "type";
- value = "packages";
- }
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
-
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = [ "@np" ];
- };
-
- nixos-wiki = {
- name = "NixOS Wiki";
- urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
- iconMapObj."16" = "https://wiki.nixos.org/favicon.ico";
- definedAliases = [ "@nw" ];
- };
-
- startpage = {
- name = "Startpage";
- urls = [
- {
- template = "https://www.startpage.com/sp/search?query={searchTerms}";
- }
- ];
- icon = "https://www.startpage.com/favicon.ico";
- definedAliases = [ "@s" ];
- };
-
- bing.metaData.hidden = true;
- google.metaData.alias = "@g";
- };
-
- search.default = "startpage";
-
- settings = {
- };
-
- userChrome = ''
- /* Hide Back, Forward, Reload, Stop, All Tabs, Firefox View buttons */
- #back-button,
- #forward-button,
- #reload-button,
- #stop-button,
- #alltabs-button,
- #firefox-view-button {
- display: none !important;
- }
-
- .titlebar-buttonbox-container {
- display: none;
- }
-
- #tabbrowser-tabs {
- border-inline: none !important;
- }
-
- /* Transparent background tabs (above url bar) */
- #navigator-toolbox {
- -moz-appearance: -moz-vibrant-titlebar !important;
- background: rgba(0, 0, 0, 0.8) !important;
- }
-
- /* Transparent background (behind url bar) */
- #nav-bar {
- background: none !important;
- box-shadow: none !important;
- border-top: 0px !important;
- }
-
- .tab-background[selected="true"] {
- background-color: #393e43 !important;
- background-image: none !important;
- }
-
- .tab-background {
- background-color: var(--background) !important;
- color: var(--foreground) !important;
- box-shadow: none !important;;
- }
-
- .tab-background[selected] {
- background-color: rgba(0, 0, 0, 0.30) !important;
- color: var(--foreground) !important;
- box-shadow: none !important;
- }
-
- /* Needed for transparency in general */
- :root {
- --tabpanel-background-color: transparent !important;
- --chrome-content-separator-color: transparent !important;
- --toolbar-bgcolor: rgba(0, 0, 0, 0.9) !important;
- --newtab-background-color: rgba(0, 0, 0, 0.9) !important;
- --newtab-background-color-secondary: transparent !important;
- --toolbar-field-background-color: rgba(120, 120, 120, 0.10) !important;
- }
- '';
- userContent = ''
- @-moz-document url-prefix("about:"), url("about:home") {
- /* Transparent about:settings about:config about:policies */
- :root {
- background: rgba(0, 0, 0, 0.0) !important;
- }
- }
-
- /* Transparent about:home */
- * {
- --newtab-background-color: transparent !important;
- --newtab-background-color-secondary: transparent !important;
- }
-
- /* Transparent elements in about:* */
- * {
- --in-content-page-background: transparent !important;
- --background-color-box: rgba(0, 0, 0, 0.5) !important;
- }
- '';
- };
-
- policies = {
- DisableTelemetry = true;
- DisableFirefoxStudies = true;
- #PasswordManagerEnabled = false;
- OfferToSaveLogins = false;
- DisablePocket = true;
- DisplayBookmarksToolbar = "never";
- NoDefaultBookmarks = true;
-
- EnableTrackingProtection = {
- Value = true;
- Locked = true;
- Cryptomining = true;
- Fingerprinting = true;
- };
-
- EncryptedMediaExtensions = {
- Enabled = true;
- Locked = true;
- };
-
- FirefoxHome = {
- Search = true;
- TopSites = true;
- SponsoredTopSites = false;
- Highlights = true;
- Pocket = false;
- SponsoredPocket = false;
- Snippets = false;
- Locked = true;
- };
-
- UserMessaging = {
- ExtensionRecommendations = false;
- FeatureRecommendations = false;
- Locked = true;
- MoreFromMozilla = false;
- SkipOnboarding = true;
- UrlbarInterventions = false;
- WhatsNew = false;
- };
-
- Preferences = {
- "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
- "browser.toolbars.bookmarks.visibility" = "never";
-
- # Disable fullscreen notification
- "full-screen-api.warning.timeout" = "0";
-
- # Disable annoying translation popup
- "browser.translations.automaticallyPopup" = false;
-
- # Enable all extensions automatically
- "extensions.autoDisableScopes" = 0;
-
- # Hide ctr-tab tab preview menu
- "browser.ctrlTab.sortByRecentlyUsed" = false;
-
- # Hide pip controls
- "media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
-
- # Set homepage
- "browser.startup.homepage" = "about:blank";
- "browser.newtab.url" = "about:blank";
- "browser.newtabpage.enabled" = false;
-
- # transparency
- "browser.tabs.allow_transparent_browser" = true;
- "gfx.webrender.all" = true;
- };
- };
- };
- };
-}
diff --git a/modules/home-manager/foot.nix b/modules/home-manager/foot.nix
deleted file mode 100644
index 573af7f..0000000
--- a/modules/home-manager/foot.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
- options.foot.enable = lib.mkEnableOption "Enable foot terminal";
- config = lib.mkIf config.foot.enable {
- home.packages = with pkgs; [
- nerd-fonts.space-mono
- ];
-
- programs.foot = {
- enable = true;
- settings = {
- main = {
- pad = "10x10";
- font = "SpaceMono Nerd Font Mono:size=10";
- line-height = 12;
- };
-
- cursor = {
- style = "underline";
- unfocused-style = "unchanged";
- blink = true;
- };
-
- colors = {
- alpha = 0.9;
- # Gruvbox Theme
- background = "000000";
- foreground = "ebdbb2";
-
- regular0 = "282828";
- regular1 = "cc241d";
- regular2 = "98971a";
- regular3 = "d79921";
- regular4 = "458588";
- regular5 = "b16286";
- regular6 = "689d6a";
- regular7 = "a89984";
-
- bright0 = "928374";
- bright1 = "fb4934";
- bright2 = "b8bb26";
- bright3 = "fabd2f";
- bright4 = "83a598";
- bright5 = "d3869b";
- bright6 = "8ec07c";
- bright7 = "ebdbb2";
- };
- };
- };
- };
-}
diff --git a/modules/home-manager/gh.nix b/modules/home-manager/gh.nix
deleted file mode 100644
index 0b0ad6b..0000000
--- a/modules/home-manager/gh.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config, lib, ... }:
-
-{
- options.gh.enable = lib.mkEnableOption "Setup gh";
- config = lib.mkIf config.gh.enable {
- programs.gh = {
- enable = true;
- };
- };
-}
diff --git a/modules/home-manager/git.nix b/modules/home-manager/git.nix
deleted file mode 100644
index 825ef7d..0000000
--- a/modules/home-manager/git.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.git.enable = lib.mkEnableOption "Enable git";
- config = lib.mkIf config.git.enable {
- programs.git = {
- enable = true;
- userName = "schererleander";
- userEmail = "leander@schererleander.de";
- aliases = {
- st = "status";
- co = "checkout";
- br = "branch";
- };
- signing = {
- key = "506793F115464BB4";
- signByDefault = true;
- };
- ignores = [
- "*~"
- ".DS_Store"
- ];
- diff-highlight.enable = true;
- extraConfig = {
- pull.rebase = true;
- url."git@github.com:".insteadOf = "https://github.com";
- };
- };
- };
-}
diff --git a/modules/home-manager/gpg.nix b/modules/home-manager/gpg.nix
deleted file mode 100644
index 4c54efb..0000000
--- a/modules/home-manager/gpg.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-
-let
- pinentryPackage = if pkgs.stdenv.isDarwin then pkgs.pinentry_mac else pkgs.pinentry-curses;
- pinentryProgram = if pkgs.stdenv.isDarwin then "pinentry-mac" else "pinentry-curses";
-in
-{
- options.gpg.enable = lib.mkEnableOption "Setup gpg and agent";
- config = lib.mkIf config.gpg.enable {
- programs.gpg.enable = true;
- services.gpg-agent = {
- enable = true;
- pinentry.package = pinentryPackage;
- pinentry.program = pinentryProgram;
- };
- };
-}
diff --git a/modules/home-manager/latex.nix b/modules/home-manager/latex.nix
deleted file mode 100644
index e479d78..0000000
--- a/modules/home-manager/latex.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-
-{
- options.latex.enable = lib.mkEnableOption "Setup latex";
- config = lib.mkIf config.latex.enable {
- programs.texlive = {
- enable = true;
- # See https://mynixos.com/search?q=texlivepackages.collection for more collections
- # and https://mynixos.com/search?q=texlivepackages for more individual packages.
- extraPackages = tpkgs: { inherit (tpkgs) collection-basic collection-latex collection-latexrecommended biblatex; };
- };
-
- home.packages = with pkgs; [
- biber
- ];
-
- programs.pandoc = {
- enable = true;
- defaults = {
- pdf-engine = "pdfetex";
- };
- };
- };
-}
diff --git a/modules/home-manager/neovim/default.nix b/modules/home-manager/neovim/default.nix
deleted file mode 100644
index 230d27e..0000000
--- a/modules/home-manager/neovim/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
- options.neovim.enable = lib.mkEnableOption "Setup neovim";
- config = lib.mkIf config.neovim.enable {
- programs.neovim = {
- enable = true;
- package = pkgs.neovim;
- extraConfig = ''
- luafile ${./init.lua}
- '';
- };
- home.packages = with pkgs; [
- ripgrep
-
- # github pilot
- nodejs
-
- # language servers
- lua-language-server
- nixd
- pyright
- gopls
- java-language-server
- typescript-language-server
- rust-analyzer
- tailwindcss-language-server
-
- # formatter
- nixfmt-rfc-style
- luaformatter
- ];
- };
-}
diff --git a/modules/home-manager/nixcord.nix b/modules/home-manager/nixcord.nix
deleted file mode 100644
index 3655d17..0000000
--- a/modules/home-manager/nixcord.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.nixcord.enable = lib.mkEnableOption "Enable nixcord and setup";
- config = lib.mkIf config.nixcord.enable {
- programs.nixcord = {
- enable = true;
- config = {
- themeLinks = [
- "https://refact0r.github.io/system24/theme/system24.theme.css"
- ];
- frameless = true;
- plugins = {
- alwaysAnimate.enable = false;
- imageLink.enable = true;
- imageZoom.enable = true;
- translate.enable = true;
- };
- };
- };
- };
-}
diff --git a/modules/home-manager/opencode.nix b/modules/home-manager/opencode.nix
deleted file mode 100644
index 961d9a7..0000000
--- a/modules/home-manager/opencode.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.opencode.enable = lib.mkEnableOption "Setup opencode";
- config = lib.mkIf config.opencode.enable {
- programs.opencode = {
- enable = true;
- settings = {
- theme = "system";
- share = "disabled";
- autoUpdate = true;
- };
- };
- };
-}
diff --git a/modules/home-manager/spicetify.nix b/modules/home-manager/spicetify.nix
deleted file mode 100644
index 41ccb1e..0000000
--- a/modules/home-manager/spicetify.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs,
- ...
-}:
-
-let
- spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
-in
-{
- options.spicetify.enable = lib.mkEnableOption "Enable Spicetify integration";
- config = lib.mkIf config.spicetify.enable {
- programs.spicetify = {
- enable = true;
- enabledSnippets = with spicePkgs.snippets; [
- pointer
- sonicDancing
- modernScrollbar
- nyanCatProgressBar
- declutterNowPlayingBar
- ];
-
- enabledExtensions = with spicePkgs.extensions; [
- keyboardShortcut
- ];
-
- theme = spicePkgs.themes.sleek;
- colorScheme = "Coral";
- };
- };
-}
diff --git a/modules/home-manager/sway.nix b/modules/home-manager/sway.nix
deleted file mode 100644
index 38f6f0b..0000000
--- a/modules/home-manager/sway.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- mod = config.wayland.windowManager.sway.config.modifier;
-in
-{
- options.sway.enable = lib.mkEnableOption "Enable sway and setup";
- config = lib.mkIf config.sway.enable {
- home.packages = with pkgs; [
- wmenu
- swaybg
- sway-contrib.grimshot
- wl-clipboard
- xdg-utils
- playerctl
- ];
-
- wayland.windowManager.sway = {
- enable = true;
- systemd.enable = true;
- config = {
- input = {
- "*" = {
- xkb_layout = "de";
- };
- };
-
- output = {
- DP-1 = {
- resolution = "1920x1080@240Hz";
- bg = "/etc/nixos/images/pond.jpg fill";
- };
- };
-
- gaps = {
- inner = 15;
- };
-
- window = {
- titlebar = false;
- border = 0;
- };
-
- modifier = "Mod4";
-
- keybindings = lib.mkOptionDefault {
- "${mod}+q" = "kill";
- "${mod}+Shift+s" = "exec grimshot savecopy area";
- "XF86AudioPlay" = "exec playerctl play-pause";
- "XF86AudioPrev" = "exec playerctl previous";
- "XF86AudioNext" = "exec playerctl next";
- "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ +5%";
- "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ -5%";
- "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_DEVICE@ toggle";
- };
-
- menu = "${pkgs.wmenu}/bin/wmenu-run -b -N 000000E6";
- terminal = "${pkgs.foot}/bin/foot";
- defaultWorkspace = "workspace number 1";
-
- bars = [
- {
- "command" = "${pkgs.waybar}/bin/waybar";
- }
- ];
- };
- checkConfig = false;
- wrapperFeatures.base = true;
- wrapperFeatures.gtk = true;
- };
-
- home.sessionVariables = {
- XDG_CURRENT_DESKTOP = "sway";
- XDG_SCREENSHOTS_DIR = "~/Pictures/Screenshots/";
- };
- };
-}
diff --git a/modules/home-manager/swayidle.nix b/modules/home-manager/swayidle.nix
deleted file mode 100644
index 33cd495..0000000
--- a/modules/home-manager/swayidle.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
- options.swayidle.enable = lib.mkEnableOption "Enable swayidle configuration";
- config = lib.mkIf config.swayidle.enable {
- services.swayidle = {
- enable = true;
- timeouts = [
- {
- timout = "600";
- command = "${pkgs.sway}/bin/swaymsg output * dpms off";
- }
- {
- timout = "900";
- command = "${pkgs.systemd}/bin/systemctl suspend";
- }
- ];
- events = [
- { event = "resume"; command = "${pkgs.sway}/bin/swaymsg output * dpms on"; }
- { event = "before-sleep"; command = "${pkgs.hyprlock}/bin/hyprlock"; }
- ];
- };
- };
-}
diff --git a/modules/home-manager/tmux.nix b/modules/home-manager/tmux.nix
deleted file mode 100644
index 7b3a23d..0000000
--- a/modules/home-manager/tmux.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.tmux.enable = lib.mkEnableOption "Enable and configure Tmux";
- config = lib.mkIf config.tmux.enable {
- programs.tmux = {
- enable = true;
- extraConfig = ''
- set -g default-terminal "xterm-256color"
-
- unbind C-b
- set-option -g prefix C-a
- bind-key C-a send-prefix
- bind -n M-Left select-pane -L
- bind -n M-Right select-pane -R
- bind -n M-Up select-pane -U
- bind -n M-Down select-pane -D
-
- # style
- set -g status-position top
- set -g status-justify absolute-centre
- set -g status-style 'fg=color7 bg=default'
- set -g status-right ""
- # set -g status-right ' #(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD)'
- # set -g status-right ""
- set -g status-left '#S'
- set -g status-left-style 'fg=color8'
- set -g status-right-length 0
- set -g status-left-length 100
- setw -g window-status-current-style 'fg=colour6 bg=default bold'
- setw -g window-status-current-format '#I:#W '
- setw -g window-status-style 'fg=color8'
-
- set -g mouse on
- '';
- };
- };
-}
diff --git a/modules/home-manager/typst.nix b/modules/home-manager/typst.nix
deleted file mode 100644
index c06211b..0000000
--- a/modules/home-manager/typst.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-
-{
- options.typst.enable = lib.mkEnableOption "Setup typst";
- config = lib.mkIf config.typst.enable {
- home.packages = with pkgs; [
- typst
- typst-fmt
- ];
- };
-}
diff --git a/modules/home-manager/vscode.nix b/modules/home-manager/vscode.nix
deleted file mode 100644
index b9b0beb..0000000
--- a/modules/home-manager/vscode.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-{
- options.vscode.enable = lib.mkEnableOption "Enable vscode and setup";
- config = lib.mkIf config.vscode.enable {
- programs.vscode = {
- enable = true;
- mutableExtensionsDir = false;
- profiles.default = {
- enableUpdateCheck = true;
- enableExtensionUpdateCheck = true;
-
- userSettings = {
- "update.mode" = "none";
- "workbench.colorTheme" = "Minimal";
- "editor.fontFamily" = "monospace";
- "editor.tabSize" = 2;
- "editor.minimap.enabled" = false;
- "terminal.integrated.cursorStyle" = "underline";
- "terminal.integrated.cursorStyleInactive" = "underline";
- "terminal.integrated.fontFamily" = "monospace";
- "terminal.integrated.fontSize" = 13;
- "git.autofetch" = true;
- "window.controlsStyle" = "custom";
- };
-
- extensions = (
- with pkgs.vscode-extensions;
- [
- ms-vscode.cmake-tools
- ms-azuretools.vscode-docker
- github.copilot
- ms-python.python
- golang.go
- rust-lang.rust-analyzer
- vscjava.vscode-maven
- sumneko.lua
- #fwcd.kotlin
- bradlc.vscode-tailwindcss
- adpyke.codesnap
- esbenp.prettier-vscode
- ]
- ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
- {
- name = "minimalist-dark";
- publisher = "nichabosh";
- version = "1.0.0";
- sha256 = "sha256-lw+Scfada6DycLdRT2Cz+Fd12JucglIrw3uRd2ZhabQ=";
- }
- ]
- );
- };
- };
- };
-}
diff --git a/modules/home-manager/waybar.nix b/modules/home-manager/waybar.nix
deleted file mode 100644
index c001874..0000000
--- a/modules/home-manager/waybar.nix
+++ /dev/null
@@ -1,147 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.waybar.enable = lib.mkEnableOption "Enable and configure Waybar";
- config = lib.mkIf config.waybar.enable {
- programs.waybar = {
- enable = true;
- settings = {
- mainBar = {
- height = 32;
- layer = "top";
- position = "bottom";
- modules-center = [ "mpris" ];
- modules-left = [ "sway/workspaces" ];
- modules-right = [
- "group/expand"
- "battery"
- "pulseaudio"
- "network"
- "bluetooth"
- "clock"
- ];
-
- "group/expand" = {
- orientation = "horizontal";
- drawer = {
- transition-duration = 600;
- transition-to-left = true;
- click-to-reveal = true;
- };
- modules = [
- "custom/expand"
- "tray"
- "privacy"
- "cpu"
- "memory"
- "temperature"
- ];
- };
-
- "custom/expand" = {
- format = "";
- tooltip = false;
- };
-
- mpris = {
- format = "{title}";
- tooltip-format = "{artist} - {album}";
- };
-
- tray = {
- spacing = 10;
- };
-
- privacy = {
- icon-size = 16;
- };
-
- cpu = {
- format = "󰻠";
- tooltip = true;
- };
-
- memory = {
- format = "";
- };
-
- temperature = {
- critical-threshold = 80;
- format = "";
- };
-
- network = {
- format-disconnect = "󰌙";
- format-ethernet = "󰌘";
- format-wifi = "{icon}";
- format-icons = [
- "󰤟"
- "󰤢"
- "󰤥"
- "󰤨"
- ];
-
- tooltip-format-wifi = "{essid} | {signalStrength}%";
- tooltip-format-ethernet = "{ifname}";
- };
-
- bluetooth = {
- format = " {status}";
- format-disabled = "";
- format-no-controller = "";
- format-connected = " {device_alias}";
- tooltip = false;
- };
-
- clock = {
- format-alt = "{:%Y-%m-%d}";
- tooltip-format = "{:%Y-%m-%d | %H:%M}";
- };
-
- pulseaudio = {
- format = "{icon}";
- format-icons = {
- default = [
- ""
- ""
- ""
- ];
- };
- tooltip-format = "{desc} | {volume}%";
- };
- };
- };
-
- style = ''
- * {
- border: none;
- border-radius: 0;
- font-family: monospace;
- font-size: 12px;
- }
-
- window#waybar {
- background: rgba(0, 0, 0, 0.9);
- }
-
- #workspaces button {
- padding-left: 5px;
- padding-right: 5px;
- }
-
- #workspaces button.focused {
- font-weight: bold;
- }
-
- #clock, #pulseaudio, #tray, #network, #battery, #bluetooth, #cpu, #memory, #temperature, #custom-expand, #group-expand {
- padding-left: 10px;
- padding-right: 10px;
- }
- '';
- };
- };
-}
diff --git a/modules/home-manager/zathura.nix b/modules/home-manager/zathura.nix
deleted file mode 100644
index c8605d0..0000000
--- a/modules/home-manager/zathura.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.zathura.enable = lib.mkEnableOption "Enable zathura and setup";
- config = lib.mkIf config.zathura.enable {
- programs.zathura = {
- enable = true;
- options = {
- recolor-lightcolor = "rgba(0, 0, 0, 0)";
- recolor-darkcolor = "rgba(255, 255, 255, 1)";
- recolor = true;
- adjust-open = "width";
- guioptions = "none";
- zoom-center = true;
- page-padding = 0;
- pages-per-row = 1;
- scroll-page-aware = true;
- };
-
- mappings = {
- i = "recolor";
- j = "navigate previous";
- k = "navigate next";
- };
- };
- };
-}
diff --git a/modules/home-manager/zsh.nix b/modules/home-manager/zsh.nix
deleted file mode 100644
index 2e27a9e..0000000
--- a/modules/home-manager/zsh.nix
+++ /dev/null
@@ -1,67 +0,0 @@
-{ config, lib, ... }:
-
-{
- options.zsh.enable = lib.mkEnableOption "Configure zsh";
- config = lib.mkIf config.zsh.enable {
- programs.zsh = {
- enable = true;
- enableCompletion = true;
- autosuggestion.enable = true;
- syntaxHighlighting.enable = true;
-
- initContent = ''
- # view man pages with nvim
- export MANPAGER="nvim +Man!"
-
- # Directory completion with trailing slash
- zstyle ':completion:*' list-dirs-first true
- zstyle ':completion:*' special-dirs true
- zstyle ':completion:*' squeeze-slashes true
- zstyle ':completion:*' add-space false
-
- # Case-insensitive completion
- zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
-
- # vim keybindings
- bindkey -v
-
- # imagemagick wrapper function to remove background
- remove_bg() {
- if [[ $# -lt 2 ]]; then
- echo 'Usage: remove_bg <input_file> <fuzz_percentage> [transparent_color] [output_file]'
- return 1
- fi
-
- local input_file=$1
- local fuzz=$2
- local transparent_color=$3
- local output_file=$4
-
- magick "$input_file" \
- -fuzz $fuzz -transparent "$transparent_color" \
- -alpha on -channel A -blur 0x2 -level 5%,100% +channel \
- "$output_file"
-
- echo "Saved transparent image to: $output_file"
- }
-
- eval "$(zoxide init zsh)"
- '';
-
- shellAliases = {
- ls = "ls --color=auto";
- nixceck = "nix flake check --all-systems";
- };
-
- zplug = {
- enable = true;
- plugins = [
- { name = "mafredri/zsh-async"; }
- { name = "sindresorhus/pure"; tags = [ "as:theme" "use:pure.zsh" ]; }
- { name = "zdharma-continuum/fast-syntax-highlighting"; }
- { name = "zsh-users/zsh-autosuggestions"; }
- ];
- };
- };
- };
-}
diff --git a/modules/home-manager/anki.nix b/modules/programs/anki.nix
index c3b77ea..4697273 100644
--- a/modules/home-manager/anki.nix
+++ b/modules/programs/anki.nix
@@ -1,14 +1,15 @@
{
config,
+ username,
lib,
...
}:
{
- options.anki.enable = lib.mkEnableOption "Enable anki";
+ options.nx.programs.anki.enable = lib.mkEnableOption "Enable anki";
config = lib.mkIf config.anki.enable {
- #Wait for stable release
- #programs.anki = {
+ #Wait for stable release
+ #home-manager.users.${username}.programs.anki = {
#enable = true;
#style = "native";
#addons = with pkgs.ankiAddons; [
diff --git a/modules/programs/default.nix b/modules/programs/default.nix
new file mode 100644
index 0000000..6df5649
--- /dev/null
+++ b/modules/programs/default.nix
@@ -0,0 +1,20 @@
+{ ... }:
+{
+ imports = [
+ ./anki.nix
+ ./foot.nix
+ ./git.nix
+ ./latex.nix
+ ./nixcord.nix
+ ./spicetify.nix
+ ./typst.nix
+ ./zathura.nix
+ ./firefox.nix
+ ./gh.nix
+ ./gpg.nix
+ ./neovim
+ ./tmux.nix
+ ./vscode.nix
+ ./zsh.nix
+ ];
+}
diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix
new file mode 100644
index 0000000..28bdfea
--- /dev/null
+++ b/modules/programs/firefox.nix
@@ -0,0 +1,248 @@
+{
+ config,
+ username,
+ lib,
+ pkgs,
+ inputs,
+ ...
+}:
+
+{
+ options.nx.programs.firefox.enable = lib.mkEnableOption "Setup firefox";
+ config = lib.mkIf config.nx.programs.firefox.enable {
+ home-manager.users.${username} = {
+ programs.firefox = {
+ enable = true;
+ profiles.default = {
+ extensions = {
+ packages = with inputs.firefox-addons.packages.${pkgs.system}; [
+ ublock-origin
+ istilldontcareaboutcookies
+ sponsorblock
+ decentraleyes
+ vimium-c
+ ];
+
+ force = true;
+
+ settings."uBlock0@raymondhill.net".settings = {
+ UserMessaging = {
+ uiTheme = "dark";
+ uiAccentCustom = true;
+ uiAccentCustom0 = "#2C2C2C";
+ cloudStorageEnabled = false;
+ contextMenuEnabled = false;
+ };
+ # Block annoying login with google banner
+ userFilters = ''
+ ||accounts.google.com/gsi/*
+ '';
+ };
+ };
+
+ search.engines = {
+ nix-packages = {
+ name = "Nix Packages";
+ urls = [
+ {
+ template = "https://search.nixos.org/packages";
+ params = [
+ {
+ name = "type";
+ value = "packages";
+ }
+ {
+ name = "query";
+ value = "{searchTerms}";
+ }
+ ];
+ }
+ ];
+
+ icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+ definedAliases = [ "@np" ];
+ };
+
+ nixos-wiki = {
+ name = "NixOS Wiki";
+ urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
+ iconMapObj."16" = "https://wiki.nixos.org/favicon.ico";
+ definedAliases = [ "@nw" ];
+ };
+
+ startpage = {
+ name = "Startpage";
+ urls = [
+ {
+ template = "https://www.startpage.com/sp/search?query={searchTerms}";
+ }
+ ];
+ icon = "https://www.startpage.com/favicon.ico";
+ definedAliases = [ "@s" ];
+ };
+
+ bing.metaData.hidden = true;
+ google.metaData.alias = "@g";
+ };
+
+ search.default = "startpage";
+
+ settings = {
+ };
+
+ userChrome = ''
+ /* Hide Back, Forward, Reload, Stop, All Tabs, Firefox View buttons */
+ #back-button,
+ #forward-button,
+ #reload-button,
+ #stop-button,
+ #alltabs-button,
+ #firefox-view-button {
+ display: none !important;
+ }
+
+ .titlebar-buttonbox-container {
+ display: none;
+ }
+
+ #tabbrowser-tabs {
+ border-inline: none !important;
+ }
+
+ /* Transparent background tabs (above url bar) */
+ #navigator-toolbox {
+ -moz-appearance: -moz-vibrant-titlebar !important;
+ background: rgba(0, 0, 0, 0.8) !important;
+ }
+
+ /* Transparent background (behind url bar) */
+ #nav-bar {
+ background: none !important;
+ box-shadow: none !important;
+ border-top: 0px !important;
+ }
+
+ .tab-background[selected="true"] {
+ background-color: #393e43 !important;
+ background-image: none !important;
+ }
+
+ .tab-background {
+ background-color: var(--background) !important;
+ color: var(--foreground) !important;
+ box-shadow: none !important;;
+ }
+
+ .tab-background[selected] {
+ background-color: rgba(0, 0, 0, 0.30) !important;
+ color: var(--foreground) !important;
+ box-shadow: none !important;
+ }
+
+ /* Needed for transparency in general */
+ :root {
+ --tabpanel-background-color: transparent !important;
+ --chrome-content-separator-color: transparent !important;
+ --toolbar-bgcolor: rgba(0, 0, 0, 0.9) !important;
+ --newtab-background-color: rgba(0, 0, 0, 0.9) !important;
+ --newtab-background-color-secondary: transparent !important;
+ --toolbar-field-background-color: rgba(120, 120, 120, 0.10) !important;
+ }
+ '';
+ userContent = ''
+ @-moz-document url-prefix("about:"), url("about:home") {
+ /* Transparent about:settings about:config about:policies */
+ :root {
+ background: rgba(0, 0, 0, 0.0) !important;
+ }
+ }
+
+ /* Transparent about:home */
+ * {
+ --newtab-background-color: transparent !important;
+ --newtab-background-color-secondary: transparent !important;
+ }
+
+ /* Transparent elements in about:* */
+ * {
+ --in-content-page-background: transparent !important;
+ --background-color-box: rgba(0, 0, 0, 0.5) !important;
+ }
+ '';
+ };
+
+ policies = {
+ DisableTelemetry = true;
+ DisableFirefoxStudies = true;
+ #PasswordManagerEnabled = false;
+ OfferToSaveLogins = false;
+ DisablePocket = true;
+ DisplayBookmarksToolbar = "never";
+ NoDefaultBookmarks = true;
+
+ EnableTrackingProtection = {
+ Value = true;
+ Locked = true;
+ Cryptomining = true;
+ Fingerprinting = true;
+ };
+
+ EncryptedMediaExtensions = {
+ Enabled = true;
+ Locked = true;
+ };
+
+ FirefoxHome = {
+ Search = true;
+ TopSites = true;
+ SponsoredTopSites = false;
+ Highlights = true;
+ Pocket = false;
+ SponsoredPocket = false;
+ Snippets = false;
+ Locked = true;
+ };
+
+ UserMessaging = {
+ ExtensionRecommendations = false;
+ FeatureRecommendations = false;
+ Locked = true;
+ MoreFromMozilla = false;
+ SkipOnboarding = true;
+ UrlbarInterventions = false;
+ WhatsNew = false;
+ };
+
+ Preferences = {
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
+ "browser.toolbars.bookmarks.visibility" = "never";
+
+ # Disable fullscreen notification
+ "full-screen-api.warning.timeout" = "0";
+
+ # Disable annoying translation popup
+ "browser.translations.automaticallyPopup" = false;
+
+ # Enable all extensions automatically
+ "extensions.autoDisableScopes" = 0;
+
+ # Hide ctr-tab tab preview menu
+ "browser.ctrlTab.sortByRecentlyUsed" = false;
+
+ # Hide pip controls
+ "media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
+
+ # Set homepage
+ "browser.startup.homepage" = "about:blank";
+ "browser.newtab.url" = "about:blank";
+ "browser.newtabpage.enabled" = false;
+
+ # transparency
+ "browser.tabs.allow_transparent_browser" = true;
+ "gfx.webrender.all" = true;
+ };
+ };
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix
new file mode 100644
index 0000000..866757b
--- /dev/null
+++ b/modules/programs/foot.nix
@@ -0,0 +1,60 @@
+{
+ config,
+ username,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ options.nx.programs.foot.enable = lib.mkEnableOption "Enable foot terminal";
+ config = lib.mkIf config.nx.programs.foot.enable {
+ home-manager.users.${username} = {
+ home.packages = with pkgs; [
+ nerd-fonts.space-mono
+ ];
+
+ programs.foot = {
+ enable = true;
+ settings = {
+ main = {
+ pad = "10x10";
+ font = "SpaceMono Nerd Font Mono:size=10";
+ line-height = 12;
+ };
+
+ cursor = {
+ style = "underline";
+ unfocused-style = "unchanged";
+ blink = true;
+ };
+
+ colors = {
+ alpha = 0.9;
+ # Gruvbox Theme
+ background = "000000";
+ foreground = "ebdbb2";
+
+ regular0 = "282828";
+ regular1 = "cc241d";
+ regular2 = "98971a";
+ regular3 = "d79921";
+ regular4 = "458588";
+ regular5 = "b16286";
+ regular6 = "689d6a";
+ regular7 = "a89984";
+
+ bright0 = "928374";
+ bright1 = "fb4934";
+ bright2 = "b8bb26";
+ bright3 = "fabd2f";
+ bright4 = "83a598";
+ bright5 = "d3869b";
+ bright6 = "8ec07c";
+ bright7 = "ebdbb2";
+ };
+ };
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/gh.nix b/modules/programs/gh.nix
new file mode 100644
index 0000000..52a34e3
--- /dev/null
+++ b/modules/programs/gh.nix
@@ -0,0 +1,17 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.gh.enable = lib.mkEnableOption "Setup gh";
+ config = lib.mkIf config.nx.programs.gh.enable {
+ home-manager.users.${username} = {
+ programs.gh = {
+ enable = true;
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/git.nix b/modules/programs/git.nix
new file mode 100644
index 0000000..0b0d2eb
--- /dev/null
+++ b/modules/programs/git.nix
@@ -0,0 +1,39 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.git.enable = lib.mkEnableOption "Enable git" // {
+ default = true;
+ };
+ config = lib.mkIf config.nx.programs.git.enable {
+ home-manager.users.${username} = {
+ programs.git = {
+ enable = true;
+ userName = "schererleander";
+ userEmail = "leander@schererleander.de";
+ aliases = {
+ st = "status";
+ co = "checkout";
+ br = "branch";
+ };
+ signing = {
+ key = "506793F115464BB4";
+ signByDefault = true;
+ };
+ ignores = [
+ "*~"
+ ".DS_Store"
+ ];
+ diff-highlight.enable = true;
+ extraConfig = {
+ pull.rebase = true;
+ url."git@github.com:".insteadOf = "https://github.com";
+ };
+ };
+ };
+ };
+}
diff --git a/modules/programs/gpg.nix b/modules/programs/gpg.nix
new file mode 100644
index 0000000..cc3f45b
--- /dev/null
+++ b/modules/programs/gpg.nix
@@ -0,0 +1,25 @@
+{
+ config,
+ username,
+ pkgs,
+ lib,
+ ...
+}:
+
+let
+ pinentryPackage = if pkgs.stdenv.isDarwin then pkgs.pinentry_mac else pkgs.pinentry-curses;
+ pinentryProgram = if pkgs.stdenv.isDarwin then "pinentry-mac" else "pinentry-curses";
+in
+{
+ options.nx.programs.gpg.enable = lib.mkEnableOption "Setup gpg and agent";
+ config = lib.mkIf config.nx.programs.gpg.enable {
+ home-manager.users.${username} = {
+ programs.gpg.enable = true;
+ services.gpg-agent = {
+ enable = true;
+ pinentry.package = pinentryPackage;
+ pinentry.program = pinentryProgram;
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/latex.nix b/modules/programs/latex.nix
new file mode 100644
index 0000000..5a9f8b4
--- /dev/null
+++ b/modules/programs/latex.nix
@@ -0,0 +1,32 @@
+{
+ config,
+ username,
+ pkgs,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.latex.enable = lib.mkEnableOption "Setup latex";
+ config = lib.mkIf config.nx.programs.latex.enable {
+ home-manager.users.${username} = {
+ programs.texlive = {
+ enable = true;
+ # See https://mynixos.com/search?q=texlivepackages.collection for more collections
+ # and https://mynixos.com/search?q=texlivepackages for more individual packages.
+ extraPackages = tpkgs: { inherit (tpkgs) collection-basic collection-latex collection-latexrecommended biblatex; };
+ };
+
+ home.packages = with pkgs; [
+ biber
+ ];
+
+ programs.pandoc = {
+ enable = true;
+ defaults = {
+ pdf-engine = "pdfetex";
+ };
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/neovim/default.nix b/modules/programs/neovim/default.nix
new file mode 100644
index 0000000..9f6b963
--- /dev/null
+++ b/modules/programs/neovim/default.nix
@@ -0,0 +1,42 @@
+{
+ config,
+ username,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ options.nx.programs.neovim.enable = lib.mkEnableOption "Setup neovim";
+ config = lib.mkIf config.nx.programs.neovim.enable {
+ home-manager.users.${username} = {
+ programs.neovim = {
+ enable = true;
+ package = pkgs.neovim;
+ extraConfig = ''
+ luafile ${./init.lua}
+ '';
+ };
+ home.packages = with pkgs; [
+ ripgrep
+
+ # github pilot
+ nodejs
+
+ # language servers
+ lua-language-server
+ nixd
+ pyright
+ gopls
+ java-language-server
+ typescript-language-server
+ rust-analyzer
+ tailwindcss-language-server
+
+ # formatter
+ nixfmt-rfc-style
+ luaformatter
+ ];
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/neovim/init.lua b/modules/programs/neovim/init.lua
index 7d0d918..7d0d918 100644
--- a/modules/home-manager/neovim/init.lua
+++ b/modules/programs/neovim/init.lua
diff --git a/modules/programs/nixcord.nix b/modules/programs/nixcord.nix
new file mode 100644
index 0000000..191dcfb
--- /dev/null
+++ b/modules/programs/nixcord.nix
@@ -0,0 +1,32 @@
+{
+ config,
+ lib,
+ inputs,
+ username,
+ ...
+}:
+
+{
+ options.nx.programs.nixcord.enable = lib.mkEnableOption "Enable nixcord and setup";
+ config = lib.mkIf config.nx.programs.nixcord.enable {
+ home-manager.users.${username} = { ... }: {
+ imports = [ inputs.nixcord.homeModules.nixcord ];
+
+ programs.nixcord = {
+ enable = true;
+ config = {
+ themeLinks = [
+ "https://refact0r.github.io/system24/theme/system24.theme.css"
+ ];
+ frameless = true;
+ plugins = {
+ alwaysAnimate.enable = false;
+ imageLink.enable = true;
+ imageZoom.enable = true;
+ translate.enable = true;
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/programs/opencode.nix b/modules/programs/opencode.nix
new file mode 100644
index 0000000..b4680f3
--- /dev/null
+++ b/modules/programs/opencode.nix
@@ -0,0 +1,22 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.opencode.enable = lib.mkEnableOption "Setup opencode";
+ config = lib.mkIf config.nx.programs.opencode.enable {
+ home-manager.users.${username} = {
+ programs.opencode = {
+ enable = true;
+ settings = {
+ theme = "system";
+ share = "disabled";
+ autoUpdate = true;
+ };
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/spicetify.nix b/modules/programs/spicetify.nix
new file mode 100644
index 0000000..0582f72
--- /dev/null
+++ b/modules/programs/spicetify.nix
@@ -0,0 +1,38 @@
+{
+ config,
+ lib,
+ pkgs,
+ inputs,
+ username,
+ ...
+}:
+
+let
+ spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
+in
+{
+ options.nx.programs.spicetify.enable = lib.mkEnableOption "Enable Spicetify integration";
+ config = lib.mkIf config.nx.programs.spicetify.enable {
+ home-manager.users.${username} = { ... }: {
+ imports = [ inputs.spicetify-nix.homeManagerModules.spicetify ];
+ nixpkgs.config.allowUnfree = true;
+ programs.spicetify = {
+ enable = true;
+ enabledSnippets = with spicePkgs.snippets; [
+ pointer
+ sonicDancing
+ modernScrollbar
+ nyanCatProgressBar
+ declutterNowPlayingBar
+ ];
+
+ enabledExtensions = with spicePkgs.extensions; [
+ keyboardShortcut
+ ];
+
+ theme = spicePkgs.themes.sleek;
+ colorScheme = "Coral";
+ };
+ };
+ };
+}
diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix
new file mode 100644
index 0000000..41d6e22
--- /dev/null
+++ b/modules/programs/tmux.nix
@@ -0,0 +1,45 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.tmux.enable = lib.mkEnableOption "Enable and configure Tmux";
+ config = lib.mkIf config.nx.programs.tmux.enable {
+ home-manager.users.${username} = {
+ programs.tmux = {
+ enable = true;
+ extraConfig = ''
+ set -g default-terminal "xterm-256color"
+
+ unbind C-b
+ set-option -g prefix C-a
+ bind-key C-a send-prefix
+ bind -n M-Left select-pane -L
+ bind -n M-Right select-pane -R
+ bind -n M-Up select-pane -U
+ bind -n M-Down select-pane -D
+
+ # style
+ set -g status-position top
+ set -g status-justify absolute-centre
+ set -g status-style 'fg=color7 bg=default'
+ set -g status-right ""
+ # set -g status-right ' #(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD)'
+ # set -g status-right ""
+ set -g status-left '#S'
+ set -g status-left-style 'fg=color8'
+ set -g status-right-length 0
+ set -g status-left-length 100
+ setw -g window-status-current-style 'fg=colour6 bg=default bold'
+ setw -g window-status-current-format '#I:#W '
+ setw -g window-status-style 'fg=color8'
+
+ set -g mouse on
+ '';
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/typst.nix b/modules/programs/typst.nix
new file mode 100644
index 0000000..8af406b
--- /dev/null
+++ b/modules/programs/typst.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ username,
+ pkgs,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.typst.enable = lib.mkEnableOption "Setup typst";
+ config = lib.mkIf config.nx.programs.typst.enable {
+ home-manager.users.${username} = {
+ home.packages = with pkgs; [
+ typst
+ typst-fmt
+ ];
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix
new file mode 100644
index 0000000..beb347c
--- /dev/null
+++ b/modules/programs/vscode.nix
@@ -0,0 +1,63 @@
+{
+ config,
+ username,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ options.nx.programs.vscode.enable = lib.mkEnableOption "Enable vscode and setup";
+ config = lib.mkIf config.nx.programs.vscode.enable {
+ home-manager.users.${username} = {
+ programs.vscode = {
+ enable = true;
+ mutableExtensionsDir = false;
+ profiles.default = {
+ enableUpdateCheck = true;
+ enableExtensionUpdateCheck = true;
+
+ userSettings = {
+ "update.mode" = "none";
+ "workbench.colorTheme" = "Minimal";
+ "editor.fontFamily" = "monospace";
+ "editor.tabSize" = 2;
+ "editor.minimap.enabled" = false;
+ "terminal.integrated.cursorStyle" = "underline";
+ "terminal.integrated.cursorStyleInactive" = "underline";
+ "terminal.integrated.fontFamily" = "monospace";
+ "terminal.integrated.fontSize" = 13;
+ "git.autofetch" = true;
+ "window.controlsStyle" = "custom";
+ };
+
+ extensions = (
+ with pkgs.vscode-extensions;
+ [
+ ms-vscode.cmake-tools
+ ms-azuretools.vscode-docker
+ github.copilot
+ ms-python.python
+ golang.go
+ rust-lang.rust-analyzer
+ vscjava.vscode-maven
+ sumneko.lua
+ #fwcd.kotlin
+ bradlc.vscode-tailwindcss
+ adpyke.codesnap
+ esbenp.prettier-vscode
+ ]
+ ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
+ {
+ name = "minimalist-dark";
+ publisher = "nichabosh";
+ version = "1.0.0";
+ sha256 = "sha256-lw+Scfada6DycLdRT2Cz+Fd12JucglIrw3uRd2ZhabQ=";
+ }
+ ]
+ );
+ };
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/zathura.nix b/modules/programs/zathura.nix
new file mode 100644
index 0000000..35304a4
--- /dev/null
+++ b/modules/programs/zathura.nix
@@ -0,0 +1,34 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+
+{
+ options.nx.programs.zathura.enable = lib.mkEnableOption "Enable zathura and setup";
+ config = lib.mkIf config.nx.programs.zathura.enable {
+ home-manager.users.${username} = {
+ programs.zathura = {
+ enable = true;
+ options = {
+ recolor-lightcolor = "rgba(0, 0, 0, 0)";
+ recolor-darkcolor = "rgba(255, 255, 255, 1)";
+ recolor = true;
+ adjust-open = "width";
+ guioptions = "none";
+ zoom-center = true;
+ page-padding = 0;
+ pages-per-row = 1;
+ scroll-page-aware = true;
+ };
+
+ mappings = {
+ i = "recolor";
+ j = "navigate previous";
+ k = "navigate next";
+ };
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix
new file mode 100644
index 0000000..6edb1c0
--- /dev/null
+++ b/modules/programs/zsh.nix
@@ -0,0 +1,74 @@
+{
+ config,
+ username,
+ lib,
+ ...
+}:
+{
+ options.nx.programs.zsh.enable = lib.mkEnableOption "Configure zsh";
+ config = lib.mkIf config.nx.programs.zsh.enable {
+ home-manager.users.${username} = {
+ programs.zsh = {
+ enable = true;
+ enableCompletion = true;
+ autosuggestion.enable = true;
+ syntaxHighlighting.enable = true;
+ initContent = ''
+ # view man pages with nvim
+ export MANPAGER="nvim +Man!"
+
+ # Directory completion with trailing slash
+ zstyle ':completion:*' list-dirs-first true
+ zstyle ':completion:*' special-dirs true
+ zstyle ':completion:*' squeeze-slashes true
+ zstyle ':completion:*' add-space false
+
+ # Case-insensitive completion
+ zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
+ # vim keybindings
+ bindkey -v
+
+ # imagemagick wrapper function to remove background
+ remove_bg() {
+ if [[ $# -lt 2 ]]; then
+ echo 'Usage: remove_bg <input_file> <fuzz_percentage> [transparent_color] [output_file]'
+ return 1
+ fi
+ local input_file=$1
+ local fuzz=$2
+ local transparent_color=$3
+ local output_file=$4
+
+ magick "$input_file" \
+ -fuzz $fuzz -transparent "$transparent_color" \
+ -alpha on -channel A -blur 0x2 -level 5%,100% +channel \
+ "$output_file"
+
+ echo "Saved transparent image to: $output_file"
+ }
+
+ eval "$(zoxide init zsh)"
+ '';
+ shellAliases = {
+ ls = "ls --color=auto";
+ nixceck = "nix flake check --all-systems";
+ };
+ zplug = {
+ enable = true;
+ plugins = [
+ { name = "mafredri/zsh-async"; }
+ {
+ name = "sindresorhus/pure";
+ tags = [
+ "as:theme"
+ "use:pure.zsh"
+ ];
+ }
+ { name = "zdharma-continuum/fast-syntax-highlighting"; }
+ { name = "zsh-users/zsh-autosuggestions"; }
+ ];
+ };
+ };
+ };
+ };
+}
diff --git a/modules/services/default.nix b/modules/services/default.nix
new file mode 100644
index 0000000..2011a73
--- /dev/null
+++ b/modules/services/default.nix
@@ -0,0 +1,15 @@
+{ ... }:
+
+{
+ imports = [
+ ./printer.nix
+ ./polkit.nix
+ ./pipewire.nix
+ ./mullvad.nix
+ ];
+
+ config = {
+ # Default services confguration, things that dont need their own module.
+ services.openssh.enable = true;
+ };
+}
diff --git a/modules/services/mullvad.nix b/modules/services/mullvad.nix
new file mode 100644
index 0000000..0d486be
--- /dev/null
+++ b/modules/services/mullvad.nix
@@ -0,0 +1,16 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ options.nx.services.mullvad.enable = lib.mkEnableOption "Enable and setup mullvad";
+ config = lib.mkIf config.nx.services.mullvad.enable {
+ services.mullvad-vpn = {
+ enable = true;
+ package = pkgs.mullvad-vpn;
+ };
+ };
+}
diff --git a/modules/services/pipewire.nix b/modules/services/pipewire.nix
new file mode 100644
index 0000000..929159e
--- /dev/null
+++ b/modules/services/pipewire.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ ...
+}:
+
+{
+ options.nx.services.pipewire.enable = lib.mkEnableOption "Enable pipewire for audio";
+ config = lib.mkIf config.nx.services.pipewire.enable {
+ security.rtkit.enable = true;
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ wireplumber.enable = true;
+ };
+ };
+}
diff --git a/modules/services/polkit.nix b/modules/services/polkit.nix
new file mode 100644
index 0000000..4cc5fce
--- /dev/null
+++ b/modules/services/polkit.nix
@@ -0,0 +1,25 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
+{
+ options.nx.services.polkit.enable = lib.mkEnableOption "Enable and setup polkit service";
+ config = lib.mkIf config.nx.services.polkit.enable {
+ security.polkit.enable = true;
+ systemd.services.polkit-gnome-authenticator-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}/bin/polkit-gnome-authentication-agent-1";
+ Restart = "on-failure";
+ RestartSec = 1;
+ TimeoutStopSec = 10;
+ };
+ };
+ };
+}
diff --git a/modules/services/printer.nix b/modules/services/printer.nix
new file mode 100644
index 0000000..0f6d82b
--- /dev/null
+++ b/modules/services/printer.nix
@@ -0,0 +1,21 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
+{
+ options.nx.services.printer.enable = lib.mkEnableOption "Enable printer service";
+ config = lib.mkIf config.nx.services.printer.enable {
+ services.printing = {
+ enable = true;
+ drivers = [ pkgs.brlaser ];
+ };
+ # printer autodiscovery
+ services.avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+ };
+}
diff --git a/modules/system/default.nix b/modules/system/default.nix
new file mode 100644
index 0000000..a3e0fcd
--- /dev/null
+++ b/modules/system/default.nix
@@ -0,0 +1,10 @@
+{ ... }:
+
+{
+ imports = [
+ ./localisation.nix
+ ./network.nix
+ ./nix-options.nix
+ ./users.nix
+ ];
+}
diff --git a/modules/system/localisation.nix b/modules/system/localisation.nix
new file mode 100644
index 0000000..ab8dfbf
--- /dev/null
+++ b/modules/system/localisation.nix
@@ -0,0 +1,23 @@
+{ ... }:
+
+let
+ locale = "en_US.UTF-8";
+in
+{
+ # Set your time zone.
+ time.timeZone = "Europe/Berlin";
+
+ # Select internationalisation properties.
+ i18n.defaultLocale = locale;
+ i18n.extraLocaleSettings = {
+ LC_ADDRESS = locale;
+ LC_IDENTIFICATION = locale;
+ LC_MEASUREMENT = locale;
+ LC_MONETARY = locale;
+ LC_NAME = locale;
+ LC_NUMERIC = locale;
+ LC_PAPER = locale;
+ LC_TELEPHONE = locale;
+ LC_TIME = locale;
+ };
+}
diff --git a/modules/system/network.nix b/modules/system/network.nix
new file mode 100644
index 0000000..383480b
--- /dev/null
+++ b/modules/system/network.nix
@@ -0,0 +1,14 @@
+{
+ host,
+ ...
+}:
+
+{
+ networking = {
+ hostName = host;
+ networkmanager.enable = true;
+ };
+
+ # Improve startup time
+ systemd.services.NetworkManager-wait-online.enable = false;
+}
diff --git a/modules/system/nix-options.nix b/modules/system/nix-options.nix
new file mode 100644
index 0000000..fbbed29
--- /dev/null
+++ b/modules/system/nix-options.nix
@@ -0,0 +1,18 @@
+{ ... }:
+
+{
+ nix = {
+ settings = {
+ experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
+ auto-optimise-store = true;
+ };
+ gc = {
+ automatic = true;
+ dates = "daily";
+ options = "--delete-older-than 15d";
+ };
+ };
+}
diff --git a/modules/system/users.nix b/modules/system/users.nix
new file mode 100644
index 0000000..d42dac3
--- /dev/null
+++ b/modules/system/users.nix
@@ -0,0 +1,22 @@
+{
+ config,
+ username,
+ pkgs,
+ lib,
+ ...
+}:
+
+{
+ users.users."${username}" = {
+ isNormalUser = true;
+ extraGroups = [
+ "wheel"
+ "video"
+ "input"
+ (lib.mkIf config.networking.networkmanager.enable "networkmanager")
+ ];
+ shell = pkgs.zsh;
+ ignoreShellProgramCheck = true;
+ };
+ security.sudo.wheelNeedsPassword = false;
+}