collate recent changes back to master

This commit is contained in:
atagen 2025-06-18 01:16:11 +10:00
commit 92ed39cb83
258 changed files with 5169 additions and 16379 deletions

115
home/bolt.nix Executable file → Normal file
View file

@ -1,114 +1,15 @@
{ config, pkgs, lib, ... }:
let
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
hyprland = (import flake-compat {
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
}).defaultNix;
wlogout_style_base = dots/wlogout/style.css;
wlogout_style = pkgs.runCommandLocal "wlogout_style_base" {wlogpath = lib.strings.escape ["/"] "${pkgs.wlogout}";} ''
cp ${wlogout_style_base} $out
sed -i "s/\/usr\/share\/wlogout/$wlogpath\/share\/wlogout/g" $out
sed -i "s/\/etc\/wlogout/$wlogpath\/etc\/wlogout/g" $out
'';
in {
{
pkgs,
...
}:
{
imports = [
hyprland.homeManagerModules.default
../foreign/dotfiles/home/programs/eww/default.nix
];
nixpkgs.overlays = [
(self: super: {
kwin-system76-scheduler-integration = pkgs.libsForQt5.callPackage ../system/syspkgs/kwin-system76-scheduler-integration.nix {};
hyprland-s76 = pkgs.callPackage ../system/syspkgs/hyprland-system76-scheduler-integration.nix {};
swayosd = pkgs.callPackage ./homepkgs/swayosd.nix {};
})
./home.nix
];
programs.eww-hyprland = {
enable = true;
colors = builtins.readFile dots/eww/colors.scss;
};
home.username = "bolt";
home.homeDirectory = "/home/bolt";
home.packages = with pkgs; [
zellij
xonotic
nicotine-plus
glib # for gsettings
fuzzel
grim
slurp
swaybg
wlogout
wf-recorder
libnotify
xorg.xrdb
swayidle
swaynotificationcenter
swayosd
waylock
playerctl
];
xdg.configFile = builtins.mapAttrs (name: value: { enable=true; text=builtins.readFile value; })
{
"wlogout/layout" = dots/wlogout/layout;
"wlogout/style.css" = wlogout_style;
"swaync/config.json" = dots/swaync/config.json;
"swaync/configSchema.json" = dots/swaync/configSchema.json;
"swaync/style.css" = dots/swaync/style.css;
"fuzzel/fuzzel.ini" = dots/fuzzel/fuzzel.ini;
};
wayland.windowManager.hyprland = {
enable = true;
systemdIntegration = true;
nvidiaPatches = true;
xwayland = {
enable = true;
hidpi = false;
};
recommendedEnvironment = true;
extraConfig = builtins.readFile dots/hyprland/hyprland.conf;
};
systemd.user.startServices = true;
systemd.user.services."com.system76.Scheduler.dbusproxy" = {
Unit = {
Description = "the system76 process scheduler kwin dbus proxy";
Requires = [ "dbus.service" ];
};
Install = {
WantedBy = [ "graphical-session.target" "default.target" ];
};
Service = {
ExecStart = ''${pkgs.kwin-system76-scheduler-integration}/bin/kwin-system76-scheduler-dbus-proxy.sh'';
};
};
systemd.user.services."hyprland-system76" = {
Unit = {
Description = "the hyprland process scheduler hook";
Requires = [ "dbus.service" ];
};
Install = {
WantedBy = [ "graphical-session.target" "default.target" ];
};
Service = {
ExecStart = ''${pkgs.hyprland-s76}/bin/hyprland-system76-scheduler-hook.sh'';
};
home.packages = builtins.attrValues {
inherit (pkgs) nicotine-plus;
};
}

View file

@ -1 +0,0 @@
{ allowUnfree = true; }

37
home/dots/Xresources Normal file
View file

@ -0,0 +1,37 @@
! special
*.foreground: #d3dae3
*.background: #181b28
*.cursorColor: #d3dae3
! black
*.color0: #2f343f
*.color8: #1e2233
! red
*.color1: #ed244e
*.color9: #da4453
! green
*.color2: #27ae60
*.color10: #71f79f
! yellow
*.color3: #f67400
*.color11: #fdbc4b
! blue
*.color4: #2980b9
*.color12: #1d99f3
! magenta
*.color5: #c50ed2
*.color13: #9b59b6
! cyan
*.color6: #3daee9
*.color14: #5294e2
! white
*.color7: #a1a9b1
*.color15: #656a73

View file

@ -1,33 +0,0 @@
$black: #2f343f;
$black_a: #1e2233;
$red: #ed244e;
$red_a: #da4453;
$green: #27ae60;
$green_a: #71f79f;
$yellow: #f67400;
$yellow_a: #fdbc4b;
$blue: #2980b9;
$blue_a: #1d99f3;
$magenta: #c50ed2;
$magenta_a: #9b59b6;
$cyan: #3daee9;
$cyan_a: #5294e2;
$white: #a1a9b1;
$white_a: #656a73;
$fg: #d3dae3;
$bg: #060604;
$border: $red;
$shadow: $black;
$base: $bg;
$bg1: $black;
$text: $fg;
$outline: $black;

View file

@ -1,17 +0,0 @@
dpi-aware=no
font=Montreux Classic:size=14
icon-theme=Papirus-Dark
terminal=kitty
[dmenu]
exit-immediately-if-empty=yes
[border]
width=3
radius=24
[colors]
background="060604FF"
text="d3dae3FF"
selection="ed244eFF"
selection-text="d3dae3ff"
selection-match="71f79fff"
match="27ae60FF"
border="2f343fFF"

View file

@ -1,131 +0,0 @@
exec-once = eww open bar
exec-once = swayidle -w timeout 300 'waylock'
exec-once = swayidle -w timeout 600 'systemctl suspend' after-resume 'eww open bar'
exec-once = ckb-next -c -b
exec-once = swaybg -i $HOME/Downloads/fantastyland-dark.png -m fill
exec-once = xrdb -l ~/.Xresources
exec-once = swayosd
exec-once = keepassxc
exec = eww reload
exec = gsettings set org.gnome.desktop.interface gtk-theme 'Sweet-Dark'
exec = gsettings set org.gnome.desktop.interface font-name 'Montreux Classic'
exec = gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
input {
kb_layout=us
kb_options=caps:escape,escape:caps
sensitivity=0.0
accel_profile=flat
}
general {
layout=dwindle
border_size=3
gaps_in=10
gaps_out=20
resize_on_border=true
hover_icon_on_border=true
col.active_border=0xffa1a9b1
col.inactive_border=0xff2f343f
col.group_border=0xffda4453
col.group_border_active=0xffed244e
}
dwindle {
preserve_split=true
pseudotile=true
use_active_for_splits=true
no_gaps_when_only=false
}
decoration {
rounding=8
blur=0
# screen_shader=/home/bolt/Code/desktop.frag
}
misc {
vfr=true
vrr=1
mouse_move_enables_dpms=true
key_press_enables_dpms=true
}
animations {
enabled=1
bezier=overshot,0.05,0.9,0.1,1.1
bezier=smooth,0.06,0.94,0.1,1.0
bezier=slosmooth,0.1,0.89,0.14,0.96
animation=windows,1,6,overshot,popin
animation=workspaces,1,6,smooth,slidevert
animation=specialWorkspace,1,6,overshot,slide
}
misc {
disable_hyprland_logo=true
disable_splash_rendering=true
}
monitor=,highrr,auto,1
windowrule=noanim,^(wlogout)$
windowrule=workspace special silent,^(keepassxc)$
windowrulev2 = workspace special silent, title:(KeePassXC)$
bindm=SUPER,mouse:272,movewindow
bindm=SUPER,mouse:273,resizewindow
bind=SUPER,Return,exec,kitty
bind=SUPER,E,exec,kitty joshuto
bind=SUPER,F,exec,firefox
bind=SUPER,D,exec,fuzzel
bind=SUPER,N,exec,swaync-client -t
bind=SUPER_SHIFT,Q,killactive
bind=SUPER_SHIFT,space,fullscreen,0
bind=SUPER,space,togglefloating
bind=SUPER,space,centerwindow
bind=SUPER,h,movefocus,l
bind=SUPER,l,movefocus,r
bind=SUPER,j,movefocus,d
bind=SUPER,k,movefocus,u
bind=SUPER_SHIFT,h,movewindow,l
bind=SUPER_SHIFT,l,movewindow,r
bind=SUPER_SHIFT,j,movewindow,d
bind=SUPER_SHIFT,k,movewindow,u
bind=SUPER,s,togglesplit
bind=SUPER,a,changegroupactive,f
bind=SUPER,z,changegroupactive,b
bind=SUPER,x,togglegroup
bind=SUPER,1,workspace,1
bind=SUPER,2,workspace,2
bind=SUPER,3,workspace,3
bind=SUPER,4,workspace,4
bind=SUPER_SHIFT,1,movetoworkspacesilent,1
bind=SUPER_SHIFT,2,movetoworkspacesilent,2
bind=SUPER_SHIFT,3,movetoworkspacesilent,3
bind=SUPER_SHIFT,4,movetoworkspacesilent,4
bind=SUPER_CTRL,h,resizeactive,-40 0
bind=SUPER_CTRL,l,resizeactive,40 0
bind=SUPER_CTRL,j,resizeactive,0 -40
bind=SUPER_CTRL,k,resizeactive,0 40
bind=SUPER,minus,togglespecialworkspace
bind=SUPER_SHIFT,minus,movetoworkspace,special
bind=SUPER_SHIFT,S,exec,grim -g "$(slurp)" -t png -o "$HOME/Pictures/$(date +%F_%H-%m-%S).png" && notify-send "Screenshot taken."
bind=SUPER_SHIFT_CTRL,S,exec,if [[ $(pgrep wf-recorder; echo $?) -eq 0 ]]; then wf-recorder -a -f "$HOME/Videos/recording_$(date +%F_%H-%m-%S).mp4" & notify-send "Recording desktop.."; else pkill wf-recorder && notify-send "Recording complete."; fi
bind=SUPER_SHIFT,E,exec,wlogout
bind=,XF86AudioMute,exec,swayosd --output-volume mute-toggle
bind=,XF86AudioRaiseVolume,exec,swayosd --output-volume raise
bind=,XF86AudioLowerVolume,exec,swayosd --output-volume lower
bind=,XF86AudioStop,exec,playerctl stop
bind=,XF86AudioPlay,exec,playerctl play-pause
bind=,XF86AudioPrev,exec,playerctl previous
bind=,XF86AudioNext,exec,playerctl next

View file

@ -1,62 +0,0 @@
{
"$schema": "~/.config/swaync/configSchema.json",
"positionX": "center",
"positionY": "bottom",
"control-center-positionX": "none",
"control-center-positionY": "top",
"control-center-margin-top": 8,
"control-center-margin-bottom": 8,
"control-center-margin-right": 8,
"control-center-margin-left": 8,
"control-center-width": 500,
"control-center-height": 600,
"fit-to-screen": false,
"layer": "overlay",
"cssPriority": "user",
"notification-icon-size": 64,
"notification-body-image-height": 100,
"notification-body-image-width": 200,
"timeout": 6,
"timeout-low": 6,
"timeout-critical": 0,
"notification-window-width": 600,
"keyboard-shortcuts": true,
"image-visibility": "when-available",
"transition-time": 200,
"hide-on-clear": true,
"hide-on-action": true,
"script-fail-notify": true,
"widgets": [
"inhibitors",
"title",
"dnd",
"mpris",
"notifications"
],
"widget-config": {
"inhibitors": {
"text": "Inhibitors",
"button-text": "Clear All",
"clear-all-button": true
},
"title": {
"text": "Notifications",
"clear-all-button": false,
"button-text": "Clear All"
},
"dnd": {
"text": "Do Not Disturb"
},
"label": {
"max-lines": 5,
"text": "Label Text"
},
"mpris": {
"image-size": 96,
"image-radius": 12
}
}
}

View file

@ -1,523 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "SwayNotificationCenter JSON schema",
"type": "object",
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string",
"description": "Pointer to the schema against which this document should be validated."
},
"positionX": {
"type": "string",
"description": "Horizontal position of control center and notification window",
"default": "right",
"enum": ["right", "left", "center"]
},
"layer": {
"type": "string",
"description": "Layer of control center window",
"default": "top",
"enum": ["background", "bottom", "top", "overlay"]
},
"cssPriority": {
"type": "string",
"description": "Which GTK priority to use when loading the default and user CSS files. Pick \"user\" to override XDG_CONFIG_HOME/gtk-3.0/gtk.css",
"default": "application",
"enum": ["application", "user"]
},
"positionY": {
"type": "string",
"description": "Vertical position of control center and notification window",
"default": "top",
"enum": ["top", "bottom"]
},
"control-center-positionX": {
"type": "string",
"description": "Optional: Horizontal position of the control center. Supersedes positionX if not set to `none`",
"default": "none",
"enum": ["right", "left", "center", "none"]
},
"control-center-positionY": {
"type": "string",
"description": "Optional: Vertical position of the control center. Supersedes positionY if not set to `none`",
"default": "none",
"enum": ["top", "bottom", "none"]
},
"control-center-margin-top": {
"type": "integer",
"description": "The margin (in pixels) at the top of the notification center. 0 to disable",
"default": 0
},
"control-center-margin-bottom": {
"type": "integer",
"description": "The margin (in pixels) at the bottom of the notification center. 0 to disable",
"default": 0
},
"control-center-margin-right": {
"type": "integer",
"description": "The margin (in pixels) at the right of the notification center. 0 to disable",
"default": 0
},
"control-center-margin-left": {
"type": "integer",
"description": "The margin (in pixels) at the left of the notification center. 0 to disable",
"default": 0
},
"notification-icon-size": {
"type": "integer",
"description": "The notification icon size (in pixels)",
"default": 64,
"minimum": 16
},
"notification-body-image-height": {
"type": "integer",
"description": "The notification body image height (in pixels)",
"default": 100,
"minimum": 100
},
"notification-body-image-width": {
"type": "integer",
"description": "The notification body image width (in pixels)",
"default": 200,
"minimum": 200
},
"timeout": {
"type": "integer",
"description": "The notification timeout for notifications with normal priority",
"default": 10
},
"timeout-low": {
"type": "integer",
"description": "The notification timeout for notifications with low priority",
"default": 5
},
"timeout-critical": {
"type": "integer",
"description": "The notification timeout for notifications with critical priority. 0 to disable",
"default": 0
},
"notification-window-width": {
"type": "integer",
"description": "Width of the notification in pixels",
"default": 500
},
"fit-to-screen": {
"type": "boolean",
"description": "If the control center should expand to both edges of the screen",
"default": true
},
"control-center-height": {
"type": "integer",
"description": "Height of the control center in pixels. Ignored when 'fit-to-screen' is set to 'true'",
"default": 600,
"minimum": 300
},
"control-center-width": {
"type": "integer",
"description": "Width of the control center in pixels",
"default": 500,
"minimum": 300
},
"keyboard-shortcuts": {
"type": "boolean",
"description": "If control center should use keyboard shortcuts",
"default": true
},
"image-visibility": {
"type": "string",
"description": "An explanation about the purpose of this instance.",
"default": "when-available",
"enum": ["always", "when-available", "never"]
},
"transition-time": {
"type": "integer",
"description": "The notification animation duration. 0 to disable",
"default": 200
},
"hide-on-clear": {
"type": "boolean",
"description": "Hides the control center after pressing \"Clear All\"",
"default": false
},
"hide-on-action": {
"type": "boolean",
"description": "Hides the control center when clicking on notification action",
"default": true
},
"script-fail-notify": {
"type": "boolean",
"description": "Sends a notification if a script fails to run",
"default": true
},
"scripts": {
"type": "object",
"description": "Which scripts to check and potentially run for every notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for exec) use regex. If all properties match the given notification, the script will be run. Only the first matching script will be run.",
"minProperties": 1,
"additionalProperties": false,
"patternProperties": {
"^.{1,}$": {
"type": "object",
"description": "Your script object.",
"required": ["exec"],
"minProperties": 2,
"additionalProperties": false,
"properties": {
"exec": {
"type": "string",
"description": "The script to run. Can also run regular shell commands."
},
"app-name": {
"type": "string",
"description": "The app-name. Uses Regex."
},
"desktop-entry": {
"type": "string",
"description": "The desktop-entry. Uses Regex."
},
"summary": {
"type": "string",
"description": "The summary of the notification. Uses Regex."
},
"body": {
"type": "string",
"description": "The body of the notification. Uses Regex."
},
"urgency": {
"type": "string",
"description": "The urgency of the notification.",
"default": "Normal",
"enum": ["Low", "Normal", "Critical"]
},
"category": {
"type": "string",
"description": "Which category the notification belongs to. Uses Regex."
},
"run-on": {
"type": "string",
"description": "Whether to run the script on an action being activated, or when the notification is received.",
"enum": ["action", "receive"],
"default": "receive"
}
}
}
}
},
"notification-visibility": {
"type": "object",
"description": "Set the visibility of each incoming notification. If the notification doesn't include one of the properties, that property will be ignored. All properties (except for state) use regex. If all properties match the given notification, the notification will be follow the provided state. Only the first matching object will be used.",
"minProperties": 1,
"additionalProperties": false,
"patternProperties": {
"^.{1,}$": {
"type": "object",
"description": "Your script object.",
"required": ["state"],
"minProperties": 2,
"additionalProperties": false,
"properties": {
"state": {
"type": "string",
"description": "The notification visibility state.",
"default": "enabled",
"enum": ["ignored", "muted", "enabled", "transient"]
},
"app-name": {
"type": "string",
"description": "The app-name. Uses Regex."
},
"desktop-entry": {
"type": "string",
"description": "The desktop-entry. Uses Regex."
},
"summary": {
"type": "string",
"description": "The summary of the notification. Uses Regex."
},
"body": {
"type": "string",
"description": "The body of the notification. Uses Regex."
},
"urgency": {
"type": "string",
"description": "The urgency of the notification.",
"default": "Normal",
"enum": ["Low", "Normal", "Critical"]
},
"override-urgency": {
"type": "string",
"description": "The new urgency of the notification (optional)",
"default": "unset",
"enum": ["unset", "low", "normal", "critical"]
},
"category": {
"type": "string",
"description": "Which category the notification belongs to. Uses Regex."
}
}
}
}
},
"widgets": {
"type": "array",
"description": "Which order and which widgets to display. If the \"notifications\" widget isn't specified, it will be placed at the bottom.",
"default": ["inhibitors", "title", "dnd", "notifications"],
"items": {
"type": "string",
// Sadly can't use regex and enums at the same time. Fix in the future?
"pattern": "^[a-zA-Z0-9_-]{1,}(#[a-zA-Z0-9_-]{1,}){0,1}?$"
}
},
"widget-config": {
"type": "object",
"description": "Configure specific widget properties.",
"additionalProperties": false,
"patternProperties": {
// New widgets go here
"^title(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
// References the widget structure from "widgets" below
"$ref": "#/widgets/title"
},
"^dnd(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/dnd"
},
"^label(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/label"
},
"^mpris(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/mpris"
},
"^buttons-grid(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/buttons-grid"
},
"^menubar(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/menubar"
},
"^volume(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/volume"
},
"^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/backlight"
},
"^inhibitors(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
// References the widget structure from "widgets" below
"$ref": "#/widgets/inhibitors"
}
}
}
},
"widgets": {
// New widgets go here
"title": {
"type": "object",
"description": "Control Center Title Widget",
"additionalProperties": false,
"properties": {
"text": {
"type": "string",
"description": "The title of the widget",
"default": "Notifications"
},
"clear-all-button": {
"type": "boolean",
"description": "Wether to display a \"Clear All\" button",
"default": true
},
"button-text": {
"type": "string",
"description": "\"Clear All\" button text",
"default": "Clear All"
}
}
},
"dnd": {
"type": "object",
"description": "Control Center Do Not Disturb Widget",
"additionalProperties": false,
"properties": {
"text": {
"type": "string",
"description": "The title of the widget",
"default": "Do Not Disturb"
}
}
},
"label": {
"type": "object",
"description": "A generic widget that allows the user to add custom text",
"additionalProperties": false,
"properties": {
"text": {
"type": "string",
"description": "The text content of the widget",
"default": "Label Text"
},
"max-lines": {
"type": "integer",
"description": "The maximum lines",
"default": 5
}
}
},
"mpris": {
"type": "object",
"description": "A widget that displays multiple music players",
"additionalProperties": false,
"properties": {
"image-size": {
"type": "integer",
"description": "The size of the album art",
"default": 96
},
"image-radius": {
"type": "integer",
"description": "The border radius of the album art",
"default": 12
}
}
},
"buttons-grid": {
"type": "object",
"description": "A widget to add a grid of buttons that execute shell commands",
"additionalProperties": false,
"properties": {
"actions": {
"type": "array",
"description": "A list of actions containing a label and a command",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Text to be displayed in button",
"default": "label"
},
"command": {
"type": "string",
"description": "Command to be executed on click",
"default": ""
}
}
}
}
}
},
"menubar": {
"type": "object",
"description": "A bar that contains action-buttons and buttons to open a dropdown with action-buttons",
"additionalProperties": false,
"patternProperties": {
"^menu(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"type": "object",
"description": "A button that opens a dropdown with action-buttons",
"additionalProperties": false,
"properties": {
"label": {
"type": "string",
"description": "Text to be displayed in button",
"default": "Menu"
},
"position": {
"type": "string",
"description": "Horizontal position of the button in the bar",
"default": "right",
"enum": ["right", "left"]
},
"animation_type": {
"type": "string",
"default": "slide_down",
"description": "Animation type for menu",
"enum": ["slide_down", "slide_up", "none"]
},
"animation_duration":{
"type": "integer",
"default": 250,
"description": "Duration of animation in milliseconds"
},
"actions": {
"$ref" : "#/widgets/buttons-grid/properties/actions"
}
}
},
"^buttons(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"type": "object",
"description": "A list of action-buttons to be displayed in the topbar",
"additionalProperties": false,
"properties": {
"position": {
"type": "string",
"description": "Horizontal position of the button in the bar",
"default": "right",
"enum": ["right", "left"]
},
"actions": {
"$ref" : "#/widgets/buttons-grid/properties/actions"
}
}
}
}
},
"volume": {
"type": "object",
"description": "Slider to control pulse volume",
"additionalProperties": false,
"properties": {
"label": {
"type": "string",
"description": "Text displayed in front of the volume slider",
"default": "Volume"
}
}
},
"backlight": {
"type": "object",
"description": "Slider to control monitor brightness",
"additionalProperties": false,
"properties": {
"label": {
"type": "string",
"description": "Text displayed in front of the backlight slider",
"default": "Brightness"
},
"device": {
"type": "string",
"description": "Name of monitor (find possible devices using `ls /sys/class/backlight` or `ls /sys/class/leds`)",
"default": "intel_backlight"
},
"subsystem": {
"type": "string",
"description": "Kernel subsystem for brightness control",
"default": "backlight",
"enum": ["backlight", "leds"]
},
"min": {
"type": "integer",
"default": 0,
"description": "Lowest possible value for brightness"
}
}
},
"inhibitors": {
"type": "object",
"description": "Control Center Inhibitors Widget",
"additionalProperties": false,
"properties": {
"text": {
"type": "string",
"description": "The title of the widget",
"default": "Inhibitors"
},
"clear-all-button": {
"type": "boolean",
"description": "Wether to display a \"Clear All\" button",
"default": true
},
"button-text": {
"type": "string",
"description": "\"Clear All\" button text",
"default": "Clear All"
}
}
}
}
}

