diff --git a/flake.nix b/flake.nix
index ee6bee8..c213938 100644
--- a/flake.nix
+++ b/flake.nix
@@ -6,55 +6,67 @@
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
- url = "github:nix-community/home-manager/release-25.05";
- inputs.nixpkgs.follows = "nixpkgs";
+ url = "github:nix-community/home-manager/release-25.05";
+ inputs.nixpkgs.follows = "nixpkgs";
};
-
- nix-colors.url = "github:misterio77/nix-colors";
+
+ nix-colors.url = "github:misterio77/nix-colors";
sops-nix = {
- url = "github:Mic92/sops-nix";
- inputs.nixpkgs.follows = "nixpkgs";
+ url = "github:Mic92/sops-nix";
+ inputs.nixpkgs.follows = "nixpkgs";
};
lanzaboote = {
- url = "github:nix-community/lanzaboote/v0.4.2";
+ url = "github:nix-community/lanzaboote/v0.4.2";
inputs.nixpkgs.follows = "nixpkgs";
};
-
+
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
};
- outputs = { self, nixpkgs, unstable, home-manager, nix-colors, sops-nix, lanzaboote, nixos-hardware, ... }@inputs:
+ outputs =
+ {
+ self,
+ nixpkgs,
+ unstable,
+ home-manager,
+ nix-colors,
+ sops-nix,
+ lanzaboote,
+ nixos-hardware,
+ ...
+ }@inputs:
let
system = "x86_64-linux";
- in {
+ in
+ {
- # legolas
+ # legolas
nixosConfigurations.legolas = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
./hosts/legolas/configuration.nix
- home-manager.nixosModules.home-manager {
+ home-manager.nixosModules.home-manager
+ {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.gunalx = import ./home/gunalx.nix;
home-manager.backupFileExtension = "bac";
- home-manager.extraSpecialArgs = {inherit nix-colors inputs;};
+ home-manager.extraSpecialArgs = { inherit nix-colors inputs; };
}
-
- sops-nix.nixosModules.sops
-
- lanzaboote.nixosModules.lanzaboote
-
- nixos-hardware.nixosModules.dell-xps-13-9370
-
+
+ sops-nix.nixosModules.sops
+
+ lanzaboote.nixosModules.lanzaboote
+
+ nixos-hardware.nixosModules.dell-xps-13-9370
+
];
};
};
}
-
diff --git a/home/atuin.nix b/home/atuin.nix
index bd875f6..a8a1ea1 100644
--- a/home/atuin.nix
+++ b/home/atuin.nix
@@ -12,13 +12,13 @@
filter_mode_shell_up_key_binding = "directory";
# UI
- max_preview_height = 2;
- show_help = true;
+ max_preview_height = 2;
+ show_help = true;
prefers_reduced_motion = true;
# History storage
secrets_filter = true;
- enter_accept = true;
+ enter_accept = true;
# Sync v2
sync = {
@@ -28,9 +28,25 @@
# Stats
stats = {
common_subcommands = [
- "apt" "cargo" "composer" "dnf" "docker" "git" "go" "ip"
- "kubectl" "nix" "nmcli" "npm" "pecl" "pnpm" "podman"
- "port" "systemctl" "tmux" "yarn"
+ "apt"
+ "cargo"
+ "composer"
+ "dnf"
+ "docker"
+ "git"
+ "go"
+ "ip"
+ "kubectl"
+ "nix"
+ "nmcli"
+ "npm"
+ "pecl"
+ "pnpm"
+ "podman"
+ "port"
+ "systemctl"
+ "tmux"
+ "yarn"
];
common_prefix = [ "sudo" ];
};
@@ -47,7 +63,11 @@
# Search
search = {
- filters = [ "directory" "host" "session" ];
+ filters = [
+ "directory"
+ "host"
+ "session"
+ ];
};
};
};
diff --git a/home/bash.nix b/home/bash.nix
index 7009766..e64c7fd 100644
--- a/home/bash.nix
+++ b/home/bash.nix
@@ -1,28 +1,45 @@
-{ pkgs, lib, config, ... }:
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}:
{
programs.bash = {
enable = true;
- shellAliases = {
- "rebuild" = "sudo nixos-rebuild switch --no-write-lock-file --flake git+https://github.com/adrlau/nix-dotfiles.git -L --impure";
+ shellAliases = {
+ "rebuild" =
+ "sudo nixos-rebuild switch --no-write-lock-file --flake git+https://github.com/adrlau/nix-dotfiles.git -L --impure";
- "," = "comma ";
+ "," = "comma ";
- "gst" = "git status";
- "gsw" = "git switch";
- "gcm" = "git commit -m ";
- "gca" = "git commit --amend";
- "gaa" = "git add -A";
- "gb" = "git branch";
+ "gst" = "git status";
+ "gsw" = "git switch";
+ "gcm" = "git commit -m ";
+ "gca" = "git commit --amend";
+ "gaa" = "git add -A";
+ "gb" = "git branch";
- "sl" = "eza";
- "ls" = "eza";
- "lls" = "ls";
- "la" = "eza -la";
- "tree" = "eza -T";
- "neofetch" = "fastfetch";
- "htop" = "btm";
+ "sl" = "eza";
+ "ls" = "eza";
+ "lls" = "ls";
+ "la" = "eza -la";
+ "tree" = "eza -T";
+ "neofetch" = "fastfetch";
+ "htop" = "btm";
};
- historyControl = ["ignoredups" "ignorespace" "erasedups"];
- historyIgnore = [ "ls" "cd" "exit" "cd .." ".." "la"];
+ historyControl = [
+ "ignoredups"
+ "ignorespace"
+ "erasedups"
+ ];
+ historyIgnore = [
+ "ls"
+ "cd"
+ "exit"
+ "cd .."
+ ".."
+ "la"
+ ];
};
}
diff --git a/home/colors.nix b/home/colors.nix
index 85239d5..6999235 100644
--- a/home/colors.nix
+++ b/home/colors.nix
@@ -1,4 +1,9 @@
-{ pkgs, config, nix-colors, ... }:
+{
+ pkgs,
+ config,
+ nix-colors,
+ ...
+}:
let
nix-colors-lib = nix-colors.lib.contrib { inherit pkgs; };
@@ -22,7 +27,8 @@ let
lighterTeal = "2C7A6A";
lightTeal = "B0E8DA";
-in{
+in
+{
imports = [
nix-colors.homeManagerModules.default
];
@@ -56,15 +62,13 @@ in{
};
};
-
-
gtk = {
- enable = true;
- theme = {
- name = "Adwaita-dark";
- package = pkgs.gnome-themes-extra;
- };
+ enable = true;
+ theme = {
+ name = "Adwaita-dark";
+ package = pkgs.gnome-themes-extra;
};
+ };
qt = {
enable = true;
@@ -78,4 +82,3 @@ in{
];
}
-
diff --git a/home/foot.nix b/home/foot.nix
index a88e818..53c369c 100644
--- a/home/foot.nix
+++ b/home/foot.nix
@@ -1,53 +1,52 @@
-{ pkgs, lib, config, ... }:
{
- home.packages = with pkgs; [
- foot
- ];
-
- programs.foot.enable = true;
- programs.foot.settings = {
-
- main = {
- term = "xterm-256color";
- font = "0xproto:size=14";
- #dpi-aware = "yes";
- };
- mouse = {
- hide-when-typing = "yes";
- };
+ pkgs,
+ lib,
+ config,
+ ...
+}:
+{
+ home.packages = with pkgs; [
+ foot
+ ];
+ programs.foot.enable = true;
+ programs.foot.settings = {
- colors = {
- alpha = "0.7";
- foreground = "${config.colorScheme.palette.base05}";
- background = "${config.colorScheme.palette.base00}";
+ main = {
+ term = "xterm-256color";
+ font = "0xproto:size=14";
+ #dpi-aware = "yes";
+ };
+ mouse = {
+ hide-when-typing = "yes";
+ };
+
+ colors = {
+ alpha = "0.7";
+ foreground = "${config.colorScheme.palette.base05}";
+ background = "${config.colorScheme.palette.base00}";
+
+ regular0 = "${config.colorScheme.palette.base00}";
+ regular1 = "${config.colorScheme.palette.base08}";
+ regular2 = "${config.colorScheme.palette.base0B}";
+ regular3 = "${config.colorScheme.palette.base0A}";
+ regular4 = "${config.colorScheme.palette.base0D}";
+ regular5 = "${config.colorScheme.palette.base0E}";
+ regular6 = "${config.colorScheme.palette.base0C}";
+ regular7 = "${config.colorScheme.palette.base05}";
+
+ bright0 = "${config.colorScheme.palette.base03}";
+ bright1 = "${config.colorScheme.palette.base08}";
+ bright2 = "${config.colorScheme.palette.base0B}";
+ bright3 = "${config.colorScheme.palette.base0A}";
+ bright4 = "${config.colorScheme.palette.base0D}";
+ bright5 = "${config.colorScheme.palette.base0E}";
+ bright6 = "${config.colorScheme.palette.base0C}";
+ bright7 = "${config.colorScheme.palette.base07}";
+ selection-foreground = "${config.colorScheme.palette.base00}";
+ selection-background = "${config.colorScheme.palette.base0A}";
+ };
- regular0 = "${config.colorScheme.palette.base00}";
- regular1 = "${config.colorScheme.palette.base08}";
- regular2 = "${config.colorScheme.palette.base0B}";
- regular3 = "${config.colorScheme.palette.base0A}";
- regular4 = "${config.colorScheme.palette.base0D}";
- regular5 = "${config.colorScheme.palette.base0E}";
- regular6 = "${config.colorScheme.palette.base0C}";
- regular7 = "${config.colorScheme.palette.base05}";
-
- bright0 = "${config.colorScheme.palette.base03}";
- bright1 = "${config.colorScheme.palette.base08}";
- bright2 = "${config.colorScheme.palette.base0B}";
- bright3 = "${config.colorScheme.palette.base0A}";
- bright4 = "${config.colorScheme.palette.base0D}";
- bright5 = "${config.colorScheme.palette.base0E}";
- bright6 = "${config.colorScheme.palette.base0C}";
- bright7 = "${config.colorScheme.palette.base07}";
- selection-foreground = "${config.colorScheme.palette.base00}";
- selection-background = "${config.colorScheme.palette.base0A}";
};
-
-
-
- };
-
-
}
-
diff --git a/home/fuzzel.nix b/home/fuzzel.nix
index f9f6023..159fd88 100644
--- a/home/fuzzel.nix
+++ b/home/fuzzel.nix
@@ -1,4 +1,10 @@
-{ config, pkgs, lib, inputs, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ inputs,
+ ...
+}:
let
palette = config.colorScheme.palette;
@@ -12,7 +18,7 @@ in
settings = {
main = {
terminal = "${pkgs.foot}/bin/foot";
- layer = "overlay";
+ layer = "overlay";
use-bold = true;
fields = "filename,name,keywords,exec,comment,generic";
tabs = "4";
@@ -22,13 +28,13 @@ in
horizontal-pad = 50; # Horizontal padding
vertical-pad = 15; # Vertical padding
- font = "monospace:size=16";
+ font = "monospace:size=16";
anchor = "top";
y-margin = 240;
- icons-enabled = true;
- # match-mode = "fzf";
- # image-size-ratio = 0.5;
+ icons-enabled = true;
+ # match-mode = "fzf";
+ # image-size-ratio = 0.5;
};
colors = {
background = "${hex palette.base00}ff";
@@ -44,8 +50,8 @@ in
border = "${hex palette.base03}ff";
};
border = {
- radius = 20;
- width = 3;
+ radius = 20;
+ width = 3;
};
};
};
diff --git a/home/git.nix b/home/git.nix
index 6c983b8..cd7abaa 100644
--- a/home/git.nix
+++ b/home/git.nix
@@ -1,6 +1,11 @@
-{ pkgs, lib, config, ... }:
{
- programs.git = {
+ pkgs,
+ lib,
+ config,
+ ...
+}:
+{
+ programs.git = {
enable = true;
extraConfig = {
pull.rebase = true;
diff --git a/home/gunalx.nix b/home/gunalx.nix
index aa3cce0..fda64f7 100644
--- a/home/gunalx.nix
+++ b/home/gunalx.nix
@@ -13,15 +13,14 @@
./waybar.nix
./wlogout.nix
./niri.nix
-
#./wallpapers.nix
+
#applications
+ ./mako.nix
./foot.nix
- #./mako.nix
- #./fcitx5.nix
- ];
-
+ #./fcitx5.nix
+ ];
programs.nix-index = {
enableBashIntegration = true;
@@ -39,4 +38,3 @@
home.stateVersion = "25.05";
}
-
diff --git a/home/mako.nix b/home/mako.nix
new file mode 100644
index 0000000..b52df08
--- /dev/null
+++ b/home/mako.nix
@@ -0,0 +1,50 @@
+{ config, pkgs, ... }:
+
+let
+ palette = config.colorscheme.palette;
+in
+{
+ services.mako = {
+ enable = true; # Turn on mako
+ package = pkgs.mako; # Which package to use
+
+ # Colors (from your colorscheme)
+ settings.background-color = "#${palette.base00}FF"; # popup background
+ settings.text-color = "#${palette.base05}FF"; # popup text
+ settings.border-color = "#${palette.base03}FF"; # popup border
+ settings.progress-color = "over #${palette.base0A}FF"; # progress bar
+
+ # Placement & layering
+ settings.anchor = "top-right"; # corner on screen
+ settings.layer = "overlay"; # appear above fullscreen
+
+ # Geometry
+ settings.width = 320; # px
+ settings.height = 120; # max px
+ settings.margin = "10"; # all edges
+ settings.padding = "8"; # all edges
+ settings.border-size = 2; # px
+ settings.border-radius = 12; # px
+
+ # Font & icons
+ settings.font = "monospace 10"; # Pango font
+ settings.icons = true; # show icons
+ settings.max-icon-size = 48; # px
+
+ # Behavior & timing
+ settings.default-timeout = 5000; # ms; 0 = no timeout
+ settings.ignore-timeout = true; # use defaultTimeout always
+ settings.actions = true; # clickable actions
+ settings.max-visible = 5; # simultaneous popups
+ settings.sort = "-time"; # newest first
+ settings.group-by = "app-name"; # grouping criteria
+ settings.markup = true; # enable Pango markup
+
+ settings."actionable=true" = {
+ default-timeout = 15000;
+ border-radius = 24;
+ border-color = "#${palette.base08}FF";
+ };
+
+ };
+}
diff --git a/home/niri.nix b/home/niri.nix
index d9689ea..bbdc053 100644
--- a/home/niri.nix
+++ b/home/niri.nix
@@ -1,641 +1,640 @@
-{ pkgs, config, lib, ... }:
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
let
palette = config.colorScheme.palette;
niriConfig = ''
- // KDL‐format niri config
+ // KDL‐format niri config
- input {
- keyboard { xkb { layout "us,no"; options "grp:ctrl_space_toggle"; }; }
- touchpad {
- tap
- natural-scroll
- accel-speed 0.1
- accel-profile "flat"
- }
- warp-mouse-to-focus
- focus-follows-mouse max-scroll-amount="0%"
+ input {
+ keyboard { xkb { layout "us,no"; options "grp:ctrl_space_toggle"; }; }
+ touchpad {
+ tap
+ natural-scroll
+ accel-speed 0.1
+ accel-profile "flat"
+ }
+ warp-mouse-to-focus
+ focus-follows-mouse max-scroll-amount="0%"
+ }
+
+ output "AU Optronics 0x212B Unknown" {
+ mode "3840x2160@60.002"
+ //focus-at-startup
+ scale 2
+ transform "normal"
+ position x=1920 y=2160
+ }
+ output "ASUSTek COMPUTER INC ASUS MB16AH L9LMTF068515" {
+ mode "1920x1080@60.000"
+ scale 1
+ transform "normal"
+ position x=1920 y=1080
+ }
+ output "Hewlett Packard HP ZR24w CNT01710L4" {
+ mode "1920x1200@60.000"
+ scale 1
+ transform "normal"
+ position x=960 y=960
+ }
+ output "Hewlett Packard HP ZR24w CNT0181039" {
+ mode "1920x1200@60.000"
+ scale 1
+ transform "normal"
+ position x=2880 y=960
+ }
+
+ //desktop outputs.
+ output "Dell Inc. DELL U2410 F525M06G123L" {
+ mode "2560x1440@144.000"
+ scale 1
+ transform "90"
+ position x=0 y=0
+ }
+ output "Samsung Electric Company LC27G5xT H4LR800468" {
+ mode "1920x1200@59.950"
+ variable-refresh-rate on-demand=true
+ //focus-at-startup
+ scale 1
+ transform "normal"
+ position x=1200 y=240
+ }
+
+ //switch events for open closing lid.
+ switch-events {
+ lid-close { spawn "swaylock"; }
+ //lid-open { spawn "notify-send" "The laptop lid is open!"; }
+ tablet-mode-on { spawn "bash" "-c" "wvkbd-mobintl"; }
+ tablet-mode-off { spawn "bash" "-c" "pkill wvkbd-mobintl"; }
}
- output "AU Optronics 0x212B Unknown" {
- mode "3840x2160@60.002"
- //focus-at-startup
- scale 2
- transform "normal"
- position x=1920 y=2160
- }
- output "ASUSTek COMPUTER INC ASUS MB16AH L9LMTF068515" {
- mode "1920x1080@60.000"
- scale 1
- transform "normal"
- position x=1920 y=1080
- }
- output "Hewlett Packard HP ZR24w CNT01710L4" {
- mode "1920x1200@60.000"
- scale 1
- transform "normal"
- position x=960 y=960
- }
- output "Hewlett Packard HP ZR24w CNT0181039" {
- mode "1920x1200@60.000"
- scale 1
- transform "normal"
- position x=2880 y=960
+
+ // Settings that influence how windows are positioned and sized.
+ // Find more information on the wiki:
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
+ layout {
+ // Set gaps around windows in logical pixels.
+ gaps 8
+
+ // When to center a column when changing focus, options are:
+ // - "never", default behavior, focusing an off-screen column will keep at the left
+ // or right edge of the screen.
+ // - "always", the focused column will always be centered.
+ // - "on-overflow", focusing a column will center it if it doesn't fit
+ // together with the previously focused column.
+ center-focused-column "on-overflow"
+
+ // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
+ preset-column-widths {
+ // Proportion sets the width as a fraction of the output width, taking gaps into account.
+ // For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
+ // The default preset widths are 1/3, 1/2 and 2/3 of the output but that is annoying.
+ proportion 0.3333333
+ proportion 0.5
+ proportion 0.6666667
+
+ // Fixed sets the width in logical pixels exactly.
+ // fixed 1920
+ }
+
+ // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
+ preset-window-heights {
+ proportion 1.0
+ proportion 0.5
+
+ }
+
+ // You can change the default width of the new windows.
+ default-column-width { proportion 1.0; }
+ // If you leave the brackets empty, the windows themselves will decide their initial width.
+ // default-column-width {}
+
+ // By default focus ring and border are rendered as a solid background rectangle
+ // behind windows. That is, they will show up through semitransparent windows.
+ // This is because windows using client-side decorations can have an arbitrary shape.
+ // If you don't like that, you should uncomment `prefer-no-csd` below.
+ // Niri will draw focus ring and border *around* windows that agree to omit their
+ // client-side decorations.
+ // Alternatively, you can override it with a window rule called
+ // `draw-border-with-background`.
+
+ // You can change how the focus ring looks.
+ focus-ring {
+ // Uncomment this line to disable the focus ring.
+ // off
+
+ // How many logical pixels the ring extends out from the windows.
+ width 2
+
+ // Colors can be set in a variety of ways:
+ // - CSS named colors: "red"
+ // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
+ // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
+
+ // Color of the ring on the active monitor.
+ active-color "${palette.base0D}"
+
+ // Color of the ring on inactive monitors.
+ inactive-color "${palette.base03}"
+
+ // You can also use gradients. They take precedence over solid colors.
+ // Gradients are rendered the same as CSS linear-gradient(angle, from, to).
+ // The angle is the same as in linear-gradient, and is optional,
+ // defaulting to 180 (top-to-bottom gradient).
+ // You can use any CSS linear-gradient tool on the web to set these up.
+ // Changing the color space is also supported, check the wiki for more info.
+ //
+ // active-gradient from="#80c8ff" to="#bbddff" angle=45
+
+ // You can also color the gradient relative to the entire view
+ // of the workspace, rather than relative to just the window itself.
+ // To do that, set relative-to="workspace-view".
+ //
+ // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
+ }
+
+ // You can also add a border. It's similar to the focus ring, but always visible.
+ border {
+ // The settings are the same as for the focus ring.
+ // If you enable the border, you probably want to disable the focus ring.
+ off
+ width 2
+ active-color "${palette.base0A}"
+ inactive-color "${palette.base03}"
+ // active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
+ // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
+ }
+
+ // You can enable drop shadows for windows.
+ shadow {
+ // Uncomment the next line to enable shadows.
+ on
+
+ // By default, the shadow draws only around its window, and not behind it.
+ // Uncomment this setting to make the shadow draw behind its window.
+ //
+ // Note that niri has no way of knowing about the CSD window corner
+ // radius. It has to assume that windows have square corners, leading to
+ // shadow artifacts inside the CSD rounded corners. This setting fixes
+ // those artifacts.
+ //
+ // However, instead you may want to set prefer-no-csd and/or
+ // geometry-corner-radius. Then, niri will know the corner radius and
+ // draw the shadow correctly, without having to draw it behind the
+ // window. These will also remove client-side shadows if the window
+ // draws any.
+ //
+ //draw-behind-window false
+
+ // You can change how shadows look. The values below are in logical
+ // pixels and match the CSS box-shadow properties.
+
+ // Softness controls the shadow blur radius.
+ softness 30
+
+ // Spread expands the shadow.
+ spread 5
+
+ // Offset moves the shadow relative to the window.
+ offset x=0 y=5
+
+ // You can also change the shadow color and opacity.
+ color "#0007"
+ }
+
+ // Struts shrink the area occupied by windows, similarly to layer-shell panels.
+ // You can think of them as a kind of outer gaps. They are set in logical pixels.
+ // Left and right struts will cause the next window to the side to always be visible.
+ // Top and bottom struts will simply add outer gaps in addition to the area occupied by
+ // layer-shell panels and regular gaps.
+ struts {
+ left 24
+ right 24
+ // top 64
+ // bottom 64
+ }
}
- //desktop outputs.
- output "Dell Inc. DELL U2410 F525M06G123L" {
- mode "2560x1440@144.000"
- scale 1
- transform "90"
- position x=0 y=0
- }
- output "Samsung Electric Company LC27G5xT H4LR800468" {
- mode "1920x1200@59.950"
- variable-refresh-rate on-demand=true
- //focus-at-startup
- scale 1
- transform "normal"
- position x=1200 y=240
+ overview {
+ zoom 0.5
+ backdrop-color "#${palette.base00}"
}
-//switch events for open closing lid.
-switch-events {
- lid-close { spawn "swaylock"; }
- //lid-open { spawn "notify-send" "The laptop lid is open!"; }
- tablet-mode-on { spawn "bash" "-c" "wvkbd-mobintl"; }
- tablet-mode-off { spawn "bash" "-c" "pkill wvkbd-mobintl"; }
-}
+ // Add lines like this to spawn processes at startup.
+ // Note that running niri as a session supports xdg-desktop-autostart,
+ // which may be more convenient to use.
+ // See the binds section below for more spawn examples.
+ // spawn-at-startup "alacritty" "-e" "fish"
+ spawn-at-startup "foot" "--server"
+ spawn-at-startup "xwayland-satellite"
+ spawn-at-startup "mako"
+ spawn-at-startup "swww-daemon"
+ spawn-at-startup "waybar"
+ spawn-at-startup "swayidle" "-w" "timeout" "601" "niri msg action power-off-monitors" "timeout" "600" "swaylock -f" "before-sleep" "swaylock -f"
+ // Uncomment this line to ask the clients to omit their client-side decorations if possible.
+ // If the client will specifically ask for CSD, the request will be honored.
+ // Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
+ // This option will also fix border/focus ring drawing behind some semitransparent windows.
+ // After enabling or disabling this, you need to restart the apps for this to take effect.
+ prefer-no-csd
-// Settings that influence how windows are positioned and sized.
-// Find more information on the wiki:
-// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
-layout {
- // Set gaps around windows in logical pixels.
- gaps 8
+ // You can change the path where screenshots are saved.
+ // A ~ at the front will be expanded to the home directory.
+ // The path is formatted with strftime(3) to give you the screenshot date and time.
+ screenshot-path "~/Pictures/screenshots/screenshot-%Y-%m-%d %H-%M-%S.png"
- // When to center a column when changing focus, options are:
- // - "never", default behavior, focusing an off-screen column will keep at the left
- // or right edge of the screen.
- // - "always", the focused column will always be centered.
- // - "on-overflow", focusing a column will center it if it doesn't fit
- // together with the previously focused column.
- center-focused-column "on-overflow"
-
- // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
- preset-column-widths {
- // Proportion sets the width as a fraction of the output width, taking gaps into account.
- // For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
- // The default preset widths are 1/3, 1/2 and 2/3 of the output but that is annoying.
- proportion 0.3333333
- proportion 0.5
- proportion 0.6666667
-
- // Fixed sets the width in logical pixels exactly.
- // fixed 1920
- }
-
- // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
- preset-window-heights {
- proportion 1.0
- proportion 0.5
-
- }
-
- // You can change the default width of the new windows.
- default-column-width { proportion 1.0; }
- // If you leave the brackets empty, the windows themselves will decide their initial width.
- // default-column-width {}
-
- // By default focus ring and border are rendered as a solid background rectangle
- // behind windows. That is, they will show up through semitransparent windows.
- // This is because windows using client-side decorations can have an arbitrary shape.
- // If you don't like that, you should uncomment `prefer-no-csd` below.
- // Niri will draw focus ring and border *around* windows that agree to omit their
- // client-side decorations.
- // Alternatively, you can override it with a window rule called
- // `draw-border-with-background`.
-
- // You can change how the focus ring looks.
- focus-ring {
- // Uncomment this line to disable the focus ring.
- // off
-
- // How many logical pixels the ring extends out from the windows.
- width 2
-
- // Colors can be set in a variety of ways:
- // - CSS named colors: "red"
- // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
- // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
-
- // Color of the ring on the active monitor.
- active-color "${palette.base0D}"
-
- // Color of the ring on inactive monitors.
- inactive-color "${palette.base03}"
-
- // You can also use gradients. They take precedence over solid colors.
- // Gradients are rendered the same as CSS linear-gradient(angle, from, to).
- // The angle is the same as in linear-gradient, and is optional,
- // defaulting to 180 (top-to-bottom gradient).
- // You can use any CSS linear-gradient tool on the web to set these up.
- // Changing the color space is also supported, check the wiki for more info.
- //
- // active-gradient from="#80c8ff" to="#bbddff" angle=45
-
- // You can also color the gradient relative to the entire view
- // of the workspace, rather than relative to just the window itself.
- // To do that, set relative-to="workspace-view".
- //
- // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
- }
-
- // You can also add a border. It's similar to the focus ring, but always visible.
- border {
- // The settings are the same as for the focus ring.
- // If you enable the border, you probably want to disable the focus ring.
+ // Animation settings.
+ // The wiki explains how to configure individual animations:
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
+ animations {
+ // Uncomment to turn off all animations.
off
- width 2
- active-color "${palette.base0A}"
- inactive-color "${palette.base03}"
- // active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
- // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
+
+ // Slow down all animations by this factor. Values below 1 speed them up instead.
+ // slowdown 0.3
+
}
- // You can enable drop shadows for windows.
- shadow {
- // Uncomment the next line to enable shadows.
- on
- // By default, the shadow draws only around its window, and not behind it.
- // Uncomment this setting to make the shadow draw behind its window.
+ layer-rule {
+ match namespace="^notifications$"
+ block-out-from "screencast"
+ }
+
+ // Window rules let you adjust behavior for individual windows.
+ // Find more information on the wiki:
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
+
+
+
+ // Floating Bitwarden extension popup windows only
+ window-rule {
+ match title=r#"^Extension: \(Bitwarden Password Manager\) - Bitwarden — Mozilla Firefox$"#
+ match title="^Extension: (Bitwarden Password Manager) - Bitwarden — Mozilla Firefox$"
+ match app-id=r#"(?i)^bitwarden$"#
+ open-floating true
+ default-column-width { proportion 0.3;}
+ default-floating-position x=0 y=0 relative-to="top-left"
+ opacity 0.9
+ block-out-from "screen-capture"
+ }
+
+ // dropdown terminal
+ window-rule {
+ match title="^dropdown$"
+ open-focused true
+ open-floating true
+ default-floating-position x=0 y=0 relative-to="top"
+ default-window-height { proportion 0.5; }
+ // 80% of the screen wide.
+ default-column-width { proportion 0.8; }
+ // block-out-from "screencast"
+ block-out-from "screen-capture"
+ }
+
+ //fix steam notifications to bottom rigth
+ window-rule {
+ match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"#
+ default-floating-position x=10 y=10 relative-to="bottom-right"
+ //block-out-from "screencast"
+ block-out-from "screen-capture"
+ }
+
+
+ window-rule {
+ geometry-corner-radius 12
+ clip-to-geometry true
+ }
+
+ window-rule {
+ match app-id="onboard"
+ match app-id="Onboard"
+ open-floating true
+ default-window-height { proportion 0.2; }
+ default-column-width { proportion 0.8; }
+ block-out-from "screen-capture"
+ }
+
+ binds {
+ // Keys consist of modifiers separated by + signs, followed by an XKB key name
+ // in the end. To find an XKB name for a particular key, you may use a program
+ // like wev.
//
- // Note that niri has no way of knowing about the CSD window corner
- // radius. It has to assume that windows have square corners, leading to
- // shadow artifacts inside the CSD rounded corners. This setting fixes
- // those artifacts.
- //
- // However, instead you may want to set prefer-no-csd and/or
- // geometry-corner-radius. Then, niri will know the corner radius and
- // draw the shadow correctly, without having to draw it behind the
- // window. These will also remove client-side shadows if the window
- // draws any.
- //
- //draw-behind-window false
+ // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
+ // when running as a winit window.
+ //
+ // Most actions that you can bind here can also be invoked programmatically with
+ // `niri msg action do-something`.
- // You can change how shadows look. The values below are in logical
- // pixels and match the CSS box-shadow properties.
+ // Mod-Shift-/, which is usually the same as Mod-?,
+ // shows a list of important hotkeys.
+ Mod+Shift+Slash { show-hotkey-overlay; }
+ Mod+Slash { toggle-overview; }
- // Softness controls the shadow blur radius.
- softness 30
+ // Suggested binds for running programs: terminal, app launcher, screen locker.
+ Mod+Return { spawn "footclient"; }
+ Mod+T { spawn "sh" "-c" "if pgrep -f '^foot -T dropdown$' >/dev/null; then pkill -f '^foot -T dropdown$'; else exec foot -T dropdown; fi"; }
+ Mod+D { spawn "fuzzel"; }
+ Mod+M { spawn "swaylock" "--grace" "0"; }
+ Mod+O { toggle-window-rule-opacity; }
- // Spread expands the shadow.
- spread 5
+ // You can also use a shell. Do this if you need pipes, multiple commands, etc.
+ // Note: the entire command goes as a single argument in the end.
+ // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
- // Offset moves the shadow relative to the window.
- offset x=0 y=5
+ // Example volume keys mappings for PipeWire & WirePlumber.
+ // The allow-when-locked=true property makes them work even when the session is locked.
+ XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; }
+ XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; }
+ XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
+ XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
- // You can also change the shadow color and opacity.
- color "#0007"
+ Mod+Shift+Q { close-window; }
+
+ Mod+Left { focus-column-or-monitor-left; }
+ Mod+Down { focus-window-or-monitor-down; }
+ Mod+Up { focus-window-or-monitor-up; }
+ Mod+Right { focus-column-or-monitor-right; }
+ Mod+H { focus-column-or-monitor-left; }
+ Mod+J { focus-window-or-monitor-down; }
+ Mod+K { focus-window-or-monitor-up; }
+ Mod+L { focus-column-or-monitor-right; }
+
+ Alt+Tab { focus-window-previous; }
+
+ Mod+Ctrl+Left { move-column-left; }
+ Mod+Ctrl+Down { move-window-down; }
+ Mod+Ctrl+Up { move-window-up; }
+ Mod+Ctrl+Right { move-column-right; }
+ Mod+Ctrl+H { move-column-left; }
+ Mod+Ctrl+J { move-window-down; }
+ Mod+Ctrl+K { move-window-up; }
+ Mod+Ctrl+L { move-column-right; }
+
+ // Alternative commands that move across workspaces when reaching
+ // the first or last window in a column.
+ // Mod+J { focus-window-or-workspace-down; }
+ // Mod+K { focus-window-or-workspace-up; }
+ // Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
+ // Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
+
+ Mod+Home { focus-column-first; }
+ Mod+End { focus-column-last; }
+ Mod+Ctrl+Home { move-column-to-first; }
+ Mod+Ctrl+End { move-column-to-last; }
+
+ Mod+Shift+Left { focus-monitor-left; }
+ Mod+Shift+Down { focus-monitor-down; }
+ Mod+Shift+Up { focus-monitor-up; }
+ Mod+Shift+Right { focus-monitor-right; }
+ Mod+Shift+H { focus-monitor-left; }
+ Mod+Shift+J { focus-monitor-down; }
+ Mod+Shift+K { focus-monitor-up; }
+ Mod+Shift+L { focus-monitor-right; }
+
+ Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
+ Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
+
+ // Alternatively, there are commands to move just a single window:
+ // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
+ // ...
+
+ // And you can also move a whole workspace to another monitor:
+ // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
+ // ...
+
+ Mod+Page_Down { focus-workspace-down; }
+ Mod+Page_Up { focus-workspace-up; }
+ Mod+U { focus-workspace-down; }
+ Mod+I { focus-workspace-up; }
+ Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
+ Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
+ Mod+Ctrl+U { move-column-to-workspace-down; }
+ Mod+Ctrl+I { move-column-to-workspace-up; }
+
+
+ Mod+Shift+Page_Down { move-workspace-down; }
+ Mod+Shift+Page_Up { move-workspace-up; }
+ Mod+Shift+U { move-workspace-down; }
+ Mod+Shift+I { move-workspace-up; }
+
+ // You can bind mouse wheel scroll ticks using the following syntax.
+ // These binds will change direction based on the natural-scroll setting.
+ //
+ // To avoid scrolling through workspaces really fast, you can use
+ // the cooldown-ms property. The bind will be rate-limited to this value.
+ // You can set a cooldown on any bind, but it's most useful for the wheel.
+ Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
+ Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
+ Mod+Shift+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
+ Mod+Ctrl+Shift+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
+
+ Mod+WheelScrollRight cooldown-ms=150 { focus-column-right; }
+ Mod+WheelScrollLeft cooldown-ms=150 { focus-column-left; }
+ Mod+Ctrl+WheelScrollRight cooldown-ms=150 { move-column-right; }
+ Mod+Ctrl+WheelScrollLeft cooldown-ms=150 { move-column-left; }
+
+ // Usually scrolling up and down with Shift in applications results in
+ // horizontal scrolling; these binds replicate that.
+ // But i found it impractical. workspaces i can graphically cahnge. and probably more rarly, so i swapped it
+ Mod+WheelScrollDown cooldown-ms=150 { focus-column-right; }
+ Mod+WheelScrollUp cooldown-ms=150 { focus-column-left; }
+ Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-right; }
+ Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-left; }
+
+ // Similarly, you can bind touchpad scroll "ticks".
+ // Touchpad scrolling is continuous, so for these binds it is split into
+ // discrete intervals.
+ // These binds are also affected by touchpad's natural-scroll, so these
+ // example binds are "inverted", since we have natural-scroll enabled for
+ // touchpads by default.
+ // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
+ // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
+
+ // You can refer to workspaces by index. However, keep in mind that
+ // niri is a dynamic workspace system, so these commands are kind of
+ // "best effort". Trying to refer to a workspace index bigger than
+ // the current workspace count will instead refer to the bottommost
+ // (empty) workspace.
+ //
+ // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
+ // will all refer to the 3rd workspace.
+ Mod+1 { focus-workspace 1; }
+ Mod+2 { focus-workspace 2; }
+ Mod+3 { focus-workspace 3; }
+ Mod+4 { focus-workspace 4; }
+ Mod+5 { focus-workspace 5; }
+ Mod+6 { focus-workspace 6; }
+ Mod+7 { focus-workspace 7; }
+ Mod+8 { focus-workspace 8; }
+ Mod+9 { focus-workspace 9; }
+ Mod+Ctrl+1 { move-column-to-workspace 1; }
+ Mod+Ctrl+2 { move-column-to-workspace 2; }
+ Mod+Ctrl+3 { move-column-to-workspace 3; }
+ Mod+Ctrl+4 { move-column-to-workspace 4; }
+ Mod+Ctrl+5 { move-column-to-workspace 5; }
+ Mod+Ctrl+6 { move-column-to-workspace 6; }
+ Mod+Ctrl+7 { move-column-to-workspace 7; }
+ Mod+Ctrl+8 { move-column-to-workspace 8; }
+ Mod+Ctrl+9 { move-column-to-workspace 9; }
+
+ // Alternatively, there are commands to move just a single window:
+ // Mod+Ctrl+1 { move-window-to-workspace 1; }
+
+ // Switches focus between the current and the previous workspace.
+ // Mod+Tab { focus-workspace-previous; }
+
+ // The following binds move the focused window in and out of a column.
+ // If the window is alone, they will consume it into the nearby column to the side.
+ // If the window is already in a column, they will expel it out.
+ Mod+BracketLeft { consume-or-expel-window-left; }
+ Mod+BracketRight { consume-or-expel-window-right; }
+
+ // Consume one window from the right to the bottom of the focused column.
+ Mod+Comma { consume-window-into-column; }
+ // Expel the bottom window from the focused column to the right.
+ Mod+Period { expel-window-from-column; }
+
+ Mod+R { switch-preset-column-width; }
+ Mod+Shift+R { switch-preset-window-height; }
+ Mod+Ctrl+R { reset-window-height; }
+ Mod+F { maximize-column; }
+ Mod+Shift+F { fullscreen-window; }
+ Mod+Ctrl+Shift+F { toggle-windowed-fullscreen; }
+
+ // Expand the focused column to space not taken up by other fully visible columns.
+ // Makes the column "fill the rest of the space".
+ Mod+Ctrl+F { expand-column-to-available-width; }
+
+ Mod+C { center-column; }
+
+ // Finer width adjustments.
+ // This command can also:
+ // * set width in pixels: "1000"
+ // * adjust width in pixels: "-5" or "+5"
+ // * set width as a percentage of screen width: "25%"
+ // * adjust width as a percentage of screen width: "-10%" or "+10%"
+ // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
+ // set-column-width "100" will make the column occupy 200 physical screen pixels.
+ Mod+Minus { set-column-width "-10%"; }
+ Mod+Equal { set-column-width "+10%"; }
+ Mod+0 { set-column-width "+10%"; }
+
+ // Finer height adjustments when in column with other windows.
+ Mod+Shift+Minus { set-window-height "-10%"; }
+ Mod+Shift+Equal { set-window-height "+10%"; }
+ Mod+Shift+0 { set-window-height "+10%"; }
+
+ // Move the focused window between the floating and the tiling layout.
+ Mod+V { toggle-window-floating; }
+ Mod+Shift+V { switch-focus-between-floating-and-tiling; }
+
+ // Toggle tabbed column display mode.
+ // Windows in this column will appear as vertical tabs,
+ // rather than stacked on top of each other.
+ Mod+W { toggle-column-tabbed-display; }
+
+ // Actions to switch layouts.
+ // Note: if you uncomment these, make sure you do NOT have
+ // a matching layout switch hotkey configured in xkb options above.
+ // Having both at once on the same hotkey will break the switching,
+ // since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
+ // Mod+Space { switch-layout "next"; }
+ // Mod+Shift+Space { switch-layout "prev"; }
+
+ Print { screenshot; }
+ Ctrl+Print { screenshot-screen; }
+ Alt+Print { screenshot-window; }
+
+ // Applications such as remote-desktop clients and software KVM switches may
+ // request that niri stops processing the keyboard shortcuts defined here
+ // so they may, for example, forward the key presses as-is to a remote machine.
+ // It's a good idea to bind an escape hatch to toggle the inhibitor,
+ // so a buggy application can't hold your session hostage.
+ //
+ // The allow-inhibiting=false property can be applied to other binds as well,
+ // which ensures niri always processes them, even when an inhibitor is active.
+ Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
+
+ // The quit action will show a confirmation dialog to avoid accidental exits.
+ Mod+Shift+E { quit; }
+ Ctrl+Alt+Delete { quit; }
+
+ // Powers off the monitors. To turn them back on, do any input like
+ // moving the mouse or pressing any other key.
+ Mod+Shift+P { power-off-monitors; }
}
- // Struts shrink the area occupied by windows, similarly to layer-shell panels.
- // You can think of them as a kind of outer gaps. They are set in logical pixels.
- // Left and right struts will cause the next window to the side to always be visible.
- // Top and bottom struts will simply add outer gaps in addition to the area occupied by
- // layer-shell panels and regular gaps.
- struts {
- left 24
- right 24
- // top 64
- // bottom 64
+
+ //Enviroment to be set.
+ environment {
+ DISPLAY ":0"
+ ELECTRON_OZONE_PLATFORM_HINT "auto"
}
-}
-
-overview {
- zoom 0.5
- backdrop-color "#${palette.base00}"
-}
-
-// Add lines like this to spawn processes at startup.
-// Note that running niri as a session supports xdg-desktop-autostart,
-// which may be more convenient to use.
-// See the binds section below for more spawn examples.
-// spawn-at-startup "alacritty" "-e" "fish"
-spawn-at-startup "foot" "--server"
-spawn-at-startup "xwayland-satellite"
-spawn-at-startup "mako"
-spawn-at-startup "swww-daemon"
-spawn-at-startup "waybar"
-spawn-at-startup "swayidle" "-w" "timeout" "601" "niri msg action power-off-monitors" "timeout" "600" "swaylock -f" "before-sleep" "swaylock -f"
-
-// Uncomment this line to ask the clients to omit their client-side decorations if possible.
-// If the client will specifically ask for CSD, the request will be honored.
-// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
-// This option will also fix border/focus ring drawing behind some semitransparent windows.
-// After enabling or disabling this, you need to restart the apps for this to take effect.
-prefer-no-csd
-
-// You can change the path where screenshots are saved.
-// A ~ at the front will be expanded to the home directory.
-// The path is formatted with strftime(3) to give you the screenshot date and time.
-screenshot-path "~/Pictures/screenshots/screenshot-%Y-%m-%d %H-%M-%S.png"
-
-// Animation settings.
-// The wiki explains how to configure individual animations:
-// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
-animations {
- // Uncomment to turn off all animations.
- off
-
- // Slow down all animations by this factor. Values below 1 speed them up instead.
- // slowdown 0.3
-
-}
-
-
-layer-rule {
- match namespace="^notifications$"
- block-out-from "screencast"
-}
-
-// Window rules let you adjust behavior for individual windows.
-// Find more information on the wiki:
-// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
-
-
-
-// Floating Bitwarden extension popup windows only
-window-rule {
- match title=r#"^Extension: \(Bitwarden Password Manager\) - Bitwarden — Mozilla Firefox$"#
- match title="^Extension: (Bitwarden Password Manager) - Bitwarden — Mozilla Firefox$"
- match app-id=r#"(?i)^bitwarden$"#
- open-floating true
- default-column-width { proportion 0.3;}
- default-floating-position x=0 y=0 relative-to="top-left"
- opacity 0.9
- block-out-from "screen-capture"
-}
-
-// dropdown terminal
-window-rule {
- match title="^dropdown$"
- open-focused true
- open-floating true
- default-floating-position x=0 y=0 relative-to="top"
- default-window-height { proportion 0.5; }
- // 80% of the screen wide.
- default-column-width { proportion 0.8; }
- // block-out-from "screencast"
- block-out-from "screen-capture"
-}
-
-//fix steam notifications to bottom rigth
-window-rule {
- match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"#
- default-floating-position x=10 y=10 relative-to="bottom-right"
- //block-out-from "screencast"
- block-out-from "screen-capture"
-}
-
-
-window-rule {
- geometry-corner-radius 12
- clip-to-geometry true
-}
-
-window-rule {
- match app-id="onboard"
- match app-id="Onboard"
- open-floating true
- default-window-height { proportion 0.2; }
- default-column-width { proportion 0.8; }
- block-out-from "screen-capture"
-}
-
-binds {
- // Keys consist of modifiers separated by + signs, followed by an XKB key name
- // in the end. To find an XKB name for a particular key, you may use a program
- // like wev.
- //
- // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
- // when running as a winit window.
- //
- // Most actions that you can bind here can also be invoked programmatically with
- // `niri msg action do-something`.
-
- // Mod-Shift-/, which is usually the same as Mod-?,
- // shows a list of important hotkeys.
- Mod+Shift+Slash { show-hotkey-overlay; }
- Mod+Slash { toggle-overview; }
-
- // Suggested binds for running programs: terminal, app launcher, screen locker.
- Mod+Return { spawn "footclient"; }
- Mod+T { spawn "sh" "-c" "if pgrep -f '^foot -T dropdown$' >/dev/null; then pkill -f '^foot -T dropdown$'; else exec foot -T dropdown; fi"; }
- Mod+D { spawn "fuzzel"; }
- Mod+M { spawn "swaylock" "--grace" "0"; }
- Mod+O { toggle-window-rule-opacity; }
-
- // You can also use a shell. Do this if you need pipes, multiple commands, etc.
- // Note: the entire command goes as a single argument in the end.
- // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
-
- // Example volume keys mappings for PipeWire & WirePlumber.
- // The allow-when-locked=true property makes them work even when the session is locked.
- XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; }
- XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; }
- XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
- XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
-
- Mod+Shift+Q { close-window; }
-
- Mod+Left { focus-column-or-monitor-left; }
- Mod+Down { focus-window-or-monitor-down; }
- Mod+Up { focus-window-or-monitor-up; }
- Mod+Right { focus-column-or-monitor-right; }
- Mod+H { focus-column-or-monitor-left; }
- Mod+J { focus-window-or-monitor-down; }
- Mod+K { focus-window-or-monitor-up; }
- Mod+L { focus-column-or-monitor-right; }
-
- Alt+Tab { focus-window-previous; }
-
- Mod+Ctrl+Left { move-column-left; }
- Mod+Ctrl+Down { move-window-down; }
- Mod+Ctrl+Up { move-window-up; }
- Mod+Ctrl+Right { move-column-right; }
- Mod+Ctrl+H { move-column-left; }
- Mod+Ctrl+J { move-window-down; }
- Mod+Ctrl+K { move-window-up; }
- Mod+Ctrl+L { move-column-right; }
-
- // Alternative commands that move across workspaces when reaching
- // the first or last window in a column.
- // Mod+J { focus-window-or-workspace-down; }
- // Mod+K { focus-window-or-workspace-up; }
- // Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
- // Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
-
- Mod+Home { focus-column-first; }
- Mod+End { focus-column-last; }
- Mod+Ctrl+Home { move-column-to-first; }
- Mod+Ctrl+End { move-column-to-last; }
-
- Mod+Shift+Left { focus-monitor-left; }
- Mod+Shift+Down { focus-monitor-down; }
- Mod+Shift+Up { focus-monitor-up; }
- Mod+Shift+Right { focus-monitor-right; }
- Mod+Shift+H { focus-monitor-left; }
- Mod+Shift+J { focus-monitor-down; }
- Mod+Shift+K { focus-monitor-up; }
- Mod+Shift+L { focus-monitor-right; }
-
- Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
- Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
- Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
- Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
- Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
- Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
- Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
- Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
-
- // Alternatively, there are commands to move just a single window:
- // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
- // ...
-
- // And you can also move a whole workspace to another monitor:
- // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
- // ...
-
- Mod+Page_Down { focus-workspace-down; }
- Mod+Page_Up { focus-workspace-up; }
- Mod+U { focus-workspace-down; }
- Mod+I { focus-workspace-up; }
- Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
- Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
- Mod+Ctrl+U { move-column-to-workspace-down; }
- Mod+Ctrl+I { move-column-to-workspace-up; }
-
-
- Mod+Shift+Page_Down { move-workspace-down; }
- Mod+Shift+Page_Up { move-workspace-up; }
- Mod+Shift+U { move-workspace-down; }
- Mod+Shift+I { move-workspace-up; }
-
- // You can bind mouse wheel scroll ticks using the following syntax.
- // These binds will change direction based on the natural-scroll setting.
- //
- // To avoid scrolling through workspaces really fast, you can use
- // the cooldown-ms property. The bind will be rate-limited to this value.
- // You can set a cooldown on any bind, but it's most useful for the wheel.
- Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
- Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
- Mod+Shift+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
- Mod+Ctrl+Shift+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
-
- Mod+WheelScrollRight cooldown-ms=150 { focus-column-right; }
- Mod+WheelScrollLeft cooldown-ms=150 { focus-column-left; }
- Mod+Ctrl+WheelScrollRight cooldown-ms=150 { move-column-right; }
- Mod+Ctrl+WheelScrollLeft cooldown-ms=150 { move-column-left; }
-
- // Usually scrolling up and down with Shift in applications results in
- // horizontal scrolling; these binds replicate that.
- // But i found it impractical. workspaces i can graphically cahnge. and probably more rarly, so i swapped it
- Mod+WheelScrollDown cooldown-ms=150 { focus-column-right; }
- Mod+WheelScrollUp cooldown-ms=150 { focus-column-left; }
- Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-right; }
- Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-left; }
-
- // Similarly, you can bind touchpad scroll "ticks".
- // Touchpad scrolling is continuous, so for these binds it is split into
- // discrete intervals.
- // These binds are also affected by touchpad's natural-scroll, so these
- // example binds are "inverted", since we have natural-scroll enabled for
- // touchpads by default.
- // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
- // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
-
- // You can refer to workspaces by index. However, keep in mind that
- // niri is a dynamic workspace system, so these commands are kind of
- // "best effort". Trying to refer to a workspace index bigger than
- // the current workspace count will instead refer to the bottommost
- // (empty) workspace.
- //
- // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
- // will all refer to the 3rd workspace.
- Mod+1 { focus-workspace 1; }
- Mod+2 { focus-workspace 2; }
- Mod+3 { focus-workspace 3; }
- Mod+4 { focus-workspace 4; }
- Mod+5 { focus-workspace 5; }
- Mod+6 { focus-workspace 6; }
- Mod+7 { focus-workspace 7; }
- Mod+8 { focus-workspace 8; }
- Mod+9 { focus-workspace 9; }
- Mod+Ctrl+1 { move-column-to-workspace 1; }
- Mod+Ctrl+2 { move-column-to-workspace 2; }
- Mod+Ctrl+3 { move-column-to-workspace 3; }
- Mod+Ctrl+4 { move-column-to-workspace 4; }
- Mod+Ctrl+5 { move-column-to-workspace 5; }
- Mod+Ctrl+6 { move-column-to-workspace 6; }
- Mod+Ctrl+7 { move-column-to-workspace 7; }
- Mod+Ctrl+8 { move-column-to-workspace 8; }
- Mod+Ctrl+9 { move-column-to-workspace 9; }
-
- // Alternatively, there are commands to move just a single window:
- // Mod+Ctrl+1 { move-window-to-workspace 1; }
-
- // Switches focus between the current and the previous workspace.
- // Mod+Tab { focus-workspace-previous; }
-
- // The following binds move the focused window in and out of a column.
- // If the window is alone, they will consume it into the nearby column to the side.
- // If the window is already in a column, they will expel it out.
- Mod+BracketLeft { consume-or-expel-window-left; }
- Mod+BracketRight { consume-or-expel-window-right; }
-
- // Consume one window from the right to the bottom of the focused column.
- Mod+Comma { consume-window-into-column; }
- // Expel the bottom window from the focused column to the right.
- Mod+Period { expel-window-from-column; }
-
- Mod+R { switch-preset-column-width; }
- Mod+Shift+R { switch-preset-window-height; }
- Mod+Ctrl+R { reset-window-height; }
- Mod+F { maximize-column; }
- Mod+Shift+F { fullscreen-window; }
- Mod+Ctrl+Shift+F { toggle-windowed-fullscreen; }
-
- // Expand the focused column to space not taken up by other fully visible columns.
- // Makes the column "fill the rest of the space".
- Mod+Ctrl+F { expand-column-to-available-width; }
-
- Mod+C { center-column; }
-
- // Finer width adjustments.
- // This command can also:
- // * set width in pixels: "1000"
- // * adjust width in pixels: "-5" or "+5"
- // * set width as a percentage of screen width: "25%"
- // * adjust width as a percentage of screen width: "-10%" or "+10%"
- // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
- // set-column-width "100" will make the column occupy 200 physical screen pixels.
- Mod+Minus { set-column-width "-10%"; }
- Mod+Equal { set-column-width "+10%"; }
- Mod+0 { set-column-width "+10%"; }
-
- // Finer height adjustments when in column with other windows.
- Mod+Shift+Minus { set-window-height "-10%"; }
- Mod+Shift+Equal { set-window-height "+10%"; }
- Mod+Shift+0 { set-window-height "+10%"; }
-
- // Move the focused window between the floating and the tiling layout.
- Mod+V { toggle-window-floating; }
- Mod+Shift+V { switch-focus-between-floating-and-tiling; }
-
- // Toggle tabbed column display mode.
- // Windows in this column will appear as vertical tabs,
- // rather than stacked on top of each other.
- Mod+W { toggle-column-tabbed-display; }
-
- // Actions to switch layouts.
- // Note: if you uncomment these, make sure you do NOT have
- // a matching layout switch hotkey configured in xkb options above.
- // Having both at once on the same hotkey will break the switching,
- // since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
- // Mod+Space { switch-layout "next"; }
- // Mod+Shift+Space { switch-layout "prev"; }
-
- Print { screenshot; }
- Ctrl+Print { screenshot-screen; }
- Alt+Print { screenshot-window; }
-
- // Applications such as remote-desktop clients and software KVM switches may
- // request that niri stops processing the keyboard shortcuts defined here
- // so they may, for example, forward the key presses as-is to a remote machine.
- // It's a good idea to bind an escape hatch to toggle the inhibitor,
- // so a buggy application can't hold your session hostage.
- //
- // The allow-inhibiting=false property can be applied to other binds as well,
- // which ensures niri always processes them, even when an inhibitor is active.
- Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
-
- // The quit action will show a confirmation dialog to avoid accidental exits.
- Mod+Shift+E { quit; }
- Ctrl+Alt+Delete { quit; }
-
- // Powers off the monitors. To turn them back on, do any input like
- // moving the mouse or pressing any other key.
- Mod+Shift+P { power-off-monitors; }
-}
-
-
-//Enviroment to be set.
-environment {
- DISPLAY ":0"
- ELECTRON_OZONE_PLATFORM_HINT "auto"
-}
'';
-
in
{
- home.packages = with pkgs; [
- niri
- wl-clipboard
- pass-wayland
- wev
+ home.packages = with pkgs; [
+ niri
+ wl-clipboard
+ pass-wayland
+ wev
- #term
- foot
- alacritty
+ #term
+ foot
+ alacritty
+ wdisplays
+ swww
- wdisplays
- swww
+ xwayland-satellite
- xwayland-satellite
+ #bar applets and notifications
+ waybar
+ networkmanagerapplet
+ networkmanager
+ libsForQt5.networkmanager-qt
- #bar applets and notifications
- waybar
- networkmanagerapplet
- networkmanager
- libsForQt5.networkmanager-qt
-
+ mako
- mako
+ swayidle
- swayidle
+ #ligth and sound
+ brightnessctl
+ pavucontrol
- #ligth and sound
- brightnessctl
- pavucontrol
+ fuzzel
- fuzzel
+ emote
- emote
+ wvkbd
-
- wvkbd
+ xdg-desktop-portal-gtk
+ xdg-desktop-portal
+ xdg-desktop-portal-wlr
+ xdg-desktop-portal-gnome
+ #fonts
+ _0xproto
+ font-awesome
+ font-awesome_5
+ font-awesome_4
- xdg-desktop-portal-gtk
- xdg-desktop-portal
- xdg-desktop-portal-wlr
- xdg-desktop-portal-gnome
-
-
- #fonts
- _0xproto
- font-awesome
- font-awesome_5
- font-awesome_4
-
- ];
+ ];
# Drop the interpolated KDL into ~/.config/niri/config.kdl
home.file.".config/niri/config.kdl" = {
diff --git a/home/sshconfig.nix b/home/sshconfig.nix
index ebd0d48..420942f 100644
--- a/home/sshconfig.nix
+++ b/home/sshconfig.nix
@@ -1,4 +1,9 @@
-{ pkgs, lib, config, ... }:
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}:
{
imports = [
];
@@ -8,7 +13,7 @@
ssh-askpass-fullscreen
sshfs
];
-
+
services.ssh-agent.enable = true;
programs.ssh = {
@@ -24,25 +29,23 @@
};
"*.pvv.ntnu.no" = {
- user="adriangl";
+ user = "adriangl";
};
"*.ntnu.no !login.pvv.ntnu.no" = {
- user="adriangl";
- proxyJump="login.pvv.ntnu.no";
+ user = "adriangl";
+ proxyJump = "login.pvv.ntnu.no";
};
-
"snotra" = {
- user="adriangl";
- proxyJump="adriangl@login.pvv.ntnu.no";
- hostname="snotra.idi.ntnu.no";
+ user = "adriangl";
+ proxyJump = "adriangl@login.pvv.ntnu.no";
+ hostname = "snotra.idi.ntnu.no";
};
-
#pbsds
"garp.pbsds.net" = {
- user="adrlau";
+ user = "adrlau";
proxyJump = "login.pvv.ntnu.no";
extraOptions = {
StrictHostKeyChecking = "no";
@@ -50,7 +53,7 @@
};
};
"bolle.pbsds.net" = {
- user="adrlau";
+ user = "adrlau";
proxyJump = "login.pvv.ntnu.no";
extraOptions = {
StrictHostKeyChecking = "no";
@@ -58,43 +61,39 @@
};
};
-
-
#pvv
"pvv" = {
- user="adriangl";
- hostname="login.pvv.ntnu.no";
+ user = "adriangl";
+ hostname = "login.pvv.ntnu.no";
};
"pvv2" = {
- user="adriangl";
- hostname="login2.pvv.ntnu.no";
+ user = "adriangl";
+ hostname = "login2.pvv.ntnu.no";
};
#home
"aragon" = {
port = 6969;
- hostname="100.74.34.149";
+ hostname = "100.74.34.149";
};
"galadriel" = {
port = 6969;
- hostname="100.84.215.84";
+ hostname = "100.84.215.84";
};
-
+
"gandalf" = {
port = 6969;
- hostname="100.124.183.16";
+ hostname = "100.124.183.16";
};
"elrond" = {
port = 6969;
- hostname="100.101.17.39 ";
+ hostname = "100.101.17.39 ";
};
-
};
extraConfig = "";
};
}
-
diff --git a/home/swaylock.nix b/home/swaylock.nix
index c47d929..61b8e02 100644
--- a/home/swaylock.nix
+++ b/home/swaylock.nix
@@ -1,4 +1,11 @@
-{ pkgs, inputs, lib, config, nix-colors, ... }:
+{
+ pkgs,
+ inputs,
+ lib,
+ config,
+ nix-colors,
+ ...
+}:
let
palette = config.colorScheme.palette;
in
@@ -8,35 +15,34 @@ in
package = pkgs.swaylock-effects;
settings = {
# screen & indicator
- color = "#${palette.base00}AA"; # --color
- screenshots = true; # --screenshots
- fade-in = 0.1; # --fade-in
- scaling = "fill"; # e.g. --scaling=fill
+ color = "#${palette.base00}AA"; # --color
+ screenshots = true; # --screenshots
+ fade-in = 0.1; # --fade-in
+ scaling = "fill"; # e.g. --scaling=fill
# authentication grace
- grace = 3; # --grace
- submit-on-touch = true; # --submit-on-touch
+ grace = 3; # --grace
+ submit-on-touch = true; # --submit-on-touch
# clock
- clock = true; # --clock
+ clock = true; # --clock
# indicator visuals
- indicator-idle-visible = true; # --indicator-idle-visible
- indicator-radius = 100; # --indicator-radius
- indicator-thickness = 7; # --indicator-thickness
+ indicator-idle-visible = true; # --indicator-idle-visible
+ indicator-radius = 100; # --indicator-radius
+ indicator-thickness = 7; # --indicator-thickness
# indicator colors
- ring-color = "#${palette.base0D}C0"; # --ring-color
- key-hl-color = "#${palette.base0E}C0"; # --key-hl-color
- text-color = "#${palette.base05}FF"; # --text-color
- inside-color = "#${palette.base02}CC"; # --inside-color
- line-color = "#${palette.base01}99"; # --line-color
- separator-color = "#${palette.base01}99"; # --separator-color
+ ring-color = "#${palette.base0D}C0"; # --ring-color
+ key-hl-color = "#${palette.base0E}C0"; # --key-hl-color
+ text-color = "#${palette.base05}FF"; # --text-color
+ inside-color = "#${palette.base02}CC"; # --inside-color
+ line-color = "#${palette.base01}99"; # --line-color
+ separator-color = "#${palette.base01}99"; # --separator-color
# effects
- effect-scale = 0.6; # --effect-scale
- effect-blur = "7x3"; # --effect-blur
+ effect-scale = 0.6; # --effect-scale
+ effect-blur = "7x3"; # --effect-blur
};
};
}
-
diff --git a/home/wallpapers.nix b/home/wallpapers.nix
index 5ca8136..49d98da 100644
--- a/home/wallpapers.nix
+++ b/home/wallpapers.nix
@@ -8,14 +8,12 @@ let
names = lib.attrNames (builtins.readDir wallpaperSrc);
# For each name, produce an attrset mapping
- wallpaperFiles = map (name:
- {
- # quoted string keys are valid attribute names
- "Pictures/wallpapers/${name}" = {
- source = "${wallpaperSrc}/${name}";
- };
- }
- ) names;
+ wallpaperFiles = map (name: {
+ # quoted string keys are valid attribute names
+ "Pictures/wallpapers/${name}" = {
+ source = "${wallpaperSrc}/${name}";
+ };
+ }) names;
in
{
# Merge them all under home.file
diff --git a/home/waybar.nix b/home/waybar.nix
index 6026d26..724efc2 100644
--- a/home/waybar.nix
+++ b/home/waybar.nix
@@ -1,4 +1,10 @@
-{ config, pkgs, lib, inputs, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ inputs,
+ ...
+}:
let
# Import Base16 palette & hex→RGB helper
@@ -6,17 +12,19 @@ let
inherit (config.colorscheme) palette;
# Build "rgba(r,g,b,a)" strings
- toRGBA = colour: alpha:
- let rgb = hexToRGBString "," (lib.removePrefix "#" colour);
- in "rgba(${rgb},${alpha})";
+ toRGBA =
+ colour: alpha:
+ let
+ rgb = hexToRGBString "," (lib.removePrefix "#" colour);
+ in
+ "rgba(${rgb},${alpha})";
in
{
- home.packages = with pkgs; [
- fuzzel
- wvkbd
- ];
-
+ home.packages = with pkgs; [
+ fuzzel
+ wvkbd
+ ];
programs.waybar = {
enable = true;
@@ -25,167 +33,167 @@ in
# Single-bar JSON config
settings = [
(builtins.fromJSON ''
- {
- "layer": "top",
- "height": 36,
- "spacing": 2,
- "tray-position": "right",
- "tray-all-outputs": true,
- "modules-left": ["custom/overview", "custom/launcher", "custom/keyboard", "sway/workspaces", "niri/workspaces"],
- "modules-center": ["niri/window"],
- "modules-right": [
- "idle_inhibitor", "backlight", "pulseaudio", "keyboard-state",
- "network", "cpu", "memory", "temperature", "battery",
- "power-profiles-daemon", "clock", "tray", "custom/power"
- ],
+ {
+ "layer": "top",
+ "height": 36,
+ "spacing": 2,
+ "tray-position": "right",
+ "tray-all-outputs": true,
+ "modules-left": ["custom/overview", "custom/launcher", "custom/keyboard", "sway/workspaces", "niri/workspaces"],
+ "modules-center": ["niri/window"],
+ "modules-right": [
+ "idle_inhibitor", "backlight", "pulseaudio", "keyboard-state",
+ "network", "cpu", "memory", "temperature", "battery",
+ "power-profiles-daemon", "clock", "tray", "custom/power"
+ ],
- "custom/launcher": {
- "format": " ",
- "on-click": "pkill fuzzel || fuzzel"
- },
+ "custom/launcher": {
+ "format": " ",
+ "on-click": "pkill fuzzel || fuzzel"
+ },
- "sway/workspaces": {
- "format": "{index}: {name} - {icon}",
- "format-icons": {
- "focused":"","active":"","default":""
- },
- "all-outputs": false,
- "current-only": false,
- "persistent": true,
- "on-click": "swaymsg workspace number {index}"
- },
+ "sway/workspaces": {
+ "format": "{index}: {name} - {icon}",
+ "format-icons": {
+ "focused":"","active":"","default":""
+ },
+ "all-outputs": false,
+ "current-only": false,
+ "persistent": true,
+ "on-click": "swaymsg workspace number {index}"
+ },
- "niri/workspaces": {
- "format": "{index}: {name} - {icon}",
- "format-icons": {
- "focused":"","active":"","default":""
- },
- "all-outputs": false,
- "current-only": false,
- "persistent": true,
- "on-click": "niri msg workspace {index}"
- },
+ "niri/workspaces": {
+ "format": "{index}: {name} - {icon}",
+ "format-icons": {
+ "focused":"","active":"","default":""
+ },
+ "all-outputs": false,
+ "current-only": false,
+ "persistent": true,
+ "on-click": "niri msg workspace {index}"
+ },
- "custom/overview": {
- "format": "",
- "tooltip": "Toggle Overview",
- "on-click": "niri msg action toggle-overview"
- },
- "custom/keyboard": {
- "format": "",
- "tooltip": "On-Screen Keyboard",
- "on-click": "pkill wvkbd-mobintl || wvkbd-mobintl"
- },
+ "custom/overview": {
+ "format": "",
+ "tooltip": "Toggle Overview",
+ "on-click": "niri msg action toggle-overview"
+ },
+ "custom/keyboard": {
+ "format": "",
+ "tooltip": "On-Screen Keyboard",
+ "on-click": "pkill wvkbd-mobintl || wvkbd-mobintl"
+ },
- "niri/window": {
- "format": "{title}"
- },
+ "niri/window": {
+ "format": "{title}"
+ },
- "idle_inhibitor": {
- "format": "{icon}",
- "format-icons": { "activated":"","deactivated":"" }
- },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": { "activated":"","deactivated":"" }
+ },
- "backlight": {
- "format": "{percent}% {icon}",
- "format-icons": ["","","","","","","","",""]
- },
+ "backlight": {
+ "format": "{percent}% {icon}",
+ "format-icons": ["","","","","","","","",""]
+ },
- "pulseaudio": {
- "format": "{volume}% {icon}",
- "format-muted": "",
- "format-icons": { "default": ["","",""] },
- "on-click": "pavucontrol"
- },
+ "pulseaudio": {
+ "format": "{volume}% {icon}",
+ "format-muted": "",
+ "format-icons": { "default": ["","",""] },
+ "on-click": "pavucontrol"
+ },
- "keyboard-state": {
- "numlock": true,
- "capslock": true,
- "format": "{icon}",
- "format-icons": { "locked":"","unlocked":"" }
- },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{icon}",
+ "format-icons": { "locked":"","unlocked":"" }
+ },
- "network": {
- "format-wifi": " {essid} ({signalStrength}%)",
- "format-ethernet": " {ipaddr}",
- "format-disconnected": "⚠ Disconnected",
- "format-alt": " {ipaddr}/{cidr}",
- "tooltip": true,
- "tooltip-format-wifi": " WiFi\nSSID: {essid}\nInterface: {ifname}\nIP: {ipaddr}\nIPv6: {ipaddr6}\nGateway: {gwaddr}\nFrequency: {frequency} MHz\nSignal: {signalStrength}% ({signaldBm} dBm)",
+ "network": {
+ "format-wifi": " {essid} ({signalStrength}%)",
+ "format-ethernet": " {ipaddr}",
+ "format-disconnected": "⚠ Disconnected",
+ "format-alt": " {ipaddr}/{cidr}",
+ "tooltip": true,
+ "tooltip-format-wifi": " WiFi\nSSID: {essid}\nInterface: {ifname}\nIP: {ipaddr}\nIPv6: {ipaddr6}\nGateway: {gwaddr}\nFrequency: {frequency} MHz\nSignal: {signalStrength}% ({signaldBm} dBm)",
-"tooltip-format-ethernet": " Ethernet\nInterface: {ifname}\nIP: {ipaddr}\nIPv6: {ipaddr6}\nGateway: {gwaddr}\nNetmask: {netmask}",
+ "tooltip-format-ethernet": " Ethernet\nInterface: {ifname}\nIP: {ipaddr}\nIPv6: {ipaddr6}\nGateway: {gwaddr}\nNetmask: {netmask}",
- "tooltip-format-disconnected": "⚠ No Connection\nClick to refresh network info",
+ "tooltip-format-disconnected": "⚠ No Connection\nClick to refresh network info",
- "on-click": "nmcli device wifi rescan && nmcli connection show --active",
- "on-click-right": "nmcli device status",
- "max-length": 50
- },
+ "on-click": "nmcli device wifi rescan && nmcli connection show --active",
+ "on-click-right": "nmcli device status",
+ "max-length": 50
+ },
- "cpu": { "format": " {usage}%" },
- "memory": { "format": " {used:0.1f}G" },
+ "cpu": { "format": " {usage}%" },
+ "memory": { "format": " {used:0.1f}G" },
- "temperature": {
- "format": "{temperatureC}°C ",
- "critical-threshold": 80
- },
+ "temperature": {
+ "format": "{temperatureC}°C ",
+ "critical-threshold": 80
+ },
- "battery": {
- "format": "{capacity}% {icon}",
- "format-icons": ["","","","",""],
- "format-charging": "{capacity}% ",
- "states": { "warning": 30, "critical": 15 }
- },
+ "battery": {
+ "format": "{capacity}% {icon}",
+ "format-icons": ["","","","",""],
+ "format-charging": "{capacity}% ",
+ "states": { "warning": 30, "critical": 15 }
+ },
- "power-profiles-daemon": {
- "format": "{icon}",
- "tooltip-format": "Power profile: {profile}\\nDriver: {driver}",
- "tooltip": true,
- "format-icons": {
- "default": "",
- "performance": "",
- "balanced": "",
- "power-saver": ""
- }
- },
+ "power-profiles-daemon": {
+ "format": "{icon}",
+ "tooltip-format": "Power profile: {profile}\\nDriver: {driver}",
+ "tooltip": true,
+ "format-icons": {
+ "default": "",
+ "performance": "",
+ "balanced": "",
+ "power-saver": ""
+ }
+ },
- "clock": {
- "format": "{:%H:%M}",
- "format-alt": "{:%Y-%m-%d}",
- "tooltip": true,
- "tooltip-format": "{calendar}",
- "calendar": {
- "mode": "month",
- "mode-mon-col": 3,
- "weeks-pos": "right",
- "on-scroll": 1,
- "format": {
- "months": "{}",
- "days": "{}",
- "weeks": "W{}",
- "weekdays": "{}",
- "today": "{}"
+ "clock": {
+ "format": "{:%H:%M}",
+ "format-alt": "{:%Y-%m-%d}",
+ "tooltip": true,
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 3,
+ "weeks-pos": "right",
+ "on-scroll": 1,
+ "format": {
+ "months": "{}",
+ "days": "{}",
+ "weeks": "W{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down"
+ }
+ },
+
+ "tray": {
+ "spacing": 12
+ },
+
+ "custom/power": {
+ "format": "⏻",
+ "tooltip": "exit",
+ "on-click": "wlogout || wleave"
+ }
}
- },
- "actions": {
- "on-click-right": "mode",
- "on-scroll-up": "shift_up",
- "on-scroll-down": "shift_down"
- }
- },
-
- "tray": {
- "spacing": 12
- },
-
- "custom/power": {
- "format": "⏻",
- "tooltip": "exit",
- "on-click": "wlogout || wleave"
- }
- }
'')
];
@@ -233,15 +241,15 @@ in
padding: 8px 12px;
font-size: 12px;
}
-
+
tooltip label {
color: ${toRGBA palette.base05 "1"};
}
-
+
#clock tooltip {
font-family: monospace;
}
-
+
/* Workspace buttons */
#sway-workspaces button,#niri-workspaces button {
@@ -284,6 +292,6 @@ in
animation: blink 0.5s steps(12) infinite alternate;
}
'';
- systemd.enable = true;
+ #systemd.enable = true;
};
}
diff --git a/home/wlogout.nix b/home/wlogout.nix
index ba194af..4036b28 100644
--- a/home/wlogout.nix
+++ b/home/wlogout.nix
@@ -1,35 +1,69 @@
-{ pkgs
-, lib
-, inputs
-, config
-, nix-colors
-, ...
+{
+ pkgs,
+ lib,
+ inputs,
+ config,
+ nix-colors,
+ ...
}:
let
# Grab your palette and the hex→RGBA helper
- palette = config.colorscheme.palette;
- toRGBA = color: alpha:
- let rgb = nix-colors.lib.conversions.hexToRGBString "," (lib.removePrefix "#" color);
- in "rgba(${rgb},${alpha})";
+ palette = config.colorscheme.palette;
+ toRGBA =
+ color: alpha:
+ let
+ rgb = nix-colors.lib.conversions.hexToRGBString "," (lib.removePrefix "#" color);
+ in
+ "rgba(${rgb},${alpha})";
# Path to the wleave-provided icons
- iconsDir = "${pkgs.wleave}/share/wleave/icons";
+ iconsDir = "${pkgs.wleave}/share/wleave/icons";
in
{
programs.wlogout = {
- enable = true;
+ enable = true;
package = pkgs.wlogout;
# Your button layout
layout = [
- { label = "lock"; action = "swaylock"; text = "Lock"; keybind = "l"; }
- { label = "hibernate"; action = "systemctl hibernate"; text = "Hibernate"; keybind = "h"; }
- { label = "logout"; action = "loginctl terminate-user $USER"; text = "Logout"; keybind = "e"; }
- { label = "shutdown"; action = "systemctl poweroff"; text = "Shutdown"; keybind = "s"; }
- { label = "suspend"; action = "systemctl suspend"; text = "Suspend"; keybind = "u"; }
- { label = "reboot"; action = "systemctl reboot"; text = "Reboot"; keybind = "r"; }
+ {
+ label = "lock";
+ action = "swaylock";
+ text = "Lock";
+ keybind = "l";
+ }
+ {
+ label = "hibernate";
+ action = "systemctl hibernate";
+ text = "Hibernate";
+ keybind = "h";
+ }
+ {
+ label = "logout";
+ action = "loginctl terminate-user $USER";
+ text = "Logout";
+ keybind = "e";
+ }
+ {
+ label = "shutdown";
+ action = "systemctl poweroff";
+ text = "Shutdown";
+ keybind = "s";
+ }
+ {
+ label = "suspend";
+ action = "systemctl suspend";
+ text = "Suspend";
+ keybind = "u";
+ }
+ {
+ label = "reboot";
+ action = "systemctl reboot";
+ text = "Reboot";
+ keybind = "r";
+ }
];
style = ''
diff --git a/hosts/legolas/configuration.nix b/hosts/legolas/configuration.nix
index f4c96ac..a978d42 100644
--- a/hosts/legolas/configuration.nix
+++ b/hosts/legolas/configuration.nix
@@ -2,22 +2,27 @@
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
-{ config, lib, pkgs, ... }:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
{
- imports =
- [ # Include the results of the hardware scan.
- ./hardware-configuration.nix
- ../../modules/boot.nix
- ../../modules/displaymanager.nix
- ../../modules/nix.nix
- ../../secrets/sops.nix
- ../../modules/sound.nix
- ../../modules/gunalx.nix
- ../../modules/pam.nix
- ];
+ imports = [
+ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ ../../modules/boot.nix
+ ../../modules/displaymanager.nix
+ ../../modules/nix.nix
+ ../../secrets/sops.nix
+ ../../modules/sound.nix
+ ../../modules/gunalx.nix
+ ../../modules/pam.nix
+ ];
- networking.hostName = "legolas";
+ networking.hostName = "legolas";
networking.networkmanager.enable = true;
time.timeZone = "Europe/Amsterdam";
# Select internationalisation properties.
@@ -25,7 +30,7 @@
# Enable the X11 windowing system.
services.xserver.enable = true;
- services.xserver.videoDrivers = ["modesetting"];
+ services.xserver.videoDrivers = [ "modesetting" ];
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
@@ -57,7 +62,6 @@
# enableSSHSupport = true;
# };
-
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
@@ -67,8 +71,6 @@
# Or disable the firewall altogether.
# networking.firewall.enable = false;
-
-
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
@@ -89,4 +91,3 @@
system.stateVersion = "25.05"; # Did you read the comment?
}
-
diff --git a/hosts/legolas/hardware-configuration.nix b/hosts/legolas/hardware-configuration.nix
index cd544ba..c2dbc38 100644
--- a/hosts/legolas/hardware-configuration.nix
+++ b/hosts/legolas/hardware-configuration.nix
@@ -1,51 +1,68 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
-{ config, lib, pkgs, modulesPath, ... }:
+{
+ config,
+ lib,
+ pkgs,
+ modulesPath,
+ ...
+}:
{
- imports =
- [ (modulesPath + "/installer/scan/not-detected.nix")
- ];
+ imports = [
+ (modulesPath + "/installer/scan/not-detected.nix")
+ ];
- boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "uas" "rtsx_pci_sdmmc" ];
+ boot.initrd.availableKernelModules = [
+ "xhci_pci"
+ "nvme"
+ "uas"
+ "rtsx_pci_sdmmc"
+ ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
- fileSystems."/" =
- { device = "/dev/disk/by-label/NIXROOT";
- fsType = "ext4";
+ fileSystems."/" = {
+ device = "/dev/disk/by-label/NIXROOT";
+ fsType = "ext4";
+ };
+
+ boot.initrd.luks.devices = {
+ "luks_secure" = {
+ device = "/dev/disk/by-uuid/c21c8089-29a7-4266-a8a6-6e80ccca167c";
+ preLVM = true;
+ allowDiscards = true;
+ crypttabExtraOpts = [
+ "tpm2-device=auto"
+ "tpm2-measure-pcr=yes"
+ ];
};
+ };
- boot.initrd.luks.devices = {
- "luks_secure" = {
- device = "/dev/disk/by-uuid/c21c8089-29a7-4266-a8a6-6e80ccca167c";
- preLVM = true;
- allowDiscards = true;
- crypttabExtraOpts = [
- "tpm2-device=auto"
- "tpm2-measure-pcr=yes"
- ];
- };
- };
-
-
- fileSystems."/boot" =
- { device = "/dev/disk/by-label/NIXBOOT";
- fsType = "vfat";
- options = [ "fmask=0022" "dmask=0022" ];
- };
+ fileSystems."/boot" = {
+ device = "/dev/disk/by-label/NIXBOOT";
+ fsType = "vfat";
+ options = [
+ "fmask=0022"
+ "dmask=0022"
+ ];
+ };
swapDevices = [ ];
hardware.graphics = {
- enable = true;
- extraPackages = with pkgs; [ vpl-gpu-rt intel-media-sdk vaapiIntel intel-media-driver];
- };
+ enable = true;
+ extraPackages = with pkgs; [
+ vpl-gpu-rt
+ intel-media-sdk
+ vaapiIntel
+ intel-media-driver
+ ];
+ };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
-
}
diff --git a/modules/boot.nix b/modules/boot.nix
index 3108d4d..297d2ac 100644
--- a/modules/boot.nix
+++ b/modules/boot.nix
@@ -1,4 +1,9 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
{
imports = [ ];
@@ -6,10 +11,15 @@
boot = {
consoleLogLevel = 0;
kernelParams = [
- "quiet" "splash" "loglevel=0"
- "udev.log_priority=3" "vt.global_cursor_default=0"
- "rd.systemd.show_status=auto" "rd.udev.log_level=3"
- "boot.shell_on_fail" "console=tty1"
+ "quiet"
+ "splash"
+ "loglevel=0"
+ "udev.log_priority=3"
+ "vt.global_cursor_default=0"
+ "rd.systemd.show_status=auto"
+ "rd.udev.log_level=3"
+ "boot.shell_on_fail"
+ "console=tty1"
];
initrd = {
@@ -25,7 +35,10 @@
};
};
- fonts.packages = with pkgs; [ dejavu_fonts hack-font ];
+ fonts.packages = with pkgs; [
+ dejavu_fonts
+ hack-font
+ ];
# Integrate with Lanzaboote
boot.loader.systemd-boot.enable = lib.mkForce false;
@@ -52,6 +65,8 @@
tctiEnvironment.enable = true;
};
- environment.systemPackages = with pkgs; [ sbctl tpm2-tools ];
+ environment.systemPackages = with pkgs; [
+ sbctl
+ tpm2-tools
+ ];
}
-
diff --git a/modules/displaymanager.nix b/modules/displaymanager.nix
index 073ed7a..c0ef140 100644
--- a/modules/displaymanager.nix
+++ b/modules/displaymanager.nix
@@ -1,4 +1,9 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
{
imports = [ ];
diff --git a/modules/gunalx.nix b/modules/gunalx.nix
index f1a3a2d..d4e72d7 100644
--- a/modules/gunalx.nix
+++ b/modules/gunalx.nix
@@ -1,10 +1,19 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
{
imports = [ ];
- users.users.gunalx = {
+ users.users.gunalx = {
isNormalUser = true;
- extraGroups = [ "wheel" "tss" "networking" ]; # Enable ‘sudo’ for the user.
+ extraGroups = [
+ "wheel"
+ "tss"
+ "networking"
+ ]; # Enable ‘sudo’ for the user.
packages = with pkgs; [
];
};
diff --git a/modules/nix.nix b/modules/nix.nix
index b125256..c785a2f 100644
--- a/modules/nix.nix
+++ b/modules/nix.nix
@@ -1,15 +1,20 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
{
imports = [ ];
-
+
system.rebuild.enableNg = true;
nixpkgs.config.allowUnfree = true;
nixpkgs.config.permittedInsecurePackages = [
# example "python3.11-youtube-dl-2021.12.17"
];
- sops.secrets."github/api" = {
+ sops.secrets."github/api" = {
mode = "0444";
group = "root";
};
@@ -20,8 +25,14 @@
!include ${config.sops.secrets."github/api".path}
'';
settings = {
- trusted-users = [ "gunalx" "root" ];
- experimental-features = [ "nix-command" "flakes" ];
+ trusted-users = [
+ "gunalx"
+ "root"
+ ];
+ experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
substituters = [
"https://cache.nixos.org/"
"https://cuda-maintainers.cachix.org"
@@ -31,55 +42,58 @@
];
trusted-public-keys = [
- "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
+ "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nixos-rocm.cachix.org-1:VEpsf7pRIijjd8csKjFNBGzkBqOmw8H9PRmgAq14LnE="
"nixpkgs-unfree.cachix.org-1:hqvoInulhbV4nJ9yJOEr+4wxhDV4xq2d1DK7S6Nj6rs="
];
- };
+ };
+ buildMachines = [
+ {
+ hostName = "localhost";
+ system = "x86_64-linux";
+ maxJobs = 4;
+ speedFactor = 8000;
+ supportedFeatures = [ ];
+ mandatoryFeatures = [ ];
+ }
+ {
+ hostName = "aragon";
+ system = "x86_64-linux";
+ # if the builder supports building for multiple architectures,
+ # replace the previous line by, e.g.,
+ # systems = ["x86_64-linux" "aarch64-linux"];
+ maxJobs = 6;
+ speedFactor = 6001;
+ supportedFeatures = [ ];
+ mandatoryFeatures = [ ];
+ }
+ {
+ hostName = "galadriel";
+ system = "x86_64-linux";
+ maxJobs = 4;
+ speedFactor = 4001;
+ supportedFeatures = [ "cuda" ];
+ mandatoryFeatures = [ ];
+ }
+ {
+ hostName = "bolle.pbsds.net";
+ system = "x86_64-linux";
+ maxJobs = 6;
+ speedFactor = 6000;
+ }
+ {
+ hostName = "garp.pbsds.net";
+ system = "x86_64-linux";
+ maxJobs = 4;
+ # i7-6700
+ speedFactor = 4000;
+ }
- buildMachines = [
- { hostName = "localhost";
- system = "x86_64-linux";
- maxJobs = 4;
- speedFactor = 8000;
- supportedFeatures = [ ];
- mandatoryFeatures = [ ];
- }
- { hostName = "aragon";
- system = "x86_64-linux";
- # if the builder supports building for multiple architectures,
- # replace the previous line by, e.g.,
- # systems = ["x86_64-linux" "aarch64-linux"];
- maxJobs = 6;
- speedFactor = 6001;
- supportedFeatures = [ ];
- mandatoryFeatures = [ ];
- }
- { hostName = "galadriel";
- system = "x86_64-linux";
- maxJobs = 4;
- speedFactor = 4001;
- supportedFeatures = [ "cuda" ];
- mandatoryFeatures = [ ];
- }
- { hostName = "bolle.pbsds.net";
- system = "x86_64-linux";
- maxJobs = 6;
- speedFactor = 6000;
- }
- { hostName = "garp.pbsds.net";
- system = "x86_64-linux";
- maxJobs = 4;
- # i7-6700
- speedFactor = 4000;
- }
-
- ];
+ ];
distributedBuilds = true;
};
-
system.autoUpgrade = {
enable = true;
@@ -90,5 +104,4 @@
];
};
-
}
diff --git a/modules/pam.nix b/modules/pam.nix
index aa78499..6f548bf 100644
--- a/modules/pam.nix
+++ b/modules/pam.nix
@@ -1,11 +1,16 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
{
imports = [ ];
security.polkit.enable = true;
-
- security.pam.services.swaylock = {};
- security.pam.services.swaylock-effects = {};
+
+ security.pam.services.swaylock = { };
+ security.pam.services.swaylock-effects = { };
}
diff --git a/modules/sound.nix b/modules/sound.nix
index e85328a..4b330f7 100644
--- a/modules/sound.nix
+++ b/modules/sound.nix
@@ -1,9 +1,13 @@
-{ config, pkgs, lib, ... }:
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}:
{
imports = [ ];
-
services.pulseaudio.enable = lib.mkDefault false;
security.rtkit.enable = lib.mkDefault true;
services.pipewire = lib.mkDefault {
@@ -21,6 +25,6 @@
easyeffects
];
- programs.dconf.enable = lib.mkDefault true; #needed for easyeffects for some reason
+ programs.dconf.enable = lib.mkDefault true; # needed for easyeffects for some reason
}
diff --git a/secrets/sops.nix b/secrets/sops.nix
index 7e6707a..83ea31b 100644
--- a/secrets/sops.nix
+++ b/secrets/sops.nix
@@ -4,7 +4,7 @@
pkgs.ssh-to-age
pkgs.sops
];
-
+
# This will add secrets.yaml to the nix store
# You can avoid this by adding a string to the full path instead, i.e.
# sops.defaultSopsFile = "/root/.sops/secrets/example.yaml";
@@ -12,12 +12,12 @@
sops = {
defaultSopsFile = ./secrets.yaml;
validateSopsFiles = false;
-
+
# This will automaticx-sopsally import SSH keys as age keys
age.sshKeyPaths = [
- "/etc/ssh/nixos"
- "/root/.ssh/nixos"
- ];
+ "/etc/ssh/nixos"
+ "/root/.ssh/nixos"
+ ];
#This is using an age key that is expected to already be in the filesystem
age.keyFile = "/var/lib/sops-nix/key.txt";
#age.keyFile = "/root/.config/sops/age/key.txt";