1
Fork 0
mirror of https://github.com/RGBCube/ncc synced 2025-07-30 19:47:47 +00:00

Refactor everything to make usage easier with

mutiple systems, also merge all abstractions
to avoid huge desctructions in the attrset input.
This commit is contained in:
RGBCube 2023-12-10 18:31:37 +03:00
parent a0fa73b873
commit ee2055928c
No known key found for this signature in database
47 changed files with 343 additions and 279 deletions

18
modules/bat/default.nix Normal file
View file

@ -0,0 +1,18 @@
{ ulib, theme, ... }: with ulib;
homeConfiguration {
programs.nushell.environmentVariables = {
MANPAGER = ''"bat --plain --language man"'';
PAGER = ''"bat --plain"'';
};
programs.nushell.shellAliases = {
cat = "bat";
less = "bat --plain";
};
programs.bat = enabled {
config.theme = "base16";
themes.base16 = theme.tmTheme;
};
}

View file

@ -0,0 +1,9 @@
{ ulib, ... }: with ulib;
systemConfiguration {
services.blueman = enabled {};
hardware.bluetooth = enabled {
powerOnBoot = true;
};
}

13
modules/boot/default.nix Normal file
View file

@ -0,0 +1,13 @@
{ ulib, pkgs, ... }: with ulib;
systemConfiguration {
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.loader = {
efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
systemd-boot.editor = false;
};
boot.tmp.cleanOnBoot = true;
}

View file

@ -0,0 +1,12 @@
{ ulib, pkgs, theme, ... }: with ulib; merge
(graphicalConfiguration {
xdg.configFile."Vencord/settings/quickCss.css".text = theme.discordCss;
})
(graphicalPackages (with pkgs; [
(discord.override {
withOpenASAR = true;
withVencord = true;
})
]))

48
modules/dunst/default.nix Normal file
View file

@ -0,0 +1,48 @@
{ ulib, theme, ... }: with ulib;
graphicalConfiguration {
services.dunst = with theme.withHashtag; enabled {
iconTheme = icons;
settings.global = {
width = "(300, 900)";
dmenu = "fuzzel --dmenu";
corner_radius = corner-radius;
gap_size = margin;
horizontal_padding = padding;
padding = padding;
frame_color = base0A;
frame_width = border-width;
separator_color = "frame";
background = base00;
foreground = base05;
alignment = "center";
font = "${font.sans.name} ${toString font.size.normal}";
min_icon_size = 64;
offset = "0x${toString margin}";
origin = "top-center";
};
settings.urgency_low = {
frame_color = base0A;
timeout = 5;
};
settings.urgency_normal = {
frame_color = base09;
timeout = 10;
};
settings.urgency_critical = {
frame_color = base08;
timeout = 15;
};
};
}

View file

@ -0,0 +1,7 @@
{ ulib, ... }: with ulib;
graphicalConfiguration {
programs.firefox = enabled {};
programs.librewolf = enabled {};
}

21
modules/fonts/default.nix Normal file
View file

@ -0,0 +1,21 @@
{ ulib, pkgs, theme, ... }: with ulib; merge
(systemConfiguration {
console = {
earlySetup = true;
font = "Lat2-Terminus16";
packages = with pkgs; [
terminus-nerdfont
];
};
})
(systemFonts (with pkgs; [
theme.font.sans.package
theme.font.mono.package
noto-fonts
noto-fonts-cjk-sans
noto-fonts-lgc-plus
noto-fonts-emoji
]))

View file

@ -0,0 +1,36 @@
{ ulib, theme, ... }: with ulib;
graphicalConfiguration {
programs.fuzzel = with theme; enabled {
settings.main = {
dpi-aware = false;
font = "${font.sans.name}:size=${toString font.size.big}";
icon-theme = icons.name;
layer = "overlay";
prompt = ''" "'';
terminal = "kitty";
tabs = 4;
horizontal-pad = padding;
vertical-pad = padding;
inner-pad = padding;
};
settings.colors = {
background = base00 + "FF";
text = base05 + "FF";
match = base0A + "FF";
selection = base05 + "FF";
selection-text = base00 + "FF";
border = base0A + "FF";
};
settings.border = {
radius = corner-radius;
width = border-width;
};
};
}

View file