View file

@ -1,348 +0,0 @@
/*
* vim: ft=less
*/
@define-color cc-bg #060604;
@define-color noti-border-color #2f343f;
@define-color noti-bg #060604;
@define-color noti-bg-hover #1e2233;
@define-color noti-bg-focus #2f343f;
@define-color noti-close-bg #060604;
@define-color noti-close-bg-hover #1e2233;
@define-color bg-selected #2f343f;
* {
font-family: "Montreux Classic", sans-serif;
}
.notification-row {
transition: all 200ms ease;
outline: none;
margin-bottom: 4px;
border-radius: 24px;
}
.control-center .notification-row:focus,
.control-center .notification-row:hover {
opacity: 1;
background: transparent;
}
.notification-row:focus .notification,
.notification-row:hover .notification {
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.5);
box-shadow: 0px 0px 0px 3px @bg-selected;
}
.control-center .notification {
box-shadow: none;
}
.control-center .notification-row {
opacity: 0.5;
}
.notification {
transition: all 200ms ease;
border-radius: 24px;
margin: 6px 6px;
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.5);
padding: 0;
}
/* Uncomment to enable specific urgency colors
.low {
background: yellow;
padding: 6px;
border-radius: 24px;
}
.normal {
background: green;
padding: 6px;
border-radius: 24px;
}
.critical {
background: red;
padding: 6px;
border-radius: 24px;
}
*/
.notification-content {
background: transparent;
padding: 6px;
border-radius: 24px;
}
.close-button {
background: @noti-close-bg;
color: white;
text-shadow: none;
padding: 0;
border-radius: 100%;
margin-top: 10px;
margin-right: 10px;
box-shadow: none;
border: none;
min-width: 24px;
min-height: 24px;
}
.close-button:hover {
box-shadow: none;
background: @noti-close-bg-hover;
transition: all 0.15s ease-in-out;
border: none;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @noti-bg;
border: 3px solid @noti-border-color;
color: white;
transition: all 200ms ease;
}
.notification-default-action:hover,
.notification-action:hover {
-gtk-icon-effect: none;
background: @noti-bg-hover;
}
.notification-default-action {
border-radius: 24px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 10px;
}
.notification-action:last-child {
border-bottom-right-radius: 10px;
border-right: 1px solid @noti-border-color;
}
.image {
}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 24px;
}
.summary {
font-size: 16px;
font-weight: bold;
background: transparent;
color: white;
text-shadow: none;
}
.time {
font-size: 16px;
font-weight: bold;
background: transparent;
color: white;
text-shadow: none;
margin-right: 18px;
}
.body {
font-size: 15px;
font-weight: normal;
background: transparent;
color: white;
text-shadow: none;
}
.control-center {
background: @cc-bg;
border-radius: 24px;
background-clip: border-box;
padding: 4px;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
0 2px 6px 2px rgba(0, 0, 0, 0.3);
}
.control-center-list {
background: transparent;
}
.control-center-list-placeholder {
opacity: 0.5;
}
.floating-notifications {
background: transparent;
}
/* Window behind control center and on all other monitors */
.blank-window {
background: transparent;
}
/*** Widgets ***/
/* Title widget */
.widget-title {
margin: 8px;
font-size: 1.3rem;
}
.widget-title > button {
font-size: initial;
color: white;
text-shadow: none;
background: @noti-bg;
border: 3px solid @noti-border-color;
box-shadow: none;
border-radius: 24px;
}
.widget-title > button:hover {
background: @noti-bg-hover;
}
/* DND widget */
.widget-dnd {
margin: 8px;
font-size: 1.1rem;
}
.widget-dnd > switch {
font-size: initial;
border-radius: 24px;
background: @noti-bg;
border: 3px solid @noti-border-color;
box-shadow: none;
}
.widget-dnd > switch:checked {
background: @bg-selected;
}
.widget-dnd > switch slider {
background: @noti-bg-hover;
border-radius: 24px;
}
/* Label widget */
.widget-label {
margin: 8px;
}
.widget-label > label {
font-size: 1.1rem;
}
/* Mpris widget */
.widget-mpris {
/* The parent to all players */
}
.widget-mpris-player {
padding: 8px;
margin: 8px;
background-color: @noti-bg;
border-radius: 24px;
}
.widget-mpris-title {
font-weight: bold;
font-size: 1.25rem;
}
.widget-mpris-subtitle {
font-size: 1.1rem;
}
/* Buttons widget */
.widget-buttons-grid {
padding: 8px;
margin: 8px;
border-radius: 24px;
background-color: @noti-bg;
}
.widget-buttons-grid>flowbox>flowboxchild>button{
background: @noti-bg;
border-radius: 24px;
}
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
background: @noti-bg-hover;
}
/* Menubar widget */
.widget-menubar>box>.menu-button-bar>button {
border: none;
background: transparent;
}
/* .AnyName { Name defined in config after #
background-color: @noti-bg;
padding: 8px;
margin: 8px;
border-radius: 24px;
}
.AnyName>button {
background: transparent;
border: none;
}
.AnyName>button:hover {
background-color: @noti-bg-hover;
} */
.topbar-buttons>button { /* Name defined in config after # */
border: none;
background: transparent;
}
/* Volume widget */
.widget-volume {
background-color: @noti-bg;
padding: 8px;
margin: 8px;
border-radius: 24px;
}
/* Backlight widget */
.widget-backlight {
background-color: @noti-bg;
padding: 8px;
margin: 8px;
border-radius: 24px;
}
/* Title widget */
.widget-inhibitors {
margin: 8px;
font-size: 1.5rem;
}
.widget-inhibitors > button {
font-size: initial;
color: white;
text-shadow: none;
background: @noti-bg;
border: 3px solid @noti-border-color;
box-shadow: none;
border-radius: 24px;
}
.widget-inhibitors > button:hover {
background: @noti-bg-hover;
}

