feat: add swaync, spotify, keyring
This commit is contained in:
parent
8f1e1ea06e
commit
4879c8321f
14 changed files with 561 additions and 4 deletions
|
|
@ -13,4 +13,7 @@
|
|||
ta = "tmux attach";
|
||||
ngc = "sudo nix-collect-garbage -d";
|
||||
nec = "sudo -E nvim -u $HOME/.config/nvim/init.lua --cmd 'cd /etc/nixos'";
|
||||
ncc = "sudo nixos-rebuild switch --upgrade-all --flake /etc/nixos";
|
||||
nup = "sudo nix-channel --update && sudo nixos-rebuild switch --upgrade-all --flake /etc/nixos";
|
||||
spt = "spotify_player";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
lsd
|
||||
ripgrep
|
||||
expect # contains 'unbuffer'
|
||||
# libs
|
||||
libnotify
|
||||
# languages
|
||||
gcc13
|
||||
go
|
||||
|
|
|
|||
|
|
@ -4,9 +4,13 @@
|
|||
./fzf.nix
|
||||
./git.nix
|
||||
./gnupg.nix
|
||||
./keyring.nix
|
||||
./neovim.nix
|
||||
./playerctl.nix
|
||||
./spotify-player
|
||||
./ssh.nix
|
||||
./sway.nix
|
||||
./swaync
|
||||
./tmux.nix
|
||||
./udiskie.nix
|
||||
./vscode.nix
|
||||
|
|
|
|||
16
users/gandalf/modules/keyring.nix
Normal file
16
users/gandalf/modules/keyring.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{ pkgs, ... }: {
|
||||
|
||||
services.gnome-keyring = {
|
||||
enable = true;
|
||||
components = [
|
||||
"pkcs11"
|
||||
"secrets"
|
||||
"ssh"
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
gnome.seahorse
|
||||
];
|
||||
|
||||
}
|
||||
13
users/gandalf/modules/playerctl.nix
Normal file
13
users/gandalf/modules/playerctl.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{ pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [
|
||||
playerctl
|
||||
];
|
||||
|
||||
/*
|
||||
services.playerctld = {
|
||||
enable = true;
|
||||
};
|
||||
*/
|
||||
|
||||
}
|
||||
47
users/gandalf/modules/spotify-player/app.toml
Normal file
47
users/gandalf/modules/spotify-player/app.toml
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
theme = "dracula"
|
||||
client_id = "65b708073fc0480ea92a077233ca87bd"
|
||||
client_port = 8080
|
||||
playback_format = """
|
||||
{track} • {artists}
|
||||
{album}
|
||||
{metadata}"""
|
||||
tracks_playback_limit = 50
|
||||
app_refresh_duration_in_ms = 32
|
||||
playback_refresh_duration_in_ms = 0
|
||||
cover_image_refresh_duration_in_ms = 2000
|
||||
page_size_in_rows = 20
|
||||
track_table_item_max_len = 32
|
||||
play_icon = "▶"
|
||||
pause_icon = "▌▌"
|
||||
liked_icon = "♥"
|
||||
border_type = "Plain"
|
||||
progress_bar_type = "Rectangle"
|
||||
playback_window_position = "Top"
|
||||
cover_img_length = 9
|
||||
cover_img_width = 5
|
||||
cover_img_scale = 1.0
|
||||
playback_window_width = 6
|
||||
enable_media_control = true
|
||||
enable_streaming = true
|
||||
enable_cover_image_cache = true
|
||||
default_device = "spotify-player"
|
||||
|
||||
[copy_command]
|
||||
command = "xclip"
|
||||
args = [
|
||||
"-sel",
|
||||
"c",
|
||||
]
|
||||
|
||||
[notify_format]
|
||||
summary = "{track} • {artists}"
|
||||
body = "{album}"
|
||||
|
||||
[device]
|
||||
name = "spotify-player"
|
||||
device_type = "speaker"
|
||||
volume = 80
|
||||
bitrate = 320
|
||||
audio_cache = false
|
||||
|
||||
# test
|
||||
5
users/gandalf/modules/spotify-player/default.nix
Normal file
5
users/gandalf/modules/spotify-player/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./spotify-player.nix
|
||||
];
|
||||
}
|
||||
9
users/gandalf/modules/spotify-player/spotify-player.nix
Normal file
9
users/gandalf/modules/spotify-player/spotify-player.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{ pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [
|
||||
spotify-player
|
||||
];
|
||||
|
||||
xdg.configFile."spotify-player/app.toml".source = ./app.toml;
|
||||
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ in
|
|||
home.packages = with pkgs; [
|
||||
brightnessctl # control screen brightness
|
||||
pavucontrol # control audio
|
||||
playerctl # control player
|
||||
networkmanagerapplet # control network
|
||||
dracula-theme # gtk theme
|
||||
gnome3.adwaita-icon-theme # default gnome cursors
|
||||
|
|
@ -51,6 +52,7 @@ in
|
|||
startup = [
|
||||
{ command = "blueman-applet"; }
|
||||
{ command = "nm-applet"; }
|
||||
{ command = "swaync"; }
|
||||
];
|
||||
input = {
|
||||
"2:7:SynPS/2_Synaptics_TouchPad" = {
|
||||
|
|
@ -160,15 +162,16 @@ in
|
|||
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-";
|
||||
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%+";
|
||||
|
||||
# "XF86AudioPrev" = "exec ${pkgs.mpc_cli}/bin/mpc -q next";
|
||||
# "XF86AudioNext" = "exec ${pkgs.mpc_cli}/bin/mpc -q prev";
|
||||
# "XF86AudioPlay" = "exec ${pkgs.mpc_cli}/bin/mpc -q toggle";
|
||||
# "XF86AudioPause" = "exec ${pkgs.mpc_cli}/bin/mpc -q toggle";
|
||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||
|
||||
# Programs
|
||||
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
|
||||
"${cfg.modifier}+Shift+n" = "exec ${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
"${cfg.modifier}+Shift+a" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
|
||||
};
|
||||
fonts = {
|
||||
names = [ common.font ];
|
||||
|
|
|
|||
94
users/gandalf/modules/swaync/config.json
Normal file
94
users/gandalf/modules/swaync/config.json
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"notification-icon-size": 64,
|
||||
"notification-body-image-height": 100,
|
||||
"notification-body-image-width": 200,
|
||||
"timeout": 10,
|
||||
"timeout-low": 5,
|
||||
"timeout-critical": 0,
|
||||
"fit-to-screen": true,
|
||||
"keyboard-shortcuts": true,
|
||||
"image-visibility": "when-available",
|
||||
"transition-time": 200,
|
||||
"hide-on-clear": false,
|
||||
"hide-on-action": true,
|
||||
"script-fail-notify": true,
|
||||
"widgets": [
|
||||
"mpris",
|
||||
"volume",
|
||||
"backlight",
|
||||
"title",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": true,
|
||||
"button-text": "Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"label": {
|
||||
"max-lines": 1,
|
||||
"text": "Notification Center"
|
||||
},
|
||||
"mpris": {
|
||||
"image-size": 96,
|
||||
"image-radius": 12
|
||||
},
|
||||
"volume": {
|
||||
"label": " "
|
||||
},
|
||||
"backlight": {
|
||||
"label": " "
|
||||
},
|
||||
"buttons-grid": {
|
||||
"actions": [
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl poweroff"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl reboot"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "swaylock"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "swaymsg exit"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "systemctl suspend"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "iwgtk"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "blueman-manager"
|
||||
},
|
||||
{
|
||||
"label": "",
|
||||
"command": "kooha"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
5
users/gandalf/modules/swaync/default.nix
Normal file
5
users/gandalf/modules/swaync/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./swaync.nix
|
||||
];
|
||||
}
|
||||
340
users/gandalf/modules/swaync/style.css
Normal file
340
users/gandalf/modules/swaync/style.css
Normal file
|
|
@ -0,0 +1,340 @@
|
|||
@define-color cc-bg rgba(0, 0, 0, 1);
|
||||
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||
@define-color noti-bg rgb(17, 17, 27);
|
||||
@define-color noti-bg-darker rgb(43, 43, 57);
|
||||
@define-color noti-bg-hover rgb(27, 27, 43);
|
||||
@define-color noti-bg-focus rgba(27, 27, 27, 0.6);
|
||||
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||
@define-color text-color rgba(169, 177, 214, 1);
|
||||
@define-color text-color-disabled rgb(150, 150, 150);
|
||||
@define-color bg-selected rgb(0, 128, 255);
|
||||
|
||||
* {
|
||||
font-family: DejaVuSansM Nerd Font;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.control-center .notification-row:focus,
|
||||
.control-center .notification-row:hover {
|
||||
opacity: 1;
|
||||
background: @noti-bg-darker
|
||||
}
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 12px;
|
||||
margin: 10px;
|
||||
padding: 0;
|
||||
border: 2px solid #7aa2f7
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 10px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all .15s ease-in-out;
|
||||
border: none
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: none;
|
||||
color: @text-color;
|
||||
transition: all .15s ease-in-out
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0;
|
||||
border-top: none;
|
||||
border-right: none
|
||||
}
|
||||
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
background: #1b1b2b
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
background: #1b1b2b
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px
|
||||
}
|
||||
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent
|
||||
}
|
||||
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: #fff;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
color: rgba(158, 206, 106, 1);
|
||||
text-shadow: none
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
border: 1px solid #7aa2f7;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: .5
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25)
|
||||
}
|
||||
|
||||
.widget-title {
|
||||
color: @text-color;
|
||||
margin: 10px;
|
||||
font-size: 1.5rem
|
||||
}
|
||||
|
||||
.widget-title>button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-title>button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
color: @text-color;
|
||||
margin: 10px;
|
||||
font-size: 1.1rem
|
||||
}
|
||||
|
||||
.widget-dnd>switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.widget-dnd>switch:checked {
|
||||
background: @bg-selected
|
||||
}
|
||||
|
||||
.widget-dnd>switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-label {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.widget-label>label {
|
||||
font-size: 1.5rem;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.widget-mpris {
|
||||
color: @text-color;
|
||||
background: @noti-bg-darker;
|
||||
padding: 10px;
|
||||
margin: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px
|
||||
}
|
||||
|
||||
.widget-mpris-title {
|
||||
font-weight: 700;
|
||||
font-size: 1.25rem
|
||||
}
|
||||
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem
|
||||
}
|
||||
|
||||
.widget-buttons-grid {
|
||||
font-size: x-large;
|
||||
padding: 8px;
|
||||
margin: 20px 10px 10px;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg-darker;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button {
|
||||
margin: 3px;
|
||||
background: #343b58;
|
||||
border-radius: 12px;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
/* background: @noti-bg-hover; */
|
||||
color: rgba(158, 206, 106, 1)
|
||||
}
|
||||
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.topbar-buttons>button {
|
||||
border: none;
|
||||
background: transparent
|
||||
}
|
||||
|
||||
.widget-volume {
|
||||
background: @noti-bg-darker;
|
||||
padding: 8px;
|
||||
margin: 10px;
|
||||
border-radius: 12px;
|
||||
font-size: x-large;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 4px 8px 8px;
|
||||
margin: 0 8px 8px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-backlight {
|
||||
background: @noti-bg-darker;
|
||||
padding: 8px;
|
||||
margin: 10px;
|
||||
border-radius: 12px;
|
||||
font-size: x-large;
|
||||
color: @text-color
|
||||
}
|
||||
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem
|
||||
}
|
||||
|
||||
.widget-inhibitors>button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
.widget-inhibitors>button:hover {
|
||||
background: @noti-bg-hover
|
||||
}
|
||||
13
users/gandalf/modules/swaync/swaync.nix
Normal file
13
users/gandalf/modules/swaync/swaync.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{ pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [
|
||||
swaynotificationcenter
|
||||
libnotify
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"swaync/config.json".source = ./config.json;
|
||||
"swaync/style.css".source = ./style.css;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@
|
|||
enable = true;
|
||||
enableCompletion = true;
|
||||
enableAutosuggestions = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
/*
|
||||
plugins = [
|
||||
{
|
||||
name = "zsh-syntax-highlighting";
|
||||
|
|
@ -14,6 +16,7 @@
|
|||
};
|
||||
}
|
||||
];
|
||||
*/
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
theme = "terminalparty";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue