feat: a bunch of changes i forgot to commit

This commit is contained in:
Artur Manuel 2024-11-25 21:04:18 +00:00
commit 8141140de9
21 changed files with 2871 additions and 186 deletions

42
computers/python/apps.nix Normal file
View file

@ -0,0 +1,42 @@
{pkgs, ...}: {
environment.systemPackages = builtins.attrValues {
inherit
(pkgs)
nil
statix
deadnix
alejandra
;
};
alqueva = {
fonts = {
names = {
sansSerif = ["Iosevka Comfy Wide Fixed"];
monospace = ["Iosevka Comfy Wide Fixed"];
serif = ["Iosevka Comfy Wide Motion Fixed"];
};
packages = builtins.attrValues {
inherit
(pkgs.iosevka-comfy)
comfy-wide-fixed
comfy-wide-motion-fixed
;
nerdfonts = pkgs.nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];};
};
enable = true;
};
mpd = {
enable = true;
ncmpcpp = true;
};
emacs.enable = true;
xonsh.enable = true;
libvirt.enable = true;
direnv.enable = true;
git.enable = true;
pipewire.enable = true;
qutebrowser.enable = true;
openssh.enable = true;
river.enable = true;
};
}

View file

@ -0,0 +1,81 @@
[window]
decorations = "None"
[window.padding]
x = 8
y = 8
[font]
size = 14
[colors.primary]
foreground = "#e0def4"
background = "#191724"
dim_foreground = "#908caa"
bright_foreground = "#e0def4"
[colors.cursor]
text = "#e0def4"
cursor = "#524f67"
[colors.vi_mode_cursor]
text = "#e0def4"
cursor = "#524f67"
[colors.search.matches]
foreground = "#908caa"
background = "#26233a"
[colors.search.focused_match]
foreground = "#191724"
background = "#ebbcba"
[colors.hints.start]
foreground = "#908caa"
background = "#1f1d2e"
[colors.hints.end]
foreground = "#6e6a86"
background = "#1f1d2e"
[colors.line_indicator]
foreground = "None"
background = "None"
[colors.footer_bar]
foreground = "#e0def4"
background = "#1f1d2e"
[colors.selection]
text = "#e0def4"
background = "#403d52"
[colors.normal]
black = "#26233a"
red = "#eb6f92"
green = "#31748f"
yellow = "#f6c177"
blue = "#9ccfd8"
magenta = "#c4a7e7"
cyan = "#ebbcba"
white = "#e0def4"
[colors.bright]
black = "#6e6a86"
red = "#eb6f92"
green = "#31748f"
yellow = "#f6c177"
blue = "#9ccfd8"
magenta = "#c4a7e7"
cyan = "#ebbcba"
white = "#e0def4"
[colors.dim]
black = "#6e6a86"
red = "#eb6f92"
green = "#31748f"
yellow = "#f6c177"
blue = "#9ccfd8"
magenta = "#c4a7e7"
cyan = "#ebbcba"
white = "#e0def4"

View file

@ -1,9 +0,0 @@
{inputs, ...}: {
systemd.user.tmpfiles.users.artur.rules = (hcfg: [
"L+ ${hcfg}/qutebrowser/config.py - - - - ${./qutebrowser/config.py}"
"L+ ${hcfg}/qutebrowser/rosepine - - - - ${inputs.rosepine-qutebrowser}"
"L+ ${hcfg}/kanshi/ - - - - ${./kanshi}"
"L+ ${hcfg}/fuzzel/ - - - - ${./fuzzel}"
"L+ ${hcfg}/river/ - - - - ${./river}"
]) "%h/.config";
}

View file

@ -0,0 +1,165 @@
monitor=HDMI-A-1,1920x1080@100,0x0,1
# exec-once = nm-applet &
exec-once = hyprpaper
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = HYPRCURSOR_THEME,rose-pine-hyprcursor
general {
gaps_in = 5
gaps_out = 10
border_size = 0
col.active_border = rgba(00000000)
col.inactive_border = rgba(00000000)
col.nogroup_border = rgba(00000000)
col.nogroup_border_active = rgba(00000000)
resize_on_border = false
allow_tearing = false
layout = master
}
decoration {
rounding = 10
active_opacity = 1.0
inactive_opacity = 1.0
}
animations {
enabled = yes, please :)
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
master {
new_status = master
mfact = 0.60
}
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
}
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
gestures {
workspace_swipe = false
}
$mainMod = SUPER # Sets "Windows" key as main modifier
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, emacs
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, fuzzel
bind = $mainMod, F, exec, emacs --eval '(dired "~")'
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

View file

@ -0,0 +1,2 @@
preload = /tmp/wallpapers/rose_pine/04.png
wallpaper = HDMI-A-1,/tmp/wallpapers/rose_pine/04.png

