Compare commits

...

8 commits

15 changed files with 348 additions and 172 deletions

View file

@ -4,9 +4,7 @@
"inputs": { "inputs": {
"darwin": "darwin", "darwin": "darwin",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
@ -44,10 +42,7 @@
}, },
"astal": { "astal": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["ags", "nixpkgs"]
"ags",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1731533099, "lastModified": 1731533099,
@ -100,10 +95,7 @@
}, },
"crane_2": { "crane_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["lanzaboote", "nixpkgs"]
"lanzaboote",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1717535930, "lastModified": 1717535930,
@ -121,10 +113,7 @@
}, },
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["agenix", "nixpkgs"]
"agenix",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1700795494, "lastModified": 1700795494,
@ -164,9 +153,7 @@
"firefox-addons": { "firefox-addons": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": ["nixpkgs"]
"nixpkgs"
]
}, },
"locked": { "locked": {
"dir": "pkgs/firefox-addons", "dir": "pkgs/firefox-addons",
@ -252,10 +239,7 @@
}, },
"flake-parts_2": { "flake-parts_2": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": ["lanzaboote", "nixpkgs"]
"lanzaboote",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1717285511, "lastModified": 1717285511,
@ -377,11 +361,7 @@
}, },
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["lanzaboote", "pre-commit-hooks-nix", "nixpkgs"]
"lanzaboote",
"pre-commit-hooks-nix",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1709087332, "lastModified": 1709087332,
@ -416,10 +396,7 @@
}, },
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["agenix", "nixpkgs"]
"agenix",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1703113217, "lastModified": 1703113217,
@ -437,9 +414,7 @@
}, },
"home-manager_2": { "home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"]
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1731786860, "lastModified": 1731786860,
@ -459,9 +434,7 @@
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"naersk": "naersk", "naersk": "naersk",
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
@ -484,9 +457,7 @@
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_2",
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"pre-commit-hooks-nix": "pre-commit-hooks-nix", "pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
@ -557,12 +528,7 @@
}, },
"naersk_2": { "naersk_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["neovim-flake", "nvf", "rnix-lsp", "nixpkgs"]
"neovim-flake",
"nvf",
"rnix-lsp",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1655042882, "lastModified": 1655042882,
@ -580,9 +546,7 @@
}, },
"neovim-flake": { "neovim-flake": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"nvf": "nvf" "nvf": "nvf"
}, },
"locked": { "locked": {
@ -601,16 +565,8 @@
}, },
"nil": { "nil": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": ["neovim-flake", "nvf", "flake-utils"],
"neovim-flake", "nixpkgs": ["neovim-flake", "nvf", "nixpkgs"],
"nvf",
"flake-utils"
],
"nixpkgs": [
"neovim-flake",
"nvf",
"nixpkgs"
],
"rust-overlay": "rust-overlay_3" "rust-overlay": "rust-overlay_3"
}, },
"locked": { "locked": {
@ -685,9 +641,7 @@
}, },
"nix-index-db": { "nix-index-db": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["nixpkgs"]
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1731593150, "lastModified": 1731593150,
@ -854,16 +808,48 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1726871744, "lastModified": 1731676054,
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=", "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=",
"owner": "nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a1d92660c6b3b7c26fb883500a80ea9d33321be2", "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixpkgs-unstable", "ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1731319897,
"narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dc460ec76cbff0e66e269457d7b728432263166c",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dc460ec76cbff0e66e269457d7b728432263166c",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1726871744,
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -1077,12 +1063,8 @@
}, },
"plasma-manager": { "plasma-manager": {
"inputs": { "inputs": {
"home-manager": [ "home-manager": ["home-manager"],
"home-manager" "nixpkgs": ["nixpkgs"]
],
"nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1731193165, "lastModified": 1731193165,
@ -2752,15 +2734,9 @@
}, },
"pre-commit-hooks-nix": { "pre-commit-hooks-nix": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": ["lanzaboote", "flake-compat"],
"lanzaboote",
"flake-compat"
],
"gitignore": "gitignore", "gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": ["lanzaboote", "nixpkgs"],
"lanzaboote",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
@ -2821,10 +2797,7 @@
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["ironbar", "nixpkgs"]
"ironbar",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1730341826, "lastModified": 1730341826,
@ -2842,14 +2815,8 @@
}, },
"rust-overlay_2": { "rust-overlay_2": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": ["lanzaboote", "flake-utils"],
"lanzaboote", "nixpkgs": ["lanzaboote", "nixpkgs"]
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1717813066, "lastModified": 1717813066,
@ -2867,18 +2834,8 @@
}, },
"rust-overlay_3": { "rust-overlay_3": {
"inputs": { "inputs": {
"flake-utils": [ "flake-utils": ["neovim-flake", "nvf", "nil", "flake-utils"],
"neovim-flake", "nixpkgs": ["neovim-flake", "nvf", "nil", "nixpkgs"]
"nvf",
"nil",
"flake-utils"
],
"nixpkgs": [
"neovim-flake",
"nvf",
"nil",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1714529851, "lastModified": 1714529851,
@ -2896,10 +2853,7 @@
}, },
"rust-overlay_4": { "rust-overlay_4": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": ["wezterm", "nixpkgs"]
"wezterm",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1729477859, "lastModified": 1729477859,
@ -3093,9 +3047,7 @@
"freetype2": "freetype2", "freetype2": "freetype2",
"harfbuzz": "harfbuzz", "harfbuzz": "harfbuzz",
"libpng": "libpng", "libpng": "libpng",
"nixpkgs": [ "nixpkgs": ["nixpkgs"],
"nixpkgs"
],
"rust-overlay": "rust-overlay_4", "rust-overlay": "rust-overlay_4",
"zlib": "zlib" "zlib": "zlib"
}, },

View file

@ -13,6 +13,7 @@
eachSystem = f: nixpkgs.lib.genAttrs (import systems) (system: f nixpkgs.legacyPackages.${system}); eachSystem = f: nixpkgs.lib.genAttrs (import systems) (system: f nixpkgs.legacyPackages.${system});
treefmtEval = eachSystem (pkgs: treefmt-nix.lib.evalModule pkgs ./treefmt.nix); treefmtEval = eachSystem (pkgs: treefmt-nix.lib.evalModule pkgs ./treefmt.nix);
in { in {
imports = [./modules];
devShells = eachSystem (pkgs: { devShells = eachSystem (pkgs: {
default = pkgs.mkShell { default = pkgs.mkShell {
packages = [ packages = [

View file

@ -15,10 +15,6 @@
programs = { programs = {
fzf.enable = true; fzf.enable = true;
hyfetch.enable = true; hyfetch.enable = true;
yazi = {
enable = true;
enableFishIntegration = true;
};
}; };
# miscellaneous programs that do not need to be configured # miscellaneous programs that do not need to be configured

111
home/programs/ironbar.nix Normal file
View file

@ -0,0 +1,111 @@
{
config,
lib,
inputs,
...
}: let
inherit (lib) mkIf;
icon_size = 28;
in {
imports = [
./swaync.nix
inputs.ironbar.homeManagerModules.default
];
programs.ironbar = {
enable = true;
systemd = true;
config = {
position = "top";
anchor_to_edges = true;
start = [
{
bar = [
{
label = "";
name = "power-btn";
on_click = "popup:toggle";
type = "button";
}
];
class = "power-menu";
popup = [
{
orientation = "vertical";
type = "box";
widgets = [
{
label = "Power menu";
name = "header";
type = "label";
}
{
type = "box";
widgets = [
{
class = "power-btn";
label = "<span font-size='40pt'></span>";
on_click = "!shutdown now";
type = "button";
}
{
class = "power-btn";
label = "<span font-size='40pt'></span>";
on_click = "!reboot";
type = "button";
}
];
}
{
label = "Uptime: {{30000:uptime -p | cut -d ' ' -f2-}}";
name = "uptime";
type = "label";
}
];
}
];
tooltip = "Up: {{30000:uptime -p | cut -d ' ' -f2-}}";
type = "custom";
}
];
center = [
{
inherit icon_size;
type = "focused";
show_icon = true;
show_title = true;
truncate = "end";
}
];
end = [
{
type = "upower";
format = "{percentage}%";
}
{type = "clock";}
{
type = "tray";
inherit icon_size;
}
(mkIf
config.services.swaync.enable
{
type = "notifications";
"show_count" = true;
icons = {
"closed_none" = "󰍥";
"closed_some" = "󱥂";
"closed_dnd" = "󱅯";
"open_none" = "󰍡";
"open_some" = "󱥁";
"open_dnd" = "󱅮";
};
})
];
};
style = ''
.tray .item {
min-width: 40px;
}
'';
};
}

View file

@ -1,36 +0,0 @@
{inputs, ...}: {
imports = [inputs.ironbar.homeManagerModules.default];
programs.ironbar = {
enable = true;
systemd = true;
config = {
position = "top";
anchor_to_edges = true;
center = [
{
type = "focused";
show_icon = true;
show_title = true;
icon_size = 20;
truncate = "end";
}
];
end = [
{type = "volume";}
{type = "clock";}
{type = "tray";}
];
};
style = ''
.tray {
margin-top: 5px;
padding: 10px;
border-radius: 50px;
}
.tray .item {
border-radius: 50px;
min-height: 25px;
padding: 0;
'';
};
}

View file

@ -8,14 +8,19 @@
terminal = "foot"; terminal = "foot";
browser = "firefox"; browser = "firefox";
prefix = "Alt"; prefix = "Alt";
guiFileManager = "nautilus";
cliFileManager = "yazi";
in { in {
programs.niri.settings.binds = { programs.niri.settings.binds = {
"${prefix}+D".action.spawn = appLauncher; "${prefix}+D".action.spawn = appLauncher;
"${prefix}+Return".action.spawn = terminal; "${prefix}+Return".action.spawn = terminal;
"${prefix}+W".action.spawn = browser; "${prefix}+W".action.spawn = browser;
"${prefix}+Shift+E".action.quit.skip-confirmation = true; "${prefix}+E".action.spawn = guiFileManager;
"${prefix}+Shift+E".action.spawn = [terminal "-e" cliFileManager];
"${prefix}+Shift+Slash".action = config.lib.niri.actions.show-hotkey-overlay; "${prefix}+Shift+Slash".action = config.lib.niri.actions.show-hotkey-overlay;
"${prefix}+Q".action = config.lib.niri.actions.close-window; "${prefix}+Q".action = config.lib.niri.actions.close-window;
"${prefix}+Shift+Q".action.quit.skip-confirmation = true;
"${prefix}+F".action = config.lib.niri.actions.maximize-column; "${prefix}+F".action = config.lib.niri.actions.maximize-column;
"${prefix}+Shift+F".action = config.lib.niri.actions.fullscreen-window; "${prefix}+Shift+F".action = config.lib.niri.actions.fullscreen-window;
"${prefix}+C".action = config.lib.niri.actions.center-column; "${prefix}+C".action = config.lib.niri.actions.center-column;
@ -157,5 +162,7 @@ in {
"XF86AudioMedia" = { "XF86AudioMedia" = {
action.spawn = ["sh" "-c" "env XDG_CURRENT_DESKTOP=gnome gnome-control-center"]; action.spawn = ["sh" "-c" "env XDG_CURRENT_DESKTOP=gnome gnome-control-center"];
}; };
"XF86PowerOff".action.spawn = "wlogout";
}; };
} }

View file

@ -26,9 +26,12 @@ in {
programs.niri = { programs.niri = {
settings = { settings = {
input.keyboard.xkb = { input = {
layout = "us"; power-key-handling.enable = false;
options = "compose:ralt"; keyboard.xkb = {
layout = "us";
options = "compose:ralt";
};
}; };
prefer-no-csd = true; prefer-no-csd = true;
@ -117,4 +120,64 @@ in {
Restart = "on-failure"; Restart = "on-failure";
}; };
}; };
programs.wlogout = {
enable = true;
layout = let
systemd = let
systemd = lib.getExe' pkgs.systemd;
in {
loginctl = systemd "loginctl";
systemctl = systemd "systemctl";
};
in [
{
action = "${systemd.loginctl} lock-session";
keybind = "l";
label = "lock";
text = "Lock";
}
{
action = "${systemd.systemctl} hibernate";
keybind = "h";
label = "hibernate";
text = "Hibernate";
}
{
action = "${
systemd.loginctl
} terminate-user ${
config.home.username
}";
keybind = "q";
label = "logout";
text = "Logout";
}
{
action = "${systemd.systemctl} poweroff";
keybind = "p";
label = "shutdown";
text = "Shutdown";
}
{
action = "${systemd.systemctl} suspend";
keybind = "s";
label = "suspend";
text = "Suspend";
}
{
action = "${systemd.systemctl} reboot";
keybind = "r";
label = "reboot";
text = "Reboot";
}
];
};
} }

64
home/programs/swaync.nix Normal file
View file

@ -0,0 +1,64 @@
{
pkgs,
lib,
...
}: let
inherit (lib) mkForce;
swayncStyle = pkgs.fetchurl {
url = "https://github.com/catppuccin/swaync/releases/download/v0.2.3/macchiato.css";
sha256 = "sha256-LMm6nWn1JPPgj5YpppwFG3lXTtXem5atlIvqrDxd0bM=";
};
in {
home.packages = [pkgs.procps];
services.swaync = {
enable = true;
style = swayncStyle;
settings = {
positionX = "right";
positionY = "top";
layer = "overlay";
control-center-layer = "top";
layer-shell = true;
cssPriority = "application";
control-center-margin-top = 0;
control-center-margin-bottom = 0;
control-center-margin-right = 0;
control-center-margin-left = 0;
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 64;
notification-body-image-height = 100;
notification-body-image-width = 200;
widgets = [
"title"
"dnd"
"mpris"
"notifications"
"volume"
];
widget-config = {
title = {
text = "Notifications";
clear-all-button = true;
button-text = "󰩹";
};
dnd = {
text = "Do Not Disturb";
};
mpris = {
blur = true;
};
volume = {
label = "󰓃";
show-per-app = false;
};
};
};
};
systemd.user.services.swaync = {
Install.WantedBy = mkForce ["graphical-session.target"];
Unit.ConditionEnvironment = mkForce "";
Unit.PartOf = lib.mkForce ["graphical-session.target"];
};
}

View file

@ -4,8 +4,8 @@
./gnupg.nix ./gnupg.nix
./tmux.nix ./tmux.nix
./direnv.nix ./direnv.nix
./zellij.nix
./nix-index.nix ./nix-index.nix
./yazi.nix
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [

View file

@ -0,0 +1,26 @@
{pkgs, ...}: {
programs.yazi = let
# https://github.com/iynaix/dotfiles/blob/8bb1568019ea26f034ac1af9c499b3ff102391a5/home-manager/shell/yazi.nix#L9-L11
mkYaziPlugin = name: text: {
"${name}" = toString (pkgs.writeTextDir "${name}.yazi/init.lua" text) + "/${name}.yazi";
};
in {
enable = true;
enableFishIntegration = true;
plugins = mkYaziPlugin "smart-enter" ''
return {
entry = function()
local h = cx.active.current.hovered
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
end,
}
'';
keymap.manager.prepend_keymap = [
{
on = "l";
run = "plugin --sync smart-enter";
desc = "Enter the child directory, or open the file";
}
];
};
}

View file

@ -1,8 +0,0 @@
{
programs.zellij = {
enable = true;
settings = {
pane_frames = false;
};
};
}

View file

@ -34,7 +34,7 @@ in {
"${home}/services/udiskie.nix" "${home}/services/udiskie.nix"
"${home}/programs/niri" "${home}/programs/niri"
"${home}/programs/ironbar" "${home}/programs/ironbar.nix"
"${home}/programs/fuzzel.nix" "${home}/programs/fuzzel.nix"
"${home}/programs/swaybg.nix" "${home}/programs/swaybg.nix"
"${home}/programs/swaylock.nix" "${home}/programs/swaylock.nix"

View file

@ -14,7 +14,7 @@
pkgs.noto-fonts-extra pkgs.noto-fonts-extra
pkgs.intel-one-mono pkgs.intel-one-mono
inputs.self.packages.${pkgs.system}.apple-emoji-color inputs.self.packages.${pkgs.system}.apple-emoji-color
(pkgs.nerdfonts.override {fonts = ["IntelOneMono"];}) (pkgs.nerdfonts.override {fonts = ["IntelOneMono" "NerdFontsSymbolsOnly"];})
]; ];
enableDefaultPackages = false; enableDefaultPackages = false;
@ -22,7 +22,7 @@
enable = true; enable = true;
defaultFonts = { defaultFonts = {
serif = ["Noto Serif"]; serif = ["Noto Serif"];
sansSerif = ["Inter Medium"]; sansSerif = ["Inter Medium" "Symbols Nerd Font"];
monospace = ["IntoneMono NF"]; monospace = ["IntoneMono NF"];
emoji = ["Apple Color Emoji"]; emoji = ["Apple Color Emoji"];
}; };

View file

@ -1,5 +1,9 @@
{ {
services.logind = { services.logind = {
lidSwitch = "suspend"; lidSwitch = "suspend";
extraConfig = ''
HandlePowerKey=ignore
HandlePowerKeyLongPress=poweroff
'';
}; };
} }

View file

@ -1,9 +1,5 @@
{ {
services = { services = {
logind.extraConfig = ''
HandlePowerKey=suspend
'';
power-profiles-daemon.enable = true; power-profiles-daemon.enable = true;
# battery info # battery info