@ -0,0 +1,27 @@
{ ulib, pkgs, upkgs, theme, ... }: with ulib;
graphicalConfiguration {
programs.nushell.environmentVariables.TERMINAL = "ghostty";
programs.ghostty = enabled {
package = upkgs.ghostty;
shellIntegration.enable = false;
settings = with theme; {
font-size = font.size.normal;
font-family = font.mono.name;
window-padding-x = padding;
window-padding-y = padding;
confirm-close-surface = false;
window-decoration = false;
config-file = [
(toString (pkgs.writeText "base16-config" ghosttyConfig))
];
};
};
}

69
modules/git/default.nix Normal file
View file

@ -0,0 +1,69 @@
{ ulib, pkgs, ... }: with ulib;
homeConfiguration {
programs.nushell.shellAliases = {
g = "git";
ga = "git add";
gaa = "git add ./";
gc = "git commit";
gca = "git commit --amend --no-edit";
gcm = "git commit --message";
gcl = "git clone";
gd = "git diff";
gds = "git diff --staged";
gp = "git push";
gpf = "git push --force";
gl = "git log";
glo = "git log --oneline";
glp = "git log -p --full-diff";
gpl = "git pull";
gplr = "git pull --rebase";
gplff = "git pull --ff-only";
grb = "git rebase";
grba = "git rebase --abort";
grbc = "git rebase --continue";
grbi = "git rebase --interactive";
grbm = "git rebase master";
grl = "git reflog";
grs = "git reset";
grsh = "git reset --hard";
gs = "git stash";
gsp = "git stash pop";
gsw = "git switch";
gswm = "git switch master";
gsh = "git show";
gst = "git status";
};
programs.git = enabled {
package = pkgs.gitFull;
userName = "RGBCube";
userEmail = "RGBCube@users.noreply.github.com";
extraConfig = {
init.defaultBranch = "master";
push.autoSetupRemote = true;
commit.gpgSign = true;
gpg.format = "ssh";
user.signingKey = "~/.ssh/id_rsa";
url."ssh://git@github.com/".insteadOf = "https://github.com/";
};
};
}

View file

@ -0,0 +1,17 @@
{ ulib, pkgs, ... }: with ulib;
systemConfiguration {
services.greetd = enabled {
settings.default_session = {
command = "${pkgs.cage}/bin/cage -sd ${pkgs.greetd.gtkgreet}/bin/gtkgreet";
user = "nixos";
};
};
environment.etc."greetd/environments".text = ''
Hyprland
bash
nu
sh
'';
}

26
modules/gtk/default.nix Normal file
View file

@ -0,0 +1,26 @@
{ ulib, pkgs, theme, ... }: with ulib; merge
(systemConfiguration {
programs.dconf = enabled {};
})
(graphicalConfiguration {
gtk = enabled {
gtk3.extraCss = theme.adwaitaGtkCss;
gtk4.extraCss = theme.adwaitaGtkCss;
font = with theme.font; {
inherit (sans) name package;
size = size.normal;
};
iconTheme = theme.icons;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
};
})

79
modules/helix/default.nix Normal file
View file

@ -0,0 +1,79 @@
{ ulib, lib, pkgs, upkgs, ... }: with ulib; merge
(homeConfiguration {
programs.nushell.environmentVariables.EDITOR = "hx";
programs.nushell.shellAliases.x = "hx";
programs.helix = enabled {
settings.theme = "base16_transparent";
settings.editor = {
color-modes = true;
completion-replace = true;
completion-trigger-len = 0;
cursor-shape.insert = "bar";
cursorline = true;
bufferline = "multiple";
file-picker.hidden = false;
idle-timeout = 200;
line-number = "relative";
shell = [ "nu" "--commands" ];
text-width = 100;
};
settings.editor.indent-guides = {
character = "";
render = true;
};
settings.editor.statusline.mode = {
insert = "INSERT";
normal = "NORMAL";
select = "SELECT";
};
settings.editor.whitespace = {
characters.tab = "";
render.tab = "all";
};
settings.keys = lib.genAttrs [ "normal" "select" ] (_: {
D = "extend_to_line_end";
});
};
})
(homePackages (with pkgs; [
# CMAKE
cmake-language-server
# GO
gopls
# HTML
vscode-langservers-extracted
# KOTLIN
kotlin-language-server
# LATEX
texlab
# LUA
lua-language-server
# MARKDOWN
marksman
# NIX
nil
# PYTHON
python311Packages.python-lsp-server
# RUST
rust-analyzer
# ZIG
upkgs.zls
]))