View file

@ -1,15 +1,16 @@
#!/bin/sh
riverctl spawn kanshi
riverctl spawn "swaybg -i /tmp/wallpapers/rose_pine/04.png -m fill"
riverctl spawn "swaybg -i ~/.local/share/wallpapers/02.jpg -m fill"
riverctl spawn "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
riverctl spawn "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river"
riverctl map normal Super+Shift Return spawn emacs
riverctl map normal Super T spawn alacritty
riverctl map normal Super R spawn fuzzel
riverctl map normal Super Q close
riverctl map normal Super+Shift E exit
riverctl map normal Super+Shift C spawn "~/.config/river/init"
riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous
riverctl map normal Super+Shift J swap next
@ -75,14 +76,16 @@ do
riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-'
done
riverctl background-color 0x000000
riverctl border-color-focused 0x9ccfd8
riverctl border-color-unfocused 0x524f67
riverctl set-repeat 50 300
# hacky way of making everything have borders
riverctl rule-add ssd
riverctl background-color 0x00000000
riverctl border-color-focused 0x9ccfd8ff
riverctl border-color-unfocused 0x524f67ff
riverctl keyboard-layout "us"
riverctl set-repeat 50 300
riverctl xcursor-theme "BreezeX-RosePine-Linux"
riverctl default-layout rivertile

View file

@ -2,9 +2,9 @@
imports = [
./hardware-configuration.nix
./disks.nix
./river.nix
./theme.nix
./configs
./apps.nix
./users.nix
];
config = {
@ -37,57 +37,6 @@
enable32Bit = false;
};
environment.systemPackages = builtins.attrValues {
inherit
(pkgs)
nil
statix
deadnix
alejandra
wget
vesktop
nicotine-plus
mpv
imv
lunarvim
amberol
;
};
alqueva = {
mpd = {
enable = true;
ncmpcpp = true;
};
fonts = {
names = {
sansSerif = ["Iosevka Comfy Wide Fixed"];
monospace = ["Iosevka Comfy Wide Fixed"];
serif = ["Iosevka Comfy Wide Motion Fixed"];
};
packages = builtins.attrValues {
nerdfonts = pkgs.nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];};
inherit (pkgs) font-awesome;
inherit (pkgs.iosevka-comfy)
comfy-wide-motion-fixed
comfy-wide-fixed
;
};
enable = true;
};
qutebrowser.enable = true;
pipewire.enable = true;
openssh.enable = true;
libvirt.enable = true;
direnv.enable = true;
emacs.enable = true;
git.enable = true;
};
networking.networkmanager.enable = true;
time.timeZone = "Europe/London";
i18n.defaultLocale = "nl_NL.UTF-8";

View file

@ -0,0 +1,11 @@
_: {
alqueva.support.wayland = true;
services.xserver = {
desktopManager.gnome = {
enable = true;
};
displayManager.gdm = {
enable = true;
};
};
}

View file

@ -1,46 +0,0 @@
{
inputs,
pkgs,
...
}: {
config = {
programs.river = {
enable = true;
extraPackages = builtins.attrValues {
inherit
(pkgs)
grim
slurp
wf-recorder
wl-clipboard
fuzzel
swaybg
kanshi
;
};
};
xdg.portal = {
config = {
common.default = ["gtk"];
river.default = ["wlr"];
};
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
enable = true;
wlr.enable = true;
};
environment.sessionVariables = {
NIXOS_OZONE_WL = "1";
QT_QPA_PLATFORM = "wayland";
};
systemd.tmpfiles.rules = [
"L+ /tmp/wallpapers/ - - - - ${inputs.wallpkgs.packages.${pkgs.system}.rose_pine}/share/wallpapers"
];
};
}

View file