View file

@ -1,36 +1,38 @@
{
"label" : "lock",
"action" : "waylock",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "s"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "d"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}
{
"label" : "hibernate",
"action" : "systemctl hibernate",
"text" : "Hibernate",
"keybind" : "h"
}
[
{
"label" : "lock",
"action" : "loginctl lock-session",
"text" : "Lock",
"keybind" : "l"
},
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "e"
},
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "s"
},
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "d"
},
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
},
{
"label" : "windows",
"action" : "systemctl reboot --boot-loader-entry=auto-windows",
"text" : "Windows",
"keybind" : "w"
}
]

View file

@ -2,11 +2,11 @@
background-image: none;
}
window {
background-color: #181b28;
background-color: #WINBG;
}
button {
color: #FFFFFF;
background-color: #181b28;
color: #BTNCOL;
background-color: #BTNBG;
border-style: solid;
border-width: 2px;
background-repeat: no-repeat;
@ -15,7 +15,7 @@ button {
}
button:focus, button:active, button:hover {
background-color: #27ae60;
background-color: #BTNFOCUSBG;
outline-style: none;
}
@ -42,3 +42,7 @@ button:focus, button:active, button:hover {
#reboot {
background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png"));
}
#windows {
background-image: image(url("#WINLOGO"))
}

44
home/dots/zsh Normal file
View file

@ -0,0 +1,44 @@
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
la_culr()
{
eza -lha --group-directories-first --icons --color=always $@ | culr -t 80 -o roygbiv-split
}
ls_culr()
{
eza -lh --group-directories-first --icons --color=always $@ | culr -t 80 -o roygbiv-split
}
ps_culr()
{
ps ww$@ | culr -t 80 -o roygbiv-split
}
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias fresh='clear; echo; ~/.nix/header.sh'
alias icat='kitty +kitten icat'
alias chmox='chmod +x'
alias gs='git status'
alias gcl='git clone'
alias ga='git add'
alias gcb='git checkout -b'
alias gco='git checkout'
alias gl='git pull'
alias gp='git push'
alias gd='git diff'
alias gcam='git commit -am'
alias gcm='git commit -m'
alias gr='git restore'
alias gm='git merge'
alias l='ls_culr'
alias la='la_culr'
alias p='ps_culr'
alias mnt='mount | column -t | culr -t 80 -o roygbiv-split'
alias zz='z $(xplr)'
# alias kaboom='printf "type any input if you wish to update\n\npress enter to continue\n"; read upgrade; if [ -n "$upgrade" ]; then echo upgrading..; sudo nix-channel --update; else echo no upgrade!; fi; sudo nixos-rebuild switch -j9 && rm ~/.gtkrc-2.0; home-manager switch && sudo nix-collect-garbage && nix-store --optimise'
eval "$(zoxide init zsh)"
fresh

View file

@ -1,16 +0,0 @@
{ config, pkgs, ... }:
{
home.username = "fossil";
home.homeDirectory = "/home/fossil";
home.packages = with pkgs; [
cmus
zellij
steam
xonotic
nicotine-plus
];
}

459
home/home.nix Executable file → Normal file
View file