View file

@ -0,0 +1,227 @@
{ ulib, pkgs, upkgs, theme, ... }: with ulib; merge3
(systemConfiguration {
hardware.opengl = enabled {};
xdg.portal = enabled {
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
];
};
})
(graphicalConfiguration {
wayland.windowManager.hyprland = with theme; enabled {
package = upkgs.hyprland;
extraConfig =
''
monitor = , preferred, auto, 1
''
+
''
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
exec = swaybg --image ${./wallpaper.png}
exec = pkill --signal SIGUSR2 waybar
''
+
''
binde = SUPER, left , movefocus, l
binde = SUPER, down , movefocus, d
binde = SUPER, up , movefocus, u
binde = SUPER, right, movefocus, r
binde = SUPER, h, movefocus, l
binde = SUPER, j, movefocus, d
binde = SUPER, k, movefocus, u
binde = SUPER, l, movefocus, r
''
+
''
bind = SUPER , TAB, workspace, e+1
bind = SUPER+ALT, TAB, workspace, e-1
bind = SUPER, mouse_up, workspace, e+1
bind = SUPER, mouse_down, workspace, e-1
bind = SUPER, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5
bind = SUPER+ALT, 1, movetoworkspacesilent, 1
bind = SUPER+ALT, 2, movetoworkspacesilent, 2
bind = SUPER+ALT, 3, movetoworkspacesilent, 3
bind = SUPER+ALT, 4, movetoworkspacesilent, 4
bind = SUPER+ALT, 5, movetoworkspacesilent, 5
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:274, movewindow
''
+
''
binde = SUPER+CTRL, left , resizeactive, -100 0
binde = SUPER+CTRL, down , resizeactive, 0 100
binde = SUPER+CTRL, up , resizeactive, 0 -100
binde = SUPER+CTRL, right, resizeactive, 100 0
binde = SUPER+CTRL, h, resizeactive, -100 0
binde = SUPER+CTRL, j, resizeactive, 0 100
binde = SUPER+CTRL, k, resizeactive, 0 -100
binde = SUPER+CTRL, l, resizeactive, 100 0
bindm = SUPER, mouse:273, resizewindow
''
+
''
bind = SUPER+ALT, left , movewindow, l
bind = SUPER+ALT, down , movewindow, d
bind = SUPER+ALT, up , movewindow, u
bind = SUPER+ALT, right, movewindow, r
bind = SUPER+ALT, h, movewindow, l
bind = SUPER+ALT, j, movewindow, d
bind = SUPER+ALT, k, movewindow, u
bind = SUPER+ALT, l, movewindow, r
''
+
''
bind = SUPER , Q, killactive
bind = SUPER , F, fullscreen
bind = SUPER+ALT, F, togglefloating
bind = SUPER+ALT, RETURN, exec, kitty
bind = SUPER , RETURN, exec, ghostty
bind = SUPER , W , exec, firefox
bind = SUPER , D , exec, discord
bind = SUPER , M , exec, thunderbird
bind = SUPER , T , exec, thunar
bind = SUPER , C , exec, hyprpicker --autocopy
bind = SUPER, B, exec, pkill --signal SIGUSR1 waybar
bind = SUPER, SPACE, exec, pkill fuzzel; fuzzel
bind = SUPER, V , exec, pkill fuzzel; cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
bind = , PRINT, exec, pkill grim; grim -g "$(slurp -w 0)" - | swappy -f - -o - | wl-copy --type image/png
bind = ALT, PRINT, exec, pkill grim; grim - | swappy -f - -o - | wl-copy --type image/png
''
+
''
bindle = , XF86AudioRaiseVolume, exec, wpctl set-volume --limit 1.5 @DEFAULT_AUDIO_SINK@ 5%+
bindle = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindle = , XF86AudioMute , exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindle = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindle = , XF86MonBrightnessUp , exec, brightnessctl set 5%+
bindle = , XF86MonBrightnessDown, exec, brightnessctl set --min-value=0 5%-
bindl = , XF86PowerOff, exec, pkill fuzzel; echo -en "Suspend\0icon\x1fsystem-suspend\nHibernate\0icon\x1fsystem-suspend-hibernate-alt2\nPower Off\0icon\x1fsystem-shutdown\nReboot\0icon\x1fsystem-reboot" | fuzzel --dmenu | tr --delete " " | tr "[:upper:]" "[:lower:]" | ifne xargs systemctl
''
+
''
animations {
bezier = material_decelerate, 0.05, 0.7, 0.1, 1
animation = windows, 1, 2 , material_decelerate, popin 80%
animation = border , 1, 10, default
animation = fade , 1, 2 , default
animation = workspaces,1, 3 , material_decelerate
}
''
+
''
decoration {
drop_shadow = false
rounding = ${toString corner-radius}
blur {
enabled = false
}
}
''
+
''
general {
max_fps = 60
gaps_in = ${toString (margin/ 2)}
gaps_out = ${toString margin}
border_size = ${toString border-width}
col.active_border = 0xFF${base0A}
col.nogroup_border_active = 0xFF${base0A}
col.inactive_border = 0xFF${base01}
col.nogroup_border = 0xFF${base01}
cursor_inactive_timeout = 10
no_cursor_warps = true
resize_on_border = true
}
''
+
''
gestures {
workspace_swipe = true
}
''
+
''
input {
follow_mouse = 1
kb_layout = tr
repeat_delay = 400
repeat_rate = 100
touchpad {
clickfinger_behavior = true
drag_lock = true
natural_scroll = true
scroll_factor = 0.7
}
}
''
+
''
dwindle {
preserve_split = true
smart_resizing = false
}
''
+
''
misc {
animate_manual_resizes = true
disable_hyprland_logo = true
disable_splash_rendering = true
key_press_enables_dpms = true
mouse_move_enables_dpms = true
}
'';
};
})
(homePackages (with pkgs; [
brightnessctl
cliphist
grim
slurp
swappy
swaybg
upkgs.hyprpicker
wl-clipboard
xdg-utils
xwaylandvideobridge
]))

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

