flakfiy some Justfile recipes and experiment with wayland based custom desktop
This commit is contained in:
parent
06a47c0d23
commit
476e10780b
18 changed files with 739 additions and 149 deletions
28
nix/home-manager/profiles/experimental-desktop.nix
Normal file
28
nix/home-manager/profiles/experimental-desktop.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
nodeFlake,
|
||||
packages',
|
||||
...
|
||||
}: let
|
||||
pkgsUnstable = pkgs.callPackage nodeFlake.inputs.nixpkgs-unstable.outPath {};
|
||||
in {
|
||||
imports = [
|
||||
../profiles/wayland-desktop.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# experimental WMs
|
||||
packages'.jay
|
||||
packages'.magmawm
|
||||
|
||||
# swayidle
|
||||
# swaylock
|
||||
|
||||
# # fonts
|
||||
# noto-fonts
|
||||
# font-awesome
|
||||
# noto-fonts-emoji
|
||||
];
|
||||
}
|
107
nix/home-manager/profiles/gnome-desktop.nix
Normal file
107
nix/home-manager/profiles/gnome-desktop.nix
Normal file
|
@ -0,0 +1,107 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
in {
|
||||
imports = [
|
||||
../profiles/wayland-desktop.nix
|
||||
];
|
||||
|
||||
services = {
|
||||
gnome-keyring.enable = false;
|
||||
blueman-applet.enable = true;
|
||||
flameshot.enable = true;
|
||||
};
|
||||
|
||||
# TODO: remove this comment once i'm sure everything works
|
||||
# xdg.configFile."autostart/gnome-keyring-ssh.desktop".text = ''
|
||||
# [Desktop Entry]
|
||||
# Type=Application
|
||||
# Hidden=true
|
||||
# '';
|
||||
|
||||
services.gpg-agent.pinentryFlavor = "gnome3";
|
||||
|
||||
dconf.settings = let
|
||||
manualKeybindings = [
|
||||
{
|
||||
binding = "Print";
|
||||
command = "flameshot gui";
|
||||
name = "flameshot";
|
||||
}
|
||||
|
||||
{
|
||||
binding = "<Super>t";
|
||||
command = "alacritty";
|
||||
name = "alacritty";
|
||||
}
|
||||
];
|
||||
|
||||
numWorkspaces = 10;
|
||||
customKeybindingBaseName = "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom";
|
||||
customKeybindingsNames =
|
||||
builtins.genList (i: "/${customKeybindingBaseName}${toString i}/")
|
||||
(
|
||||
(builtins.length manualKeybindings)
|
||||
+ numWorkspaces # for sending to the workspace
|
||||
);
|
||||
|
||||
workspacesKeyBindingsOffset = builtins.length manualKeybindings;
|
||||
|
||||
# with this we can make use of all number keys [0-9]
|
||||
mapToNumber = i:
|
||||
if i < 10
|
||||
then i
|
||||
else if i == 10
|
||||
then 0
|
||||
else throw "i exceeds 10: ${i}";
|
||||
in
|
||||
{
|
||||
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||
custom-keybindings = customKeybindingsNames;
|
||||
screenreader = "@as []";
|
||||
screensaver = ["<Alt><Super>l"];
|
||||
};
|
||||
|
||||
# disable the builtin <Super>[1-9] functionality
|
||||
"org/gnome/shell/keybindings" = builtins.listToAttrs ((builtins.genList
|
||||
(i: {
|
||||
name = "switch-to-application-${toString (i + 1)}";
|
||||
value = [];
|
||||
})
|
||||
numWorkspaces) ++ [
|
||||
{
|
||||
name = "toggle-overview";
|
||||
value = [];
|
||||
}
|
||||
]);
|
||||
|
||||
# remap it to switching to the workspaces
|
||||
"org/gnome/desktop/wm/keybindings" = builtins.listToAttrs (builtins.genList
|
||||
(i: {
|
||||
name = "switch-to-workspace-${toString (i + 1)}";
|
||||
value = [
|
||||
"<Super>${toString (mapToNumber (i + 1))}"
|
||||
];
|
||||
})
|
||||
numWorkspaces);
|
||||
}
|
||||
// builtins.listToAttrs (builtins.genList
|
||||
(i: {
|
||||
name = "${customKeybindingBaseName}${toString i}";
|
||||
value = builtins.elemAt manualKeybindings i;
|
||||
})
|
||||
(builtins.length manualKeybindings))
|
||||
// builtins.listToAttrs (builtins.genList
|
||||
(i: {
|
||||
name = "${customKeybindingBaseName}${toString (workspacesKeyBindingsOffset + i)}";
|
||||
value = {
|
||||
binding = "<Control><Super>${toString (mapToNumber (i + 1))}";
|
||||
command = "wmctrl -r :ACTIVE: -t ${toString i}";
|
||||
name = "Send to workspace ${toString (i + 1)}";
|
||||
};
|
||||
})
|
||||
numWorkspaces);
|
||||
}
|
84
nix/home-manager/profiles/sway-desktop.nix
Normal file
84
nix/home-manager/profiles/sway-desktop.nix
Normal file
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../lib.nix {}) mkSimpleTrayService;
|
||||
in {
|
||||
imports = [
|
||||
../profiles/wayland-desktop.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
swayidle
|
||||
swaylock
|
||||
|
||||
# fonts
|
||||
noto-fonts
|
||||
font-awesome
|
||||
noto-fonts-emoji
|
||||
];
|
||||
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
systemdIntegration = true;
|
||||
|
||||
config = let
|
||||
modifier = "Mod4";
|
||||
in {
|
||||
inherit modifier;
|
||||
|
||||
keybindings = lib.mkOptionDefault {
|
||||
"${modifier}+Ctrl+l" = "exec ${pkgs.swaylock}/bin/swaylock -fF";
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
};
|
||||
|
||||
terminal = "alacritty";
|
||||
startup = [
|
||||
# Launch Firefox on start
|
||||
# {command = "firefox";}
|
||||
# {command = "gnome-keyring --replace"}
|
||||
];
|
||||
|
||||
|
||||
fonts = {
|
||||
names = [ "Noto Sans" "Font Awesome 5 Free" ];
|
||||
style = "Heavy";
|
||||
size = 10.0;
|
||||
};
|
||||
|
||||
|
||||
#fonts = {
|
||||
# names = [ "DejaVu Sans Mono" "FontAwesome5Free" ];
|
||||
# style = "Bold Semi-Condensed";
|
||||
# size = 11.0;
|
||||
#};
|
||||
|
||||
colors.focused = {
|
||||
childBorder = "#ffa500";
|
||||
|
||||
# border = "#ffa500";
|
||||
|
||||
# TODO: refer to the defaults for these
|
||||
border = "#4c7899";
|
||||
background = "#285577";
|
||||
text = "#ffffff";
|
||||
indicator = "#2e9ef4";
|
||||
};
|
||||
|
||||
window = {
|
||||
border = 4;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
timeouts = [
|
||||
{ timeout = 60 * 5; command = "${pkgs.swaylock}/bin/swaylock -fF"; }
|
||||
];
|
||||
};
|
||||
}
|
43
nix/home-manager/profiles/wayland-desktop.nix
Normal file
43
nix/home-manager/profiles/wayland-desktop.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (import ../lib.nix {}) mkSimpleTrayService;
|
||||
in {
|
||||
services.gpg-agent.pinentryFlavor = "gtk2";
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
wlr-randr
|
||||
wayout
|
||||
wl-clipboard
|
||||
wmctrl
|
||||
|
||||
# identifies key input syms
|
||||
wev
|
||||
|
||||
# TODO: whwat's this for?
|
||||
# wltype
|
||||
|
||||
pavucontrol
|
||||
playerctl
|
||||
pasystray
|
||||
qt5.qtwayland
|
||||
qt6.qtwayland
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
};
|
||||
|
||||
home.pointerCursor = {
|
||||
name = "Vanilla-DMZ";
|
||||
package = pkgs.vanilla-dmz;
|
||||
size = 32;
|
||||
x11.enable = true;
|
||||
gtk.enable = true;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue