nixfmt
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -11,9 +12,9 @@ pre-commit-hooks-nix.lib.${pkgs.system}.run {
|
||||
hooks = {
|
||||
pre-commit-hook-ensure-sops.enable = true;
|
||||
treefmt = {
|
||||
enable = true;
|
||||
settings.fail-on-change = false;
|
||||
enable = lib.mkForce true;
|
||||
settings.fail-on-change = lib.mkForce false;
|
||||
packageOverrides.treefmt = inputs.treefmt-nix.lib.mkWrapper pkgs ../../treefmt.nix;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
319
flake.nix
319
flake.nix
@@ -6,8 +6,8 @@
|
||||
# The name "snowfall-lib" is required due to how Snowfall Lib processes your
|
||||
# flake's inputs.
|
||||
snowfall-lib = {
|
||||
url = "github:snowfallorg/lib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
url = "github:snowfallorg/lib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
@@ -18,7 +18,7 @@
|
||||
};
|
||||
|
||||
impermanence.url = "github:nix-community/impermanence";
|
||||
|
||||
|
||||
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
||||
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
@@ -84,179 +84,180 @@
|
||||
};
|
||||
|
||||
# We will handle this in the next section.
|
||||
outputs = inputs:
|
||||
inputs.snowfall-lib.mkFlake {
|
||||
# You must provide our flake inputs to Snowfall Lib.
|
||||
inherit inputs;
|
||||
outputs =
|
||||
inputs:
|
||||
inputs.snowfall-lib.mkFlake {
|
||||
# You must provide our flake inputs to Snowfall Lib.
|
||||
inherit inputs;
|
||||
|
||||
# The `src` must be the root of the flake. See configuration
|
||||
# in the next section for information on how you can move your
|
||||
# Nix files to a separate directory.
|
||||
src = ./.;
|
||||
# The `src` must be the root of the flake. See configuration
|
||||
# in the next section for information on how you can move your
|
||||
# Nix files to a separate directory.
|
||||
src = ./.;
|
||||
|
||||
# Add a module to a specific host.
|
||||
systems = {
|
||||
# common modules
|
||||
modules.nixos = with inputs; [
|
||||
authentik-nix.nixosModules.default
|
||||
chaotic.nixosModules.default
|
||||
crowdsec.nixosModules.crowdsec
|
||||
crowdsec.nixosModules.crowdsec-firewall-bouncer
|
||||
disko.nixosModules.disko
|
||||
impermanence.nixosModules.impermanence
|
||||
lanzaboote.nixosModules.lanzaboote
|
||||
sops-nix.nixosModules.sops
|
||||
home-manager.nixosModules.home-manager
|
||||
];
|
||||
|
||||
# common darwin modules
|
||||
modules.darwin = with inputs; [
|
||||
nix-homebrew.darwinModules.nix-homebrew
|
||||
home-manager.darwinModules.home-manager
|
||||
];
|
||||
|
||||
# Host config
|
||||
hosts = {
|
||||
# ######################################################
|
||||
# Desktop #
|
||||
# ######################################################
|
||||
desktop = {
|
||||
modules = with inputs; [
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-gpu-amd
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# NAS #
|
||||
# ######################################################
|
||||
nas = {
|
||||
modules = with inputs; [
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
home-manager.nixosModules.home-manager
|
||||
];
|
||||
# overlays = with inputs; [ crowdsec.overlays.default ];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Steamdeck #
|
||||
# ######################################################
|
||||
steamdeck = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
jovian.nixosModules.jovian
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-gpu-amd
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# NUC #
|
||||
# ######################################################
|
||||
nuc = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-gpu-amd
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Pi4 #
|
||||
# ######################################################
|
||||
pi4 = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-4.base
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4
|
||||
nixos-raspberrypi.lib.inject-overlays
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Pi5 #
|
||||
# ######################################################
|
||||
pi5 = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.base
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.display-vc4
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.bluetooth
|
||||
nixos-raspberrypi.lib.inject-overlays
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Mac #
|
||||
# ######################################################
|
||||
macbook-pro-nixos = {
|
||||
modules = with inputs; [
|
||||
nixos-apple-silicon.nixosModules.default
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
overlays = with inputs; [ nix-vscode-extensions.overlays.default ];
|
||||
|
||||
homes = {
|
||||
modules = with inputs; [
|
||||
nix-index-database.homeModules.nix-index
|
||||
sops-nix.homeManagerModules.sops
|
||||
# Add a module to a specific host.
|
||||
systems = {
|
||||
# common modules
|
||||
modules.nixos = with inputs; [
|
||||
authentik-nix.nixosModules.default
|
||||
chaotic.nixosModules.default
|
||||
crowdsec.nixosModules.crowdsec
|
||||
crowdsec.nixosModules.crowdsec-firewall-bouncer
|
||||
disko.nixosModules.disko
|
||||
impermanence.nixosModules.impermanence
|
||||
lanzaboote.nixosModules.lanzaboote
|
||||
sops-nix.nixosModules.sops
|
||||
home-manager.nixosModules.home-manager
|
||||
];
|
||||
|
||||
overlays = with inputs; [
|
||||
nix-vscode-extensions.overlays.default
|
||||
# common darwin modules
|
||||
modules.darwin = with inputs; [
|
||||
nix-homebrew.darwinModules.nix-homebrew
|
||||
home-manager.darwinModules.home-manager
|
||||
];
|
||||
|
||||
users = {
|
||||
# "matt@desktop" = {
|
||||
# modules = with inputs; [
|
||||
# sops-nix.homeManagerModules.sops
|
||||
# ];
|
||||
# };
|
||||
"deck@steamdeck" = {
|
||||
# Host config
|
||||
hosts = {
|
||||
# ######################################################
|
||||
# Desktop #
|
||||
# ######################################################
|
||||
desktop = {
|
||||
modules = with inputs; [
|
||||
steam-rom-manager.homeManagerModules.default
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-gpu-amd
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# NAS #
|
||||
# ######################################################
|
||||
nas = {
|
||||
modules = with inputs; [
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
home-manager.nixosModules.home-manager
|
||||
];
|
||||
# overlays = with inputs; [ crowdsec.overlays.default ];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Steamdeck #
|
||||
# ######################################################
|
||||
steamdeck = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
jovian.nixosModules.jovian
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-gpu-amd
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# NUC #
|
||||
# ######################################################
|
||||
nuc = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
nixos-hardware.nixosModules.common-cpu-amd
|
||||
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
nixos-hardware.nixosModules.common-gpu-amd
|
||||
nixos-hardware.nixosModules.common-hidpi
|
||||
nixos-hardware.nixosModules.common-pc
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Pi4 #
|
||||
# ######################################################
|
||||
pi4 = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-4.base
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4
|
||||
nixos-raspberrypi.lib.inject-overlays
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Pi5 #
|
||||
# ######################################################
|
||||
pi5 = {
|
||||
modules = with inputs; [
|
||||
disko.nixosModules.disko
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.base
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.display-vc4
|
||||
nixos-raspberrypi.nixosModules.raspberry-pi-5.bluetooth
|
||||
nixos-raspberrypi.lib.inject-overlays
|
||||
];
|
||||
};
|
||||
|
||||
# ######################################################
|
||||
# Mac #
|
||||
# ######################################################
|
||||
macbook-pro-nixos = {
|
||||
modules = with inputs; [
|
||||
nixos-apple-silicon.nixosModules.default
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
overlays = with inputs; [ nix-vscode-extensions.overlays.default ];
|
||||
|
||||
homes = {
|
||||
modules = with inputs; [
|
||||
nix-index-database.homeModules.nix-index
|
||||
sops-nix.homeManagerModules.sops
|
||||
];
|
||||
|
||||
overlays = with inputs; [
|
||||
nix-vscode-extensions.overlays.default
|
||||
];
|
||||
|
||||
users = {
|
||||
# "matt@desktop" = {
|
||||
# modules = with inputs; [
|
||||
# sops-nix.homeManagerModules.sops
|
||||
# ];
|
||||
# };
|
||||
"deck@steamdeck" = {
|
||||
modules = with inputs; [
|
||||
steam-rom-manager.homeManagerModules.default
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Configure Snowfall Lib, all of these settings are optional.
|
||||
snowfall = {
|
||||
# Choose a namespace to use for your flake's packages, library,
|
||||
# and overlays.
|
||||
namespace = "mjallen";
|
||||
# Configure Snowfall Lib, all of these settings are optional.
|
||||
snowfall = {
|
||||
# Choose a namespace to use for your flake's packages, library,
|
||||
# and overlays.
|
||||
namespace = "mjallen";
|
||||
|
||||
# Add flake metadata that can be processed by tools like Snowfall Frost.
|
||||
meta = {
|
||||
# Add flake metadata that can be processed by tools like Snowfall Frost.
|
||||
meta = {
|
||||
# A slug to use in documentation when displaying things like file paths.
|
||||
name = "mjallen";
|
||||
|
||||
# A title to show for your flake, typically the name.
|
||||
title = "mjallen Flake";
|
||||
};
|
||||
};
|
||||
|
||||
outputs-builder = channels: {
|
||||
formatter = inputs.treefmt-nix.lib.mkWrapper channels.nixpkgs ./treefmt.nix;
|
||||
};
|
||||
};
|
||||
|
||||
outputs-builder = channels: {
|
||||
formatter = inputs.treefmt-nix.lib.mkWrapper channels.nixpkgs ./treefmt.nix;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ lib, pkgs, home, ... }:
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
home,
|
||||
...
|
||||
}:
|
||||
let
|
||||
shellAliases = {
|
||||
update-switch = "darwin-rebuild switch --flake ~/nix-config";
|
||||
|
||||
@@ -23,7 +23,7 @@ in
|
||||
home.stateVersion = "23.11";
|
||||
|
||||
mjallen = {
|
||||
desktop.hyprland = {
|
||||
desktop.hyprland = {
|
||||
enable = true;
|
||||
primaryDisplay = "eDP-1";
|
||||
|
||||
@@ -41,7 +41,6 @@ in
|
||||
"name:steam, monitor:${display.input}, default:false, special, class:(.*[Ss]team.*)"
|
||||
];
|
||||
|
||||
|
||||
windowRule = [
|
||||
"size 2160 3356, tag:horizonrdp"
|
||||
];
|
||||
@@ -95,7 +94,7 @@ in
|
||||
tooltip = false;
|
||||
exec = "waybar-hass --get_light light.living_room_lights";
|
||||
interval = "once";
|
||||
format = "{text}";#"";
|
||||
format = "{text}"; # "";
|
||||
on-click = "waybar-hass --toggle_light light.living_room_lights";
|
||||
return-type = "json";
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ lib, ... }:
|
||||
{ lib, ... }:
|
||||
let
|
||||
shellAliases = {
|
||||
ll = "ls -alh";
|
||||
@@ -19,40 +19,40 @@ in
|
||||
|
||||
home.username = "matt";
|
||||
|
||||
sops = {
|
||||
age.keyFile = "/home/matt/.config/sops/age/keys.txt";
|
||||
defaultSopsFile = "/etc/nixos/secrets/secrets.yaml";
|
||||
validateSopsFiles = false;
|
||||
secrets = {
|
||||
"ssh-keys-public/pi4" = {
|
||||
path = "/home/matt/.ssh/id_ed25519.pub";
|
||||
mode = "0644";
|
||||
};
|
||||
"ssh-keys-private/pi4" = {
|
||||
path = "/home/matt/.ssh/id_ed25519";
|
||||
mode = "0600";
|
||||
};
|
||||
# "ssh-keys-public/desktop-nixos" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys";
|
||||
# mode = "0600";
|
||||
# };
|
||||
sops = {
|
||||
age.keyFile = "/home/matt/.config/sops/age/keys.txt";
|
||||
defaultSopsFile = "/etc/nixos/secrets/secrets.yaml";
|
||||
validateSopsFiles = false;
|
||||
secrets = {
|
||||
"ssh-keys-public/pi4" = {
|
||||
path = "/home/matt/.ssh/id_ed25519.pub";
|
||||
mode = "0644";
|
||||
};
|
||||
"ssh-keys-private/pi4" = {
|
||||
path = "/home/matt/.ssh/id_ed25519";
|
||||
mode = "0600";
|
||||
};
|
||||
# "ssh-keys-public/desktop-nixos" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys";
|
||||
# mode = "0600";
|
||||
# };
|
||||
|
||||
# "ssh-keys-public/desktop-nixos-root" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys2";
|
||||
# mode = "0600";
|
||||
# };
|
||||
# "ssh-keys-public/desktop-nixos-root" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys2";
|
||||
# mode = "0600";
|
||||
# };
|
||||
|
||||
# "ssh-keys-public/desktop-windows" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys3";
|
||||
# mode = "0600";
|
||||
# };
|
||||
# "ssh-keys-public/desktop-windows" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys3";
|
||||
# mode = "0600";
|
||||
# };
|
||||
|
||||
# "ssh-keys-public/macbook-macos" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys4";
|
||||
# mode = "0600";
|
||||
# };
|
||||
};
|
||||
};
|
||||
# "ssh-keys-public/macbook-macos" = {
|
||||
# path = "/home/matt/.ssh/authorized_keys4";
|
||||
# mode = "0600";
|
||||
# };
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
mangohud.enable = lib.mkForce true;
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ pkgs, lib, config, namespace, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
shellAliases = {
|
||||
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
|
||||
|
||||
@@ -15,4 +15,4 @@ in
|
||||
programs = {
|
||||
zsh.shellAliases = shellAliases;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ pkgs,... }:
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
shellAliases = {
|
||||
update-boot = "sudo nixos-rebuild boot --max-jobs 10";
|
||||
|
||||
@@ -30,13 +30,13 @@ in
|
||||
steam-rom-manager = {
|
||||
enable = true;
|
||||
steamUsername = "mjallen18";
|
||||
|
||||
|
||||
# Optional: override default paths if needed
|
||||
environmentVariables = {
|
||||
romsDirectory = "/home/deck/Emulation/roms";
|
||||
steamDirectory = "/home/deck/.local/share/Steam";
|
||||
};
|
||||
|
||||
|
||||
emulators = {
|
||||
ryujinx.enable = true;
|
||||
|
||||
@@ -44,13 +44,21 @@ in
|
||||
enable = true;
|
||||
package = pkgs.dolphin-emu;
|
||||
romFolder = "gc";
|
||||
fileTypes = [ ".iso" ".ISO" ".gcm" ".GCM" ".ciso" ".CISO" "rvz" ];
|
||||
fileTypes = [
|
||||
".iso"
|
||||
".ISO"
|
||||
".gcm"
|
||||
".GCM"
|
||||
".ciso"
|
||||
".CISO"
|
||||
"rvz"
|
||||
];
|
||||
extraArgs = "-b -e \"\${filePath}\"";
|
||||
};
|
||||
|
||||
|
||||
pcsx2.enable = true;
|
||||
mgba.enable = true;
|
||||
|
||||
|
||||
"Non-SRM Shortcuts" = {
|
||||
enable = true;
|
||||
parserType = "Non-SRM Shortcuts";
|
||||
|
||||
@@ -14,4 +14,4 @@ in
|
||||
programs = {
|
||||
zsh.shellAliases = shellAliases;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.mjallen.desktop.gnome;
|
||||
in
|
||||
@@ -66,4 +71,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.mjallen.desktop.gnome = {
|
||||
enable = mkEnableOption "enable gnome settings";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.mjallen.desktop.hyprland;
|
||||
@@ -6,7 +11,7 @@ let
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./options.nix
|
||||
./options.nix
|
||||
./packages.nix
|
||||
./theme.nix
|
||||
./variables.nix
|
||||
@@ -21,7 +26,7 @@ in
|
||||
programs = {
|
||||
vscode.profiles.default.userSettings."window"."titleBarStyle" = "custom";
|
||||
};
|
||||
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
@@ -151,7 +156,7 @@ in
|
||||
render = {
|
||||
cm_fs_passthrough = 1;
|
||||
};
|
||||
|
||||
|
||||
misc = {
|
||||
vrr = 1;
|
||||
};
|
||||
@@ -231,7 +236,7 @@ in
|
||||
|
||||
"float, class:(.*nm-connection-editor.*)"
|
||||
"move onscreen cursor 0% 0%, class:(.*nm-connection-editor.*)"
|
||||
|
||||
|
||||
"float, title:(Media viewer)"
|
||||
"float, class:(it.mijorus.smile),title:(Smile)"
|
||||
"float, class:(.blueman-manager-wrapped)$,title:(Bluetooth Devices)"
|
||||
@@ -326,7 +331,7 @@ in
|
||||
# NOT recommended as it crashed a few times, once it's stabilized I'll make it the default
|
||||
send_cancel = "0";
|
||||
};
|
||||
|
||||
|
||||
hyprgrass-bind = [
|
||||
# swipe left from right edge
|
||||
", edge:r:l, workspace, +1"
|
||||
@@ -345,7 +350,7 @@ in
|
||||
", swipe:3:ld, exec, foot"
|
||||
|
||||
# tap with 3 fingers
|
||||
", tap:3, exec, foot"
|
||||
", tap:3, exec, foot"
|
||||
|
||||
# longpress can trigger mouse binds:
|
||||
", longpress:2, movewindow"
|
||||
@@ -390,14 +395,16 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
exec-once = dbus-update-activation-environment --systemd --all
|
||||
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec-once = xhost +SI:localuser:root
|
||||
exec-once = nwg-look -a
|
||||
exec-once = nwg-dock-hyprland -d
|
||||
'' + cfg.extraConfig or '''';
|
||||
extraConfig =
|
||||
''
|
||||
exec-once = dbus-update-activation-environment --systemd --all
|
||||
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec-once = xhost +SI:localuser:root
|
||||
exec-once = nwg-look -a
|
||||
exec-once = nwg-dock-hyprland -d
|
||||
''
|
||||
+ cfg.extraConfig or '''';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -45,31 +45,31 @@ with lib;
|
||||
|
||||
wallpaper = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = "list of hyprland wallpaper configs";
|
||||
};
|
||||
|
||||
monitor = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = "list of hyprland monitor configs";
|
||||
};
|
||||
|
||||
monitorv2 = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = "list of hyprland monitorv2 configs";
|
||||
};
|
||||
|
||||
workspace = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = "list of hyprland workspace definitions";
|
||||
};
|
||||
|
||||
windowRule = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = "list of hyprland window rules";
|
||||
};
|
||||
|
||||
@@ -79,12 +79,12 @@ with lib;
|
||||
description = "any extra options";
|
||||
};
|
||||
|
||||
iconThemeName = mkOption {
|
||||
iconThemeName = mkOption {
|
||||
type = types.str;
|
||||
default = "Colloid-Dark";
|
||||
};
|
||||
|
||||
gtkThemeName = mkOption {
|
||||
gtkThemeName = mkOption {
|
||||
type = types.str;
|
||||
default = "Colloid-Dark";
|
||||
};
|
||||
@@ -92,14 +92,38 @@ with lib;
|
||||
defaultApps = mkOption {
|
||||
type = types.submodule {
|
||||
options = {
|
||||
browser = mkOption { type = types.package; default = pkgs.firefox; };
|
||||
editor = mkOption { type = types.package; default = pkgs.micro; };
|
||||
fileExplorer = mkOption { type = types.package; default = pkgs.nemo; };
|
||||
visual = mkOption { type = types.package; default = pkgs.vscodium; };
|
||||
terminal = mkOption { type = types.package; default = pkgs.kitty; };
|
||||
office = mkOption { type = types.package; default = pkgs.onlyoffice-bin_latest; };
|
||||
video = mkOption { type = types.package; default = pkgs.vlc; };
|
||||
imageViewer = mkOption { type = types.package; default = pkgs.nomacs; };
|
||||
browser = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.firefox;
|
||||
};
|
||||
editor = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.micro;
|
||||
};
|
||||
fileExplorer = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.nemo;
|
||||
};
|
||||
visual = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.vscodium;
|
||||
};
|
||||
terminal = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.kitty;
|
||||
};
|
||||
office = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.onlyoffice-bin_latest;
|
||||
};
|
||||
video = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.vlc;
|
||||
};
|
||||
imageViewer = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.nomacs;
|
||||
};
|
||||
};
|
||||
};
|
||||
description = "Default applications used across the system.";
|
||||
@@ -120,4 +144,4 @@ with lib;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.mjallen.desktop.hyprland;
|
||||
@@ -64,4 +69,4 @@ in
|
||||
xwayland
|
||||
];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.hyprland;
|
||||
in
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.hyprland;
|
||||
in
|
||||
@@ -7,41 +12,41 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
background = [
|
||||
{
|
||||
monitor = "";
|
||||
path = cfg.wallpaper; # supports png, jpg, webp (no animations, though)
|
||||
color = "rgba(25, 20, 20, 1.0)";
|
||||
enable = true;
|
||||
settings = {
|
||||
background = [
|
||||
{
|
||||
monitor = "";
|
||||
path = cfg.wallpaper; # supports png, jpg, webp (no animations, though)
|
||||
color = "rgba(25, 20, 20, 1.0)";
|
||||
|
||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||
blur_passes = "3"; # 0 disables blurring
|
||||
blur_size = "7";
|
||||
noise = "0.0117";
|
||||
contrast = "0.8916";
|
||||
brightness = "0.8172";
|
||||
vibrancy = "0.1696";
|
||||
vibrancy_darkness = "0.0";
|
||||
}
|
||||
];
|
||||
input-field = [
|
||||
{
|
||||
size = "200, 50";
|
||||
position = "0, -80";
|
||||
monitor = cfg.primaryDisplay;
|
||||
dots_center = true;
|
||||
fade_on_empty = true;
|
||||
font_color = "rgb(202, 211, 245)";
|
||||
inner_color = "rgb(91, 96, 120)";
|
||||
outer_color = "rgb(24, 25, 38)";
|
||||
bothlock_color = -1;
|
||||
outline_thickness = 5;
|
||||
placeholder_text = ''<span foreground="##cad3f5">Password...</span>'';
|
||||
shadow_passes = 2;
|
||||
}
|
||||
];
|
||||
};
|
||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||
blur_passes = "3"; # 0 disables blurring
|
||||
blur_size = "7";
|
||||
noise = "0.0117";
|
||||
contrast = "0.8916";
|
||||
brightness = "0.8172";
|
||||
vibrancy = "0.1696";
|
||||
vibrancy_darkness = "0.0";
|
||||
}
|
||||
];
|
||||
input-field = [
|
||||
{
|
||||
size = "200, 50";
|
||||
position = "0, -80";
|
||||
monitor = cfg.primaryDisplay;
|
||||
dots_center = true;
|
||||
fade_on_empty = true;
|
||||
font_color = "rgb(202, 211, 245)";
|
||||
inner_color = "rgb(91, 96, 120)";
|
||||
outer_color = "rgb(24, 25, 38)";
|
||||
bothlock_color = -1;
|
||||
outline_thickness = 5;
|
||||
placeholder_text = ''<span foreground="##cad3f5">Password...</span>'';
|
||||
shadow_passes = 2;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.hyprland;
|
||||
in
|
||||
@@ -15,4 +20,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.mjallen.desktop.hyprland;
|
||||
|
||||
themeSize = "compact"; # [ "standard" "compact" ]
|
||||
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
||||
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
||||
themeSize = "compact"; # [ "standard" "compact" ]
|
||||
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
||||
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
||||
iconThemeVariant = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||
iconScheme = "nord"; # [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" ]
|
||||
|
||||
@@ -95,4 +100,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,34 +6,34 @@ in
|
||||
{
|
||||
config = mkIf cfg.enable {
|
||||
home.sessionVariables = {
|
||||
BROWSER = "${cfg.defaultApps.browser.pname}";
|
||||
CLUTTER_BACKEND = "wayland";
|
||||
EDITOR = "${cfg.defaultApps.editor.pname}";
|
||||
VISUAL = "${cfg.defaultApps.visual.pname}";
|
||||
ICON_THEME = cfg.iconThemeName;
|
||||
GTK_CSD = "0";
|
||||
GTK_THEME = cfg.gtkThemeName;
|
||||
GTK_USE_PORTAL = "1";
|
||||
HYPRCURSOR_THEME = config.home.pointerCursor.name;
|
||||
HYPRCURSOR_SIZE = config.home.pointerCursor.size;
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||
QT_QPA_PLATFORM = "wayland-egl";
|
||||
QT_QPA_PLATFORMTHEME = "gtk3";
|
||||
QT_SCALE_FACTOR = "1";
|
||||
BROWSER = "${cfg.defaultApps.browser.pname}";
|
||||
CLUTTER_BACKEND = "wayland";
|
||||
EDITOR = "${cfg.defaultApps.editor.pname}";
|
||||
VISUAL = "${cfg.defaultApps.visual.pname}";
|
||||
ICON_THEME = cfg.iconThemeName;
|
||||
GTK_CSD = "0";
|
||||
GTK_THEME = cfg.gtkThemeName;
|
||||
GTK_USE_PORTAL = "1";
|
||||
HYPRCURSOR_THEME = config.home.pointerCursor.name;
|
||||
HYPRCURSOR_SIZE = config.home.pointerCursor.size;
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||
QT_QPA_PLATFORM = "wayland-egl";
|
||||
QT_QPA_PLATFORMTHEME = "gtk3";
|
||||
QT_SCALE_FACTOR = "1";
|
||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||
SDL_VIDEODRIVER = "wayland";
|
||||
TERMINAL = "${cfg.defaultApps.terminal.pname}";
|
||||
XCURSOR_THEME = config.home.pointerCursor.name;
|
||||
XCURSOR_SIZE = config.home.pointerCursor.size;
|
||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||
XDG_DATA_HOME = "\${HOME}/.local/share";
|
||||
XDG_SESSION_DESKTOP = "Hyprland";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
SDL_VIDEODRIVER = "wayland";
|
||||
TERMINAL = "${cfg.defaultApps.terminal.pname}";
|
||||
XCURSOR_THEME = config.home.pointerCursor.name;
|
||||
XCURSOR_SIZE = config.home.pointerCursor.size;
|
||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||
XDG_DATA_HOME = "\${HOME}/.local/share";
|
||||
XDG_SESSION_DESKTOP = "Hyprland";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,4 +59,4 @@
|
||||
border-radius: 1rem 0rem 0rem 1rem;
|
||||
margin-left: 0.5rem;
|
||||
'';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home = {
|
||||
enableNixpkgsReleaseCheck = lib.mkDefault false;
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.mjallen.programs.btop = {
|
||||
enable = mkEnableOption "enable btop";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, lib, pkgs, system, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
isArm = "aarch64-linux" == system;
|
||||
open-remote-ssh = pkgs.vscode-utils.buildVscodeExtension {
|
||||
@@ -27,44 +33,48 @@ in
|
||||
default = {
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions = with pkgs; [
|
||||
vscode-extensions.arrterian.nix-env-selector
|
||||
vscode-extensions.bbenoist.nix
|
||||
vscode-extensions.brettm12345.nixfmt-vscode
|
||||
vscode-extensions.cweijan.vscode-database-client2
|
||||
vscode-extensions.dendron.dendron-markdown-preview-enhanced
|
||||
vscode-extensions.jnoortheen.nix-ide
|
||||
vscode-extensions.mkhl.direnv
|
||||
vscode-extensions.ms-python.debugpy
|
||||
vscode-extensions.ms-python.pylint
|
||||
vscode-extensions.ms-python.python
|
||||
# vscode-extensions.ms-python.vscode-pylance
|
||||
vscode-extensions.redhat.vscode-yaml
|
||||
vscode-extensions.yy0931.vscode-sqlite3-editor
|
||||
extensions =
|
||||
with pkgs;
|
||||
[
|
||||
vscode-extensions.arrterian.nix-env-selector
|
||||
vscode-extensions.bbenoist.nix
|
||||
vscode-extensions.brettm12345.nixfmt-vscode
|
||||
vscode-extensions.cweijan.vscode-database-client2
|
||||
vscode-extensions.dendron.dendron-markdown-preview-enhanced
|
||||
vscode-extensions.jnoortheen.nix-ide
|
||||
vscode-extensions.mkhl.direnv
|
||||
vscode-extensions.ms-python.debugpy
|
||||
vscode-extensions.ms-python.pylint
|
||||
vscode-extensions.ms-python.python
|
||||
# vscode-extensions.ms-python.vscode-pylance
|
||||
vscode-extensions.redhat.vscode-yaml
|
||||
vscode-extensions.yy0931.vscode-sqlite3-editor
|
||||
|
||||
# open-remote-ssh
|
||||
# nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
||||
# open-vsx.jeanp413.open-remote-ssh
|
||||
] ++ ( if !isArm then x86_only else [ ] ) ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "copilot-mcp";
|
||||
publisher = "automatalabs";
|
||||
version = "0.0.49";
|
||||
sha256 = "sha256-+G2OQl5SCN7bh7MzGdYiRclIZefBE7lWnGg1kNpCvnA=";
|
||||
}
|
||||
{
|
||||
name = "mcp-server-runner";
|
||||
publisher = "zebradev";
|
||||
version = "0.1.0";
|
||||
sha256 = "sha256-StydVt3VzQUSS/pYp76jnIwtZlEj8gWAGzOARs93J+E=";
|
||||
}
|
||||
{
|
||||
name = "claude-dev";
|
||||
publisher = "saoudrizwan";
|
||||
version = "3.17.9";
|
||||
sha256 = "sha256-y3bFtMe5vZrO3DFb31KDvkzjD2jM76wK89mKhgJXC70=";
|
||||
}
|
||||
];
|
||||
# open-remote-ssh
|
||||
# nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
||||
# open-vsx.jeanp413.open-remote-ssh
|
||||
]
|
||||
++ (if !isArm then x86_only else [ ])
|
||||
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "copilot-mcp";
|
||||
publisher = "automatalabs";
|
||||
version = "0.0.49";
|
||||
sha256 = "sha256-+G2OQl5SCN7bh7MzGdYiRclIZefBE7lWnGg1kNpCvnA=";
|
||||
}
|
||||
{
|
||||
name = "mcp-server-runner";
|
||||
publisher = "zebradev";
|
||||
version = "0.1.0";
|
||||
sha256 = "sha256-StydVt3VzQUSS/pYp76jnIwtZlEj8gWAGzOARs93J+E=";
|
||||
}
|
||||
{
|
||||
name = "claude-dev";
|
||||
publisher = "saoudrizwan";
|
||||
version = "3.17.9";
|
||||
sha256 = "sha256-y3bFtMe5vZrO3DFb31KDvkzjD2jM76wK89mKhgJXC70=";
|
||||
}
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
|
||||
@@ -79,7 +89,7 @@ in
|
||||
"confirmDelete" = false;
|
||||
"confirmDragAndDrop" = false;
|
||||
};
|
||||
|
||||
|
||||
"git" = {
|
||||
"confirmSync" = false;
|
||||
"enableSmartCommit" = true;
|
||||
@@ -110,10 +120,12 @@ in
|
||||
# You can write arbitary Nix expressions here, to produce valid "options" declaration result.
|
||||
# Tip: for flake-based configuration, utilize `builtins.getFlake`
|
||||
"nixos" = {
|
||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations.<name>.options";
|
||||
"expr" =
|
||||
"(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").nixosConfigurations.<name>.options";
|
||||
};
|
||||
"home-manager" = {
|
||||
"expr" = "(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations.<name>.options";
|
||||
"expr" =
|
||||
"(builtins.getFlake \"${config.home.homeDirectory}/nix-config\").homeConfigurations.<name>.options";
|
||||
};
|
||||
# # Tip: use ${workspaceFolder} variable to define path
|
||||
# "nix-darwin" = {
|
||||
@@ -149,4 +161,4 @@ in
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,4 +18,4 @@ in
|
||||
userEmail = "matt.l.jallen@gmail.com";
|
||||
aliases = gitAliases;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,33 +29,33 @@ in
|
||||
background_opacity = "0.85";
|
||||
|
||||
# The basic colors
|
||||
foreground = nord.snowStorm.nord6;
|
||||
background = nord.polarNight.nord0;
|
||||
selection_foreground = nord.polarNight.nord0;
|
||||
selection_background = nord.aurora.nord15;
|
||||
foreground = nord.snowStorm.nord6;
|
||||
background = nord.polarNight.nord0;
|
||||
selection_foreground = nord.polarNight.nord0;
|
||||
selection_background = nord.aurora.nord15;
|
||||
|
||||
# Cursor colors
|
||||
cursor = nord.aurora.nord15;
|
||||
cursor_text_color = nord.polarNight.nord0;
|
||||
cursor = nord.aurora.nord15;
|
||||
cursor_text_color = nord.polarNight.nord0;
|
||||
|
||||
# URL underline color when hovering with mouse
|
||||
url_color = nord.aurora.nord15;
|
||||
|
||||
# Kitty window border colors
|
||||
active_border_color = nord.frost.nord10;
|
||||
active_border_color = nord.frost.nord10;
|
||||
inactive_border_color = nord.polarNight.nord1;
|
||||
bell_border_color = nord.aurora.nord13;
|
||||
bell_border_color = nord.aurora.nord13;
|
||||
|
||||
# OS Window titlebar colors
|
||||
wayland_titlebar_color = nord.polarNight.nord0;
|
||||
macos_titlebar_color = nord.polarNight.nord0;
|
||||
wayland_titlebar_color = nord.polarNight.nord0;
|
||||
macos_titlebar_color = nord.polarNight.nord0;
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground = nord.polarNight.nord3;
|
||||
active_tab_background = nord.aurora.nord15;
|
||||
active_tab_foreground = nord.polarNight.nord3;
|
||||
active_tab_background = nord.aurora.nord15;
|
||||
inactive_tab_foreground = nord.snowStorm.nord6;
|
||||
inactive_tab_background = nord.polarNight.nord1;
|
||||
tab_bar_background = nord.polarNight.nord3;
|
||||
tab_bar_background = nord.polarNight.nord3;
|
||||
|
||||
# Colors for marks (marked text in the terminal)
|
||||
mark1_foreground = nord.polarNight.nord0;
|
||||
@@ -86,11 +86,11 @@ in
|
||||
color11 = nord.aurora.nord13;
|
||||
|
||||
# blue
|
||||
color4 = nord.frost.nord10;
|
||||
color4 = nord.frost.nord10;
|
||||
color12 = nord.frost.nord10;
|
||||
|
||||
# magenta
|
||||
color5 = nord.aurora.nord15;
|
||||
color5 = nord.aurora.nord15;
|
||||
color13 = nord.aurora.nord15;
|
||||
|
||||
# cyan
|
||||
@@ -98,7 +98,7 @@ in
|
||||
color14 = nord.frost.nord8;
|
||||
|
||||
# white
|
||||
color7 = nord.snowStorm.nord5;
|
||||
color7 = nord.snowStorm.nord5;
|
||||
color15 = nord.snowStorm.nord4;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,4 +24,4 @@ with lib;
|
||||
default = import ../../desktop/theme/nord.nix;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,8 @@
|
||||
"browser.newtabpage.activity-stream.topSitesRows" = 3; # Set number of rows for top sites on new tab page
|
||||
"layout.css.light-dark.enabled" = true; # Enable light/dark theme support
|
||||
"extensions.activeThemeID" = "default-theme@mozilla.org"; # Set active theme
|
||||
"extensions.webextensions.uuids" = "{\"formautofill@mozilla.org\" =\"851c83b7-26d5-449c-8cc9-d8951a0ce78d\",\"pictureinpicture@mozilla.org\" =\"42fa2650-5134-4bef-bafa-b73f9ae51bad\",\"screenshots@mozilla.org\" =\"efd2b692-43c4-433a-aea5-0cb79f8312d4\",\"webcompat-reporter@mozilla.org\" =\"c43a6be2-fb56-4253-b384-ce8e09a89999\",\"webcompat@mozilla.org\" =\"e25fd1bb-7c53-413f-9528-bb922c322a56\",\"default-theme@mozilla.org\" =\"610b67c3-9145-46f7-814f-d8ee2cc8edff\",\"addons-search-detection@mozilla.com\:\"caedb3ca-5cf5-4e23-a251-d742f23e6fc8\",\"uBlock0@raymondhill.net\" =\"7e7d9fd9-12bf-42d3-9c7c-9ffd05420ec7\",\"78272b6fa58f4a1abaac99321d503a20@proton.me\" =\"7242a067-06d8-430b-94a3-00d264cdd57b\",\"addon@darkreader.org\" =\"2f02b112-6acd-4bdc-af2c-1432eb527339\",\"jid1-xUfzOsOFlzSOXg@jetpack\" =\"d0c72046-9903-4118-8160-a028840bf928\",\"chrome-gnome-shell@gnome.org\" =\"a1ab53e6-b765-4f25-8349-383cc04682a0\",\"user-agent-switcher@ninetailed.ninja\" =\"259d07cc-bb32-4ed5-b90f-6d73abdeb7bb\",\"firefoxdav@icloud.com\" =\"110e6e2c-18f8-461d-9f26-b8f04482b6f1\",\"ciscowebexstart1@cisco.com\" =\"a4062240-e73a-4353-bddb-d608d84881f7\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\" =\"9164e437-812b-4a07-8dfd-2fd73b39329b\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\" =\"648fc678-a6fb-47cd-9792-fb9520678c17\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\" =\"f0b43422-070e-466e-85c9-6543f209f075\",\"jid1-MnnxcxisBPnSXQ@jetpack\" =\"4c448202-c843-4cae-b5c3-d11f2da58fa3\",\"soundfixer@unrelenting.technology\" =\"59b35eb8-1c85-4919-a905-80d120993ddc\",\"floccus@handmadeideas.org\" =\"8ad2956c-8091-41af-a689-7d2108f5958d\",\"{79b9dbcf-cc5a-4cda-89ef-c4ab097eb074}\" =\"c2a223a7-32e0-4726-9f20-17236702b1f5\",\"linkgopher@oooninja.com\" =\"a257858c-0dce-415b-b123-6222876cf843\"}";
|
||||
"extensions.webextensions.uuids" =
|
||||
"{\"formautofill@mozilla.org\" =\"851c83b7-26d5-449c-8cc9-d8951a0ce78d\",\"pictureinpicture@mozilla.org\" =\"42fa2650-5134-4bef-bafa-b73f9ae51bad\",\"screenshots@mozilla.org\" =\"efd2b692-43c4-433a-aea5-0cb79f8312d4\",\"webcompat-reporter@mozilla.org\" =\"c43a6be2-fb56-4253-b384-ce8e09a89999\",\"webcompat@mozilla.org\" =\"e25fd1bb-7c53-413f-9528-bb922c322a56\",\"default-theme@mozilla.org\" =\"610b67c3-9145-46f7-814f-d8ee2cc8edff\",\"addons-search-detection@mozilla.com\:\"caedb3ca-5cf5-4e23-a251-d742f23e6fc8\",\"uBlock0@raymondhill.net\" =\"7e7d9fd9-12bf-42d3-9c7c-9ffd05420ec7\",\"78272b6fa58f4a1abaac99321d503a20@proton.me\" =\"7242a067-06d8-430b-94a3-00d264cdd57b\",\"addon@darkreader.org\" =\"2f02b112-6acd-4bdc-af2c-1432eb527339\",\"jid1-xUfzOsOFlzSOXg@jetpack\" =\"d0c72046-9903-4118-8160-a028840bf928\",\"chrome-gnome-shell@gnome.org\" =\"a1ab53e6-b765-4f25-8349-383cc04682a0\",\"user-agent-switcher@ninetailed.ninja\" =\"259d07cc-bb32-4ed5-b90f-6d73abdeb7bb\",\"firefoxdav@icloud.com\" =\"110e6e2c-18f8-461d-9f26-b8f04482b6f1\",\"ciscowebexstart1@cisco.com\" =\"a4062240-e73a-4353-bddb-d608d84881f7\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\" =\"9164e437-812b-4a07-8dfd-2fd73b39329b\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\" =\"648fc678-a6fb-47cd-9792-fb9520678c17\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\" =\"f0b43422-070e-466e-85c9-6543f209f075\",\"jid1-MnnxcxisBPnSXQ@jetpack\" =\"4c448202-c843-4cae-b5c3-d11f2da58fa3\",\"soundfixer@unrelenting.technology\" =\"59b35eb8-1c85-4919-a905-80d120993ddc\",\"floccus@handmadeideas.org\" =\"8ad2956c-8091-41af-a689-7d2108f5958d\",\"{79b9dbcf-cc5a-4cda-89ef-c4ab097eb074}\" =\"c2a223a7-32e0-4726-9f20-17236702b1f5\",\"linkgopher@oooninja.com\" =\"a257858c-0dce-415b-b123-6222876cf843\"}";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@ with lib;
|
||||
default = "DejaVu Sans";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.mjallen.programs.nwg-dock;
|
||||
@@ -9,7 +14,7 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ nwg-dock-hyprland ];
|
||||
|
||||
|
||||
home.file = {
|
||||
".config/nwg-dock-hyprland/drawer.css".text = ''
|
||||
window {
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.mjallen.programs.nwg-dock = {
|
||||
enable = mkEnableOption "enable nwg-dock";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.mjallen.programs.nwg-drawer;
|
||||
@@ -9,44 +14,44 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ nwg-drawer ];
|
||||
|
||||
|
||||
home.file = {
|
||||
".config/nwg-drawer/drawer.css".text = ''
|
||||
window {
|
||||
background-color: ${nord.polarNight.nord0}bf;
|
||||
color: ${nord.snowStorm.nord5}00
|
||||
}
|
||||
".config/nwg-drawer/drawer.css".text = ''
|
||||
window {
|
||||
background-color: ${nord.polarNight.nord0}bf;
|
||||
color: ${nord.snowStorm.nord5}00
|
||||
}
|
||||
|
||||
/* search entry */
|
||||
entry {
|
||||
background-color: ${nord.polarNight.nord1}0f
|
||||
}
|
||||
/* search entry */
|
||||
entry {
|
||||
background-color: ${nord.polarNight.nord1}0f
|
||||
}
|
||||
|
||||
button, image {
|
||||
background: none;
|
||||
border: none
|
||||
}
|
||||
button, image {
|
||||
background: none;
|
||||
border: none
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: ${nord.frost.nord10}1a
|
||||
}
|
||||
button:hover {
|
||||
background-color: ${nord.frost.nord10}1a
|
||||
}
|
||||
|
||||
/* in case you wanted to give category buttons a different look */
|
||||
#category-button {
|
||||
margin: 0 10px 0 10px
|
||||
}
|
||||
/* in case you wanted to give category buttons a different look */
|
||||
#category-button {
|
||||
margin: 0 10px 0 10px
|
||||
}
|
||||
|
||||
#pinned-box {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px dotted ${nord.polarNight.nord3}
|
||||
}
|
||||
#pinned-box {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px dotted ${nord.polarNight.nord3}
|
||||
}
|
||||
|
||||
#files-box {
|
||||
padding: 5px;
|
||||
border: 1px dotted ${nord.polarNight.nord3};
|
||||
border-radius: 15px
|
||||
}
|
||||
'';
|
||||
#files-box {
|
||||
padding: 5px;
|
||||
border: 1px dotted ${nord.polarNight.nord3};
|
||||
border-radius: 15px
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.mjallen.programs.nwg-drawer = {
|
||||
enable = mkEnableOption "enable nwg-drawer";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, lib, ... }:
|
||||
{ config, lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.mjallen.programs.nwg-panel;
|
||||
@@ -12,15 +12,15 @@ in
|
||||
|
||||
'';
|
||||
".config/nwg-panel/preferred-apps.json".text = ''
|
||||
{
|
||||
"\\.pdf$": "${cfg.defaultApps.browser.pname}",
|
||||
"\\.svg$": "inkscape",
|
||||
"\\.(jpg|png|tiff|gif)$": "${cfg.defaultApps.imageViewer.pname}",
|
||||
"\\.(mp3|ogg|flac|wav|wma)$": "audacious",
|
||||
"\\.(avi|mp4|mkv|mov|wav)$": "${cfg.defaultApps.video.pname}",
|
||||
"\\.(doc|docx|xls|xlsx)$": "${cfg.defaultApps.office.pname}"
|
||||
}
|
||||
{
|
||||
"\\.pdf$": "${cfg.defaultApps.browser.pname}",
|
||||
"\\.svg$": "inkscape",
|
||||
"\\.(jpg|png|tiff|gif)$": "${cfg.defaultApps.imageViewer.pname}",
|
||||
"\\.(mp3|ogg|flac|wav|wma)$": "audacious",
|
||||
"\\.(avi|mp4|mkv|mov|wav)$": "${cfg.defaultApps.video.pname}",
|
||||
"\\.(doc|docx|xls|xlsx)$": "${cfg.defaultApps.office.pname}"
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,17 +7,41 @@ with lib;
|
||||
defaultApps = mkOption {
|
||||
type = types.submodule {
|
||||
options = {
|
||||
browser = mkOption { type = types.package; default = pkgs.firefox; };
|
||||
editor = mkOption { type = types.package; default = pkgs.micro; };
|
||||
fileExplorer = mkOption { type = types.package; default = pkgs.nemo; };
|
||||
visual = mkOption { type = types.package; default = pkgs.vscodium; };
|
||||
terminal = mkOption { type = types.package; default = pkgs.kitty; };
|
||||
office = mkOption { type = types.package; default = pkgs.onlyoffice-bin_latest; };
|
||||
video = mkOption { type = types.package; default = pkgs.vlc; };
|
||||
imageViewer = mkOption { type = types.package; default = pkgs.gnome-photos; };
|
||||
browser = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.firefox;
|
||||
};
|
||||
editor = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.micro;
|
||||
};
|
||||
fileExplorer = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.nemo;
|
||||
};
|
||||
visual = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.vscodium;
|
||||
};
|
||||
terminal = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.kitty;
|
||||
};
|
||||
office = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.onlyoffice-bin_latest;
|
||||
};
|
||||
video = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.vlc;
|
||||
};
|
||||
imageViewer = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.gnome-photos;
|
||||
};
|
||||
};
|
||||
};
|
||||
description = "Default applications used across the system.";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,4 @@ in
|
||||
maximized = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ let
|
||||
'';
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
imports = [
|
||||
./options.nix
|
||||
./scripts/hass.nix
|
||||
./scripts/weather.nix
|
||||
@@ -91,7 +91,7 @@ in
|
||||
critical-threshold = 110;
|
||||
format-critical = "{temperatureC}°C ";
|
||||
format = "{temperatureC}°C {icon}";
|
||||
format-icons = [
|
||||
format-icons = [
|
||||
"" # fa-temperature-empty
|
||||
"" # fa-temperature-quarter
|
||||
"" # fa-temperature-half
|
||||
@@ -106,7 +106,7 @@ in
|
||||
critical-threshold = 110;
|
||||
format-critical = "{temperatureC}°C ";
|
||||
format = "{temperatureC}°C {icon}";
|
||||
format-icons = [
|
||||
format-icons = [
|
||||
"" # fa-temperature-empty
|
||||
"" # fa-temperature-quarter
|
||||
"" # fa-temperature-half
|
||||
@@ -193,7 +193,7 @@ in
|
||||
connected = "";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
network = {
|
||||
interface = cfg.networkInterface;
|
||||
on-click = "nm-connection-editor";
|
||||
@@ -234,10 +234,10 @@ in
|
||||
calendar = {
|
||||
mode = "month";
|
||||
format = {
|
||||
months = "<span color='${nord.frost.nord9}'><b>{}</b></span>";
|
||||
days = "<span color='${nord.frost.nord10}'><b>{}</b></span>";
|
||||
weekdays = "<span color='${nord.frost.nord8}'><b>{}</b></span>";
|
||||
today = "<span color='${nord.aurora.nord14}'><b><u>{}</u></b></span>";
|
||||
months = "<span color='${nord.frost.nord9}'><b>{}</b></span>";
|
||||
days = "<span color='${nord.frost.nord10}'><b>{}</b></span>";
|
||||
weekdays = "<span color='${nord.frost.nord8}'><b>{}</b></span>";
|
||||
today = "<span color='${nord.aurora.nord14}'><b><u>{}</u></b></span>";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -247,8 +247,8 @@ in
|
||||
interval = 60;
|
||||
# statuses: 'Charging', 'Discharging'
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{capacity}% {icon}";
|
||||
format-icons = {
|
||||
@@ -296,239 +296,241 @@ in
|
||||
# * { font-size: 13px; }
|
||||
# window.eDP-1 * { font-size: 10px; }
|
||||
|
||||
style = ''
|
||||
.blink_me {
|
||||
animation: blinker 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes blinker {
|
||||
50% {
|
||||
color: ${nord.aurora.nord11};
|
||||
style =
|
||||
''
|
||||
.blink_me {
|
||||
animation: blinker 1s linear infinite;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
font-family:
|
||||
Jetbrains Mono Nerd Font,
|
||||
monospace;
|
||||
font-size: 14px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
#waybar {
|
||||
background: transparent;
|
||||
color: ${nord.snowStorm.nord6};
|
||||
margin: 5px 5px;
|
||||
}
|
||||
@keyframes blinker {
|
||||
50% {
|
||||
color: ${nord.aurora.nord11};
|
||||
}
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultBorderRadius}
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
margin-left: 0.6rem;
|
||||
}
|
||||
* {
|
||||
font-family:
|
||||
Jetbrains Mono Nerd Font,
|
||||
monospace;
|
||||
font-size: 14px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: ${nord.frost.nord10};
|
||||
${defaultBorderRadius}
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#waybar {
|
||||
background: transparent;
|
||||
color: ${nord.snowStorm.nord6};
|
||||
margin: 5px 5px;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: ${nord.frost.nord8};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
#workspaces {
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultBorderRadius}
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
margin-left: 0.6rem;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
color: ${nord.frost.nord7};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
#workspaces button {
|
||||
color: ${nord.frost.nord10};
|
||||
${defaultBorderRadius}
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
color: ${nord.snowStorm.nord6};
|
||||
background: ${nord.aurora.nord13};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: ${nord.frost.nord8};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: ${nord.polarNight.nord0};
|
||||
background: ${nord.snowStorm.nord6};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
#workspaces button:hover {
|
||||
color: ${nord.frost.nord7};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
|
||||
#tooltip {
|
||||
background: ${nord.polarNight.nord0};
|
||||
border-color: ${nord.polarNight.nord0};
|
||||
${defaultBorderRadius}
|
||||
border-width: 1rem;
|
||||
border-style: solid;
|
||||
}
|
||||
#workspaces button.focused {
|
||||
color: ${nord.snowStorm.nord6};
|
||||
background: ${nord.aurora.nord13};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
|
||||
#window {
|
||||
color: ${nord.aurora.nord15};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultBorderRadius}
|
||||
${defaultCenterOptions}
|
||||
margin-left: 4rem;
|
||||
margin-right: 400rem;
|
||||
}
|
||||
#workspaces button.urgent {
|
||||
color: ${nord.polarNight.nord0};
|
||||
background: ${nord.snowStorm.nord6};
|
||||
${defaultBorderRadius}
|
||||
}
|
||||
|
||||
/* make window module transparent when no windows present */
|
||||
#window.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
#tooltip {
|
||||
background: ${nord.polarNight.nord0};
|
||||
border-color: ${nord.polarNight.nord0};
|
||||
${defaultBorderRadius}
|
||||
border-width: 1rem;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
color: ${nord.frost.nord10};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${borderRight}
|
||||
}
|
||||
#window {
|
||||
color: ${nord.aurora.nord15};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultBorderRadius}
|
||||
${defaultCenterOptions}
|
||||
margin-left: 4rem;
|
||||
margin-right: 400rem;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: ${nord.aurora.nord15};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
min-width: 3rem;
|
||||
}
|
||||
/* make window module transparent when no windows present */
|
||||
#window.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${borderLeft}
|
||||
}
|
||||
#custom-weather {
|
||||
color: ${nord.frost.nord10};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${borderRight}
|
||||
}
|
||||
|
||||
/* ------------- */
|
||||
#battery {
|
||||
color: ${nord.aurora.nord15};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
min-width: 3rem;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
color: ${nord.frost.nord10};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${borderRight}
|
||||
padding-right: 1rem;
|
||||
}
|
||||
#clock {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${borderLeft}
|
||||
}
|
||||
|
||||
#idle_inhibitor:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
/* ------------- */
|
||||
|
||||
#network {
|
||||
color: ${nord.aurora.nord15};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
padding-right: 15px;
|
||||
}
|
||||
#idle_inhibitor {
|
||||
color: ${nord.frost.nord10};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${borderRight}
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
#network:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
#idle_inhibitor:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#bluetooth {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
#network {
|
||||
color: ${nord.aurora.nord15};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#bluetooth:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
#network:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#wireplumber.source {
|
||||
color: ${nord.frost.nord8};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
#bluetooth {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#wireplumber.source.muted {
|
||||
animation-name: blinker;
|
||||
animation-duration: 2s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
#bluetooth:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#wireplumber.source:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
#wireplumber.source {
|
||||
color: ${nord.frost.nord8};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#wireplumber.sink {
|
||||
color: ${nord.frost.nord7};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
#wireplumber.source.muted {
|
||||
animation-name: blinker;
|
||||
animation-duration: 2s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
#wireplumber.sink.muted {
|
||||
animation-name: blinker;
|
||||
animation-duration: 5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
#wireplumber.source:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#wireplumber.sink:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
#wireplumber.sink {
|
||||
color: ${nord.frost.nord7};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#keyboard-state.numlock {
|
||||
color: ${nord.frost.nord8};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
#wireplumber.sink.muted {
|
||||
animation-name: blinker;
|
||||
animation-duration: 5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
#keyboard-state.capslock {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
#wireplumber.sink:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#temperature.gpu {
|
||||
color: ${nord.frost.nord10};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
#keyboard-state.numlock {
|
||||
color: ${nord.frost.nord8};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#temperature.gpu:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
#keyboard-state.capslock {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0
|
||||
}
|
||||
#temperature.gpu {
|
||||
color: ${nord.frost.nord10};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* ------------- */
|
||||
#temperature.gpu:hover {
|
||||
background: ${nord.polarNight.nord3};
|
||||
}
|
||||
|
||||
#tray {
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
${defaultBorderRadius}
|
||||
margin-right: 0.6rem;
|
||||
}
|
||||
#temperature {
|
||||
color: ${nord.frost.nord9};
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
border-radius: 0
|
||||
}
|
||||
|
||||
/* ------------- */
|
||||
'' + cfg.extraModulesStyle or '''';
|
||||
/* ------------- */
|
||||
|
||||
#tray {
|
||||
background-color: ${nord.polarNight.nord0};
|
||||
${defaultOpacity}
|
||||
${defaultCenterOptions}
|
||||
${defaultBorderRadius}
|
||||
margin-right: 0.6rem;
|
||||
}
|
||||
|
||||
/* ------------- */
|
||||
''
|
||||
+ cfg.extraModulesStyle or '''';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ in
|
||||
|
||||
modules-right = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
};
|
||||
|
||||
networkInterface = mkOption {
|
||||
@@ -92,4 +92,4 @@ in
|
||||
# default = { };
|
||||
# };
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, lib, namespace, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.mjallen.programs.waybar;
|
||||
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.mjallen.programs.waybar;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ let
|
||||
nord = import ../../desktop/theme/nord.nix;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
config = mkIf cfg.enable {
|
||||
programs.wlogout = {
|
||||
enable = false;
|
||||
@@ -101,4 +101,4 @@ in
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@ with lib;
|
||||
default = "Deja Vu Sans";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@ with lib;
|
||||
default = "Deja Vu Sans";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,4 +26,4 @@ in
|
||||
# fi
|
||||
# '';
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.mjallen.sops;
|
||||
|
||||
@@ -25,4 +30,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@ with lib;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ in
|
||||
default = "Austin Horstman";
|
||||
description = "The full name of the user.";
|
||||
};
|
||||
home = mkOption {
|
||||
home = mkOption {
|
||||
type = (types.nullOr types.str);
|
||||
default = home-directory;
|
||||
description = "The user's home directory.";
|
||||
@@ -154,4 +154,4 @@ in
|
||||
};
|
||||
}
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.nas-apps.actual;
|
||||
@@ -24,7 +29,8 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config = { lib, ... }:
|
||||
config =
|
||||
{ lib, ... }:
|
||||
{
|
||||
services.actual = {
|
||||
enable = true;
|
||||
@@ -63,13 +69,13 @@ in
|
||||
'';
|
||||
|
||||
systemd.services = {
|
||||
actual = {
|
||||
actual = {
|
||||
environment.ACTUAL_CONFIG_PATH = lib.mkForce "${dataDir}/config.json";
|
||||
serviceConfig = {
|
||||
ExecStart = lib.mkForce "${pkgs.actual-server}/bin/actual-server --config ${dataDir}/config.json";
|
||||
WorkingDirectory = lib.mkForce dataDir;
|
||||
StateDirectory = lib.mkForce dataDir;
|
||||
StateDirectoryMode = lib.mkForce 0700;
|
||||
StateDirectoryMode = lib.mkForce 700;
|
||||
DynamicUser = lib.mkForce false;
|
||||
ProtectSystem = lib.mkForce null;
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
}:
|
||||
let
|
||||
cfg = config.share.hardware.amd;
|
||||
pkgsVersion = pkgs;#.unstable;
|
||||
pkgsVersion = pkgs; # .unstable;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
@@ -11,4 +11,4 @@
|
||||
magicOrExtension = "\\x7fELF....AI\\x02";
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,9 +40,11 @@ in
|
||||
{
|
||||
nixpkgs.config = {
|
||||
allowUnfree = lib.mkForce true;
|
||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||
"unrar"
|
||||
];
|
||||
allowUnfreePredicate =
|
||||
pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"unrar"
|
||||
];
|
||||
};
|
||||
|
||||
# Enable radarr service
|
||||
@@ -207,7 +209,7 @@ in
|
||||
};
|
||||
|
||||
networking = {
|
||||
nat = {
|
||||
nat = {
|
||||
forwardPorts = [
|
||||
{
|
||||
destination = "${cfg.localAddress}:${toString cfg.radarr.port}";
|
||||
@@ -232,8 +234,22 @@ in
|
||||
];
|
||||
};
|
||||
firewall = {
|
||||
allowedTCPPorts = [ cfg.radarr.port cfg.sonarr.port cfg.sabnzbd.port 8080 cfg.deluge.port cfg.jackett.port ];
|
||||
allowedUDPPorts = [ cfg.radarr.port cfg.sonarr.port cfg.sabnzbd.port 8080 cfg.deluge.port cfg.jackett.port ];
|
||||
allowedTCPPorts = [
|
||||
cfg.radarr.port
|
||||
cfg.sonarr.port
|
||||
cfg.sabnzbd.port
|
||||
8080
|
||||
cfg.deluge.port
|
||||
cfg.jackett.port
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
cfg.radarr.port
|
||||
cfg.sonarr.port
|
||||
cfg.sabnzbd.port
|
||||
8080
|
||||
cfg.deluge.port
|
||||
cfg.jackett.port
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ pkgs, system, lib, ... }:
|
||||
{
|
||||
pkgs,
|
||||
system,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
isArm = ("aarch64-linux" == system);
|
||||
in
|
||||
@@ -14,7 +19,7 @@ in
|
||||
mask = ''\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'';
|
||||
openBinary = true;
|
||||
interpreter = "${pkgs.box64}/bin/box64";
|
||||
preserveArgvZero = true;
|
||||
preserveArgvZero = true;
|
||||
matchCredentials = true;
|
||||
fixBinary = false;
|
||||
};
|
||||
@@ -22,4 +27,4 @@ in
|
||||
};
|
||||
|
||||
zramSwap.enable = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.bootloader.lanzaboote;
|
||||
@@ -15,4 +20,4 @@ in
|
||||
configurationLimit = cfg.configLimit;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@ with lib;
|
||||
default = 10;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
boot.plymouth = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.nas-apps.crowdsec;
|
||||
@@ -7,23 +12,25 @@ in
|
||||
imports = [ ./options.nix ];
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
crowdsec = let
|
||||
yaml = (pkgs.formats.yaml {}).generate;
|
||||
acquisitions_file = yaml "acquisitions.yaml" {
|
||||
source = "journalctl";
|
||||
journalctl_filter = ["_SYSTEMD_UNIT=sshd.service"];
|
||||
labels.type = "syslog";
|
||||
};
|
||||
in {
|
||||
enable = true;
|
||||
enrollKeyFile = "${cfg.dataDir}/enroll.key";
|
||||
settings = {
|
||||
crowdsec_service.acquisition_path = acquisitions_file;
|
||||
api.server = {
|
||||
listen_uri = "0.0.0.0:${toString cfg.port}";
|
||||
crowdsec =
|
||||
let
|
||||
yaml = (pkgs.formats.yaml { }).generate;
|
||||
acquisitions_file = yaml "acquisitions.yaml" {
|
||||
source = "journalctl";
|
||||
journalctl_filter = [ "_SYSTEMD_UNIT=sshd.service" ];
|
||||
labels.type = "syslog";
|
||||
};
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
enrollKeyFile = "${cfg.dataDir}/enroll.key";
|
||||
settings = {
|
||||
crowdsec_service.acquisition_path = acquisitions_file;
|
||||
api.server = {
|
||||
listen_uri = "0.0.0.0:${toString cfg.port}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
crowdsec-firewall-bouncer = {
|
||||
enable = true;
|
||||
@@ -35,17 +42,19 @@ in
|
||||
};
|
||||
|
||||
systemd.services.crowdsec.serviceConfig = {
|
||||
ExecStartPre = let
|
||||
script = pkgs.writeScriptBin "register-bouncer" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
set -eu
|
||||
set -o pipefail
|
||||
ExecStartPre =
|
||||
let
|
||||
script = pkgs.writeScriptBin "register-bouncer" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
if ! cscli bouncers list | grep -q "nas-bouncer"; then
|
||||
cscli bouncers add "nas-bouncer" --key "${cfg.apiKey}"
|
||||
fi
|
||||
'';
|
||||
in ["${script}/bin/register-bouncer"];
|
||||
if ! cscli bouncers list | grep -q "nas-bouncer"; then
|
||||
cscli bouncers add "nas-bouncer" --key "${cfg.apiKey}"
|
||||
fi
|
||||
'';
|
||||
in
|
||||
[ "${script}/bin/register-bouncer" ];
|
||||
};
|
||||
|
||||
networking = {
|
||||
@@ -55,4 +64,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.cosmic;
|
||||
in
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.desktop.cosmic = {
|
||||
enable = mkEnableOption "enable cosmic settings";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.gnome;
|
||||
in
|
||||
@@ -17,7 +23,7 @@ in
|
||||
|
||||
gnome.gnome-remote-desktop.enable = true;
|
||||
};
|
||||
|
||||
|
||||
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
|
||||
programs = {
|
||||
@@ -27,4 +33,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, pkgs, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.desktop.hyprland;
|
||||
|
||||
@@ -26,7 +32,10 @@ in
|
||||
imports = [ ../../../home/desktop/hyprland/options.nix ];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ bing-wallpaper pkgs.jq ];
|
||||
environment.systemPackages = [
|
||||
bing-wallpaper
|
||||
pkgs.jq
|
||||
];
|
||||
|
||||
services = {
|
||||
displayManager = {
|
||||
@@ -66,7 +75,7 @@ in
|
||||
xwayland.enable = true;
|
||||
portalPackage = lib.mkDefault pkgs.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
|
||||
|
||||
nm-applet.enable = true;
|
||||
};
|
||||
|
||||
@@ -121,18 +130,18 @@ in
|
||||
reload-bing-wallpaper = {
|
||||
description = "Timer for reload-bing-wallpaper";
|
||||
wantedBy = [ "timers.target" ];
|
||||
|
||||
|
||||
# Timer configuration
|
||||
timerConfig = {
|
||||
OnCalendar = "daily"; # Check every day
|
||||
Persistent = true; # Run immediately if last run was missed
|
||||
OnCalendar = "daily"; # Check every day
|
||||
Persistent = true; # Run immediately if last run was missed
|
||||
Unit = "reload-bing-wallpaper.service";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
extraConfig = ''
|
||||
DefaultTimeoutStopSec=10s
|
||||
DefaultTimeoutStopSec=10s
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
nord = import ./theme.nix;
|
||||
themeSize = "compact"; # [ "standard" "compact" ]
|
||||
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
||||
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
||||
themeSize = "compact"; # [ "standard" "compact" ]
|
||||
themeAccent = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||
themeVariant = "nord"; # [ "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" "black" "rimless" "normal" "float" ]
|
||||
themeColor = "dark"; # [ "standard" "light" "dark" ]
|
||||
iconThemeVariant = "all"; # [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]
|
||||
iconScheme = "nord"; # [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" "all" ]
|
||||
|
||||
@@ -105,4 +105,4 @@ in
|
||||
};
|
||||
|
||||
theme = nord;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, system, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
isArm = builtins.match "aarch64*" system != null;
|
||||
rootDisk = "/dev/nvme0n1";
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.hardware.disko = {
|
||||
enable = mkEnableOption "enable disko";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{ config, lib, system, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
system,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.hardware.disko;
|
||||
isArm = builtins.match "aarch64*" system != null;
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
fonts.packages = with pkgs; [
|
||||
font-awesome
|
||||
noto-fonts
|
||||
noto-fonts-color-emoji
|
||||
meslo-lgs-nf
|
||||
] ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
||||
fonts.packages =
|
||||
with pkgs;
|
||||
[
|
||||
font-awesome
|
||||
noto-fonts
|
||||
noto-fonts-color-emoji
|
||||
meslo-lgs-nf
|
||||
]
|
||||
++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
||||
|
||||
fonts.fontconfig.defaultFonts = {
|
||||
emoji = [
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.share.gaming;
|
||||
pkgsVersion = pkgs; #.unstable;
|
||||
pkgsVersion = pkgs; # .unstable;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
@@ -17,7 +22,7 @@ in
|
||||
remotePlay.openFirewall = true;
|
||||
# Open ports in the firewall for Source Dedicated Server
|
||||
dedicatedServer.openFirewall = true;
|
||||
extraCompatPackages = with pkgsVersion; [ proton-ge-bin];
|
||||
extraCompatPackages = with pkgsVersion; [ proton-ge-bin ];
|
||||
gamescopeSession = {
|
||||
enable = true;
|
||||
args = [
|
||||
|
||||
@@ -34,7 +34,8 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config = { lib, ... }:
|
||||
config =
|
||||
{ lib, ... }:
|
||||
{
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
@@ -71,7 +72,10 @@ in
|
||||
networking = {
|
||||
firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [ cfg.httpPort cfg.sshPort ];
|
||||
allowedTCPPorts = [
|
||||
cfg.httpPort
|
||||
cfg.sshPort
|
||||
];
|
||||
};
|
||||
# Use systemd-resolved inside the container
|
||||
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
|
||||
@@ -122,8 +126,14 @@ in
|
||||
];
|
||||
};
|
||||
firewall = {
|
||||
allowedTCPPorts = [ cfg.httpPort cfg.sshPort ];
|
||||
allowedUDPPorts = [ cfg.httpPort cfg.sshPort ];
|
||||
allowedTCPPorts = [
|
||||
cfg.httpPort
|
||||
cfg.sshPort
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
cfg.httpPort
|
||||
cfg.sshPort
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -11,4 +11,4 @@
|
||||
"/home"
|
||||
];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ lib, system, ... }:
|
||||
let
|
||||
isArm = "aarch64-linux" == system;
|
||||
isArm = "aarch64-linux" == system;
|
||||
in
|
||||
{
|
||||
hardware = {
|
||||
|
||||
@@ -45,21 +45,26 @@ in
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
|
||||
# Pass inputs so external modules can access them
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
# Pass inputs so external modules can access them
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
|
||||
# Make ALL external HM modules available globally
|
||||
sharedModules = with inputs; [
|
||||
sops-nix.homeManagerModules.sops
|
||||
# Add any other external HM modules here
|
||||
] ++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ]);
|
||||
|
||||
users.${config.${namespace}.user.name} = lib.mkAliasDefinitions options.${namespace}.home.extraOptions;
|
||||
# Make ALL external HM modules available globally
|
||||
sharedModules =
|
||||
with inputs;
|
||||
[
|
||||
sops-nix.homeManagerModules.sops
|
||||
# Add any other external HM modules here
|
||||
]
|
||||
++ (if (!isArm) then with inputs; [ steam-rom-manager.homeManagerModules.default ] else [ ]);
|
||||
|
||||
users.${config.${namespace}.user.name} =
|
||||
lib.mkAliasDefinitions
|
||||
options.${namespace}.home.extraOptions;
|
||||
# users.admin = lib.mkAliasDefinitions options.${namespace}.home.extraOptions;
|
||||
|
||||
verbose = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.${namespace}.services.home-assistant;
|
||||
mosquittoPort = 1883;
|
||||
zigbee2mqttPort = 8080;
|
||||
|
||||
|
||||
# In configuration.nix or a separate file
|
||||
python-steam = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "steam";
|
||||
@@ -74,7 +80,7 @@ in
|
||||
"wyoming"
|
||||
"zha"
|
||||
];
|
||||
|
||||
|
||||
customComponents = with pkgs.home-assistant-custom-components; [
|
||||
# nixpkgs
|
||||
auth-header
|
||||
@@ -106,113 +112,114 @@ in
|
||||
zigbee2mqtt-networkmap
|
||||
];
|
||||
# use postgresql instead of sqlite
|
||||
extraPackages = ps: with ps; [
|
||||
# Core functionality
|
||||
aiohttp
|
||||
aiodns
|
||||
paho-mqtt
|
||||
pillow
|
||||
pytz
|
||||
pyyaml
|
||||
sqlalchemy
|
||||
|
||||
# Discovery & networking
|
||||
zeroconf
|
||||
netdisco
|
||||
ifaddr
|
||||
ssdp
|
||||
|
||||
# Device protocols
|
||||
pyserial # Serial communications
|
||||
bluepy # Bluetooth LE
|
||||
|
||||
# Smart home ecosystems
|
||||
mutagen # Media file metadata
|
||||
pysonos # Sonos
|
||||
pywemo # Belkin WeMo
|
||||
python-miio # Xiaomi devices
|
||||
python-kasa # TP-Link
|
||||
|
||||
# Sensors & monitoring
|
||||
meteocalc # Weather calculations
|
||||
speedtest-cli # Internet speed
|
||||
|
||||
# Visualization & UI
|
||||
matplotlib # Graphing
|
||||
|
||||
# Security
|
||||
bcrypt
|
||||
cryptography
|
||||
pyjwt
|
||||
|
||||
# Media
|
||||
ha-ffmpeg # Camera streams
|
||||
|
||||
# Specialized integrations
|
||||
python-matter-server # Matter protocol
|
||||
|
||||
# System integrations
|
||||
psutil # System monitoring
|
||||
|
||||
psycopg2
|
||||
numpy
|
||||
hassil
|
||||
pyturbojpeg
|
||||
paho-mqtt
|
||||
pychromecast
|
||||
pyatv
|
||||
python-otbr-api
|
||||
brother
|
||||
pyipp
|
||||
govee-ble
|
||||
adguardhome
|
||||
nextcord
|
||||
aiogithubapi
|
||||
jellyfin-apiclient-python
|
||||
pylitterbot
|
||||
dateparser
|
||||
aionut
|
||||
nextcloudmonitor
|
||||
ollama
|
||||
pynecil
|
||||
aiopyarr
|
||||
pysabnzbd
|
||||
getmac
|
||||
zigpy
|
||||
bellows # For Zigbee EmberZNet-based adapters
|
||||
zigpy-xbee # For XBee adapters
|
||||
zigpy-deconz # For ConBee/RaspBee adapters
|
||||
pyicloud # iCloud
|
||||
pyatv # Apple TV
|
||||
opencv-python
|
||||
face-recognition
|
||||
ibeacon-ble
|
||||
gehomesdk
|
||||
onedrive-personal-sdk
|
||||
python-roborock
|
||||
python-steam
|
||||
apple-weatherkit
|
||||
extraPackages =
|
||||
ps: with ps; [
|
||||
# Core functionality
|
||||
aiohttp
|
||||
aiodns
|
||||
paho-mqtt
|
||||
pillow
|
||||
pytz
|
||||
pyyaml
|
||||
sqlalchemy
|
||||
|
||||
samsungctl
|
||||
samsungtvws
|
||||
# Discovery & networking
|
||||
zeroconf
|
||||
netdisco
|
||||
ifaddr
|
||||
ssdp
|
||||
|
||||
aiohomekit
|
||||
# Device protocols
|
||||
pyserial # Serial communications
|
||||
bluepy # Bluetooth LE
|
||||
|
||||
# Smart home ecosystems
|
||||
mutagen # Media file metadata
|
||||
pysonos # Sonos
|
||||
pywemo # Belkin WeMo
|
||||
python-miio # Xiaomi devices
|
||||
python-kasa # TP-Link
|
||||
|
||||
# Sensors & monitoring
|
||||
meteocalc # Weather calculations
|
||||
speedtest-cli # Internet speed
|
||||
|
||||
# Visualization & UI
|
||||
matplotlib # Graphing
|
||||
|
||||
# Security
|
||||
bcrypt
|
||||
cryptography
|
||||
pyjwt
|
||||
|
||||
# Media
|
||||
ha-ffmpeg # Camera streams
|
||||
|
||||
# Specialized integrations
|
||||
python-matter-server # Matter protocol
|
||||
|
||||
# System integrations
|
||||
psutil # System monitoring
|
||||
|
||||
psycopg2
|
||||
numpy
|
||||
hassil
|
||||
pyturbojpeg
|
||||
paho-mqtt
|
||||
pychromecast
|
||||
pyatv
|
||||
python-otbr-api
|
||||
brother
|
||||
pyipp
|
||||
govee-ble
|
||||
adguardhome
|
||||
nextcord
|
||||
aiogithubapi
|
||||
jellyfin-apiclient-python
|
||||
pylitterbot
|
||||
dateparser
|
||||
aionut
|
||||
nextcloudmonitor
|
||||
ollama
|
||||
pynecil
|
||||
aiopyarr
|
||||
pysabnzbd
|
||||
getmac
|
||||
zigpy
|
||||
bellows # For Zigbee EmberZNet-based adapters
|
||||
zigpy-xbee # For XBee adapters
|
||||
zigpy-deconz # For ConBee/RaspBee adapters
|
||||
pyicloud # iCloud
|
||||
pyatv # Apple TV
|
||||
opencv-python
|
||||
face-recognition
|
||||
ibeacon-ble
|
||||
gehomesdk
|
||||
onedrive-personal-sdk
|
||||
python-roborock
|
||||
python-steam
|
||||
apple-weatherkit
|
||||
|
||||
samsungctl
|
||||
samsungtvws
|
||||
|
||||
aiohomekit
|
||||
|
||||
icmplib
|
||||
aioelectricitymaps
|
||||
wyoming
|
||||
pysmartthings
|
||||
wakeonlan
|
||||
ephem
|
||||
];
|
||||
|
||||
icmplib
|
||||
aioelectricitymaps
|
||||
wyoming
|
||||
pysmartthings
|
||||
wakeonlan
|
||||
ephem
|
||||
];
|
||||
|
||||
config = {
|
||||
# Includes dependencies for a basic setup
|
||||
# https://www.home-assistant.io/integrations/default_config/
|
||||
default_config = {};
|
||||
default_config = { };
|
||||
|
||||
cloud = false;
|
||||
|
||||
|
||||
frontend = {
|
||||
themes = "!include_dir_merge_named themes";
|
||||
};
|
||||
@@ -262,10 +269,12 @@ in
|
||||
postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ "hass" ];
|
||||
ensureUsers = [{
|
||||
name = "hass";
|
||||
ensureDBOwnership = true;
|
||||
}];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "hass";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# Enable and configure Mosquitto MQTT broker
|
||||
@@ -303,7 +312,7 @@ in
|
||||
permit_join = true;
|
||||
# Web interface
|
||||
frontend = {
|
||||
port = zigbee2mqttPort; # Choose an available port
|
||||
port = zigbee2mqttPort; # Choose an available port
|
||||
};
|
||||
# MQTT configuration
|
||||
mqtt = {
|
||||
@@ -380,24 +389,24 @@ in
|
||||
};
|
||||
|
||||
# Enable required hardware support for the Zigbee adapter
|
||||
hardware.bluetooth.enable = true; # Some adapters use Bluetooth
|
||||
|
||||
hardware.bluetooth.enable = true; # Some adapters use Bluetooth
|
||||
|
||||
# Ensure proper permissions for Zigbee USB devices
|
||||
# services.udev.extraRules = ''
|
||||
# # For CC2531, CC2530, CC1352P-2, CC2538 and similar adapters
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a8", SYMLINK+="zigbee", MODE="0666"
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="zigbee", MODE="0666"
|
||||
|
||||
|
||||
# # For ConBee/RaspBee by Dresden Elektronik
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="1cf1", ATTRS{idProduct}=="0030", SYMLINK+="zigbee", MODE="0666"
|
||||
|
||||
|
||||
# # For Electrolama zig-a-zig-ah (zzh!)
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="zigbee", MODE="0666"
|
||||
# '';
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mosquitto # MQTT command-line tools
|
||||
usbutils # For lsusb to help identify your adapter
|
||||
mosquitto # MQTT command-line tools
|
||||
usbutils # For lsusb to help identify your adapter
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.home-assistant = {
|
||||
enable = mkEnableOption "enable home-assistant";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.immich;
|
||||
@@ -8,7 +13,7 @@ let
|
||||
dbPassword = config.sops.secrets."jallen-nas/immich/db-password".path;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Enable immich service
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.immich = {
|
||||
enable = mkEnableOption "enable immich";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.jellyfin;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.jellyfin = {
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.jellyfin = {
|
||||
enable = mkEnableOption "enable jellyfin";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.jellyseerr;
|
||||
@@ -7,7 +12,7 @@ let
|
||||
dataDir = "/var/lib/private/jellyseerr";
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
containers.jellyseerr = {
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.jellyseerr = {
|
||||
enable = mkEnableOption "enable jellyseerr";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.lubelogger;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
virtualisation.oci-containers.containers.lubelogger = {
|
||||
autoStart = true;
|
||||
image = "ghcr.io/hargata/lubelogger";
|
||||
ports = [ "6754:8080" ];
|
||||
volumes = [
|
||||
volumes = [
|
||||
"/media/nas/ssd/nix-app-data/lubelogger:/App/data"
|
||||
"/media/nas/ssd/nix-app-data/lubelogger/keys:/root/.aspnet/DataProtection-Keys"
|
||||
];
|
||||
@@ -25,4 +30,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.lubelogger = {
|
||||
enable = mkEnableOption "enable lubelogger";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ let
|
||||
in
|
||||
{
|
||||
options.${namespace}.network = with types; {
|
||||
hostName = lib.mkOption {
|
||||
hostName = lib.mkOption {
|
||||
type = str;
|
||||
default = "nixos";
|
||||
description = "The hostname of the system.";
|
||||
@@ -56,8 +56,8 @@ in
|
||||
id = "Joey's Jungle 6G";
|
||||
type = "wifi";
|
||||
};
|
||||
ipv4 = if (cfg.ipv4.method == "auto")
|
||||
then
|
||||
ipv4 =
|
||||
if (cfg.ipv4.method == "auto") then
|
||||
{
|
||||
method = "auto";
|
||||
}
|
||||
@@ -87,8 +87,8 @@ in
|
||||
id = "Joey's Jungle 5G";
|
||||
type = "wifi";
|
||||
};
|
||||
ipv4 = if (cfg.ipv4.method == "auto")
|
||||
then
|
||||
ipv4 =
|
||||
if (cfg.ipv4.method == "auto") then
|
||||
{
|
||||
method = "auto";
|
||||
}
|
||||
@@ -126,4 +126,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.nextcloud;
|
||||
|
||||
adminpass = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
|
||||
secretsFile = config.sops.secrets."jallen-nas/nextcloud/smtp_settings".path;
|
||||
jwtSecretFile = config.sops.secrets."jallen-nas/onlyoffice-key".path;
|
||||
secretsFile = config.sops.secrets."jallen-nas/nextcloud/smtp_settings".path;
|
||||
jwtSecretFile = config.sops.secrets."jallen-nas/onlyoffice-key".path;
|
||||
nextcloudUserId = config.users.users.nix-apps.uid;
|
||||
nextcloudGroupId = config.users.groups.jallen-nas.gid;
|
||||
hostAddress = "10.0.1.3";
|
||||
@@ -15,7 +21,7 @@ let
|
||||
onlyofficePortExt = 9943;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
containers.nextcloud = {
|
||||
@@ -33,7 +39,7 @@ in
|
||||
isReadOnly = true;
|
||||
mountPoint = "/run/secrets/jallen-nas/nextcloud";
|
||||
};
|
||||
|
||||
|
||||
secrets2 = {
|
||||
hostPath = "/run/secrets/jallen-nas/onlyoffice-key";
|
||||
isReadOnly = true;
|
||||
@@ -60,12 +66,17 @@ in
|
||||
};
|
||||
|
||||
config =
|
||||
{ pkgs, lib, namespace, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
networking.extraHosts = ''
|
||||
${hostAddress} host.containers protonmail-bridge
|
||||
'';
|
||||
${hostAddress} host.containers protonmail-bridge
|
||||
'';
|
||||
|
||||
services = {
|
||||
nextcloud = {
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.nextcloud = {
|
||||
enable = mkEnableOption "enable nextcloud";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,4 +33,4 @@
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,11 +15,11 @@ in
|
||||
hardware = {
|
||||
# Nvidia
|
||||
nvidia = {
|
||||
package =
|
||||
if cfg.enableBeta then
|
||||
config.boot.kernelPackages.nvidiaPackages.beta
|
||||
else
|
||||
config.boot.kernelPackages.nvidiaPackages.latest;
|
||||
package =
|
||||
if cfg.enableBeta then
|
||||
config.boot.kernelPackages.nvidiaPackages.beta
|
||||
else
|
||||
config.boot.kernelPackages.nvidiaPackages.latest;
|
||||
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
@@ -33,9 +33,9 @@ in
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = cfg.enableOpen;
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.ollama;
|
||||
|
||||
llamaPackage = pkgs.llama-cpp.overrideAttrs (old: {
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ggml-org";
|
||||
repo = "llama.cpp";
|
||||
rev = "b4920";
|
||||
owner = "ggml-org";
|
||||
repo = "llama.cpp";
|
||||
rev = "b4920";
|
||||
sha256 = "sha256-SnQIeY74JpAPRMxWcpklDH5D4CQvAgi0GYx5+ECk2J4=";
|
||||
};
|
||||
# Optionally override other attributes if you need to
|
||||
@@ -16,7 +22,7 @@ let
|
||||
});
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.ollama = {
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.ollama = {
|
||||
enable = mkEnableOption "enable ollama";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.paperless;
|
||||
@@ -10,7 +15,7 @@ let
|
||||
paperlessPkg = pkgs.paperless-ngx;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
containers.paperless = {
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.paperless = {
|
||||
enable = mkEnableOption "enable paperless";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,4 +75,4 @@
|
||||
nixd
|
||||
];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,4 +28,4 @@
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
services = {
|
||||
|
||||
|
||||
kmscon = {
|
||||
enable = lib.mkDefault false;
|
||||
hwRender = true;
|
||||
@@ -30,7 +30,7 @@
|
||||
# Enable Avahi for .local hostname resolution
|
||||
avahi = {
|
||||
enable = lib.mkDefault true;
|
||||
nssmdns4 = lib.mkDefault true; # For modern systems, use nssmdns4 instead of nssmdns
|
||||
nssmdns4 = lib.mkDefault true; # For modern systems, use nssmdns4 instead of nssmdns
|
||||
openFirewall = lib.mkDefault true;
|
||||
publish = {
|
||||
enable = lib.mkDefault true;
|
||||
|
||||
@@ -12,4 +12,4 @@
|
||||
enableZshIntegration = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.traefik;
|
||||
@@ -45,10 +50,10 @@ let
|
||||
metricsPort = 8082;
|
||||
|
||||
forwardPorts = [
|
||||
httpPort
|
||||
httpsPort
|
||||
traefikPort
|
||||
metricsPort
|
||||
httpPort
|
||||
httpsPort
|
||||
traefikPort
|
||||
metricsPort
|
||||
];
|
||||
|
||||
# misc
|
||||
@@ -57,7 +62,7 @@ let
|
||||
authentikAddress = "http://${serverIp}:9000/outpost.goauthentik.io/auth/traefik";
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
sops = {
|
||||
@@ -76,7 +81,9 @@ in
|
||||
"traefik.env" = {
|
||||
content = ''
|
||||
CLOUDFLARE_DNS_API_TOKEN = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-dns-api-token"}
|
||||
CLOUDFLARE_ZONE_API_TOKEN = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-zone-api-token"}
|
||||
CLOUDFLARE_ZONE_API_TOKEN = ${
|
||||
config.sops.placeholder."jallen-nas/traefik/cloudflare-zone-api-token"
|
||||
}
|
||||
CLOUDFLARE_API_KEY = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-api-key"}
|
||||
CLOUDFLARE_EMAIL = ${config.sops.placeholder."jallen-nas/traefik/cloudflare-email"}
|
||||
'';
|
||||
@@ -95,7 +102,7 @@ in
|
||||
services.traefik = {
|
||||
enable = true;
|
||||
dataDir = dataDir;
|
||||
group = "jallen-nas";#group;
|
||||
group = "jallen-nas"; # group;
|
||||
environmentFiles = [ "${config.services.traefik.dataDir}/traefik.env" ]; # todo: sops
|
||||
|
||||
staticConfigOptions = {
|
||||
@@ -129,7 +136,12 @@ in
|
||||
entryPoint = "metrics";
|
||||
addEntryPointsLabels = true;
|
||||
addServicesLabels = true;
|
||||
buckets = [0.1 0.3 1.2 5.0]; # Response time buckets
|
||||
buckets = [
|
||||
0.1
|
||||
0.3
|
||||
1.2
|
||||
5.0
|
||||
]; # Response time buckets
|
||||
};
|
||||
};
|
||||
|
||||
@@ -215,8 +227,7 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
internal-ipallowlist =
|
||||
{
|
||||
internal-ipallowlist = {
|
||||
ipAllowList = {
|
||||
sourceRange = [
|
||||
"127.0.0.1/32"
|
||||
@@ -305,7 +316,10 @@ in
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "HostRegexp(`{subdomain:[a-z]+}.mjallen.dev`) && PathPrefix(`/outpost.goauthentik.io/`)";
|
||||
service = "auth";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
priority = 15;
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
@@ -314,21 +328,30 @@ in
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`actual.${domain}`)";
|
||||
service = "actual";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
authentik = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`authentik.${domain}`)";
|
||||
service = "authentik";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
cache = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`cache.${domain}`)";
|
||||
service = "cache";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
priority = 10;
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
@@ -336,21 +359,31 @@ in
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`cloud.${domain}`)";
|
||||
service = "cloud";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
gitea = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`gitea.${domain}`)";
|
||||
service = "gitea";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
hass = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`hass.${domain}`)";
|
||||
service = "hass";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" "authentik" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
"authentik"
|
||||
];
|
||||
priority = 10;
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
@@ -358,35 +391,51 @@ in
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`immich.${domain}`)";
|
||||
service = "immich";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
jellyfin = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`jellyfin.${domain}`)";
|
||||
service = "jellyfin";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
jellyseerr = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`jellyseerr.${domain}`)";
|
||||
service = "jellyseerr";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
lubelogger = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`lubelogger.${domain}`)";
|
||||
service = "lubelogger";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
onlyoffice = {
|
||||
entryPoints = [ "websecure" ];
|
||||
rule = "Host(`office.${domain}`)";
|
||||
service = "onlyoffice";
|
||||
middlewares = [ "crowdsec" "whitelist-geoblock" "onlyoffice-websocket" ];
|
||||
middlewares = [
|
||||
"crowdsec"
|
||||
"whitelist-geoblock"
|
||||
"onlyoffice-websocket"
|
||||
];
|
||||
tls.certResolver = "letsencrypt";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.traefik = {
|
||||
enable = mkEnableOption "enable traefik";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ let
|
||||
in
|
||||
{
|
||||
options.${namespace}.user = with types; {
|
||||
email = lib.mkOption {
|
||||
email = lib.mkOption {
|
||||
type = str;
|
||||
default = "jalle008@proton.me";
|
||||
description = "The email of the user.";
|
||||
@@ -74,4 +74,4 @@ in
|
||||
hashedPasswordFile = cfg.passwordFile;
|
||||
} // cfg.extraOptions;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{ config, lib, namespace, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.${namespace}.services.wyoming;
|
||||
in
|
||||
{
|
||||
imports = [ ./options.nix ];
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.wyoming = {
|
||||
@@ -24,4 +29,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@ with lib;
|
||||
options.${namespace}.services.wyoming = {
|
||||
enable = mkEnableOption "enable wyoming";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@ final: _prev: {
|
||||
system = final.system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ ... }:
|
||||
final: prev: {
|
||||
waybar = prev.waybar.overrideAttrs (old: {
|
||||
mesonFlags = (old.mesonFlags or []) ++ [ "-Dexperimental=true" ];
|
||||
mesonFlags = (old.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
|
||||
});
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user