76
modules/kitty/default.nix Normal file
View file

@ -0,0 +1,76 @@
{ ulib, theme, ... }: with ulib;
graphicalConfiguration {
programs.kitty = with theme.withHashtag; enabled {
font = with font; {
inherit (mono) name package;
size = size.normal;
};
theme = "Gruvbox Dark";
settings = {
allow_remote_control = true;
confirm_os_window_close = 0;
focus_follows_mouse = true;
mouse_hide_wait = 0;
window_padding_width = padding;
scrollback_lines = 100000;
scrollback_pager = "bat --chop-long-lines";
cursor = base05;
cursor_text_color = base00;
cursor_shape = "beam";
url_color = base0D;
strip_trailing_spaces = "always";
enable_audio_bell = false;
active_border_color = base0A;
inactive_border_color = base01;
window_border_width = "0pt";
background = base00;
foreground = base05;
selection_background = base02;
selection_foreground = base00;
tab_bar_edge = "top";
tab_bar_style = "powerline";
active_tab_background = base00;
active_tab_foreground = base05;
inactive_tab_background = base01;
inactive_tab_foreground = base05;
color0 = base00;
color1 = base08;
color2 = base0B;
color3 = base0A;
color4 = base0D;
color5 = base0E;
color6 = base0C;
color7 = base05;
color8 = base03;
color9 = base08;
color10 = base0B;
color11 = base0A;
color12 = base0D;
color13 = base0E;
color14 = base0C;
color15 = base07;
color16 = base09;
color17 = base0F;
color18 = base01;
color19 = base02;
color20 = base04;
color21 = base06;
};
};
}

View file

@ -0,0 +1,22 @@
{ ulib, ... }: with ulib;
systemConfiguration {
console.keyMap = "trq";
time.timeZone = "Europe/Istanbul";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = let
locale = "tr_TR.UTF-8";
in {
LC_ADDRESS = locale;
LC_IDENTIFICATION = locale;
LC_MEASUREMENT = locale;
LC_MONETARY = locale;
LC_NAME = locale;
LC_NUMERIC = locale;
LC_PAPER = locale;
LC_TELEPHONE = locale;
LC_TIME = locale;
};
}

