Refactored sway

This commit is contained in:
James Patrick 2021-12-13 22:44:38 -05:00
parent 69a65a3d8f
commit 1264d0c7f6
4 changed files with 96 additions and 76 deletions

View File

@ -1,4 +1,10 @@
{ config, pkgs, ... }: { { config, pkgs, ... }: {
imports = imports = [
[ ./firefox.nix ./mako.nix ./nextcloud.nix ./waybar.nix ./emacs.nix ]; ./firefox.nix
./mako.nix
./nextcloud.nix
./waybar.nix
./emacs.nix
./sway.nix
];
} }

View File

@ -0,0 +1,88 @@
{ config, lib, pkgs, ... }:
let cfg = config.application.sway;
in with lib; {
options = {
application.sway = {
enable = mkOption {
# TODO base on graphical
default = true;
type = with types; bool;
description = "testing one two three";
};
};
};
config = mkIf cfg.enable {
home-manager.users.james = {
home.sessionVariables = {
MOZ_ENABLE_WAYLAND = 1;
XDG_CURRENT_DESKTOP = "sway";
};
home.packages = with pkgs; [
autotiling
dmenu
kitty
mako
swayidle
swaylock
wl-clipboard
wofi
(writeTextFile {
name = "sway-entry";
destination = "/bin/sway-entry";
executable = true;
text = ''
#! ${pkgs.bash}/bin/bash
# first import environment variables from the login manager
# function is currently deprecated. It should be rolled back in the future
systemctl --user import-environment
# then start the service
exec systemctl --user start sway.service
'';
})
];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true; # so that gtk works properly
};
systemd.user.targets.sway-session = {
description = "Sway compositor session";
documentation = [ "man:systemd.special(7)" ];
bindsTo = [ "graphical-session.target" ];
wants = [ "graphical-session-pre.target" ];
after = [ "graphical-session-pre.target" ];
};
systemd.user.services.sway = {
description = "Sway - Wayland window manager";
documentation = [ "man:sway(5)" ];
bindsTo = [ "graphical-session.target" ];
wants = [ "graphical-session-pre.target" ];
after = [ "graphical-session-pre.target" ];
# We explicitly unset PATH here, as we want it to be set by
# systemctl --user import-environment in startsway
environment.PATH = lib.mkForce null;
serviceConfig = {
ExecStart =
"${pkgs.dbus}/bin/dbus-run-session ${pkgs.sway}/bin/sway --debug";
ExecStopPost =
"/usr/bin/systemctl --user unset-environment SWAYSOCK DISPLAY I3SOCK WAYLAND_DISPLAY";
NotifyAccess = "all";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
Type = "simple";
};
};
users.users.james.extraGroups = [ "video" "audio" ];
};
}

View File

@ -5,7 +5,6 @@
../boot.nix ../boot.nix
../cli.nix ../cli.nix
../fonts.nix ../fonts.nix
../sway.nix
../system/gtk.nix ../system/gtk.nix
./minimal.nix ./minimal.nix
]; ];

View File

@ -1,73 +0,0 @@
{ config, lib, pkgs, ... }: {
programs.sway = {
enable = true;
wrapperFeatures.gtk = true; # so that gtk works properly
};
home-manager.users.james = {
home.sessionVariables = {
MOZ_ENABLE_WAYLAND = 1;
XDG_CURRENT_DESKTOP = "sway";
};
home.packages = with pkgs; [
autotiling
dmenu
kitty
mako
swayidle
swaylock
wl-clipboard
wofi
(writeTextFile {
name = "sway-entry";
destination = "/bin/sway-entry";
executable = true;
text = ''
#! ${pkgs.bash}/bin/bash
# first import environment variables from the login manager
# function is currently deprecated. It should be rolled back in the future
systemctl --user import-environment
# then start the service
exec systemctl --user start sway.service
'';
})
];
};
systemd.user.targets.sway-session = {
description = "Sway compositor session";
documentation = [ "man:systemd.special(7)" ];
bindsTo = [ "graphical-session.target" ];
wants = [ "graphical-session-pre.target" ];
after = [ "graphical-session-pre.target" ];
};
systemd.user.services.sway = {
description = "Sway - Wayland window manager";
documentation = [ "man:sway(5)" ];
bindsTo = [ "graphical-session.target" ];
wants = [ "graphical-session-pre.target" ];
after = [ "graphical-session-pre.target" ];
# We explicitly unset PATH here, as we want it to be set by
# systemctl --user import-environment in startsway
environment.PATH = lib.mkForce null;
serviceConfig = {
ExecStart =
"${pkgs.dbus}/bin/dbus-run-session ${pkgs.sway}/bin/sway --debug";
ExecStopPost =
"/usr/bin/systemctl --user unset-environment SWAYSOCK DISPLAY I3SOCK WAYLAND_DISPLAY";
NotifyAccess = "all";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
Type = "simple";
};
};
users.users.james.extraGroups = [ "video" "audio" ];
imports = [ ./applications/mako.nix ./applications/waybar.nix ];
}