@ -1,10 +1,9 @@
{
inputs,
pkgs,
lib,
...
}: let
gtkTheme = pkgs.rose-pine-gtk-theme;
in {
}: {
programs.dconf = {
profiles.user.databases = [
{
@ -13,8 +12,8 @@ in {
color-scheme = "prefer-dark";
cursor-size = lib.gvariant.mkUint32 24;
cursor-theme = "BreezeX-RosePine-Linux";
gtk-theme = "rose-pine";
icon-theme = "rose-pine";
gtk-theme = "rose-pine";
};
};
}
@ -30,13 +29,15 @@ in {
environment.systemPackages = builtins.attrValues {
inherit
(pkgs)
rose-pine-gtk-theme
rose-pine-cursor
rose-pine-icon-theme
libadwaita # workaround for PyGObject to give apps libadwaita
;
inherit gtkTheme;
};
systemd.user.tmpfiles.users.artur.rules = [
"L+ %h/.config/gtk-4.0/gtk.css - - - - ${gtkTheme}/share/themes/rose-pine/gtk-4.0/gtk.css"
systemd.user.tmpfiles.rules = [
"L+ %h/.config/gtk-4.0/gtk.css - - - - ${pkgs.rose-pine-gtk-theme}/share/themes/rose-pine/gtk-4.0/gtk.css"
"L+ %h/.config/gtk-4.0/gtk-dark.css - - - - ${pkgs.rose-pine-gtk-theme}/share/themes/rose-pine/gtk-4.0/gtk.css"
];
}

View file

@ -0,0 +1,39 @@
{
inputs,
pkgs,
...
}: {
alqueva.users.artur = {
tmpfiles = {
".config/qutebrowser/config.py" = ./configs/qutebrowser/config.py;
".config/qutebrowser/rosepine" = inputs.rosepine-qutebrowser;
".config/kanshi/" = ./configs/kanshi;
".config/fuzzel/" = ./configs/fuzzel;
".config/river/" = ./configs/river;
".config/alacritty" = ./configs/alacritty;
".local/share/wallpapers" = "${inputs.wallpkgs.packages.${pkgs.system}.rose_pine}/share/wallpapers/rose_pine";
};
packages = builtins.attrValues {
inherit
(pkgs)
wget
vesktop
mpv
imv
amberol
fractal
nicotine-plus
nautilus
;
neovim = inputs.painless-neovim.packages.${pkgs.system}.default;
};
groups = [
"wheel"
"video"
"audio"
"networkmanager"
"input"
"libvirtd"
];
};
}

View file

@ -13,5 +13,8 @@
./xonsh.nix
./aliases.nix
./libvirt.nix
./users.nix
./support.nix
./river.nix
];
}

View file

@ -0,0 +1,33 @@
{config, lib, pkgs, ...}: let
cfg = config.alqueva.river;
in {
options.alqueva.river = {
enable = lib.mkEnableOption "River";
};
config = lib.mkIf cfg.enable {
alqueva.support.wayland = true;
programs.river = {
enable = true;
xwayland.enable = false;
extraPackages = [
pkgs.swaybg
pkgs.kanshi
];
};
xdg.portal.wlr = {
enable = true;
settings = {
screencast = {
output_name = "HDMI-A-1";
chooser_type = "simple";
chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or";
};
};
};
services.gnome.gnome-keyring.enable = true;
};
}

View file

@ -10,7 +10,10 @@ in {
};
config = lib.mkIf cfg.enable {
programs.ssh.enableAskPassword = true;
programs = {
ssh.enableAskPassword = true;
seahorse.enable = true;
};
services.openssh.enable = true;
};
}

View file

@ -0,0 +1,40 @@
{config, lib, pkgs, ...}: let
cfg = config.alqueva.support;
inherit (lib) mkEnableOption;
in {
options.alqueva.support = {
wayland = mkEnableOption "wayland support";
};
config = lib.mkIf cfg.wayland {
xdg.portal = {
enable = true;
config.common = {
default = [
"gtk"
"kde"
];
};
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-kde
];
};
environment = {
systemPackages = builtins.attrValues {
inherit (pkgs)
slurp
grim
wf-recorder
fuzzel
alacritty
wl-clipboard
;
};
sessionVariables = {
"NIXOS_OZONE_WL" = "1";
"QT_QPA_PLATFORM" = "wayland";
};
};
};
}

View file

@ -0,0 +1,51 @@
{
config,
lib,
...
}: let
inherit (lib) types mkOption;
createTmpfilesEntries = entries: builtins.attrValues (builtins.mapAttrs (dest: path: "L+ %h/${dest} - - - - ${path}") entries);
cfg = config.alqueva.users;
in {
options.alqueva.users = mkOption {
description = "Users to have on the system.";
default = {};
type = types.attrsOf (types.submodule {
options = {
tmpfiles = mkOption {
description = "tmpfiles";
type = types.attrsOf types.path;
default = {};
};
packages = mkOption {
type = types.listOf types.package;
default = [];
description = "Packages installed to the the defined user.";
};
groups = mkOption {
type = types.listOf types.str;
default = [];
description = "Groups to add the defined user to.";
};
};
});
};
config = {
users.users =
builtins.mapAttrs (user: ucfg: {
description = user;
isNormalUser = true;
extraGroups = ucfg.groups;
inherit (ucfg) packages;
shell = config.programs.xonsh.package;
})
cfg;
systemd.user.tmpfiles.users =
builtins.mapAttrs (_: ucfg: {
rules = createTmpfilesEntries ucfg.tmpfiles;
})
cfg;
};
}