Set up Sway #1

Open
dln wants to merge 1 commit from dln/push-uukkorqwopqy into main
8 changed files with 317 additions and 70 deletions

View file

@ -15,33 +15,6 @@ in
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ gnome-ssh-askpass4 ];
# Excluding some GNOME applications from the default install
environment.gnome.excludePackages =
(with pkgs; [
gnome-connections
gnome-photos
gnome-tour
snapshot
])
++ (with pkgs; [
atomix # puzzle game
baobab # disk usage analyzer
cheese # webcam tool
epiphany # web browser
geary # email reader
gnome-clocks
gnome-contacts
gnome-disk-utility
gnome-logs
gnome-music
gnome-terminal
hitori # sudoku game
iagno # go game
simple-scan
tali # poker game
yelp # help viewer
]);
fonts = {
fontDir.enable = true;
fontconfig = {
@ -78,19 +51,19 @@ in
localNetworkGameTransfers.openFirewall = true;
};
services.gnome.gnome-keyring.enable = true;
security.polkit.enable = true;
services.printing.enable = true;
# services.printing.enable = true;
services.displayManager.defaultSession = "gnome";
services.xserver = {
# services.displayManager.defaultSession = "gnome";
services.greetd = {
enable = true;
displayManager.gdm.enable = true;
displayManager.gdm.autoSuspend = false;
desktopManager.gnome.enable = true;
xkb.layout = "se";
xkb.variant = "us";
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway";
user = "greeter";
};
};
};
services.pulseaudio.enable = false;
@ -99,6 +72,7 @@ in
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
audio.enable = true;
pulse.enable = true;
jack.enable = true;
};

54
flake.lock generated
View file