@ -1,400 +1,101 @@
{ pkgs, config, ... }:
let
# nix-rice = builtins.fetchGit {
# url = "https://github.com/bertof/nix-rice.git";
# rev = "ac810023c1bb3d999ab4295ea4eb261412f4b7c0";
# };
# nix-rice-overlay = import (nix-rice + "/overlay.nix");
# pkgs = import <nixpkgs> { overlays = [ nix-rice-overlay ]; };
# kitty_notest = pkgs.kitty.overridePythonAttrs (oldAttrs: { doCheck = false; checkPhase = ""; });
in
{
inputs,
lib,
pkgs,
rice,
...
}:
{
home.stateVersion = "22.11";
imports = [
# who are you?
# ./bolt.nix
# ./fossil.nix
./plank.nix
./modules/cli.nix
./modules/desktop.nix
./modules/dev.nix
./modules/theming.nix
./modules/niri.nix
./util/ez.nix
./util/name.nix
inputs.nix-index-database.hmModules.nix-index
];
nixpkgs.config.packageOverrides = pkgs: {
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
inherit pkgs;
};
nix.gc = {
automatic = true;
frequency = "daily";
options = "--delete-older-than 3d";
};
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
thunderbird
clementine
inkscape
btop
bat
joshuto
ripgrep
fd
lazygit
fzf
kdeconnect
keepassxc
direnv
mpv
syncthing
zoxide
meslo-lgs-nf
# libreoffice-qt
libsForQt5.qtstyleplugin-kvantum
gtk-engine-murrine
(callPackage ./homepkgs/git-credential-keepassxc.nix { })
(callPackage ./homepkgs/culr.nix { })
];
xdg.enable = true;
xdg.systemDirs.data = [
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
"${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}"
];
programs.vscode = {
xdg = {
enable = true;
# enableExtensionUpdateCheck = false;
# enableUpdateCheck = false;
extensions = [];
mutableExtensionsDir = true;
};
xdg.desktopEntries = {
Code-url = {
name = "VsCode";
genericName = "Text Editor";
exec = "code --disable-gpu-sandbox --open-url %U";
icon = "code";
comment = "Code Editing. Redefined.";
categories = [ "Utility" "TextEditor" "Development" "IDE" ];
# keywords = [ "vscode" ];
mimeType = [ "x-scheme-handler/vscode" ];
noDisplay = true;
startupNotify = true;
type = "Application";
};
Code = {
categories = [ "Utility" "TextEditor" "Development" "IDE" ];
comment = "Code Editing. Redefined.";
exec = "code --disable-gpu-sandbox %F";
genericName = "Text Editor";
icon = "code";
# keywords = [ "vscode" ];
mimeType = [ "text/plain" "inode/directory" ];
name = "VsCode";
startupNotify = true;
# startupWMClass = "vsCode";
type = "Application";
};
};
programs.direnv = {
enable = true;
nix-direnv = {
enable = true;
};
};
gtk = {
enable = true;
theme = {
package = pkgs.sweet;
name = "Sweet-Dark";
};
iconTheme = {
package = pkgs.papirus-icon-theme;
name = "Papirus-Dark";
};
};
programs.firefox =
{
package = pkgs.firefox.override {
cfg = {
enablePlasmaBrowserIntegration = true;
portal =
let
gtk = pkgs.xdg-desktop-portal-gtk;
gnome = pkgs.xdg-desktop-portal-gnome;
in
{
enable = true;
config = {
common = {
default = [
"gnome"
];
};
};
};
enable = true;
profiles.default = {
id = 0;
name = "Default";
settings = {
"browser.startup.homepage" = "about:blank";
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
vimium-c
darkreader
localcdn
ublock-origin
# bypass-paywalls-clean
# sidebery
plasma-integration
keepassxc-browser
user-agent-string-switcher
# happy-bonobo-disable-webrtc
extraPortals = [
gnome
gtk
];
};
};
home.packages =
let
inherit (rice) icons fonts cursor;
inherit (pkgs) tauon;
in
fonts.pkgs
++ icons.pkgs
++ [
cursor.package
tauon
];
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session.target" ];
};
};
services.syncthing = {
enable = true;
};
# services.kdeconnect = {
services.udiskie.enable = true;
# fix reliance on nonexistent graphical-session-pre.target
systemd.user.services.udiskie = lib.mkForce {
Unit = {
Description = "udiskie mount daemon";
After = [ ];
PartOf = [ "graphical-session.target" ];
};
Service.ExecStart = [ "${pkgs.udiskie}/bin/udiskie --appindicator" ];
Install.WantedBy = [ "graphical-session.target" ];
};
# programs.nix-index-database.comma.enable = true;
# programs.nix-index = {
# enable = true;
# indicator = true;
# enableZshIntegration = false;
# enableBashIntegration = false;
# };
# programs.command-not-found.enable = false;
# programs.nix-index.enable = true;
programs.kitty = {
enable = true;
# package = kitty_notest;
font = {
name = "Ellograph CF";
size = 10;
};
settings = {
foreground = "#d3dae3";
background = "#060604";
cursor = "#d3dae3";
selection_foreground = "#fdbc4b";
selection_background = "#1e2233";
color0 = "#2f343f";
color1 = "#ed244e";
color2 = "#27ae60";
color3 = "#f67400";
color4 = "#2980b9";
color5 = "#c50ed2";
color6 = "#3daee9";
color7 = "#a1a9b1";
color8 = "#1e2233";
color9 = "#da4453";
color10 = "#71f79f";
color11 = "#fdbc4b";
color12 = "#1d99f3";
color13 = "#9b59b6";
color14 = "#5294e2";
color15 = "#656a73";
};
systemd.user.startServices = "sd-switch";
ezServices = {
ckb-next = "${lib.getExe pkgs.ckb-next} -c -b";
};
programs.git = {
enable = true;
userName = "atagen";
userEmail = "atagen@boss.co";
extraConfig = {
credential.helper = "keepassxc";
};
};
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};
programs.fzf = {
enable = true;
enableZshIntegration = true;
# colors = {
# fg = "#d3dae3";
# "fg+" = "#d3dae3";
# bg = "#060604";
# "bg+" = "#060604";
# preview-fg = "#fdbc4b";
# preview-bg = "#1e2233";
# hl = "#da4453";
# "hl+" = "#ed244e";
# info = "#fdbc4b";
# border = "#656a73";
# prompt = "#c50ed2";
# pointer = "#27ae60";
# header = "#da4453";
# };
};
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
enableSyntaxHighlighting = true;
enableVteIntegration = true;
autocd = true;
defaultKeymap = "viins";
initExtra = "
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
la_culr()
{
ls -lha --group-directories-first --color $@ | culr
}
ls_culr()
{
ls -lh --group-directories-first --color $@ | culr
}
ps_culr()
{
ps ww$@ | culr
}
alias ...=\"cd ../..\"
alias ....=\"cd ../../..\"
alias .....=\"cd ../../../..\"
alias fresh=\"clear; echo; ~/.nix/header.sh\"
alias icat=\"kitty +kitten icat\"
alias chmox=\"chmod +x\"
alias gs=\"git status\"
alias gcl=\"git clone\"
alias ga=\"git add\"
alias gcb=\"git checkout -b\"
alias gco=\"git checkout\"
alias gl=\"git pull\"
alias gp=\"git push\"
alias gd=\"git diff\"
alias gcam=\"git commit -am\"
alias gcm=\"git commit -m\"
alias gr=\"git restore\"
alias gm=\"git merge\"
alias l=\"ls_culr\"
alias la=\"la_culr\"
alias p=\"ps_culr\"
alias mnt=\"mount | column -t | culr\"
alias kaboom=\"printf 'type any input if you wish to update\n\npress enter to continue\n'; read upgrade; if [ -n \\\"\\\$upgrade\\\" ]; then echo upgrading..; sudo nix-channel --update; else echo no upgrade!; fi; sudo nixos-rebuild switch -j9 && rm ~/.gtkrc-2.0; home-manager switch && sudo nix-collect-garbage && nix-store --optimise\"
fresh
";
plugins = [
{
name = "powerlevel10k";
src = pkgs.zsh-powerlevel10k;
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
}
{
name = "zsh-vi-mode";
src = pkgs.zsh-vi-mode;
file = "share/zsh-vi-mode/zsh-vi-mode.zsh";
}
{
name = "zsh-autopair";
src = pkgs.zsh-autopair;
file = "share/zsh-autopair/zsh-autopair.zsh";
}
{
name = "zsh-completions";
src = pkgs.zsh-completions;
file = "share/zsh-completions/zsh-completions.zsh";
}
{
name = "zsh-command-time";
src = pkgs.zsh-command-time;
file = "share/zsh-completions/zsh-command-time.zsh";
}
# {
# name = "zsh-you-should-use";
# src = pkgs.zsh-you-should-use;
# # file = "share/zsh-completions/zsh-you-should-use.zsh";
# }
{
name = "zsh-autocomplete";
src = pkgs.zsh-autocomplete;
file = "share/zsh-autocomplete/zsh-autocomplete.zsh";
}
{
name = "zsh-fast-syntax-highlighting";
src = pkgs.zsh-fast-syntax-highlighting;
file = "share/zsh-fast-syntax-highlighting/zsh-fast-syntax-highlighting.zsh";
}
{
name = "zsh-nix-shell";
src = pkgs.zsh-nix-shell;
file = "share/zsh-nix-shell/zsh-nix-shell.zsh";
}
{
name = "any-nix-shell";
src = pkgs.any-nix-shell;
file = "share/any-nix-shell/any-nix-shell.zsh";
}
{
name = "nix-zsh-completions";
src = pkgs.nix-zsh-completions;
file = "share/nix-zsh-completions/nix-zsh-completions.zsh";
}
# {
# name = "zsh-fzf-tab";
# src = pkgs.zsh-fzf-tab;
# # file = "share/zsh-fzf-tab/zsh-fzf-tab.zsh";
# }
];
};
xresources.extraConfig = "
! special
*.foreground: #d3dae3
*.background: #181b28
*.cursorColor: #d3dae3
! black
*.color0: #2f343f
*.color8: #1e2233
! red
*.color1: #ed244e
*.color9: #da4453
! green
*.color2: #27ae60
*.color10: #71f79f
! yellow
*.color3: #f67400
*.color11: #fdbc4b
! blue
*.color4: #2980b9
*.color12: #1d99f3
! magenta
*.color5: #c50ed2
*.color13: #9b59b6
! cyan
*.color6: #3daee9
*.color14: #5294e2
! white
*.color7: #a1a9b1
*.color15: #656a73";
programs.helix.enable = true;
programs.helix.settings = {
theme = "noctis";
editor.lsp.display-messages = true;
# editor.auto-pairs = false;
# editor.indent-guides.render = true;
};
home.sessionVariables = {
GTK_THEME = "Sweet-Dark";
};
home.stateVersion = "22.11";
programs.home-manager.enable = true;
}

View file

@ -1,49 +0,0 @@
{ lib
, mkDerivation
, fetchFromGitHub
, kcoreaddons
, kwindowsystem
, plasma-framework
, systemsettings
, cmake
, extra-cmake-modules
, esbuild
}:
mkDerivation rec {
pname = "bismuth";
version = "3.1.3";
src = fetchFromGitHub {
owner = "Bismuth-Forge";
repo = pname;
rev = "v${version}";
sha256 = "sha256-IWwFsYqoqW3924+pf8L+acIt31aU/mhqakXbT9Q4Bqw=";
};
cmakeFlags = [
"-DUSE_TSC=OFF"
"-DUSE_NPM=OFF"
];
nativeBuildInputs = [
cmake
extra-cmake-modules
esbuild
];
buildInputs = [
kcoreaddons
kwindowsystem
plasma-framework
systemsettings
];
meta = with lib; {
description = "A dynamic tiling extension for KWin";
license = licenses.mit;
maintainers = with maintainers; [ pasqui23 ];
homepage = "https://bismuth-forge.github.io/bismuth/";
inherit (kwindowsystem.meta) platforms;
};
}

View file

@ -1,4 +1,10 @@
{ lib, fetchFromGitea, rustPlatform, libX11, pkg-config }:
{
lib,
fetchFromGitea,
rustPlatform,
libX11,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "culr";
@ -16,7 +22,7 @@ rustPlatform.buildRustPackage rec {
buildInputs = [ libX11 ];
cargoSha256 = "sha256-d8MshgH3EppKR80fULU5kraJzrkG57KApzcJM2muvIE=";
meta = with lib; {
description = "colourise piped input";
homepage = "https://git.atagen.co/atagen/culr";

View file

@ -1,62 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.fuzzel;
iniFormat = pkgs.formats.ini { };
in {
options = {
programs.fuzzel = {
enable = mkEnableOption "Fuzzel";
package = mkOption {
type = types.package;
default = pkgs.fuzzel;
defaultText = literalExpression "pkgs.fuzzel";
description = "The Fuzzel package to install.";
};
settings = mkOption {
type = iniFormat.type;
default = { };
example = literalExpression ''
{
window.dimensions = {
lines = 3;
columns = 200;
};
key_bindings = [
{
key = "K";
mods = "Control";
chars = "\\x0c";
}
];
}
'';
description = ''
Configuration written to
<filename>$XDG_CONFIG_HOME/fuzzel/fuzzel.ini</filename>.
'';
};
};
};
config = mkMerge [
(mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."fuzzel/fuzzel.ini" = mkIf (cfg.settings != { }) {
# TODO: Replace by the generate function but need to figure out how to
# handle the escaping first.
#
# source = yamlFormat.generate "alacritty.yml" cfg.settings;
text =
replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.settings);
};
})
];
}

View file

@ -1,23 +0,0 @@
{ lib, fetchFromGitHub, rustPlatform }:
rustPlatform.buildRustPackage rec {
pname = "git-credential-keepassxc";
version = "0.10.0";
src = fetchFromGitHub {
owner = "frederick888";
repo = pname;
rev = "v${version}";
sha256 = "sha256-BmjGxDqX8j/69Uo8jjWtcJcxNHxI7S5+eZQMApdybq0=";
};
cargoSha256 = "sha256-gXW08plJRE1Q6W+Dc2y+gu2R+KBRs3fBG1umdawDduA=";
meta = with lib; {
description = "Helper that allows Git (and shell scripts) to use KeePassXC as credential store";
homepage = "https://github.com/frederick888/git-credential-keepassxc";
license = licenses.gpl3Only;
maintainers = [ ];
};
}

View file

@ -1,31 +0,0 @@
{ lib, stdenv, fetchFromSourcehut, meson, ninja, pkg-config, wlroots, wayland, wayland-protocols
, libX11, libGL }:
stdenv.mkDerivation rec {
pname = "glpaper";
version = "unstable-latest";
src = fetchFromSourcehut {
owner = "~scoopta";
repo = pname;
vc = "hg";
rev = "9ba3806561312d83ed66dc8583c36d70fda8cd7a";
sha256 = "sha256-//IKW2BfpqwcR2WAPShs0kzn5nkV/yyABPvOYm3zMPU=";
};
nativeBuildInputs = [ meson ninja pkg-config ];
buildInputs = [
wayland
libX11 # required by libglvnd
libGL
];
meta = with lib; {
description =
"Wallpaper program for wlroots based Wayland compositors such as sway that allows you to render glsl shaders as your wallpaper";
homepage = "https://hg.sr.ht/~scoopta/glpaper";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ ccellado ];
};
}