View file

@ -0,0 +1,5 @@
{ ulib, ... }: with ulib;
systemConfiguration {
services.logind.powerKey = "ignore";
}

View file

@ -0,0 +1,7 @@
{ ulib, ... }: with ulib;
systemConfiguration {
networking.networkmanager = enabled {};
users.extraGroups.networkmanager.members = [ "nixos" ];
}

35
modules/nix/default.nix Normal file
View file

@ -0,0 +1,35 @@
{ inputs, ulib, upkgs, ... }: with ulib;
systemConfiguration {
nix = {
gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 3d";
persistent = true;
};
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
optimise.automatic = true;
package = upkgs.nixSuper;
registry = {
nixpkgs.flake = inputs.nixpkgs;
default.flake = inputs.nixpkgs;
};
settings.experimental-features = [
"fetch-tree"
"flakes"
"nix-command"
"repl-flake"
];
settings.trusted-users = [ "root" "@wheel" ];
settings.warn-dirty = false;
};
programs.nix-ld = enabled {};
}

BIN
modules/nushell/boom.mp3 Normal file

Binary file not shown.

BIN
modules/nushell/boom.opus Normal file

Binary file not shown.

View file

@ -0,0 +1,427 @@
''
$env.config = {
bracketed_paste: true
buffer_editor: ""
datetime_format: {}
edit_mode: vi
error_style: fancy
float_precision: 2
footer_mode: 25
render_right_prompt_on_last_line: false
shell_integration: false
show_banner: false
use_ansi_coloring: true
use_grid_icons: true
use_kitty_protocol: false
}
$env.config.color_config = {
binary: white
block: white
bool: {|| if $in { "light_green" } else { "light_red" } }
cell-path: white
date: purple
duration: white
empty: blue
filesize: cyan
float: white
header: green_bold
hints: dark_gray
int: white
list: white
nothing: white
range: white
record: white
row_index: green_bold
search_result: { bg: red fg: white }
separator: white
string: {|| if $in =~ "^(#|0x)[a-fA-F0-9]+$" { ($in | str replace "0x" "#") } else { "white" } }
leading_trailing_space_bg: { attr: n }
shape_and: purple_bold
shape_binary: purple_bold
shape_block: blue_bold
shape_bool: light_cyan
shape_closure: green_bold
shape_custom: green
shape_datetime: cyan_bold
shape_directory: cyan
shape_external: cyan
shape_externalarg: green_bold
shape_filepath: cyan
shape_flag: blue_bold
shape_float: purple_bold
shape_garbage: { fg: white bg: red attr: b}
shape_globpattern: cyan_bold
shape_int: purple_bold
shape_internalcall: cyan_bold
shape_list: cyan_bold
shape_literal: blue
shape_match_pattern: green
shape_nothing: light_cyan
shape_operator: yellow
shape_or: purple_bold
shape_pipe: purple_bold
shape_range: yellow_bold
shape_record: cyan_bold
shape_redirection: purple_bold
shape_signature: green_bold
shape_string: green
shape_table: blue_bold
shape_vardecl: purple
shape_variable: purple
shape_matching_brackets: { attr: u }
shape_string_interpolation: cyan_bold
}
$env.config.ls = {
clickable_links: true
use_ls_colors: true
}
$env.config.rm.always_trash = false
$env.config.table = {
header_on_separator: false
index_mode: always
mode: rounded
padding: { left: 1 right: 1 }
show_empty: true
trim: {
methodology: wrapping
wrapping_try_keep_words: true
truncating_suffix: "..."
}
}
$env.config.explore = {
command_bar_text: { fg: "#C4C9C6" }
highlight: { fg: black bg: yellow }
status: {
error: { fg: white bg: red }
warn: {}
info: {}
}
status_bar_background: { fg: "#1D1F21" bg: "#C4C9C6" }
table: {
split_line: { fg: "#404040" }
selected_cell: { bg: light_blue }
selected_row: {}
selected_column: {}
}
}
$env.config.history = {
file_format: plaintext
isolation: false
max_size: 100_000
sync_on_enter: true
}
$env.config.completions = {
algorithm: fuzzy
case_sensitive: false
partial: true
quick: true
external: {
enable: true
max_results: 100
completer: {|tokens: list<string>|
let expanded_alias = scope aliases | where name == $tokens.0 | get --ignore-errors expansion.0
let tokens = if $expanded_alias != null {
$expanded_alias | split row " " | append ($tokens | skip 1)
} else {
$tokens
}
let command = $tokens.0 | str trim --left --char "^"
let completions = carapace $command nushell $tokens | from json | default []
if ($completions | is-empty) {
let path = $tokens | last
ls $"($path)*" | each {|it|
let choice = if ($path | str ends-with "/") {
$path | path join ($it.name | path basename)
} else {
$path | path dirname | path join ($it.name | path basename)
}
let choice = if ($it.type == "dir") and (not ($choice | str ends-with "/")) {
$"($choice)/"
} else {
$choice
}
if ($choice | str contains " ") {
$"`($choice)`"
} else {
$choice
}
}
} else if ($completions | where value =~ "^.*ERR$" | is-empty) {
$completions
} else {
null
}
}
}
}
$env.config.filesize = {
format: auto
metric: true
}
$env.config.cursor_shape = {
vi_insert: line
vi_normal: block
}
$env.config.hooks = {
command_not_found: {||
task status
| where label == boom
| get id
| each {|id|
(task kill $id)
task remove $id
}
task spawn --label boom { pw-play ${./boom.opus} }
}
display_output: "table --expand"
env_change: {}
pre_execution: [
{
let prompt = (commandline) | str trim
if ($prompt | is-empty) {
return
}
echo $"(ansi title)($prompt) — nu(char bel)"
}
]
pre_prompt: []
}
$env.config.menus = [
{
marker: "| "
name: completion_menu
only_buffer_difference: false
style: {
description_text: yellow
selected_text: green_reverse
text: green
}
type: {
col_padding: 2
col_width: 20
columns: 4
layout: columnar
}
}
{
marker: "? "
name: history_menu
only_buffer_difference: true
style: {
description_text: yellow
selected_text: green_reverse
text: green
}
type: {
layout: list
page_size: 10
}
}
{
marker: "? "
name: help_menu
only_buffer_difference: true
style: {
description_text: yellow
selected_text: green_reverse
text: green
}
type: {
col_padding: 2
col_width: 20
columns: 4
description_rows: 10
layout: description
selection_rows: 4
}
}
]
$env.config.keybindings = [
{
name: completion_menu
modifier: none
keycode: tab
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: menu name: completion_menu }
{ send: menunext }
{ edit: complete }
]
}
}
{
name: history_menu
modifier: control
keycode: char_h
mode: [ vi_insert vi_normal ]
event: { send: menu name: history_menu }
}
{
name: escape
modifier: none
keycode: escape
mode: [ vi_normal vi_insert ]
event: { send: esc }
}
{
name: cancel_command
modifier: control
keycode: char_c
mode: [ vi_normal vi_insert ]
event: { send: ctrlc }
}
{
name: quit_shell
modifier: control
keycode: char_d
mode: [ vi_normal vi_insert ]
event: { send: ctrld }
}
{
name: clear_screen
modifier: control
keycode: char_l
mode: [ vi_normal vi_insert ]
event: { send: clearscreen }
}
{
name: open_command_editor
modifier: control
keycode: char_o
mode: [ vi_normal vi_insert ]
event: { send: openeditor }
}
{
name: move_up
modifier: none
keycode: up
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: menuup }
{ send: up }
]
}
}
{
name: move_down
modifier: none
keycode: down
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: menudown }
{ send: down }
]
}
}
{
name: move_left
modifier: none
keycode: left
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: menuleft }
{ send: left }
]
}
}
{
name: move_right_or_take_history_hint
modifier: none
keycode: right
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: historyhintcomplete }
{ send: menuright }
{ send: right }
]
}
}
{
name: move_one_word_left
modifier: control
keycode: left
mode: [ vi_normal vi_insert ]
event: { edit: movewordleft }
}
{
name: move_one_word_right_or_take_history_hint
modifier: control
keycode: right
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: historyhintwordcomplete }
{ edit: movewordright }
]
}
}
{
name: move_to_line_start
modifier: control
keycode: char_a
mode: [ vi_normal vi_insert ]
event: { edit: movetolinestart }
}
{
name: move_to_line_end_or_take_history_hint
modifier: control
keycode: char_e
mode: [ vi_normal vi_insert ]
event: {
until: [
{ send: historyhintcomplete }
{ edit: movetolineend }
]
}
}
{
name: delete_one_character_backward
modifier: none
keycode: backspace
mode: vi_insert
event: { edit: backspace }
}
{
name: delete_one_word_backward
modifier: control
keycode: backspace
mode: vi_insert
event: { edit: backspaceword }
}
{
name: newline_or_run_command
modifier: none
keycode: enter
mode: vi_insert
event: { send: enter }
}
]
''