@ -134,11 +134,11 @@
"zig": "zig"
},
"locked": {
"lastModified": 1737699693,
"narHash": "sha256-Rs8KNdInnmqs0YNWvvauYlf2XcnA4EIdmRggvQGjmUQ=",
"lastModified": 1737779447,
"narHash": "sha256-+iVqQXAUJshUYgxOHfke54Ux4f/aggl1yub86KNx2tE=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "fd8cacaa674c93fb86751e8030af2b202133939e",
"rev": "71e62f96fa4d286eda835048428d5be96e9f87c1",
"type": "github"
},
"original": {
@ -221,11 +221,11 @@
]
},
"locked": {
"lastModified": 1737704314,
"narHash": "sha256-zta8jvOQ2wRCZmiwFEnS5iCulWAh8e+fLUlQxrgOBjM=",
"lastModified": 1737968762,
"narHash": "sha256-xiPARGKwocaMtv+U/rgi+h2g56CZZEmrcl7ldRaslq8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a0428685572b134f6594e7d7f5db5e1febbab2d7",
"rev": "e1ae908bcc30af792b0bb0a52e53b03d2577255e",
"type": "github"
},
"original": {
@ -266,11 +266,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1737701591,
"narHash": "sha256-S71nENrb8kBrEvihDD+1mzn5sRrRr1sAaNMkjWDx1h0=",
"lastModified": 1737961008,
"narHash": "sha256-GYzjvr6qsy1KQY0jdtkTloeKAAsF1Ls5jpPved3l1PY=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "c9248eec123e70ef1132bbedeae22e2af7011095",
"rev": "af9d81d77c8b81856a2d56048c8cb48e98bb929e",
"type": "github"
},
"original": {
@ -282,11 +282,11 @@
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1737675744,
"narHash": "sha256-2Q4SNciK6DHC5WknFSbk3aYjorayf9y4uz3tdtl/T1M=",
"lastModified": 1737934383,
"narHash": "sha256-aMMwHoHpaKbCaPoDd18N9gCCzA/IRPTrrRQmAWFQO54=",
"owner": "neovim",
"repo": "neovim",
"rev": "8bc28978b632362ae658f8d4a6327e07a8b371b2",
"rev": "1759b7844a2d468310b6d0ceca899fec6f2d4b84",
"type": "github"
},
"original": {
@ -302,11 +302,11 @@
]
},
"locked": {
"lastModified": 1737257306,
"narHash": "sha256-lEGgpA4kGafc76+Amnz+gh1L/cwUS2pePFlf22WEyh8=",
"lastModified": 1737861961,
"narHash": "sha256-LIRtMvAwLGb8pBoamzgEF67oKlNPz4LuXiRPVZf+TpE=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "744d330659e207a1883d2da0141d35e520eb87bd",
"rev": "79b7b8eae3243fc5aa9aad34ba6b9bbb2266f523",
"type": "github"
},
"original": {
@ -349,11 +349,11 @@
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1737569578,
"narHash": "sha256-6qY0pk2QmUtBT9Mywdvif0i/CLVgpCjMUn6g9vB+f3M=",
"lastModified": 1737885640,
"narHash": "sha256-GFzPxJzTd1rPIVD4IW+GwJlyGwBDV1Tj5FLYwDQQ9sM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "47addd76727f42d351590c905d9d1905ca895b82",
"rev": "4e96537f163fad24ed9eb317798a79afc85b51b7",
"type": "github"
},
"original": {
@ -381,11 +381,11 @@
},
"nixpkgs-unstable_2": {
"locked": {
"lastModified": 1737622296,
"narHash": "sha256-GWHH9ljsR0LR29IEruJnKVVk6veeQpo7kfolyDyCVGQ=",
"lastModified": 1737942377,
"narHash": "sha256-8Eo/jRAgT3CbAloyqOj6uPN1EqBvLI/Tv2g+RxHjkhU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "055c50feaa548eadca66407630961b77f3ebb750",
"rev": "88a55dffa4d44d294c74c298daf75824dc0aafb5",
"type": "github"
},
"original": {
@ -397,11 +397,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1737557748,
"narHash": "sha256-BaMuhctP1x00+8cBE2cJveJQb70/tWHI50MHj/ZrtOY=",
"lastModified": 1737879851,
"narHash": "sha256-H+FXIKj//kmFHTTW4DFeOjR7F1z2/3eb2iwN6Me4YZk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec",
"rev": "5d3221fd57cc442a1a522a15eb5f58230f45a304",
"type": "github"
},
"original": {
@ -413,11 +413,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1737469691,
"narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=",
"lastModified": 1737885589,
"narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab",
"rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
"type": "github"
},
"original": {

View file

@ -12,6 +12,8 @@
./nvim
./scripts.nix
./ssh.nix
./sway.nix
./theme-dark.nix
./tmux.nix
./utils.nix
./vcs.nix

View file

@ -34,8 +34,7 @@
gtk-titlebar-hide-when-maximized = true;
window-padding-balance = true;
window-padding-color = "extend";
window-theme = "system";
theme = "light:PatagiaLight,dark:PatagiaDark";
theme = "PatagiaDark";
keybind = [
"alt+shift+c=copy_to_clipboard"

186
home/common/sway.nix Normal file
View file

@ -0,0 +1,186 @@
{
config,
lib,
pkgs,
...
}:
{
config = lib.mkIf config.patagia.desktop.enable {
home.sessionVariables.NIXOS_OZONE_WL = "1"; # For electron apps
programs.wofi = {
enable = true;
settings = {
location = "top-center";
allow_markup = true;
width = 800;
};
style = ''
* {
font-family: TX-02;
}
window {
background-color: #141b23;
}
'';
};
home.packages = with pkgs; [
clipman
fuzzel
gcr
light
wofi
swayidle
swaylock
waybar
wireplumber
wob
];
services.gnome-keyring.enable = true;
home.pointerCursor = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
size = 24;
x11 = {
enable = true;
defaultCursor = "Adwaita";
};
};
xdg.portal = {
enable = true;
# config.common.default = "*";
extraPortals = with pkgs; [
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
];
xdgOpenUsePortal = true;
config = {
common = {
default = [ "wlr" ];
};
sway = {
default = [ "wlr" ];
};
};
};
wayland.windowManager.sway =
let
gtk-launch = "${pkgs.gtk4.dev}/bin/gtk4-launch";
light = "${pkgs.light}/bin/light";
wofi = "${pkgs.wofi}/bin/wofi";
wpctl = "${pkgs.wireplumber}/bin/wpctl";
in
{
enable = true;
systemd.enable = true;
wrapperFeatures.gtk = true;
# SwayFX for fancy fancification
package = pkgs.swayfx;
checkConfig = false; # workaround for https://discourse.nixos.org/t/sway-fails-with-cannot-create-gles2-renderer-after-update/45703
extraConfig = ''
corner_radius 6
shadows enable
'';
# default_dim_inactive 0.9
config = {
modifier = "Mod4";
terminal = "ghostty";
menu = "${wofi} --show drun";
fonts.names = [ "TX-02" ];
gaps = {
smartGaps = true;
smartBorders = "on";
inner = 0;
outer = 0;
};
input = {
"type:keyboard" = {
xkb_layout = "us,se";
xkb_options = "ctrl:nocaps,grp:switch,compose:rctrl";
};
"type:touchpad" = {
dwt = "true";
natural_scroll = "true";
tap = "true";
};
};
window = {
border = 3;
titlebar = false;
};
modes = {
"(p)oweroff, (s)uspend, (h)ibernate, (r)eboot, (l)ogout" = {
p = "exec swaymsg 'mode default' && systemctl poweroff";
s = "exec swaymsg 'mode default' && systemctl suspend-then-hibernate";
h = "exec swaymsg 'mode default' && systemctl hibernate";
r = "exec swaymsg 'mode default' && systemctl reboot";
l = "exec swaymsg 'mode default' && systemctl --user stop sway-session.target && systemctl --user stop graphical-session.target && swaymsg exit";
Return = "mode default";
Escape = "mode default";
};
};
keybindings =
let
inherit (config.wayland.windowManager.sway.config) modifier menu;
in
lib.mkAfter {
"${modifier}+Escape" = ''mode "(p)oweroff, (s)uspend, (h)ibernate, (r)eboot, (l)ogout"'';
"${modifier}+return" = "exec ${menu}";
"${modifier}+f" = "floating toggle";
"${modifier}+t" = "exec ghostty";
"${modifier}+s" = "sticky toggle";
"${modifier}+q" = ''kill'';
"${modifier}+Control+q" = "exit";
"${modifier}+r" = "reload";
"XF86MonBrightnessDown" = "exec '${light} -U 15'";
"XF86MonBrightnessUp" = "exec '${light} -A 15'";
"XF86AudioRaiseVolume" = "exec '${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%+ -l 1.0'";
"XF86AudioLowerVolume" = "exec '${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%- -l 1.0'";
"XF86AudioMute" = "exec '${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle'";
"Print" = "exec 'screenshot.sh clipboard'";
"F1" = "workspace number 1";
"F2" = "workspace number 2";
"F3" = "workspace number 3";
"F4" = "workspace number 4";
"F5" = "workspace number 5";
"F6" = "workspace number 6";
"F7" = "workspace number 7";
"F8" = "workspace number 8";
"F9" = "workspace number 9";
"F10" = "workspace number 10";
# Move focused container to workspace
"Shift+F1" = "move container to workspace number 1";
"Shift+F2" = "move container to workspace number 2";
"Shift+F3" = "move container to workspace number 3";
"Shift+F4" = "move container to workspace number 4";
"Shift+F5" = "move container to workspace number 5";
"Shift+F6" = "move container to workspace number 6";
"Shift+F7" = "move container to workspace number 7";
"Shift+F8" = "move container to workspace number 8";
"Shift+F9" = "move container to workspace number 9";
"Shift+F10" = "move container to workspace number 10";
};
};
};
};
}

View file

@ -0,0 +1,52 @@
{
config,
lib,
pkgs,
...
}:
{
config = lib.mkIf config.patagia.desktop.enable {
gtk = {
enable = true;
theme.name = "Arc-Dark";
iconTheme.package = pkgs.adwaita-icon-theme;
iconTheme.name = "Adwaita";
gtk2.extraConfig = ''
gtk-cursor-theme-name="Adwaita"
gtk-cursor-theme-size=24
gtk-application-prefer-dark-theme=1
'';
gtk3.extraConfig = {
"gtk-cursor-theme-name" = "Adwaita";
"gtk-cursor-theme-size" = 24;
"gtk-application-prefer-dark-theme" = 1;
};
gtk4.extraConfig = {
"gtk-cursor-theme-name" = "Adwaita";
"gtk-cursor-theme-size" = 24;
};
};
dconf = {
enable = true;
settings = {
"org/gnome/desktop/interface" = {
"color-scheme" = "prefer-dark";
"gtk-enable-primary-paste" = false;
};
};
};
qt = {
enable = true;
platformTheme.name = "adwaita";
style = {
name = "adwaita-dark";
package = pkgs.adwaita-qt;
};
};
};
}

View file

@ -16,6 +16,12 @@
};
};
wayland.windowManager.sway.config.output = {
eDP-1 = {
scale = "2";
};
};
home.packages = with pkgs; [ ];
programs.gpg.enable = true;

View file

@ -83,13 +83,41 @@
"patagia.net"
"aarn.patagia.net"
];
networkmanager.enable = false;
useDHCP = lib.mkDefault true;
wireless.iwd = {
enable = true;
settings = {
Settings = {
AutoConnect = true;
};
};
};
};
networking.networkmanager.wifi.backend = "iwd";
services.nscd.enableNsncd = false;
systemd.network.enable = true;
#networking.networkmanager.wifi.backend = "iwd";
services.resolved = {
enable = true;
domains = [
"patagia.net"
"aarn.patagia.net"
];
llmnr = "false";
fallbackDns = [ "9.9.9.9" ];
};
services.mullvad-vpn.enable = true;
security.tpm2 = {
enable = true;
pkcs11.enable = true;
tctiEnvironment.enable = true;
};
users.users.dln = {
isNormalUser = true;
description = "Daniel Lundin";
@ -108,12 +136,12 @@
patagia = {
desktop.enable = true;
laptop.enable = true;
plymouth.enable = true;
# plymouth.enable = true;
podman.enable = true;
};
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "dln";
# services.displayManager.autoLogin.enable = true;
# services.displayManager.autoLogin.user = "dln";
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;