View file

@ -1,30 +0,0 @@
{ stdenvNoCC, lib, fetchFromGitea, }:
stdenvNoCC.mkDerivation rec {
pname = "Simplewaita";
version = "0.1.0";
src = fetchFromGitea {
domain = "git.disroot.org";
owner = "eudaimon";
repo = pname;
rev = "16c5f75fd3e03671c3998dcb9a67e3ff6da5a538";
hash = "sha256-VvPQGsdikfIi3VG5Mh8FcioTVwXaxKxaSf2X+yWJckA=";
};
dontPatch = true;
dontConfigure = true;
installPhase = ''
mkdir $out
cp -r ./ $out
'';
dontBuild = true;
dontFixup = true;
meta = with lib; {
description = "A mix of Skewaita and Simple. Or, more precisely: Skewaita Simple-ified.";
homepage = "https://git.disroot.org/eudaimon/Simplewaita";
license = licenses.gpl1Only;
platforms = platforms.linux;
};
}

View file

@ -1,826 +0,0 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "anyhow"
version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
[[package]]
name = "atk"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd"
dependencies = [
"atk-sys",
"bitflags",
"glib",
"libc",
]
[[package]]
name = "atk-sys"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "blight"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60c217c718b4093f44e9c26a96f4e4c2fafec37d6f46b33192ad3892d3151eae"
dependencies = [
"colored",
]
[[package]]
name = "cairo-rs"
version = "0.15.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc"
dependencies = [
"bitflags",
"cairo-sys-rs",
"glib",
"libc",
"thiserror",
]
[[package]]
name = "cairo-sys-rs"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
dependencies = [
"glib-sys",
"libc",
"system-deps",
]
[[package]]
name = "cascade"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d499b43edbf784dd81e16f0395f5b4350a35b477da8a074251087adefc11cb52"
[[package]]
name = "cfg-expr"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa"
dependencies = [
"smallvec",
]
[[package]]
name = "colored"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd"
dependencies = [
"atty",
"lazy_static",
"winapi",
]
[[package]]
name = "either"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
name = "field-offset"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535"
dependencies = [
"memoffset",
"rustc_version",
]
[[package]]
name = "futures-channel"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
dependencies = [
"futures-core",
]
[[package]]
name = "futures-core"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
[[package]]
name = "futures-executor"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-io"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
[[package]]
name = "futures-task"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
[[package]]
name = "futures-util"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
dependencies = [
"futures-core",
"futures-task",
"pin-project-lite",
"pin-utils",
"slab",
]
[[package]]
name = "gdk"
version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8"
dependencies = [
"bitflags",
"cairo-rs",
"gdk-pixbuf",
"gdk-sys",
"gio",
"glib",
"libc",
"pango",
]
[[package]]
name = "gdk-pixbuf"
version = "0.15.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a"
dependencies = [
"bitflags",
"gdk-pixbuf-sys",
"gio",
"glib",
"libc",
]
[[package]]
name = "gdk-pixbuf-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
dependencies = [
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "gdk-sys"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"pango-sys",
"pkg-config",
"system-deps",
]
[[package]]
name = "gio"
version = "0.15.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-io",
"gio-sys",
"glib",
"libc",
"once_cell",
"thiserror",
]
[[package]]
name = "gio-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
"winapi",
]
[[package]]
name = "glib"
version = "0.15.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-executor",
"futures-task",
"glib-macros",
"glib-sys",
"gobject-sys",
"libc",
"once_cell",
"smallvec",
"thiserror",
]
[[package]]
name = "glib-macros"
version = "0.15.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64"
dependencies = [
"anyhow",
"heck",
"proc-macro-crate",
"proc-macro-error",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "glib-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
dependencies = [
"libc",
"system-deps",
]
[[package]]
name = "gobject-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
dependencies = [
"glib-sys",
"libc",
"system-deps",
]
[[package]]
name = "gtk"
version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0"
dependencies = [
"atk",
"bitflags",
"cairo-rs",
"field-offset",
"futures-channel",
"gdk",
"gdk-pixbuf",
"gio",
"glib",
"gtk-sys",
"gtk3-macros",
"libc",
"once_cell",
"pango",
"pkg-config",
]
[[package]]
name = "gtk-layer-shell"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4316ff523ae445bd6efaf253f217598dd074619fe67b9199b5b0cd5ff99144da"
dependencies = [
"bitflags",
"gdk",
"glib",
"glib-sys",
"gtk",
"gtk-layer-shell-sys",
"libc",
]
[[package]]
name = "gtk-layer-shell-sys"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff60230d690445577655416055dbd279d05631b03ab07f935e39f5fe81084c0a"
dependencies = [
"gdk-sys",
"glib-sys",
"gtk-sys",
"libc",
"system-deps",
]
[[package]]
name = "gtk-sys"
version = "0.15.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84"
dependencies = [
"atk-sys",
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gdk-sys",
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"pango-sys",
"system-deps",
]
[[package]]
name = "gtk3-macros"
version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9"
dependencies = [
"anyhow",
"proc-macro-crate",
"proc-macro-error",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "heck"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "indexmap"
version = "1.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "itertools"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
dependencies = [
"either",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
[[package]]
name = "libpulse-binding"
version = "2.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1745b20bfc194ac12ef828f144f0ec2d4a7fe993281fa3567a0bd4969aee6890"
dependencies = [
"bitflags",
"libc",
"libpulse-sys",
"num-derive",
"num-traits",
"winapi",
]
[[package]]
name = "libpulse-sys"
version = "1.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2191e6880818d1df4cf72eac8e91dce7a5a52ba0da4b2a5cdafabc22b937eadb"
dependencies = [
"libc",
"num-derive",
"num-traits",
"pkg-config",
"winapi",
]
[[package]]
name = "memchr"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "memoffset"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
dependencies = [
"autocfg",
]
[[package]]
name = "num-derive"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "num-traits"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]]
name = "pango"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
dependencies = [
"bitflags",
"glib",
"libc",
"once_cell",
"pango-sys",
]
[[package]]
name = "pango-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "pin-project-lite"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
[[package]]
name = "proc-macro-crate"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
dependencies = [
"once_cell",
"toml_edit",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn 1.0.109",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "1.0.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
dependencies = [
"unicode-ident",
]
[[package]]
name = "pulsectl-rs"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06a988bceed1981b2c5fc4a3da0e4e073fdaff8e6bd022b089f54bc573dc3cfc"
dependencies = [
"libpulse-binding",
]
[[package]]
name = "quote"
version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rustc_version"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver",
]
[[package]]
name = "semver"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
[[package]]
name = "serde"
version = "1.0.157"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707de5fcf5df2b5788fca98dd7eab490bc2fd9b7ef1404defc462833b83f25ca"
[[package]]
name = "shrinkwraprs"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e63e6744142336dfb606fe2b068afa2e1cca1ee6a5d8377277a92945d81fa331"
dependencies = [
"bitflags",
"itertools",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "slab"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
dependencies = [
"autocfg",
]
[[package]]
name = "smallvec"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
[[package]]
name = "swayosd"
version = "0.1.0"
dependencies = [
"blight",
"cascade",
"gtk",
"gtk-layer-shell",
"libpulse-binding",
"pulsectl-rs",
"shrinkwraprs",
]
[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "syn"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59d3276aee1fa0c33612917969b5172b5be2db051232a6e4826f1a1a9191b045"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "system-deps"
version = "6.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff"
dependencies = [
"cfg-expr",
"heck",
"pkg-config",
"toml",
"version-compare",
]
[[package]]
name = "thiserror"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.2",
]
[[package]]
name = "toml"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
]
[[package]]
name = "toml_datetime"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
[[package]]
name = "toml_edit"
version = "0.19.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274"
dependencies = [
"indexmap",
"toml_datetime",
"winnow",
]
[[package]]
name = "unicode-ident"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
[[package]]
name = "version-compare"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "winnow"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966"
dependencies = [
"memchr",
]

View file

@ -1,24 +0,0 @@
{ lib, fetchFromGitHub, rustPlatform, pkg-config, gtk3, gtk-layer-shell, libpulseaudio }:
rustPlatform.buildRustPackage rec {
pname = "SwayOSD";
version = "0.1.0";
src = fetchFromGitHub {
owner = "ErikReider";
repo = pname;
rev = "9f294d8f4713eb210e9aad3dee83de32090e4784";
sha256 = "sha256-3K8LlX4MrG523BwD4nZOcXgSxsnYRxxU5gCOp7rCOCY=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk3 gtk-layer-shell libpulseaudio ];
cargoLock.lockFileContents = builtins.readFile ./swayosd.lock;
postPatch = ''
cp ${./swayosd.lock} Cargo.lock
'';
cargoSha256 = lib.fakeSha256;
}

BIN
home/icons/fb_msg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
home/icons/ms_teams.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
home/icons/ollama.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
home/icons/openwebui.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
home/icons/syncthing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
home/icons/winlogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

22
home/modules/chat.nix Normal file
View file

@ -0,0 +1,22 @@
{ config, ... }:
{
imports = [
../util/firefox-webapp.nix
];
programs.firefox.webapps = {
"Microsoft-Teams" = {
url = "https://teams.microsoft.com";
# id = 1;
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Microsoft Teams";
icon = ../icons/ms_teams.png;
};
"Facebook-Messenger" = {
url = "https://www.messenger.com";
# id = 2;
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Facebook Messenger";
icon = ../icons/fb_msg.png;
};
};
}

22
home/modules/cli.nix Normal file
View file

@ -0,0 +1,22 @@
{ pkgs, ... }:
{
imports = [
../programs/kitty.nix
# ../programs/zsh.nix
# ../programs/xresources.nix
../programs/helix.nix
# ../programs/atuin.nix
];
home.packages = builtins.attrValues {
inherit (pkgs)
btop
bat
ripgrep
fd
lazygit
zoxide
zellij
ouch
;
};
}

10
home/modules/creative.nix Normal file
View file

@ -0,0 +1,10 @@
_: {
# imports = [
# ../util/flatpak.nix
# ];
# flatpaks = [
# "ar.com.tuxguitar.TuxGuitar"
# "org.inkscape.Inkscape"
# "com.github.PintaProject.Pinta"
# ];
}

20
home/modules/desktop.nix Normal file
View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
imports = [
./media-players.nix
./webapps.nix
./documents.nix
# ./creative.nix
./chat.nix
../programs/firefox.nix
../programs/wlogout.nix
];
home.packages = builtins.attrValues {
inherit (pkgs)
file-roller
nautilus
thunderbird
keepassxc
;
};
}

74
home/modules/dev.nix Normal file
View file

@ -0,0 +1,74 @@
{ pkgs, rice, ... }:
let
get = builtins.attrValues;
in
{
# imports = [
# ../programs/vscode.nix
# ];
home.packages = get {
inherit (pkgs)
git-credential-keepassxc
direnv
;
};
programs.zed-editor = {
enable = false;
extensions = [
"nix"
"rust"
"ocaml"
"kanagawa-themes"
];
userSettings = {
features = {
copilot = false;
};
buffer_font_family = rice.fonts.monospace.name;
buffer_font_size = rice.fonts.monospace.size;
theme = {
mode = "dark";
dark = "Kanagawa Dragon";
};
telemetry = {
metrics = false;
diagnostics = false;
};
vim_mode = true;
assistant = {
default_model = {
provider = "ollama";
model = "llama3.2";
};
inline_alternatives = {
provider = "ollama";
model = "starcoder2:3b";
};
};
language_models = {
ollama = {
api_url = "http://localhost:11434";
};
};
};
};
programs.direnv = {
enable = true;
nix-direnv = {
enable = true;
};
enableFishIntegration = true;
};
programs.git = {
enable = true;
userName = "atagen";
userEmail = "boss@atagen.co";
extraConfig = {
credential.helper = "keepassxc";
};
};
}

View file

@ -0,0 +1,6 @@
{ pkgs, ... }:
{
home.packages = [
pkgs.libreoffice
];
}

View file

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
home.packages = builtins.attrValues {
inherit (pkgs)
mpv
imv
strawberry
resonance
zathura
playerctl
;
};
}