View file

@ -0,0 +1,37 @@
{ config, ulib, pkgs, upkgs, theme, ... }: with ulib; merge3
(systemConfiguration {
users.defaultUserShell = pkgs.nushell;
})
(homeConfiguration {
programs.starship = enabled {};
programs.nushell = enabled {
configFile.text = import ./configuration.nix.nu;
envFile.text = import ./environment.nix.nu {
inherit (upkgs) nuScripts;
inherit theme;
};
environmentVariables = {
inherit (config.environment.variables) NIX_LD;
};
shellAliases = {
cdtmp = "cd (mktemp --directory)";
la = "ls --all";
ll = "ls --long";
lla = "ls --long --all";
sl = "ls";
pstree = "pstree -g 2";
tree = "tree -C";
};
};
})
(homePackages (with pkgs; [
carapace
]))

View file

@ -0,0 +1,29 @@
{ nuScripts, theme }: ''
$env.PROMPT_INDICATOR = "";
$env.PROMPT_INDICATOR_VI_INSERT = "";
$env.PROMPT_INDICATOR_VI_NORMAL = "";
$env.PROMPT_MULTILINE_INDICATOR = "";
$env.ENV_CONVERSIONS.PATH = {
from_string: {|string|
$string | split row (char esep) | path expand --no-symlink
}
to_string: {|value|
$value | path expand --no-symlink | str join (char esep)
}
}
def --wrapped hx [...arguments] {
if ($env.TERM | str contains "kitty") {
kitty @ set-spacing padding=0
}
^hx $arguments
if ($env.TERM | str contains "kitty") {
kitty @ set-spacing padding=${toString theme.padding}
}
}
use ${nuScripts}/modules/background_task/task.nu
''