267
home/modules/niri.nix Normal file
View file

@ -0,0 +1,267 @@
{
pkgs,
lib,
config,
rice,
inputs,
mainUser,
...
}:
let
services =
let
inherit (pkgs) swaynotificationcenter;
in
[
swaynotificationcenter
];
errata =
let
inherit (pkgs) avizo playerctl;
in
[
avizo
playerctl
];
extraServices =
let
inherit (pkgs)
swayidle
swaybg
systemd
avizo
;
inherit (inputs.niri.packages.x86_64-linux) niri-unstable;
in
[
{
name = "swaybg";
value = "${lib.getExe swaybg} -m fill -i /home/${mainUser}/.nix/wallpaper.jpg";
}
{
name = "avizo-service";
value = "${lib.getExe' avizo "avizo-service"}";
}
{
name = "swayidle";
value =
let
niri = lib.getExe niri-unstable;
systemctl = lib.getExe' systemd "systemctl";
in
''
${lib.getExe swayidle} -w \
timeout 1800 '${systemctl} suspend' \
timeout 600 '${niri} msg action power-off-monitors'
'';
}
];
in
{
home.packages = errata;
ezServices = builtins.listToAttrs (
(map (entry: {
name = "${lib.strings.toLower entry.pname}";
value = "${lib.getExe entry}";
}) services)
++ extraServices
);
programs.niri.settings =
let
inherit (lib) range nameValuePair mapAttrs';
inherit (builtins) listToAttrs replaceStrings;
inherit (config.lib.niri) actions;
in
{
binds =
let
hBinds = {
H = "left";
L = "right";
};
vBinds = {
J = "down";
K = "up";
};
makeDirBind =
mods: cmd: keys:
mapAttrs' (
key: dir:
nameValuePair "${mods}+${key}" {
action = actions."${replaceStrings [ "$DIR" ] [ "${dir}" ] "${cmd}"}";
}
) keys;
makeWsBind =
mods: cmd:
listToAttrs (
map (num: {
name = "${mods}+${builtins.toString num}";
value = {
action."${cmd}" = num;
};
}) (range 0 6)
);
in
{
"Mod+D".action.spawn = [
"qs"
"ipc"
"call"
"launch"
"toggle"
];
"Mod+F".action.spawn = "firefox";
"Mod+E".action.spawn = "nautilus";
"Mod+Return".action.spawn = "kitty";
"Mod+Shift+E".action.spawn = "wlogout";
"Mod+Equal".action.spawn = "keepassxc";
"Mod+Shift+Q".action = actions.close-window;
"Mod+Shift+S".action = actions.screenshot;
"Mod+R".action = actions.switch-preset-column-width;
"Mod+Shift+R".action = actions.maximize-column;
"XF86AudioRaiseVolume".action.spawn = [
"volumectl"
"-u"
"up"
];
"XF86AudioLowerVolume".action.spawn = [
"volumectl"
"-u"
"down"
];
"XF86AudioMute".action.spawn = [
"volumectl"
"toggle-mute"
];
"XF86AudioStop".action.spawn = [
"playerctl"
"stop"
];
"XF86AudioPlay".action.spawn = [
"playerctl"
"play-pause"
];
"XF86AudioNext".action.spawn = [
"playerctl"
"next"
];
"XF86AudioPrev".action.spawn = [
"playerctl"
"previous"
];
"Mod+Space".action = actions.toggle-window-floating;
}
// makeDirBind "Mod" "focus-window-or-workspace-$DIR" vBinds
// makeDirBind "Mod" "focus-column-or-monitor-$DIR" hBinds
// makeDirBind "Mod+Shift" "move-window-to-workspace-$DIR" vBinds
// makeDirBind "Mod+Shift" "move-column-$DIR-or-to-monitor-$DIR" hBinds
// makeDirBind "Mod+Ctrl" "consume-or-expel-window-$DIR" hBinds
// makeDirBind "Mod+Ctrl" "move-window-$DIR" vBinds
// makeWsBind "Mod" "focus-workspace"
// makeWsBind "Mod+Shift" "move-window-to-workspace";
outputs = {
# "Unknown-1".enable = false;
"DP-1" = {
transform.rotation = 90;
scale = 1;
};
"DP-2" = {
variable-refresh-rate = true;
scale = 1;
};
};
input = {
warp-mouse-to-focus = true;
};
cursor = {
hide-after-inactive-ms = 5000;
hide-when-typing = true;
size = 16;
theme = rice.cursor.name;
};
layout = {
always-center-single-column = true;
gaps = 24;
default-column-width.proportion = 0.5;
preset-column-widths = map (p: { proportion = p; }) [
(2.0 / 3.0)
0.5
(1.0 / 3.0)
];
focus-ring =
let
pal = rice.palette.hex;
in
{
active = {
color = pal.bright.yellow;
};
inactive = {
color = pal.normal.black;
};
};
};
prefer-no-csd = true;
hotkey-overlay.skip-at-startup = true;
window-rules =
let
v = 10.0;
in
[
{
geometry-corner-radius = {
bottom-left = v;
bottom-right = 0.0;
top-left = 0.0;
top-right = v;
};
clip-to-geometry = true;
}
];
};
# programs.ironbar = {
# enable = true;
# systemd = true;
# config = {
# monitors."DP-1" = {
# position = "top";
# height = 16;
# start = [
# {
# type = "music";
# player_type = "mpris";
# }
# ];
# center = [
# {
# type = "focused";
# icon_size = 16;
# truncate = "middle";
# }
# ];
# end = [
# { type = "clock"; }
# { type = "tray"; }
# ];
# };
# };
# };
systemd.user.services.quickshell = {
Unit.PartOf = [ "graphical-session.target" ];
Unit.After = [
"graphical-session.target"
"niri.service"
];
Install.WantedBy = [ "graphical-session.target" ];
Service = {
ExecStart = "${lib.getExe' (inputs.quickshell.packages.${pkgs.system}.default.override {
withHyprland = false;
withI3 = false;
}) "qs"}";
};
};
}

26
home/modules/theming.nix Normal file
View file

@ -0,0 +1,26 @@
{ pkgs, rice, ... }:
{
home.packages = [
pkgs.gtk-engine-murrine
];
fonts.fontconfig.enable = true;
qt = {
enable = true;
style.name = "adwaita-dark";
platformTheme.name = "adwaita";
};
gtk = {
enable = true;
theme = {
inherit (rice.gtk-theme) package name;
};
iconTheme = {
inherit (rice.icons) package name;
};
font = {
inherit (rice.fonts.sans) size package name;
};
};
}

20
home/modules/webapps.nix Normal file
View file

@ -0,0 +1,20 @@
{ config, ... }:
{
imports = [
../util/firefox-webapp.nix
];
programs.firefox.webapps = {
"Syncthing" = {
url = "http://127.0.0.1:8384";
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Syncthing";
icon = ../icons/syncthing.png;
};
"Open-WebUI" = {
url = "http://127.0.0.1:8088";
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Open-WebUI";
icon = ../icons/openwebui.png;
};
};
}

117
home/plank.nix Executable file → Normal file
View file