View file

@ -0,0 +1,5 @@
{ ulib, pkgs, ... }: with ulib;
graphicalPackages (with pkgs; [
openttd
])

View file

@ -0,0 +1,11 @@
{ ulib, ... }: with ulib;
systemConfiguration {
security.rtkit = enabled {};
sound = enabled {};
services.pipewire = enabled {
alsa = enabled { support32Bit = true; };
pulse = enabled {};
};
}

39
modules/pueue/default.nix Normal file
View file

@ -0,0 +1,39 @@
{ ulib, ... }: with ulib;
homeConfiguration {
services.pueue = enabled {
settings = {
shared = {
pueue_directory = "~/.local/share/pueue";
use_unix_socket = true;
runtime_directory = null;
unix_socket_path = "~/.local/share/pueue/pueue_your_user.socket";
host = "localhost";
port = 6924;
daemon_cert = "~/.local/share/pueue/certs/daemon.cert";
daemon_key = "~/.local/share/pueue/certs/daemon.key";
shared_secret_path = "~/.local/share/pueue/shared_secret";
};
client = {
restart_in_place = false;
read_local_logs = true;
show_confirmation_questions = false;
show_expanded_aliases = false;
dark_mode = false;
max_status_height = null;
status_time_format = "%H:%M:%S";
status_datetime_format = "%Y-%m-%d\n%H:%M:%S";
};
daemon = {
default_parallel_tasks = 10;
pause_group_on_failure = false;
pause_all_on_failure = false;
callback = "\"Task {{ id }}\nCommand: {{ command }}\nPath: {{ path }}\nFinished with status '{{ result }}'\"";
callback_log_lines = 10;
groups.default = 1;
};
};
};
}

View file

@ -0,0 +1,16 @@
{ ulib, pkgs, ... }: with ulib; merge
(systemPackages (with pkgs; [
(python311.withPackages (pkgs: with pkgs; [
pip
requests
]))
virtualenv
poetry
]))
(homeConfiguration {
programs.nushell.shellAliases = {
venv = "virtualenv venv";
};
})

9
modules/qt/default.nix Normal file
View file

@ -0,0 +1,9 @@
{ ulib, pkgs, ... }: with ulib;
graphicalConfiguration {
qt = enabled {
platformTheme = "gnome";
style.name = "adwaita-dark";
style.package = pkgs.adwaita-qt;
};
}

15
modules/rust/default.nix Normal file
View file

@ -0,0 +1,15 @@
{ inputs, ulib, pkgs, ... }: with ulib; merge
(systemConfiguration {
nixpkgs.overlays = [ inputs.fenix.overlays.default ];
})
(systemPackages (with pkgs; [
(fenix.complete.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
])
]))

12
modules/steam/default.nix Normal file
View file

@ -0,0 +1,12 @@
{ ulib, pkgs, ... }: with ulib; merge
(systemConfiguration {
# Steam uses 32-bit drivers for some unholy fucking reason.
hardware.opengl.driSupport32Bit = true;
nixpkgs.config.allowUnfree = true;
})
(graphicalPackages (with pkgs; [
steam
]))

View file

@ -0,0 +1,9 @@
{ ulib, pkgs, ... }: with ulib; merge
(systemPackages (with pkgs; [
steck
]))
(homeConfiguration {
programs.nushell.shellAliases.share = "steck paste";
})

165
modules/waybar/default.nix Normal file
View file

@ -0,0 +1,165 @@
{ ulib, theme, ... }: with ulib;
graphicalConfiguration {
programs.waybar = with theme.withHashtag; enabled {
systemd = enabled {};
settings = [{
layer = "top";
height = 2 * corner-radius;
margin-right = margin;
margin-left = margin;
margin-top = margin;
modules-left = [
"hyprland/workspaces"
];
"hyprland/workspaces" = {
format = "{icon}";
format-icons.default = "";
format-icons.active = "";
persistent-workspaces."*" = 5;
};
modules-center = [
"hyprland/window"
];
"hyprland/window" = {
seperate-outputs = true;
rewrite."(.*) - Discord" = "󰙯$1";
rewrite."(.*) Mozilla Firefox" = "󰖟$1";
rewrite."(.*) nu" = "$1";
};
modules-right = [
"tray"
"pulseaudio"
"backlight"
"cpu"
"memory"
"network"
"battery"
"clock"
];
tray = {
reverse-direction = true;
spacing = 5;
};
pulseaudio = {
format = "{format_source} {icon}{volume}%";
format-bluetooth = "{format_source} {icon}󰂯{volume}%";
format-bluetooth-muted = "{format_source} 󰸈{icon}󰂯";
format-muted = "{format_source} 󰸈";
format-source = "󰍬";
format-source-muted = "󰍭";
format-icons.headphone = "󰋋";
format-icons.headset = "󰋋";
format-icons.default = [
"󰕿"
"󰖀"
"󰕾"
];
};
backlight = {
format = "{icon}{percent}%";
format-icons = [
""
""
""
""
""
""
""
""
""
];
};
cpu.format = "{usage}%";
memory.format = "󰽘{}%";
network = {
format-disconnected = "󰤮";
format-ethernet = "󰈀{ipaddr}/{cidr}";
format-linked = "{ifname} (No IP)";
format-wifi = "{signalStrength}%";
};
battery = {
format = "{icon}{capacity}%";
format-charging = "󰂄{capacity}%";
format-plugged = "󰂄{capacity}%";
format-icons = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
states.warning = 30;
states.critical = 15;
};
clock = {
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
};
}];
style = ''
* {
border: none;
border-radius: ${toString corner-radius}px;
font-family: "${font.sans.name}";
}
.modules-right {
margin-right: ${toString padding}px;
}
#waybar {
background: ${base00};
color: ${base05};
}
#workspaces button:nth-child(1) {
color: ${base08};
}
#workspaces button:nth-child(2) {
color: ${base09};
}
#workspaces button:nth-child(3) {
color: ${base0A};
}
#workspaces button:nth-child(4) {
color: ${base0B};
}
#workspaces button:nth-child(5) {
color: ${base0C};
}
#tray, #pulseaudio, #backlight, #cpu, #memory, #network, #battery, #clock {
margin-left: 20px;
}
'';
};
}