@ -1,114 +1,13 @@
{ config, pkgs, lib, ... }:
let
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
hyprland = (import flake-compat {
src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/master.tar.gz";
}).defaultNix;
wlogout_style_base = dots/wlogout/style.css;
wlogout_style = pkgs.runCommandLocal "wlogout_style_base" {wlogpath = lib.strings.escape ["/"] "${pkgs.wlogout}";} ''
cp ${wlogout_style_base} $out
sed -i "s/\/usr\/share\/wlogout/$wlogpath\/share\/wlogout/g" $out
sed -i "s/\/etc\/wlogout/$wlogpath\/etc\/wlogout/g" $out
'';
in {
nixpkgs.overlays = [
(self: super: {
kwin-system76-scheduler-integration = pkgs.libsForQt5.callPackage ../system/syspkgs/kwin-system76-scheduler-integration.nix {};
hyprland-s76 = pkgs.callPackage ../system/syspkgs/hyprland-system76-scheduler-integration.nix {};
swayosd = pkgs.callPackage ./homepkgs/swayosd.nix {};
})
];
{
...
}:
{
imports = [
hyprland.homeManagerModules.default
../foreign/dotfiles/home/programs/eww/default.nix
# ../foreign/dotfiles/modules/regreet.nix
./home.nix
];
home.username = "plank";
home.homeDirectory = "/home/plank";
programs.eww-hyprland = {
enable = true;
colors = builtins.readFile dots/eww/colors.scss;
home = {
username = "plank";
homeDirectory = "/home/plank";
};
home.packages = with pkgs; [
qt5ct
zellij
glib # for gsettings
fuzzel
grim
slurp
swaybg
wlogout
wf-recorder
libnotify
xorg.xrdb
swayidle
swaynotificationcenter
swayosd
playerctl
];
xdg.configFile = builtins.mapAttrs (name: value: { enable=true; text=builtins.readFile value; })
{
"wlogout/layout" = dots/wlogout/layout;
"wlogout/style.css" = wlogout_style;
"swaync/config.json" = dots/swaync/config.json;
"swaync/configSchema.json" = dots/swaync/configSchema.json;
"swaync/style.css" = dots/swaync/style.css;
"fuzzel/fuzzel.ini" = dots/fuzzel/fuzzel.ini;
};
wayland.windowManager.hyprland = {
enable = true;
systemdIntegration = true;
nvidiaPatches = false;
xwayland = {
enable = true;
hidpi = false;
};
recommendedEnvironment = true;
extraConfig = builtins.readFile dots/hyprland/hyprland.conf;
};
systemd.user.services."hyprland-system76" = {
Unit = {
Description = "the hyprland process scheduler hook";
Requires = [ "dbus.service" ];
};
Install = {
WantedBy = [ "graphical-session.target" "default.target" ];
};
Service = {
ExecStart = ''${pkgs.hyprland-s76}/bin/hyprland-system76-scheduler-hook.sh'';
};
};
systemd.user.startServices = true;
systemd.user.services."com.system76.Scheduler.dbusproxy" = {
Unit = {
Description = "the system76 process scheduler kwin dbus proxy";
Requires = [ "dbus.service" ];
};
Install = {
WantedBy = [ "graphical-session.target" "default.target" ];
};
Service = {
ExecStart = ''${pkgs.kwin-system76-scheduler-integration}/bin/kwin-system76-scheduler-dbus-proxy.sh'';
};
};
}

93
home/programs/firefox.nix Normal file
View file

@ -0,0 +1,93 @@
{
lib,
...
}:
let
officialAddon = name: {
install_url = lib.strings.concatStrings [
"https://addons.mozilla.org/firefox/downloads/latest/"
name
"/latest.xpi"
];
installation_mode = "force_installed";
};
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
in
{
programs.firefox = {
enable = true;
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxAccounts = true;
DisableAccounts = true;
DisableFirefoxScreenshots = true;
DisableAppUpdate = true;
DisablePrivateBrowsing = true;
DontCheckDefaultBrowser = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DisplayBookmarksToolbar = "newtab"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
ExtensionSettings = {
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
"uBlock0@raymondhill.net" = officialAddon "ublock-origin";
"addon@darkreader.org" = officialAddon "darkreader";
"keepassxc-browser@keepassxc.org" = officialAddon "keepassxc-browser";
"vimium-c@gdh1995.cn" = officialAddon "vimium-c";
"{b86e4813-687a-43e6-ab65-0bde4ab75758}" = officialAddon "localcdn-fork-of-decentraleyes";
"jid1-5Fs7iTLscUaZBgwr@jetpack" = officialAddon "happy-bonobo-disable-webrtc";
};
Preferences = {
"extensions.pocket.enabled" = lock-false;
"extensions.screenshots.disabled" = lock-true;
"browser.topsites.contile.enabled" = lock-false;
"browser.formfill.enable" = lock-false;
"browser.search.suggest.enabled" = lock-false;
"browser.search.suggest.enabled.private" = lock-false;
"browser.urlbar.suggest.searches" = lock-false;
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
};
};
profiles.default = {
id = 0;
name = "Default";
settings = {
"browser.startup.homepage" = "about:blank";
"browser.shell.didSkipDefaultBrowserCheckOnFirstRun" = true;
"browser.policies.applied" = true;
"widget.use-xdg-desktop-portal.file-picker" = 1;
"widget.use-xdg-desktop-portal.mime-handler" = 1;
};
};
};
}

253
home/programs/helix.nix Normal file
View file

@ -0,0 +1,253 @@
{
inputs,
pkgs,
rice,
...
}:
let
pal = rice.palette.hex;
in
{
programs.helix = {
enable = true;
package = inputs.helix.packages.${pkgs.system}.helix;
themes = with pal; {
nix-rice = {
"attribute" = bright.cyan;
"keyword" = {
fg = normal.red;
};
"keyword.directive" = normal.red;
"namespace" = bright.cyan;
"punctuation" = bright.yellow;
"punctuation.delimiter" = bright.yellow;
"operator" = bright.magenta;
"special" = normal.magenta;
"variable.other.member" = bright.blue;
"variable" = util.fg;
"variable.builtin" = bright.yellow;
"variable.parameter" = bright.white;
"type" = normal.yellow;
"type.builtin" = normal.yellow;
"constructor" = {
fg = bright.magenta;
modifiers = [ "bold" ];
};
"function" = {
fg = normal.green;
modifiers = [ "bold" ];
};
"function.macro" = bright.cyan;
"function.builtin" = normal.yellow;
"tag" = normal.red;
"comment" = {
fg = normal.magenta;
modifiers = [ "italic" ];
};
"constant" = {
fg = bright.magenta;
};
"constant.builtin" = {
fg = bright.magenta;
modifiers = [ "bold" ];
};
"string" = normal.green;
"constant.numeric" = bright.magenta;
"constant.character.escape" = {
fg = bright.white;
modifiers = [ "bold" ];
};
"label" = bright.cyan;
"module" = bright.cyan;
"diff.plus" = bright.green;
"diff.delta" = bright.yellow;
"diff.minus" = bright.red;
"warning" = bright.yellow;
"error" = bright.red;
"info" = bright.cyan;
"hint" = bright.blue;
"ui.background" = {
inherit (util) bg;
};
"ui.linenr" = {
fg = normal.cyan;
};
"ui.linenr.selected" = {
fg = normal.yellow;
modifiers = [ "bold" ];
};
"ui.cursorline" = {
bg = normal.black;
};
"ui.statusline" = {
inherit (util) fg;
bg = bright.black;
};
"ui.statusline.normal" = {
inherit (util) fg;
bg = bright.black;
};
"ui.statusline.insert" = {
inherit (util) fg;
bg = normal.blue;
};
"ui.statusline.select" = {
inherit (util) fg;
bg = bright.yellow;
};
"ui.statusline.inactive" = {
fg = normal.white;
bg = normal.black;
};
"ui.popup" = {
bg = normal.black;
};
"ui.window" = {
bg = normal.black;
};
"ui.help" = {
bg = normal.black;
inherit (util) fg;
};
"ui.text" = {
inherit (util) fg;
};
"ui.text.focus" = {
inherit (util) fg;
};
"ui.selection" = {
# modifiers = ["reversed"];
bg = bright.yellow;
};
"ui.selection.primary" = {
modifiers = [ "reversed" ];
};
# "ui.selection.primary" = { bg = bright.cyan; };
"ui.cursor.primary" = {
bg = normal.white;
fg = normal.black;
};
"ui.cursor.match" = {
bg = bright.cyan;
};
"ui.menu" = {
inherit (util) fg;
bg = bright.black;
};
"ui.menu.selected" = {
fg = bright.black;
bg = bright.blue;
modifiers = [ "bold" ];
};
"ui.virtual.whitespace" = bright.black;
"ui.virtual.ruler" = {
bg = normal.black;
};
"ui.virtual.inlay-hint" = {
fg = normal.magenta;
};
"diagnostic.warning" = {
underline = {
color = bright.yellow;
style = "curl";
};
};
"diagnostic.error" = {
underline = {
color = bright.red;
style = "curl";
};
};
"diagnostic.info" = {
underline = {
color = bright.cyan;
style = "curl";
};
};
"diagnostic.hint" = {
underline = {
color = bright.blue;
style = "curl";
};
};
"markup.heading" = bright.cyan;
"markup.bold" = {
modifiers = [ "bold" ];
};
"markup.italic" = {
modifiers = [ "italic" ];
};
"markup.strikethrough" = {
modifiers = [ "crossed_out" ];
};
"markup.link.url" = {
fg = bright.green;
modifiers = [ "underlined" ];
};
"markup.link.text" = bright.red;
"markup.raw" = bright.red;
};
};
# theme = "nix-rice"
settings = {
theme = "nix-rice";
editor = {
bufferline = "multiple";
cursorline = true;
true-color = true;
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
statusline.left = [
"mode"
"spinner"
"version-control"
"file-name"
"file-modification-indicator"
];
lsp.display-messages = true;
};
};
languages = {
language = [
{
name = "rust";
language-servers = [ "rust-analyzer" ];
}
{
name = "nix";
language-servers = [ "nil" ];
file-types = [ "nix" ];
auto-format = true;
formatter = {
command = "nixfmt";
};
}
];
language-server = {
qmlls = {
command = "qmlls";
args = [ "-E" ];
};
nil = {
command = "nil";
};
rust-analyzer = {
config = {
cargo.buildScripts.enable = true;
procMacro.enable = true;
check.command = "clippy";
};
};
}; # language-server
}; # languages
}; # helix config
}

42
home/programs/kitty.nix Normal file
View file

@ -0,0 +1,42 @@
{
rice,
...
}:
let
pal = rice.palette.hex;
in
{
programs.kitty = {
enable = true;
font = {
inherit (rice.fonts.monospace) name size;
};
settings = with pal; {
foreground = util.fg;
background = util.bg;
inherit (util) cursor;
cursor_text = util.bg;
selection_foreground = util.fg_sel;
selection_background = util.bg_sel;
color0 = normal.black;
color1 = normal.red;
color2 = normal.green;
color3 = normal.yellow;
color4 = normal.blue;
color5 = normal.magenta;
color6 = normal.cyan;
color7 = normal.white;
color8 = bright.black;
color9 = bright.red;
color10 = bright.green;
color11 = bright.yellow;
color12 = bright.blue;
color13 = bright.magenta;
color14 = bright.cyan;
color15 = bright.white;
sync_to_monitor = "yes";
shell = "fish";
cursor_trail = 100;
};
};
}

71
home/programs/wlogout.nix Normal file
View file

@ -0,0 +1,71 @@
{
rice,
pkgs,
...
}:
let
pal = rice.palette.hex;
in
{
programs.wlogout = {
enable = true;
package = pkgs.wleave;
layout = builtins.fromJSON (builtins.readFile ../dots/wlogout/layout);
style =
with pal;
(builtins.replaceStrings
[
"/usr/share/wlogout"
"/etc/wlogout"
"#WINBG"
"#BTNCOL"
"#BTNBG"
"#BTNFOCUSBG"
"#WINLOGO"
]
[
"${pkgs.wlogout}/share/wlogout"
"${pkgs.wlogout}/etc/wlogout"
util.bg
bright.yellow
util.bg
normal.black
(builtins.path {
name = "winlogo";
path = ../icons/winlogo.png;
sha256 = "7c1ff96b553c7a7ca3a7b7cf8efe830ab7feea92355aed288a10ee7347c24108";
})
]
(builtins.readFile ../dots/wlogout/style.css)
);
};
# xdg.configFile = {
# "wleave/layout".text = builtins.readFile ../dots/wlogout/layout;
# "wleave/style.css".text = with palette-hex; (builtins.replaceStrings
# [
# "/usr/share/wlogout"
# "/etc/wlogout"
# "#WINBG"
# "#BTNCOL"
# "#BTNBG"
# "#BTNFOCUSBG"
# "#WINLOGO"
# ]
# [
# "${pkgs.wleave}/share/wleave"
# "${pkgs.wleave}/etc/wleave"
# util.bg
# bright.yellow
# util.bg
# normal.black
# (builtins.path {
# name = "winlogo";
# path = ../icons/winlogo.png;
# sha256 = "7c1ff96b553c7a7ca3a7b7cf8efe830ab7feea92355aed288a10ee7347c24108";
# })
# ]
# (builtins.readFile ../dots/wlogout/style.css));
# };
home.packages = [ pkgs.wlogout ];
}

71
home/util/ez.nix Normal file
View file

@ -0,0 +1,71 @@
{
config,
lib,
...
}:
{
options = {
ezServices =
with lib;
mkOption {
type = with types; attrsOf str;
default = { };
};
ezOneShots =
with lib;
mkOption {
type = with types; attrsOf str;
default = { };
};
ezConf =
with lib;
mkOption {
type = with types; attrsOf path;
default = { };
};
# for specifying an additional systemd target
extraTarget =
with lib;
mkOption {
type = with types; listOf str;
default = [ ];
};
};
config = {
systemd.user.services =
builtins.mapAttrs (name: cmd: {
Unit = {
Description = "${name}";
Requires = [ "graphical-session.target" ] ++ config.extraTarget;
After = [ "graphical-session.target" ] ++ config.extraTarget;
};
Service = {
ExecStart = cmd;
};
Install = {
WantedBy = [ "graphical-session.target" ] ++ config.extraTarget;
};
}) config.ezServices
// builtins.mapAttrs (name: cmd: {
Unit = {
Description = "${name}";
After = [ "graphical-session.target" ] ++ config.extraTarget;
};
Service = {
ExecStart = cmd;
Type = "oneshot";
};
Install = {
WantedBy = [ "graphical-session.target" ] ++ config.extraTarget;
};
}) config.ezOneShots;
xdg.configFile = builtins.mapAttrs (_name: value: {
enable = true;
source = value;
}) config.ezConf;
};
}

View file

@ -0,0 +1,260 @@
{
config,
lib,
...
}:
let
inherit (builtins) getAttr stringLength substring;
inherit (lib)
mkOption
getExe
listToAttrs
attrsToList
imap
;
inherit (lib.attrsets)
mapAttrs
mapAttrs'
nameValuePair
;
inherit (lib.strings) concatStringsSep toUpper;
enumerate =
a:
listToAttrs (
imap (
id:
{
name,
value,
}:
{
inherit name;
value = value // {
inherit id;
};
}
) (attrsToList a)
);
make-app-profiles =
cfg:
mapAttrs' (
name: cfg:
nameValuePair "home-manager-webapp-${name}" {
inherit (cfg) id;
userChrome = ''
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
browser {
margin-right: 0px; margin-bottom: 0px;
}
#TabsToolbar {
visibility: collapse !important;
}
#nav-bar {
margin-top: 0;
margin-bottom: -42px;
z-index: -100;
}
#main-window[windowtype="navigator:browser"] {
background-color: transparent !important;
}
.tab-background[selected="true"] {
background: ${cfg.backgroundColor} !important;
}
'';
settings = cfg.extraSettings // {
"browser.startup.homepage" = builtins.toString cfg.url;
"browser.sessionstore.resume_session_once" = false;
"browser.sessionstore.resume_from_crash" = false;
"browser.cache.disk.enable" = false;
"browser.cache.disk.capacity" = 0;
"browser.cache.disk.filesystem_reported" = 1;
"browser.cache.disk.smart_size.enabled" = false;
"browser.cache.disk.smart_size.first_run" = false;
"browser.cache.disk.smart_size.use_old_max" = false;
"browser.ctrlTab.previews" = true;
"browser.tabs.warnOnClose" = false;
"plugin.state.flash" = 2;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.tabs.drawInTitlebar" = false;
"browser.tabs.inTitlebar" = 0;
"browser.contentblocking.category" = "strict";
"network.cookie.lifetimePolicy" = 0;
"layout.css.prefers-color-scheme.content-override" = getAttr cfg.theme {
dark = 0;
light = 1;
system = 2;
};
};
}
) cfg;
in
{
options.programs.firefox.webapps = mkOption {
default = { };
type =
with lib.types;
attrsOf (submodule {
options = {
####################
# Firefox settings #
####################
url = mkOption {
type = str;
description = "The URL of the webapp to launch.";
};
# id = mkOption {
# type = int;
# description = "The Firefox profile ID to set.";
# };
hidden = mkOption {
type = bool;
description = "Hide this webapp from the list of applications (but still generate a .desktop file).";
default = false;
};
extraArgs = mkOption {
type = listOf str;
default = [ ];
description = "Extra args to launch Firefox with.";
};
extraSettings = mkOption {
type = attrsOf (either bool (either int str));
default = { };
description = "Additional Firefox profile settings.";
};
backgroundColor = mkOption {
type = str;
default = "rgba(0, 0, 0, 0)";
description = "The background color to use for loading pages.";
};
theme = mkOption {
type = enum [
"dark"
"light"
"system"
];
default = "system";
description = "The application CSS theme to use, if supported.";
};
#########################
# Desktop file settings #
#########################
# Copied from xdg.desktopEntries, with slight modification for default settings
name = mkOption {
type = nullOr str;
default = null;
description = "Specific name of the application. Defaults to the capitalized attribute name.";
};
mimeType = mkOption {
description = "The MIME type(s) supported by this application.";
type = nullOr (listOf str);
default = [
"text/html"
"text/xml"
"application/xhtml_xml"
];
};
# Copied verbatim from xdg.desktopEntries.
genericName = mkOption {
type = nullOr str;
default = null;
description = "Generic name of the application.";
};
comment = mkOption {
type = nullOr str;
default = null;
description = "Tooltip for the entry.";
};
categories = mkOption {
type = nullOr (listOf str);
default = null;
description = "Categories in which the entry should be shown in a menu.";
};
icon = mkOption {
type = nullOr (either str path);
default = null;
description = "Icon to display in file manager, menus, etc.";
};
prefersNonDefaultGPU = mkOption {
type = nullOr bool;
default = null;
description = ''
If true, the application prefers to be run on a more
powerful discrete GPU if available.
'';
};
};
});
description = "Websites to create special site-specific Firefox instances for.";
};
config = {
programs.firefox.profiles = make-app-profiles (enumerate config.programs.firefox.webapps);
xdg.desktopEntries = mapAttrs (name: cfg: {
inherit (cfg)
genericName
comment
categories
icon
mimeType
prefersNonDefaultGPU
;
name =
if cfg.name == null then
(toUpper (substring 0 1 name)) + (substring 1 (stringLength name) name)
else
cfg.name;
startupNotify = true;
terminal = false;
type = "Application";
exec = concatStringsSep " " (
[
"${getExe config.programs.firefox.package}"
"--name"
"${name}"
"--app-id"
"${name}"
"--class"
"${name}"
"-P"
"${config.programs.firefox.profiles."home-manager-webapp-${name}".path}"
"--no-remote"
]
++ cfg.extraArgs
++ [ "${cfg.url}" ]
);
settings = {
X-MultipleArgs = "false"; # Consider enabling, don't know what this does
StartupWMClass = "${name}";
NoDisplay = lib.boolToString cfg.hidden;
};
}) config.programs.firefox.webapps;
};
}

252
home/util/local-webapp.nix Normal file
View file

@ -0,0 +1,252 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (lib)
mkOption
mkForce
getExe
getExe'
listToAttrs
flatten
mapAttrsToList
mapAttrs
mapAttrs'
nameValuePair
toLower
replaceStrings
concatMapStringsSep
;
partOf = cfg: "${replaceStrings [ " " ] [ "-" ] (toLower cfg.name)}.target";
# make a firefox webapp + hidden .desktop entry for the client app
make-firefox =
cfg:
mapAttrs' (
name: cfg:
nameValuePair "${name}-client" {
inherit (cfg) name;
url = "http://127.0.0.1:${builtins.toString cfg.port}";
extraSettings = config.programs.firefox.profiles.default.settings;
hidden = true;
}
) cfg;
# make a systemd service for running the frontend
make-systemd-service =
cfg:
mapAttrs' (
name: cfg:
if (cfg.service != null) then
nameValuePair "${cfg.name}-frontend" {
Unit = {
Description = "${cfg.name} Frontend";
WantedBy = mkForce [ ];
};
Service = cfg.service;
}
else
nameValuePair "" { }
) cfg;
# modify systemd units to be PartOf this target
modify-systemd-services =
cfg:
listToAttrs (
flatten (
mapAttrsToList (
name: cfg:
(map (req: {
name = "${req}";
value = {
Unit = {
PartOf = partOf cfg;
};
};
}) cfg.requires.services)
) cfg
)
);
modify-quadlets =
cfg:
listToAttrs (
flatten (
mapAttrsToList (
name: cfg:
(map (req: {
name = "${req}";
value = {
extraConfig.Unit.PartOf = partOf cfg;
};
}) cfg.requires.containers)
) cfg
)
);
# make a systemd target to collate dependencies
make-systemd-target =
cfg:
mapAttrs (name: cfg: {
Unit = {
Description = "${cfg.name} Target";
WantedBy = mkForce [ ];
Requires =
(map (req: req + ".service") cfg.requires.services)
++ (map (req: "podman-" + req + ".service") cfg.requires.containers);
};
}) cfg;
# make desktop shortcuts and a script which will handle starting everything
make-xdg =
cfg:
mapAttrs (name: cfg: {
inherit (cfg) name icon genericName;
type = "Application";
exec = "${
let
notify-send = "${getExe' pkgs.libnotify "notify-send"} -a \"${cfg.name}\"";
systemctl = "${getExe' pkgs.systemd "systemctl"}";
dex = "${getExe pkgs.dex}";
podman = "${getExe pkgs.podman}";
makeContainerCheck =
container: ''[ "$(${podman} inspect -f {{.State.Health.Status}} ${container})" == "healthy" ]'';
# makeContainerCheck = container: ''
# [ ${podman} inspect -f {{.State.Status}} ${container})" != "running" ]
# '';
containerChecks =
if (cfg.requires.containers != [ ]) then
''
container_checks() {
if ''
+ (concatMapStringsSep " && " makeContainerCheck cfg.requires.containers)
+ ''
; then
return 0
else
return 1
fi
}
''
else
''
container_checks() {
return 0
}
'';
in
pkgs.writeShellScript "${name}" ''
set -euo pipefail
exit_error() {
${notify-send} -w "Failure" $1
exit 1
}
${containerChecks}
${notify-send} "Launching ${name} backend.." "Please be patient."
${systemctl} --user start ${name}.target || exit_error "Failed to launch!"
checks=0
until container_checks; do
sleep 2
checks=$((checks+1))
if [ $((checks%10)) -eq 0 ]; then
${notify-send} "Waiting for backend."
fi
if [ $checks -ge 60 ]; then
${systemctl} --no-block --user stop ${name}.target
exit_error "Failed to launch!"
fi
done
${notify-send} "Launching ${name}.."
${dex} -w ~/.nix-profile/share/applications/${name}-client.desktop
${notify-send} "Goodbye" "Shutting down."
${systemctl} --user stop ${name}.target
exit 0
''
}";
}) cfg;
cfg = config.localWebApps;
in
{
options.localWebApps = mkOption {
default = { };
type =
with lib.types;
attrsOf (submodule {
options = {
name = mkOption {
type = str;
description = "Display name of the webapp.";
};
genericName = mkOption {
type = nullOr str;
description = "Generic name of the webapp.";
default = null;
};
icon = mkOption {
type = nullOr (either str path);
description = "Path to a file to use for application icon.";
default = null;
};
requires = mkOption {
type = nullOr (submodule {
options = {
containers = mkOption {
type = listOf str;
default = [ ];
};
services = mkOption {
type = listOf str;
default = [ ];
};
};
});
default = null;
description = "Containers or services this app requires.";
};
service = mkOption {
type = nullOr (submodule {
options = {
execStartPre = mkOption {
type = nullOr str;
default = null;
};
execStart = mkOption {
type = nullOr str;
default = null;
};
execStop = mkOption {
type = nullOr str;
default = null;
};
};
});
default = null;
description = "Submodule containing exec[StartPre/Start/Stop] commands for any required systemd service";
};
port = mkOption {
type = int;
description = "Local port the webapp should host on.";
};
};
});
};
config = {
programs.firefox.webapps = make-firefox cfg;
systemd.user.targets = make-systemd-target cfg;
systemd.user.services = (make-systemd-service cfg) // (modify-systemd-services cfg);
services.podman.containers = modify-quadlets cfg;
xdg.desktopEntries = make-xdg cfg;
};
}

10
home/util/name.nix Normal file
View file

@ -0,0 +1,10 @@
{
mainUser,
...
}:
{
config.home = {
username = mainUser;
homeDirectory = "/home/${mainUser}";
};
}