current state of things

This commit is contained in:
atagen 2025-06-18 01:06:36 +10:00
parent 63fbd6d499
commit b8d157ab6f
85 changed files with 895 additions and 6014 deletions

View file

@ -1,384 +0,0 @@
[ActivityManager][Global Shortcuts]
switch-to-activity-1becc5fb-3def-4b2a-82c9-bd886f792a7c=
[KDE Keyboard Layout Switcher][Global Shortcuts]
Switch to Next Keyboard Layout=Ctrl+Alt+K
[StandardShortcuts]
AboutApp=
AboutKDE=
Activate Next Tab=Ctrl+PgDown; Ctrl+]
Activate Previous Tab=Ctrl+PgUp; Ctrl+[
ActualSize=Ctrl+0
AddBookmark=Ctrl+B
Back=Alt+Left; Back
BackwardWord=Ctrl+Left
Begin=Ctrl+Home
BeginningOfLine=Home
Clear=
Close=Ctrl+W; Ctrl+Esc
ConfigureNotifications=
ConfigureToolbars=
Copy=Ctrl+C; Ctrl+Ins
CreateFolder=F10
Cut=Shift+Del; Ctrl+X
DeleteFile=Shift+Del
DeleteWordBack=Ctrl+Backspace
DeleteWordForward=Ctrl+Del
Deselect=Ctrl+Shift+A
DocumentBack=Alt+Shift+Left
DocumentForward=Alt+Shift+Right
Donate=
EditBookmarks=
End=Ctrl+End
EndOfLine=End
Find=Ctrl+F
FindNext=F3
FindPrev=Shift+F3
FitToHeight=
FitToPage=
FitToWidth=
Forward=Alt+Right; Forward
ForwardWord=Ctrl+Right
FullScreen=Ctrl+Shift+F
Goto=
GotoLine=Ctrl+G
GotoPage=
Help=F1
Home=Alt+Home; Home Page
KeyBindings=Ctrl+Alt+,
Mail=
MoveToTrash=Del
New=Ctrl+N
Next=PgDown
NextCompletion=Ctrl+Down
Open=Ctrl+O
OpenRecent=
Paste=Shift+Ins; Ctrl+V
Paste Selection=Ctrl+Shift+Ins
Preferences=Ctrl+Shift+,
PrevCompletion=Ctrl+Up
Print=Ctrl+P
PrintPreview=
Prior=PgUp
Quit=Ctrl+Q
Redo=Ctrl+Shift+Z
Reload=Refresh; F5
RenameFile=F2
Replace=Ctrl+R
ReportBug=
Revert=
RotateDown=Down
RotateUp=Up
Save=Ctrl+S
SaveAs=Ctrl+Shift+S
SaveOptions=
SelectAll=Ctrl+A
ShowHideHiddenFiles=Alt+.; Ctrl+H
ShowMenubar=Ctrl+M
ShowStatusbar=
ShowToolbar=
Spelling=
SubstringCompletion=Ctrl+T
SwitchApplicationLanguage=
TextCompletion=Ctrl+E
TipofDay=
Undo=Ctrl+Z
Up=Alt+Up
WhatsThis=Shift+F1
Zoom=
ZoomIn=Ctrl++; Ctrl+=
ZoomOut=Ctrl+-
[bismuth][Global Shortcuts]
decrease_master_size=
decrease_master_win_count=Meta+[
decrease_window_height=Meta+Ctrl+K; Meta+Ctrl+Up
decrease_window_width=Meta+Ctrl+Right; Meta+Ctrl+H
focus_bottom_window=
focus_left_window=
focus_next_window=
focus_prev_window=
focus_right_window=
focus_upper_window=
increase_master_size=
increase_master_win_count=Meta+]
increase_window_height=Meta+Ctrl+Down; Meta+Ctrl+J
increase_window_width=Meta+Ctrl+Left; Meta+Ctrl+L
move_window_to_bottom_pos=Meta+Shift+Down; Meta+Shift+J
move_window_to_left_pos=Meta+Shift+H
move_window_to_next_pos=
move_window_to_prev_pos=
move_window_to_right_pos=Meta+Shift+L
move_window_to_upper_pos=Meta+Shift+K; Meta+Shift+Up
next_layout=Meta+\\
prev_layout=
push_window_to_master=
rotate=
rotate_part=
rotate_reverse=
toggle_float_layout=
toggle_monocle_layout=
toggle_quarter_layout=
toggle_spiral_layout=
toggle_spread_layout=
toggle_stair_layout=
toggle_three_column_layout=
toggle_tile_layout=
toggle_window_floating=Meta+Space
[kaccess][Global Shortcuts]
Toggle Screen Reader On and Off=Meta+Alt+S
[kcm_touchpad][Global Shortcuts]
Disable Touchpad=Touchpad Off
Enable Touchpad=Touchpad On
Toggle Touchpad=Touchpad Toggle
[kded5][Global Shortcuts]
Show System Activity=Ctrl+Esc
display=Display; Meta+P
[khotkeys][Global Shortcuts]
{162b7cd1-2ed9-40a7-9e77-8cdac1ced63b}=Meta+Return
{2b174cac-ee33-41d3-979c-c2151b4485c3}=Meta+F
{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=
[kmix][Global Shortcuts]
decrease_microphone_volume=Microphone Volume Down
decrease_volume=Volume Down
increase_microphone_volume=Microphone Volume Up
increase_volume=Volume Up
mic_mute=Microphone Mute; Meta+Volume Mute
mute=Volume Mute
[ksmserver][Global Shortcuts]
Halt Without Confirmation=
Lock Session=Screensaver; Ctrl+Alt+L
Log Out=Ctrl+Alt+Del
Log Out Without Confirmation=
Reboot Without Confirmation=
[kwin][Global Shortcuts]
Activate Window Demanding Attention=Ctrl+Alt+A
Decrease Opacity=
Expose=Ctrl+F9
ExposeAll=Ctrl+F10; Launch (C)
ExposeClass=Ctrl+F7
Increase Opacity=
Invert Screen Colors=
Kill Window=Ctrl+Alt+Esc
MoveMouseToCenter=Meta+F6
MoveMouseToFocus=Meta+F5
MoveZoomDown=
MoveZoomLeft=
MoveZoomRight=
MoveZoomUp=
Setup Window Shortcut=
Show Desktop=
ShowDesktopGrid=Ctrl+F8
Suspend Compositing=Alt+Shift+F12
Switch One Desktop Down=
Switch One Desktop Up=
Switch One Desktop to the Left=
Switch One Desktop to the Right=
Switch Window Down=Meta+J; Meta+Down
Switch Window Left=Meta+Left; Meta+H
Switch Window Right=Meta+Right; Meta+L
Switch Window Up=Meta+Up; Meta+K
Switch to Desktop 1=Meta+1
Switch to Desktop 10=
Switch to Desktop 11=
Switch to Desktop 12=
Switch to Desktop 13=
Switch to Desktop 14=
Switch to Desktop 15=
Switch to Desktop 16=
Switch to Desktop 17=
Switch to Desktop 18=
Switch to Desktop 19=
Switch to Desktop 2=Meta+2
Switch to Desktop 20=
Switch to Desktop 3=Meta+3
Switch to Desktop 4=Meta+4
Switch to Desktop 5=
Switch to Desktop 6=
Switch to Desktop 7=
Switch to Desktop 8=
Switch to Desktop 9=
Switch to Next Desktop=
Switch to Next Screen=
Switch to Previous Desktop=
Switch to Previous Screen=
Switch to Screen 0=
Switch to Screen 1=
Switch to Screen 2=
Switch to Screen 3=
Switch to Screen 4=
Switch to Screen 5=
Switch to Screen 6=
Switch to Screen 7=
Toggle Night Color=
Toggle Window Raise/Lower=
Walk Through Desktop List=
Walk Through Desktop List (Reverse)=
Walk Through Desktops=
Walk Through Desktops (Reverse)=
Walk Through Windows=Alt+Tab
Walk Through Windows (Reverse)=Alt+Shift+Backtab
Walk Through Windows Alternative=
Walk Through Windows Alternative (Reverse)=
Walk Through Windows of Current Application=Alt+`
Walk Through Windows of Current Application (Reverse)=Alt+~
Walk Through Windows of Current Application Alternative=
Walk Through Windows of Current Application Alternative (Reverse)=
Window Above Other Windows=
Window Below Other Windows=
Window Close=Alt+F4; Meta+Shift+Q
Window Fullscreen=Meta+Shift+Space
Window Grow Horizontal=
Window Grow Vertical=
Window Lower=
Window Maximize=Meta+PgUp
Window Maximize Horizontal=
Window Maximize Vertical=
Window Minimize=Meta+PgDown
Window Move=
Window Move Center=
Window No Border=
Window On All Desktops=
Window One Desktop Down=Meta+Ctrl+Shift+Down
Window One Desktop Up=Meta+Ctrl+Shift+Up
Window One Desktop to the Left=Meta+Ctrl+Shift+Left
Window One Desktop to the Right=Meta+Ctrl+Shift+Right
Window Operations Menu=Alt+F3
Window Pack Down=
Window Pack Left=
Window Pack Right=
Window Pack Up=
Window Quick Tile Bottom=
Window Quick Tile Bottom Left=
Window Quick Tile Bottom Right=
Window Quick Tile Left=
Window Quick Tile Right=
Window Quick Tile Top=
Window Quick Tile Top Left=
Window Quick Tile Top Right=
Window Raise=
Window Resize=
Window Shade=
Window Shrink Horizontal=
Window Shrink Vertical=
Window to Desktop 1=Meta+!
Window to Desktop 10=
Window to Desktop 11=
Window to Desktop 12=
Window to Desktop 13=
Window to Desktop 14=
Window to Desktop 15=
Window to Desktop 16=
Window to Desktop 17=
Window to Desktop 18=
Window to Desktop 19=
Window to Desktop 2=Meta+@
Window to Desktop 20=
Window to Desktop 3=Meta+#
Window to Desktop 4=Meta+$
Window to Desktop 5=
Window to Desktop 6=
Window to Desktop 7=
Window to Desktop 8=
Window to Desktop 9=
Window to Next Desktop=
Window to Next Screen=Meta+Tab
Window to Previous Desktop=
Window to Previous Screen=
Window to Screen 0=
Window to Screen 1=
Window to Screen 2=
Window to Screen 3=
Window to Screen 4=
Window to Screen 5=
Window to Screen 6=
Window to Screen 7=
view_actual_size=Meta+0
view_zoom_in=Meta+=
view_zoom_out=Meta+-
[mediacontrol][Global Shortcuts]
mediavolumedown=
mediavolumeup=
nextmedia=Media Next
pausemedia=Media Pause
playmedia=
playpausemedia=Media Play
previousmedia=Media Previous
stopmedia=Media Stop
[org.kde.dolphin.desktop][Global Shortcuts]
_launch=Meta+E
[org.kde.krunner.desktop][Global Shortcuts]
RunClipboard=Alt+Shift+F2
_launch=Alt+Space; Search; Meta+D; Alt+F2
[org.kde.plasma.emojier.desktop][Global Shortcuts]
_launch=Meta+.
[org.kde.spectacle.desktop][Global Shortcuts]
ActiveWindowScreenShot=Meta+Print
CurrentMonitorScreenShot=
FullScreenScreenShot=Shift+Print
OpenWithoutScreenshot=
RectangularRegionScreenShot=Meta+Shift+S; Meta+Shift+Print
WindowUnderCursorScreenShot=Meta+Ctrl+Print
_launch=Print
[org_kde_powerdevil][Global Shortcuts]
Decrease Keyboard Brightness=Keyboard Brightness Down
Decrease Screen Brightness=Monitor Brightness Down
Hibernate=Hibernate
Increase Keyboard Brightness=Keyboard Brightness Up
Increase Screen Brightness=Monitor Brightness Up
PowerDown=Power Down
PowerOff=Power Off
Sleep=Sleep
Toggle Keyboard Backlight=Keyboard Light On/Off
Turn Off Screen=
[plasmashell][Global Shortcuts]
activate task manager entry 1=
activate task manager entry 10=
activate task manager entry 2=
activate task manager entry 3=
activate task manager entry 4=
activate task manager entry 5=Meta+5
activate task manager entry 6=Meta+6
activate task manager entry 7=Meta+7
activate task manager entry 8=Meta+8
activate task manager entry 9=Meta+9
activate widget 4=Alt+F1
clear-history=
clipboard_action=Ctrl+Alt+X
cycleNextAction=
cyclePrevAction=
edit_clipboard=
manage activities=Meta+Q
next activity=
previous activity=Meta+Shift+Tab
repeat_action=Ctrl+Alt+R
show dashboard=Ctrl+F12
show-barcode=
show-on-mouse-pos=Meta+V
stop current activity=Meta+S
switch to next activity=
switch to previous activity=
toggle do not disturb=
[systemsettings.desktop][Global Shortcuts]
_launch=Tools
kcm-kscreen=
kcm-lookandfeel=
kcm-users=
powerdevilprofilesconfig=
screenlocker=

View file

@ -1,26 +0,0 @@
background #232326
foreground #f7eff1
color0 #434447
color8 #95988a
color1 #ac383d
color9 #d45f68
color2 #709c4c
color10 #8baf6f
color3 #c09875
color11 #eda25c
color4 #5b97de
color12 #b8e3ff
color5 #494286
color13 #9477fa
color6 #42c3b2
color14 #7fc8a5
color7 #e7e4d8
color15 #fefefc
selection_background #ac838d
selection_foreground #f7eff1
cursor #e7e4d8
cursor_text_color #709c4c

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,58 +0,0 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
cpyparsing,
ipykernel,
mypy,
pexpect,
pygments,
pytestCheckHook,
prompt-toolkit,
tkinter,
watchdog,
pkgs,
}:
let
pygments = pkgs.python310Packages.callPackage ./pygments.nix { };
in
buildPythonPackage rec {
pname = "coconut";
version = "3.0.2";
src = fetchFromGitHub {
owner = "evhub";
repo = "coconut";
rev = "v${version}";
sha256 = lib.fakeSha256;
};
propagatedBuildInputs = [
cpyparsing
ipykernel
mypy
pygments
prompt-toolkit
watchdog
];
checkInputs = [
pexpect
pytestCheckHook
tkinter
];
# Currently most tests have performance issues
pytestFlagsArray = [
"coconut/tests/constants_test.py"
];
pythonImportsCheck = [ "coconut" ];
meta = with lib; {
homepage = "http://coconut-lang.org/";
description = "Simple, elegant, Pythonic functional programming";
license = licenses.asl20;
maintainers = with maintainers; [ fabianhjr ];
};
}

View file

@ -1,37 +0,0 @@
{
lib,
fetchFromGitea,
rustPlatform,
libX11,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "culr";
version = "0.1.0";
src = fetchFromGitea {
domain = "git.atagen.co";
owner = "atagen";
repo = pname + "-rs";
rev = "8cb1323bdc388ce1fdb0675ade756ea8b59b803d";
sha256 = "sha256-Blo1PyhzKU4LzflmeGrvWOQEon2BCTkF3uQR+7D5/kc=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libX11 ];
# cargoSha256 = "sha256-Vnhni8tckrexlJ85gfSDEAVWhH6oVHn9/z2O2OIVR5o=";
cargoLock = {
lockFile = "${src}/Cargo.lock";
outputHashes = {
"xrdb-0.1.2" = "sha256-7B8MsELW927yQEwQJ3DvTB+45Djw21VStBdehaMomRM=";
};
};
meta = with lib; {
description = "colourise piped input";
homepage = "https://git.atagen.co/atagen/culr";
license = licenses.mit;
maintainers = [ ];
};
}

View file

@ -1,21 +0,0 @@
{ pkgs, ... }:
{
# hyprland-system76-scheduler-integration = pkgs.callPackage ./hyprland-system76-scheduler-integration.nix {};
culr = pkgs.callPackage ./culr.nix { };
# eww-git = pkgs.callPackage ./eww.nix {};
# everforest-theme = pkgs.callPackage ./everforst-theme.nix {};
# coconut = pkgs.python310Packages.callPackage ./coconut.nix {};
# kanagawa-icons = pkgs.callPackage ./kanagawa-icons.nix {};
# gruvbox-kvantum = pkgs.callPackage ./gruvbox-kvantum.nix {};
# gruvbox-gtk-theme = pkgs.callPackage ./gruvbox-gtk-theme.nix {};
# system76-scheduler = pkgs.callPackage ./system76-scheduler.nix {};
# swayosd = pkgs.callPackage ./swayosd.nix {};
# fuzzel = pkgs.callPackage ./fuzzel.nix {};
# git-credential-keepassxc = pkgs.callPackage git-credential-keepassxc.nix {};
# lemurs = pkgs.callPackage lemurs.nix {};
# glpaper = pkgs.callPackage glpaper.nix {};
# ly = pkgs.callPackage ly.nix {};
# headscale-ui = pkgs.callPackage headscale-ui.nix {};
# kwin-system76-scheduler-integration = pkgs.callPackage kwin-system76-scheduler-integration.nix {};
# simplewaita-gtk = pkgs.callPackage simplewaita-gtk.nix {};
}

View file

@ -1,35 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
gnome-themes-extra,
gtk-engine-murrine,
gtk_engines,
}:
stdenv.mkDerivation rec {
pname = "everforest-gtk-theme";
version = "unstable-2023-03-20";
src = fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Everforest-GTK-Theme";
rev = "8481714cf9ed5148694f1916ceba8fe21e14937b";
sha256 = "sha256-NO12ku8wnW/qMHKxi5TL/dqBxH0+cZbe+fU0iicb9JU=";
};
buildInputs = [
gnome-themes-extra # adwaita engine for Gtk2
gtk_engines # pixmap engine for Gtk2
];
propagatedUserEnvPkgs = [
gtk-engine-murrine # murrine engine for Gtk2
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
cp -a themes/Everforest-Dark-B $out/share/themes/Everforest-Dark
runHook postInstall
'';
}

View file

@ -1,57 +0,0 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
gtk3,
gdk-pixbuf,
withWayland ? true,
gtk-layer-shell,
stdenv,
}:
rustPlatform.buildRustPackage rec {
pname = "eww";
version = "0.4.0-dirty";
src = fetchFromGitHub {
owner = "elkowar";
repo = pname;
rev = "25e50eda46379bccd8a7887c18ee35833e0460e8";
sha256 = "sha256-8e6gHSg6FDp6nU5v89D44Tqb1lR5aQpS0lXOVqzoUS4=";
};
cargoSha256 = "sha256-25CoBVIofOCBy8ChMesIKaGoluwpy8tYo+zaFLSaiEo=";
# cargoPatches = [ ./Cargo.lock.patch ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [
gtk3
gdk-pixbuf
] ++ lib.optional withWayland gtk-layer-shell;
buildNoDefaultFeatures = withWayland;
buildFeatures = lib.optional withWayland "wayland";
cargoBuildFlags = [
"--bin"
"eww"
];
cargoTestFlags = cargoBuildFlags;
# requires unstable rust features
RUSTC_BOOTSTRAP = 1;
meta = with lib; {
description = "ElKowars wacky widgets";
homepage = "https://github.com/elkowar/eww";
license = licenses.mit;
maintainers = with maintainers; [
figsoda
lom
];
broken = stdenv.isDarwin;
};
}

View file

@ -1,25 +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,44 +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,35 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
gnome-themes-extra,
gtk-engine-murrine,
gtk_engines,
}:
stdenv.mkDerivation rec {
pname = "gruvbox-gtk-theme";
version = "unstable-2023-05-20";
src = fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Gruvbox-GTK-Theme";
rev = "5927e8693a70619b45fbe3317c59f04f6e101943";
sha256 = "sha256-zvByW7wqVl4A5bKlVsJOSmyqkJiaHvciwSit3K/FqRM=";
};
buildInputs = [
gnome-themes-extra # adwaita engine for Gtk2
gtk_engines # pixmap engine for Gtk2
];
propagatedUserEnvPkgs = [
gtk-engine-murrine # murrine engine for Gtk2
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
cp -a themes/Grubvox-Dark-B $out/share/themes/Gruvbox-Dark
runHook postInstall
'';
}

View file

@ -1,23 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
}:
stdenv.mkDerivation rec {
pname = "gruvbox-kvantum";
version = "unstable-2023-02-06";
src = fetchFromGitHub {
owner = "thefallnn";
repo = "Gruvbox-Kvantum";
rev = "b04c6b67a4228c2b980821a0f0531bfe122c4aac";
sha256 = "sha256-hFqqd39lGEnikM8+4MXwnNmZvQzhKOjFThrqx3q2lbo=";
};
installPhase = ''
runHook preInstall
cp -a gruvbox-kvantum/ $out/
sed -i 's/translucent_windows=true/translucent_windows=false/' $out/gruvbox-kvantum.kvconfig
runHook postInstall
'';
}

View file

@ -1,26 +0,0 @@
{
lib,
stdenv,
fetchurl,
unzip,
}:
stdenv.mkDerivation rec {
pname = "headscale-ui";
version = "2022.12.23.2-beta";
src = fetchurl {
url = "https://github.com/gurucomputing/headscale-ui/releases/download/${version}/headscale-ui.zip";
sha256 = "sha256-QF10la68Rl2t0K53CH63Qiq54ynkySQACdELorZF/cY=";
};
nativeBuildInputs = [ unzip ];
unpackCmd = "unzip headscale-ui.zip";
dontConfigure = true;
dontBuild = true;
installPhase = ''
mkdir $out/
cp -R . $out
'';
}

View file

@ -1,13 +0,0 @@
#!/usr/bin/env bash
socat - UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock |
while read line
do
if [[ "$line" == activewindow* ]]; then
pid="$(hyprctl activewindow | rg pid | cut -d' ' -f2)"
if [[ -n $pid ]]; then
dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:$pid
fi
pid=""
fi
done

View file

@ -1,52 +0,0 @@
{
lib,
pkgs,
stdenv,
hyprland,
ripgrep,
socat,
dbus,
...
}:
stdenv.mkDerivation rec {
pname = "hyprland-system76-scheduler-integration";
version = "0.1.0";
nativeBuildInputs = [
socat
dbus
hyprland
ripgrep
];
dontUnpack = "true";
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cat <<EOF > $out/bin/hyprland-system76-scheduler-hook.sh
#!${pkgs.bash}/bin/bash
echo "opening socket.."
${pkgs.socat}/bin/socat -u UNIX-CLIENT:/tmp/hypr/\''$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock STDOUT |
while read line; do
if [[ "\''$line" == activewindow* ]]; then
echo "got \''$line."
pid="\''$(${pkgs.hyprland}/bin/hyprctl activewindow | ${pkgs.ripgrep}/bin/rg pid | ${pkgs.coreutils}/bin/cut -d' ' -f2)"
if [[ -n \''$pid ]]; then
echo "sending \''$pid!"
${pkgs.dbus}/bin/dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:\''$pid
fi
pid=""
fi
echo "continuing.."
done
echo "finished."
EOF
chmod +x $out/bin/hyprland-system76-scheduler-hook.sh
runHook postInstall
'';
}

View file

@ -1,35 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
gnome-themes-extra,
gtk-engine-murrine,
gtk_engines,
}:
stdenv.mkDerivation rec {
pname = "kanagawa-icons";
version = "unstable-2023-05-20";
src = fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Kanagawa-GKT-Theme";
rev = "7b8ece4382533491e82f9b3d5552607f67a79999";
sha256 = "sha256-Jtu04SKXk0wFRvx2Duz0YxHEWJ2sM8ZIT+dtdJqKykY=";
};
buildInputs = [
gnome-themes-extra # adwaita engine for Gtk2
gtk_engines # pixmap engine for Gtk2
];
propagatedUserEnvPkgs = [
gtk-engine-murrine # murrine engine for Gtk2
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/icons
cp -a icons/Kanagawa $out/share/icons/Kanagawa
runHook postInstall
'';
}

View file

@ -1,35 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
gnome-themes-extra,
gtk-engine-murrine,
gtk_engines,
}:
stdenv.mkDerivation rec {
pname = "kanagawa-gtk-theme";
version = "unstable-2023-05-20";
src = fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Kanagawa-GKT-Theme";
rev = "7b8ece4382533491e82f9b3d5552607f67a79999";
sha256 = "sha256-Jtu04SKXk0wFRvx2Duz0YxHEWJ2sM8ZIT+dtdJqKykY=";
};
buildInputs = [
gnome-themes-extra # adwaita engine for Gtk2
gtk_engines # pixmap engine for Gtk2
];
propagatedUserEnvPkgs = [
gtk-engine-murrine # murrine engine for Gtk2
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
cp -a themes/Kanagawa-B $out/share/themes/Kanagawa
runHook postInstall
'';
}

View file

@ -1,63 +0,0 @@
{
lib,
pkgs,
stdenv,
fetchFromGitHub,
dbus,
qt5,
qtbase,
wrapQtAppsHook,
kpackage,
kcoreaddons,
...
}:
stdenv.mkDerivation rec {
pname = "kwin-system76-scheduler-integration";
version = "0.1";
src = fetchFromGitHub {
owner = "maxiberta";
repo = pname;
rev = version;
sha256 = "sha256-HX0nK1p97kqt+ZZuECm7Mg9aAXaFDnsJDkbcLUEU+p0=";
};
nativeBuildInputs = [
wrapQtAppsHook
kpackage
];
buildInputs = [
dbus
qt5.qttools.bin
];
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
kpackagetool5 --type=KWin/Script -i . -p $out/share/kwin/scripts
cat <<EOF > $out/bin/kwin-system76-scheduler-dbus-proxy.sh
#!${pkgs.bash}/bin/bash
DBUS_SERVICE="com.system76.Scheduler"
DBUS_PATH="/com/system76/Scheduler"
DBUS_INTERFACE="com.system76.Scheduler"
DBUS_METHOD="SetForegroundProcess"
echo "starting dbus proxy.."
echo \''$DBUS_SERVICE \''$DBUS_PATH \''$DBUS_INTERFACE \''$DBUS_METHOD
${pkgs.dbus}/bin/dbus-monitor --session "destination=\''$DBUS_SERVICE,path=\''$DBUS_PATH,interface=\''$DBUS_INTERFACE,member=\''$DBUS_METHOD" |
while true; do
read method call time sender _ dest serial path interface member
read type pid
[ "\''$member" = "member=\''$DBUS_METHOD" ] && ${pkgs.libsForQt5.qt5.qttools.bin}/bin/qdbus --system \''$DBUS_SERVICE \''$DBUS_PATH \''$DBUS_INTERFACE.\''$DBUS_METHOD \''$pid && echo "new foreground process: \''$pid"
done
EOF
chmod +x $out/bin/kwin-system76-scheduler-dbus-proxy.sh
runHook postInstall
'';
}

View file

@ -1,30 +0,0 @@
{
lib,
fetchFromGitHub,
rustPlatform,
linux-pam,
pkg-config,
}:
rustPlatform.buildRustPackage rec {
pname = "lemurs";
version = "0.3.1";
src = fetchFromGitHub {
owner = "coastalwhite";
repo = pname;
rev = "60fda2a";
sha256 = "sha256-mQXavJULD5iyOnzj72xTV0EQ1HQvj25SHsbDgfRg4lQ=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ linux-pam ];
cargoSha256 = "sha256-OCaIeQB8reK0089vbC+4IvQt5pKdZ2SCyyGuQEYWzjo=";
meta = with lib; {
description = "A customizable TUI display/login manager written in Rust";
homepage = "https://git.atagen.co/coastalwhite/lemurs";
license = licenses.mit;
maintainers = [ ];
};
}

View file

@ -1,50 +0,0 @@
{
stdenv,
lib,
fetchFromGitHub,
linux-pam,
libxcb,
git,
}:
stdenv.mkDerivation rec {
pname = "ly";
version = "0.5.0+";
src = fetchFromGitHub {
owner = "fairyglade";
repo = pname;
rev = "c64f806a68af225cc95623971b5e464abb55b879";
sha256 = "sha256-orCqjKlK6U1q7NDoMwxZZE44cyG8yuxdCCk1cQAalP0=";
fetchSubmodules = true;
};
nativeBuildInputs = [ git ];
buildInputs = [
linux-pam
libxcb
];
makeFlags = [ "FLAGS=-Wno-error=unused-result" ];
preBuildPhase = ''
mkdir -p ./data
export DESTDIR="$PWD"
export DATADIR="$PWD/data"
'';
buildPhase = ''
make -j16
'';
installPhase = ''
mkdir -p $out/bin
cp bin/ly $out/bin
mkdir -p $out/etc/ly
cp -R ./data/* $out/etc/ly
'';
meta = with lib; {
description = "TUI display manager";
license = licenses.wtfpl;
homepage = "https://github.com/fairyglade/ly";
maintainers = [ ];
};
}

View file

@ -1,56 +0,0 @@
{
lib,
buildPythonPackage,
fetchPypi,
docutils,
lxml,
pytestCheckHook,
wcag-contrast-ratio,
}:
let
pygments = buildPythonPackage rec {
pname = "pygments";
version = "2.15.1";
src = fetchPypi {
pname = "Pygments";
inherit version;
sha256 = "sha256-is5NPB3UgYlLIAX1YOrQ+fGe5k/pgzZr4aIeFx0Sd1w=";
};
format = "egg";
propagatedBuildInputs = [
docutils
];
# circular dependencies if enabled by default
doCheck = false;
checkInputs = [
lxml
pytestCheckHook
wcag-contrast-ratio
];
disabledTestPaths = [
# 5 lines diff, including one nix store path in 20000+ lines
"tests/examplefiles/bash/ltmain.sh"
];
pythonImportsCheck = [ "pygments" ];
passthru.tests = {
check = pygments.overridePythonAttrs (_: {
doCheck = true;
});
};
meta = with lib; {
homepage = "https://pygments.org/";
description = "A generic syntax highlighter";
license = licenses.bsd2;
maintainers = with maintainers; [ SuperSandro2000 ];
};
};
in
pygments

View file

@ -1,35 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
gnome-themes-extra,
gtk-engine-murrine,
gtk_engines,
}:
stdenv.mkDerivation rec {
pname = "rose-pine-icons";
version = "unstable-2023-05-20";
src = fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Rose-Pine-GTK-Theme";
rev = "95aa1f2b2cc30495b1fc5b614dc555b3eef0e27d";
sha256 = "sha256-I9UnEhXdJ+HSMFE6R+PRNN3PT6ZAAzqdtdQNQWt7o4Y=";
};
buildInputs = [
gnome-themes-extra # adwaita engine for Gtk2
gtk_engines # pixmap engine for Gtk2
];
propagatedUserEnvPkgs = [
gtk-engine-murrine # murrine engine for Gtk2
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/icons
cp -a icons/Rose-Pine $out/share/icons/Rose-Pine
runHook postInstall
'';
}

View file

@ -1,35 +0,0 @@
{
stdenv,
fetchFromGitHub,
lib,
gnome-themes-extra,
gtk-engine-murrine,
gtk_engines,
}:
stdenv.mkDerivation rec {
pname = "rose-pine-gtk-theme";
version = "unstable-2023-05-20";
src = fetchFromGitHub {
owner = "Fausto-Korpsvart";
repo = "Rose-Pine-GTK-Theme";
rev = "95aa1f2b2cc30495b1fc5b614dc555b3eef0e27d";
sha256 = "sha256-I9UnEhXdJ+HSMFE6R+PRNN3PT6ZAAzqdtdQNQWt7o4Y=";
};
buildInputs = [
gnome-themes-extra # adwaita engine for Gtk2
gtk_engines # pixmap engine for Gtk2
];
propagatedUserEnvPkgs = [
gtk-engine-murrine # murrine engine for Gtk2
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/themes
cp -a themes/RosePine-Main-B $out/share/themes/RosePine-Main
runHook postInstall
'';
}

View file

@ -1,33 +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,47 +0,0 @@
diff --git a/sway/main.c b/sway/main.c
index 85bc2f1c..a2f76590 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -50,41 +50,7 @@ void sig_handler(int signal) {
}
void detect_proprietary(int allow_unsupported_gpu) {
- FILE *f = fopen("/proc/modules", "r");
- if (!f) {
- return;
- }
- char *line = NULL;
- size_t line_size = 0;
- while (getline(&line, &line_size, f) != -1) {
- if (strncmp(line, "nvidia ", 7) == 0) {
- if (allow_unsupported_gpu) {
- sway_log(SWAY_ERROR,
- "!!! Proprietary Nvidia drivers are in use !!!");
- } else {
- sway_log(SWAY_ERROR,
- "Proprietary Nvidia drivers are NOT supported. "
- "Use Nouveau. To launch sway anyway, launch with "
- "--unsupported-gpu and DO NOT report issues.");
- exit(EXIT_FAILURE);
- }
- break;
- }
- if (strstr(line, "fglrx")) {
- if (allow_unsupported_gpu) {
- sway_log(SWAY_ERROR,
- "!!! Proprietary AMD drivers are in use !!!");
- } else {
- sway_log(SWAY_ERROR, "Proprietary AMD drivers do NOT support "
- "Wayland. Use radeon. To try anyway, launch sway with "
- "--unsupported-gpu and DO NOT report issues.");
- exit(EXIT_FAILURE);
- }
- break;
- }
- }
- free(line);
- fclose(f);
+ return;
}
void run_as_ipc_client(char *command, char *socket_path) {

View file

@ -1,278 +0,0 @@
[ActionPlugins][1]
RightButton;NoModifier=org.kde.latte.contextmenu
[Containments][1]
activityId=
byPassWM=false
dockWindowBehavior=true
enableKWinEdges=true
formfactor=2
immutability=1
isPreferredForShortcuts=false
lastScreen=-1
layoutId=
location=4
name=Default Dock
onPrimary=true
plugin=org.kde.latte.containment
raiseOnActivityChange=false
raiseOnDesktopChange=false
timerHide=700
timerShow=200
viewType=0
visibility=2
wallpaperplugin=org.kde.image
[Containments][1][Applets][2]
immutability=1
plugin=org.kde.latte.plasmoid
[Containments][1][Applets][2][Configuration]
PreloadWeight=0
[Containments][1][Applets][2][Configuration][General]
isInLatteDock=true
launchers59=applications:firefox.desktop,applications:org.kde.dolphin.desktop
[Containments][1][Applets][3]
immutability=1
plugin=org.kde.plasma.analogclock
[Containments][1][Applets][3][Configuration]
PreloadWeight=0
[Containments][1][ConfigDialog]
DialogHeight=600
DialogWidth=586
[Containments][1][Configuration]
PreloadWeight=0
[Containments][1][General]
advanced=false
alignmentUpgraded=true
appletOrder=2;3
configurationSticker=true
panelSize=10
shadowOpacity=60
shadowSize=45
shadows=All
shadowsUpgraded=true
showGlow=false
tasksUpgraded=true
titleTooltips=false
zoomLevel=17
[Containments][1][Indicator]
customType=
enabled=true
type=org.kde.latte.default
[Containments][17]
PreloadWeight=0
activityId=
formfactor=2
immutability=1
lastScreen=11
layoutId=
location=3
plugin=org.kde.plasma.private.systemtray
wallpaperplugin=org.kde.image
[Containments][17][Applets][122]
immutability=1
plugin=org.kde.plasma.manage-inputmethod
[Containments][17][Applets][123]
immutability=1
plugin=org.kde.plasma.keyboardlayout
[Containments][17][Applets][88]
immutability=1
plugin=org.kde.plasma.notifications
[Containments][17][Applets][89]
immutability=1
plugin=org.kde.plasma.battery
[Containments][17][Applets][90]
immutability=1
plugin=org.kde.plasma.printmanager
[Containments][17][Applets][91]
immutability=1
plugin=org.kde.plasma.volume
[Containments][17][Applets][92]
immutability=1
plugin=org.kde.plasma.nightcolorcontrol
[Containments][17][Applets][93]
immutability=1
plugin=org.kde.plasma.keyboardindicator
[Containments][17][Applets][94]
immutability=1
plugin=org.kde.plasma.networkmanagement
[Containments][17][Applets][95]
immutability=1
plugin=org.kde.plasma.clipboard
[Containments][17][Applets][96]
immutability=1
plugin=org.kde.plasma.bluetooth
[Containments][17][Applets][97]
immutability=1
plugin=org.kde.plasma.devicenotifier
[Containments][17][Applets][98]
immutability=1
plugin=org.kde.kdeconnect
[Containments][17][ConfigDialog]
DialogHeight=1025
DialogWidth=963
[Containments][17][Configuration]
PreloadWeight=26
[Containments][17][General]
extraItems=org.kde.plasma.manage-inputmethod,org.kde.plasma.notifications,org.kde.plasma.devicenotifier,org.kde.plasma.clipboard,org.kde.plasma.mediacontroller,org.kde.plasma.battery,org.kde.kdeconnect,org.kde.plasma.keyboardlayout,org.kde.plasma.keyboardindicator,org.kde.plasma.volume,org.kde.plasma.networkmanagement,org.kde.plasma.printmanager,org.kde.plasma.nightcolorcontrol
knownItems=org.kde.plasma.manage-inputmethod,org.kde.plasma.notifications,org.kde.plasma.devicenotifier,org.kde.plasma.clipboard,org.kde.plasma.mediacontroller,org.kde.plasma.battery,org.kde.kdeconnect,org.kde.plasma.keyboardlayout,org.kde.plasma.keyboardindicator,org.kde.plasma.volume,org.kde.plasma.networkmanagement,org.kde.plasma.printmanager,org.kde.plasma.nightcolorcontrol
[Containments][19]
activityId=
byPassWM=false
dockWindowBehavior=true
enableKWinEdges=true
formfactor=2
immutability=1
isPreferredForShortcuts=false
lastScreen=11
layoutId=
location=3
maxLength=100
name=Default Panel
onPrimary=true
plugin=org.kde.latte.containment
raiseOnActivityChange=false
raiseOnDesktopChange=false
settingsComplexity=4
timerHide=700
timerShow=200
viewType=0
visibility=0
wallpaperplugin=org.kde.image
[Containments][19][Applets][112]
immutability=1
plugin=org.kde.plasma.kickoff
[Containments][19][Applets][112][Configuration][General]
favoritesPortedToKAstats=true
[Containments][19][Applets][113]
immutability=1
plugin=org.kde.plasma.digitalclock
[Containments][19][Applets][114]
immutability=1
plugin=org.kde.plasma.systemtray
[Containments][19][Applets][114][Configuration]
PreloadWeight=100
SystrayContainmentId=17
[Containments][19][Applets][115]
immutability=1
plugin=org.kde.plasma.pager
[Containments][19][Applets][116]
immutability=1
plugin=org.kde.plasma.marginsseparator
[Containments][19][Applets][124]
immutability=1
plugin=org.kde.windowtitle
[Containments][19][Applets][124][Configuration][General]
containmentType=Latte
[Containments][19][Applets][125]
immutability=1
plugin=org.kde.plasma.lock_logout
[Containments][19][Applets][126]
immutability=1
plugin=org.kde.plasma.marginsseparator
[Containments][19][ConfigDialog]
DialogHeight=1254
DialogWidth=529
[Containments][19][Configuration]
PreloadWeight=0
[Containments][19][General]
advanced=true
alignment=10
alignmentUpgraded=true
appletOrder=112;124;115;116;114;113;126;125
appletShadowsEnabled=false
autoDecreaseIconSize=false
backgroundRadius=0
backgroundShadowSize=0
blurEnabled=false
configurationSticker=true
dragActiveWindowEnabled=true
floatingInternalGapIsForced=false
iconSize=24
inConfigureAppletsMode=true
lockedZoomApplets=112;113
mouseWheelActions=false
panelPosition=10
panelShadows=false
panelSize=100
plasmaBackgroundForPopups=true
screenEdgeMargin=0
shadowOpacity=25
shadows=None
shadowsUpgraded=true
splitterPosition=2
splitterPosition2=4
taskScrollAction=ScrollNone
tasksUpgraded=true
thickMargin=11
titleTooltips=false
zoomLevel=0
[Containments][19][Indicator]
customType=org.kde.latte.unity
enabled=true
enabledForApplets=true
padding=0.09000000357627869
type=org.kde.latte.default
[Containments][19][Indicator][org.kde.latte.default][General]
lengthPadding=0.3
reversed=true
[Containments][19][Indicator][org.kde.latte.plasma][General]
lengthPadding=0.19
[LayoutSettings]
activities=
backgroundStyle=0
color=blue
customBackground=
customTextColor=
icon=
lastUsedActivity=
launchers=
popUpMargin=-1
preferredForShortcutsTouched=false
schemeFile=
showInMenu=true
version=2

View file

@ -1,63 +0,0 @@
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 515.48.07
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "LG Electronics W2343"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "NVIDIA GeForce GTX 1070"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "DVI-D-0: nvidia-auto-select +1050+265, HDMI-0: nvidia-auto-select +0+0 {rotation=left}"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection

1729
.p10k.zsh

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,13 @@ let
inherit (nixpkgs) lib;
kitty-themes-src = { };
};
rice = import ./rice.nix { inherit system nixpkgs nix-rice; };
rice = import ./rice {
inherit
inputs
system
nix-rice
;
};
in
{
systems =
@ -20,12 +26,12 @@ in
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs rice nix-rice;
inherit inputs rice;
mainUser = info.user;
};
modules =
[
../system/${name}.nix
./system/${name}.nix
home-manager.nixosModules.home-manager
{
home-manager = {
@ -35,7 +41,7 @@ in
mainUser = info.user;
};
users.${info.user}.imports = [
../home/${info.user}.nix
./home/${info.user}.nix
] ++ info.hmImports or [ ];
};
}

700
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,39 @@
{
description = "nixos config";
outputs =
inputs:
with inputs;
let
modules = import ./util/get-modules.nix {
inherit inputs;
};
create = import ./create.nix {
inherit inputs;
system = "x86_64-linux";
sharedModules =
(modules [
culr
meat
niri
# smooooth
])
++ [
nix-index-database.nixosModules.nix-index
./system/substituters.nix
];
};
in
{
nixosConfigurations = create.systems {
quiver = {
user = "bolt";
imports = (modules [ nyx ]);
};
adrift.user = "plank";
};
};
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.11";
@ -18,10 +51,6 @@
nil.url = "github:oxalica/nil";
madness.url = "github:antithesishq/madness";
nh.url = "github:viperML/nh";
lix = {
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
flake = false;
@ -37,7 +66,6 @@
url = "git+https://git.atagen.co/atagen/meat";
inputs.lix.follows = "lix";
inputs.lix-module.follows = "lix-module";
inputs.nh.follows = "nh";
inputs.nixpkgs.follows = "nixpkgs";
};
@ -56,46 +84,23 @@
inputs.nixpkgs.follows = "nixpkgs";
};
niri = {
url = "github:sodiboo/niri-flake";
};
ironbar.url = "github:JakeStanger/ironbar";
nix-vscode.url = "github:nix-community/nix-vscode-extensions";
niri.url = "github:sodiboo/niri-flake";
hjem = {
url = "github:feel-co/hjem";
inputs.nixpkgs.follows = "nixpkgs";
};
cachyos.url = "github:drakon64/nixos-cachyos-kernel";
hudcore.url = "git+https://git.atagen.co/atagen/hudcore-plymouth.git";
quickshell = {
url = "git+https://git.outfoxxed.me/quickshell/quickshell.git";
inputs.nixpkgs.follows = "nixpkgs";
};
nyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
# smooooth.url = "path:/home/bolt/code/smooooth";
};
outputs =
inputs:
with inputs;
let
create = import ./util/create.nix {
inherit inputs;
system = "x86_64-linux";
sharedModules = [
culr.nixosModules.culr
meat.nixosModules.meat
madness.nixosModules.madness
niri.nixosModules.niri
nix-index-database.nixosModules.nix-index
./system/cachix.nix
];
};
in
{
nixosConfigurations = create.systems {
quiver = {
user = "bolt";
imports = [ cachyos.nixosModules.default ];
};
adrift.user = "plank";
};
};
}

41
flakes/niri-session-manager/flake.lock generated Normal file
View file

@ -0,0 +1,41 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1749285348,
"narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=",
"path": "/nix/store/syvnmj3hhckkbncm94kfkbl76qsdqqj3-source",
"rev": "3e3afe5174c561dee0df6f2c2b2236990146329f",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs",
"src": "src"
}
},
"src": {
"flake": false,
"locked": {
"lastModified": 1741050520,
"narHash": "sha256-bTOxv5yZh6wgCs7ADUFKdlXGtlIckkSijGV8G7ToVy4=",
"owner": "MTeaHead",
"repo": "niri-session-manager",
"rev": "e8732380991bd629a7e6c3fb5ea50317084fb1eb",
"type": "github"
},
"original": {
"owner": "MTeaHead",
"repo": "niri-session-manager",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -0,0 +1,66 @@
{
inputs = {
src = {
url = "github:MTeaHead/niri-session-manager";
flake = false;
};
};
outputs =
{
nixpkgs,
src,
self,
}:
{
packages.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.rustPlatform.callPackage (
{ pkgs, buildRustPackage }:
buildRustPackage (finalAttrs: {
pname = "niri-session-manager";
version = "git-${src.rev or src.dirtyRev or "dirty"}";
inherit src;
cargoLock = {
lockFile = "${src}/Cargo.lock";
};
meta.mainProgram = "niri-session-manager";
})
) { };
nixosModules.niri-session-manager =
{
config,
lib,
pkgs,
...
}:
{
options = {
services.niri-session-manager = {
enable = lib.mkEnableOption "Niri Session Manager";
};
};
config =
let
cfg = config.services.niri-session-manager;
in
lib.mkIf cfg.enable {
systemd.user.services.niri-session-manager = {
enable = true;
description = "Niri Session Manager";
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ];
after = [ "graphical-session.target" ];
serviceConfig = {
Type = "simple";
Restart = "always";
ExecStart = "${self.packages.${pkgs.system}.default}";
PrivateTmp = true;
};
};
};
};
};
}

View file

@ -0,0 +1 @@
/nix/store/731lnc1qjhq5gcrvmqycbm41r2ga3dqa-niri-session-manager-git-e8732380991bd629a7e6c3fb5ea50317084fb1eb

View file

@ -1,36 +1,15 @@
{
inputs,
pkgs,
config,
mainUser,
...
}:
{
inherit mainUser;
imports = [
./home.nix
# ./util/local-webapp.nix
# ./util/containers.nix
# ./programs/stable-diffusion.nix
inputs.comfyui.homeManagerModules.comfyui
];
home.packages = with pkgs; [
nicotine-plus
];
programs.comfyui = {
enable = false;
storage = "/home/${config.mainUser}/.local/share/comfyui/";
plugins =
let
inherit (pkgs.comfyui-plugins) gguf openpose;
in
[
gguf
# essentials
openpose
];
home.packages = builtins.attrValues {
inherit (pkgs) nicotine-plus;
};
}

View file

@ -17,7 +17,6 @@
./util/ez.nix
./util/name.nix
inputs.nix-index-database.hmModules.nix-index
inputs.ironbar.homeManagerModules.default
];
nix.gc = {
@ -52,8 +51,14 @@
home.packages =
let
inherit (rice) icons fonts cursor;
inherit (pkgs) tauon;
in
fonts.pkgs ++ icons.pkgs ++ [ cursor.package ];
fonts.pkgs
++ icons.pkgs
++ [
cursor.package
tauon
];
systemd.user.targets.tray = {
Unit = {
@ -90,7 +95,7 @@
# programs.nix-index.enable = true;
systemd.user.startServices = "sd-switch";
# ezServices = {
# ckb-next = "${getExe pkgs.ckb-next} -c -b";
# };
ezServices = {
ckb-next = "${lib.getExe pkgs.ckb-next} -c -b";
};
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

View file

@ -5,16 +5,18 @@
# ../programs/zsh.nix
# ../programs/xresources.nix
../programs/helix.nix
../programs/atuin.nix
];
home.packages = with pkgs; [
btop
bat
ripgrep
fd
lazygit
zoxide
zellij
ouch
# ../programs/atuin.nix
];
home.packages = builtins.attrValues {
inherit (pkgs)
btop
bat
ripgrep
fd
lazygit
zoxide
zellij
ouch
;
};
}

View file

@ -1,151 +0,0 @@
{
lib,
...
}:
let
inherit (lib) range mapAttrsToList;
inherit (builtins) toString;
workspaceRange = range 1 6;
makeWorkspaceBinding =
modifiers: action:
map (i: {
inherit modifiers;
key = toString i;
action = {
type = action;
data = i;
};
}) workspaceRange;
focusWsBindings = makeWorkspaceBinding [ "Super" ] "Workspace";
moveWsBindings = makeWorkspaceBinding [ "Super" "Shift" ] "SendToWorkspace";
hjkl = {
"h" = "Left";
"j" = "Down";
"k" = "Up";
"l" = "Right";
# "i" = "In";
# "u" = "Out";
};
makeDirBinding =
modifiers: action:
mapAttrsToList (key: dir: {
inherit key modifiers;
action = {
type = action;
data = dir;
};
}) hjkl;
focusBindings = makeDirBinding [ "Super" ] "Focus";
moveBindings = makeDirBinding [ "Super" "Shift" ] "Move";
winManagementBindings = focusWsBindings ++ moveWsBindings ++ focusBindings ++ moveBindings;
binding = key: modifiers: action: {
inherit key modifiers action;
};
spawnBinding = key: modifiers: app: {
inherit key modifiers;
action = {
type = "Spawn";
data = app;
};
};
systemBinding = key: modifiers: action: {
inherit key modifiers;
action = {
type = "System";
data = action;
};
};
in
{
imports = [
../util/cosmic.nix
];
config.cosmic = {
enable = true;
defaultKeybindings = false;
keybindings = winManagementBindings ++ [
# System bindings appear broken?
(binding "q" [ "Super" "Shift" ] "Close")
(binding "w" [ "Super" ] "ToggleStacking")
(binding "s" [ "Super" ] "ToggleOrientation")
(binding "space" [ "Super" ] "ToggleWindowFloating")
(binding "space" [ "Super" "Shift" ] "Maximize")
(binding "minus" [ "Super" ] "Minimize")
(binding "r" [ "Super" ] {
type = "Resizing";
data = "Outwards";
})
(binding "r" [ "Super" "Shift" ] {
type = "Resizing";
data = "Inwards";
})
(binding "tab" [ "Super" ] "NextOutput")
(binding "tab" [ "Super" "Shift" ] "MoveToNextOutput")
(binding "grave" [ "Super" ] "PreviousOutput")
(binding "grave" [ "Super" "Shift" ] "MoveToPreviousOutput")
(spawnBinding "equal" [ "Super" ] "keepassxc")
(systemBinding "f" [ "Super" ] "WebBrowser")
# my mime handling is fucked
# (systemBinding "e" ["Super"] "HomeFolder")
# (systemBinding "return" ["Super"] "Terminal")
(spawnBinding "return" [ "Super" ] "kitty")
# (systemBinding "s" ["Super" "Shift"] "Screenshot")
(systemBinding null [ "Super" ] "Launcher")
(systemBinding "d" [ "Super" ] "AppLibrary")
(systemBinding "XF86AudioRaiseVolume" [ ] "VolumeRaise")
(systemBinding "XF86AudioLowerVolume" [ ] "VolumeLower")
(systemBinding "XF86AudioMute" [ ] "Mute")
(spawnBinding "XF86AudioNext" [ ] "playerctl next")
(spawnBinding "XF86AudioPrev" [ ] "playerctl previous")
(spawnBinding "XF86AudioPlay" [ ] "playerctl play-pause")
(spawnBinding "XF86AudioStop" [ ] "playerctl stop")
(systemBinding "XF86MonBrightnessUp" [ ] "BrightnessUp")
(systemBinding "XF86MonBrightnessDown" [ ] "BrightnessDown")
(spawnBinding "e" [ "Super" "Shift" ] "wlogout")
# old, pre-System bindings
# (binding "q" ["Super" "Shift"] "Close")
# (binding "w" ["Super"] "ToggleStacking")
# (binding "s" ["Super"] "ToggleOrientation")
# (binding "space" ["Super"] "ToggleWindowFloating")
# (binding "space" ["Super" "Shift"] "Maximize")
# (binding "minus" ["Super"] "Minimize")
# (binding "r" ["Super"] {
# type = "Resizing";
# data = "Outwards";
# })
# (binding "r" ["Super" "Shift"] {
# type = "Resizing";
# data = "Inwards";
# })
# (binding "tab" ["Super"] "NextOutput")
# (binding "tab" ["Super" "Shift"] "MoveToNextOutput")
# (binding "grave" ["Super"] "PreviousOutput")
# (binding "grave" ["Super" "Shift"] "MoveToPreviousOutput")
# (spawnBinding "f" ["Super"] "firefox")
(spawnBinding "e" [ "Super" ] "nautilus")
# (spawnBinding "equal" ["Super"] "keepassxc")
# (spawnBinding "return" ["Super"] "kitty")
(spawnBinding "s" [ "Super" "Shift" ] "cosmic-screenshot")
# (spawnBinding null ["Super"] "cosmic-launcher")
# (spawnBinding "d" ["Super"] "cosmic-app-library")
# (spawnBinding "XF86AudioRaiseVolume" [] "amixer sset Master 5%+")
# (spawnBinding "XF86AudioLowerVolume" [] "amixer sset Master 5%-")
# (spawnBinding "XF86AudioMute" [] "amixer sset Master toggle")
# (spawnBinding "XF86AudioNext" [] "playerctl next")
# (spawnBinding "XF86AudioPrev" [] "playerctl previous")
# (spawnBinding "XF86AudioPlay" [] "playerctl play-pause")
# (spawnBinding "XF86AudioStop" [] "playerctl stop")
# (
# spawnBinding "XF86MonBrightnessUp" []
# "busctl --user call com.system76.CosmicSettingsDaemon /com/system76/CosmicSettingsDaemon com.system76.CosmicSettingsDaemon IncreaseDisplayBrightness"
# )
# (
# spawnBinding "XF86MonBrightnessDown" []
# "busctl --user call com.system76.CosmicSettingsDaemon /com/system76/CosmicSettingsDaemon com.system76.CosmicSettingsDaemon DecreaseDisplayBrightness"
# )
# (spawnBinding "e" ["Super" "Shift"] "wlogout")
];
};
}

View file

@ -1,7 +1,6 @@
{ pkgs, ... }:
{
imports = [
./cosmic.nix
./media-players.nix
./webapps.nix
./documents.nix
@ -10,10 +9,12 @@
../programs/firefox.nix
../programs/wlogout.nix
];
home.packages = with pkgs; [
file-roller
nautilus
thunderbird
keepassxc
];
home.packages = builtins.attrValues {
inherit (pkgs)
file-roller
nautilus
thunderbird
keepassxc
;
};
}

View file

@ -3,9 +3,9 @@ let
get = builtins.attrValues;
in
{
imports = [
../programs/vscode.nix
];
# imports = [
# ../programs/vscode.nix
# ];
home.packages = get {
inherit (pkgs)
@ -66,7 +66,7 @@ in
programs.git = {
enable = true;
userName = "atagen";
userEmail = "atagen@boss.co";
userEmail = "boss@atagen.co";
extraConfig = {
credential.helper = "keepassxc";
};

View file

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

View file

@ -1,102 +0,0 @@
{
pkgs,
lib,
inputs,
...
}:
let
inherit (pkgs) rice;
palette = pkgs.lib.nix-rice.palette.toRGBShortHex rice.palette;
in
{
programs.hyprlock = {
# enable = true;
};
services.hypridle = {
# enable = true;
};
services.hyprpaper = {
# enable = true;
};
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.x86_64-linux.hyprland;
systemd = {
enable = true;
variables = [ "--all" ];
};
settings = {
"$mainMod" = "SUPER";
general =
let
inherit (rice.borders) thickness;
inherit (palette) normal;
in
{
inherit (rice.borders) gaps_in gaps_out;
border_size = thickness;
layout = "dwindle";
"col.inactive_border" = "rgb(${normal.black})";
"col.active_border" = "rgb(${normal.yellow})";
"col.nogroup_border" = "rgb(${normal.black})";
"col.nogroup_border_active" = "rgb(${normal.yellow})";
snap.enabled = true;
};
cursor = {
no_hardware_cursors = true;
};
decoration = {
inherit (rice.borders) rounding;
blur.enabled = false;
shadow.enabled = false;
};
# input.numlock_by_default = true;
# groups = let
# inherit (palette) normal;
# in {
# "col.border_active" = "rgb(${normal.red})";
# "col.border_inactive" = "rgb(${normal.black})";
# "col.border_locked_active" = "rgb(${normal.red})";
# "col.border_locked_inactive" = "rgb(${normal.black})";
# };
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
vrr = 0;
mouse_move_enables_dpms = true;
key_press_enables_dpms = true;
layers_hog_keyboard_focus = true;
background_color = "rgb(${palette.normal.black})";
};
dwindle = {
pseudotile = true;
force_split = 2;
preserve_split = true;
};
monitor = [
"DP-1, 2560x1440@165, 1080x0, 1"
"HDMI-A-2, 1920x1080@60, auto-left, 1"
"Unknown-1, disable"
];
bind =
let
makeDirBind =
bind: extraMods:
lib.mapAttrsToList (key: dir: "$mainMod${extraMods}, ${key}, ${bind}, ${dir}") {
h = "l";
j = "d";
k = "u";
l = "r";
};
in
[
"$mainMod, Return, exec, ${lib.getExe pkgs.kitty}"
]
++ makeDirBind "movefocus" ""
++ makeDirBind "movewindow" "+SHIFT";
};
};
}

View file

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

View file

@ -4,23 +4,22 @@
config,
nix-rice,
rice,
inputs,
...
}:
let
services =
let
inherit (pkgs) swaynotificationcenter sway-audio-idle-inhibit;
inherit (pkgs) swaynotificationcenter;
in
[
swaynotificationcenter
sway-audio-idle-inhibit
];
errata =
let
inherit (pkgs) sirula avizo playerctl;
inherit (pkgs) avizo playerctl;
in
[
sirula
avizo
playerctl
];
@ -30,9 +29,10 @@ let
swayidle
swaybg
systemd
niri-unstable
avizo
;
inherit (inputs.niri.packages.x86_64-linux) niri-unstable;
in
[
{
@ -104,7 +104,13 @@ in
);
in
{
"Mod+D".action.spawn = "sirula";
"Mod+D".action.spawn = [
"qs"
"ipc"
"call"
"launch"
"toggle"
];
"Mod+F".action.spawn = "firefox";
"Mod+E".action.spawn = "nautilus";
"Mod+Return".action.spawn = "kitty";
@ -185,7 +191,7 @@ in
];
focus-ring =
let
pal = nix-rice.palette.toRgbHex rice.palette;
pal = rice.palette.hex;
in
{
active = {
@ -198,75 +204,64 @@ in
};
prefer-no-csd = true;
hotkey-overlay.skip-at-startup = true;
};
programs.ironbar = {
enable = true;
systemd = true;
config = {
monitors."DP-1" = {
position = "top";
height = 16;
start = [
window-rules =
let
v = 10.0;
in
[
{
type = "music";
player_type = "mpris";
geometry-corner-radius = {
bottom-left = v;
bottom-right = 0.0;
top-left = 0.0;
top-right = v;
};
clip-to-geometry = true;
}
];
center = [
{
type = "focused";
icon_size = 16;
truncate = "middle";
}
];
end = [
{ type = "clock"; }
{ type = "tray"; }
];
};
};
};
systemd.user.services.ironbar = {
# 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"}";
};
};
xdg.configFile = {
"sirula/config.toml".text = ''
exclusive = false
icon_size = 24
lines = 2
anchor_left = false
anchor_right = true
anchor_bottom = false
anchor_top = false
width = 320
height = 720
command_prefix = ":"
frequent_first = true
recent_first = true
term_command = "kitty {}"
'';
"sirula/style.css".text =
let
pal = nix-rice.palette.toRgbHex rice.palette;
in
''
#root-box {
background-color: ${pal.normal.black};
color: ${pal.normal.yellow};
font-family: '${rice.fonts.sans.name}';
}
/* what's the name of the highlighted search text?
color: ${pal.normal.white};
*/
'';
};
}

View file

@ -1,64 +0,0 @@
{
lib,
config,
...
}:
let
port = 3021;
in
{
imports = [ ./ollama.nix ];
localWebApps = {
anything-llm = {
name = "Anything LLM";
genericName = "Chatbot";
icon = ../icons/anythingllm.png;
inherit port;
requires.containers = [
"anything-llm"
"ollama"
];
};
};
services.podman.containers.anything-llm =
let
str = builtins.toString;
username = config.mainUser;
in
{
image = "docker.io/mintplexlabs/anythingllm";
devices = [ "nvidia.com/gpu=all" ];
ports = [ "${str port}:3001" ];
autoStart = false;
autoUpdate = "registry";
network = [ "ollama" ];
volumes =
let
home = "/home/${username}";
share = "${home}/.local/share/anything-llm";
in
[
"${share}:/app/server/storage"
"${share}/.env:/app/server/.env"
"${share}/config:/home/anythingllm/.config/anythingllm-desktop"
"${share}/config:/home/${username}/.config/anythingllm-desktop"
];
environment = {
STORAGE_DIR = "/app/server/storage";
LLM_PROVIDER = "ollama";
OLLAMA_BASE_PATH = "http://ollama:11434";
EMBEDDING_ENGINE = "ollama";
EMBEDDING_BASE_PATH = "http://ollama:11434";
VECTOR_DB = "lancedb";
WHISPER_PROVIDER = "local";
TTS_PROVIDER = "native";
};
extraConfig.Unit.Requires = [ "podman-ollama.service" ];
extraPodmanArgs = [
"--health-cmd"
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/3001'")
];
};
}

View file

@ -1,14 +0,0 @@
_: {
programs.atuin = {
enable = true;
enableZshIntegration = true;
settings = {
inline_height = 20;
show_preview = true;
show_help = false;
enter_accept = false;
keymap_mode = "vim-normal";
style = "compact";
};
};
}

View file

@ -1,347 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
palette-hex = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.palette;
in
{
programs.helix = {
enable = true;
themes = with palette-hex; {
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"
# [editor]
# bufferline = "multiple"
# cursorline = true
# true-color = true
# [editor.cursor-shape]
# insert = "bar"
# normal = "block"
# select = "underline"
# [editor.lsp]
# display-messages = true
# [editor.statusline]
# left = ["mode", "spinner", "version-control", "file-name", "file-modification-indicator"]
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;
keys =
let
extend = {
"A-x" = "extend_to_line_bounds";
"X" = [
"extend_line_up"
"extend_to_line_bounds"
];
};
in
{
normal = extend;
select = extend;
};
};
};
languages = {
language = [
{
name = "rust";
language-servers = [
"rust-analyzer"
"lsp-ai"
];
auto-format = true;
}
{
name = "nix";
language-servers = [
"nixd"
"lsp-ai"
];
file-types = [ "nix" ];
# auto-format = true;
formatter = {
command = "alejandra";
};
}
{
name = "ocaml";
language-servers = [
"ocamllsp"
"lsp-ai"
];
file-types = [
"ml"
"mli"
];
auto-format = true;
formatter = {
command = "ocamlformat";
};
}
];
language-server = {
nixd = {
command = "nixd";
};
lsp-ai = {
command = "lsp-ai";
config = {
memory.fileStore = { };
models = {
llama32 = {
type = "ollama";
model = "llama3.2";
};
starcoder2 = {
type = "ollama";
model = "starcoder2:7b";
};
};
completion = {
model = "starcoder2";
parameters = {
maxContext = 1024;
options = {
numPredict = 32;
};
postProcess = {
removeDuplicateStart = true;
removeDuplicateEnd = true;
};
};
};
chat = {
trigger = "!C";
action_display_name = "Chat";
model = "llama32";
parameters = {
max_context = 4096;
max_tokens = 1024;
system = "You are a code assistant chatbot. The user will ask you for assistance coding and you will do your best to answer succinctly and accurately.";
};
};
};
};
rust-analyzer = {
config = {
cargo = {
buildScripts = {
enable = true;
};
};
procMacro = {
enable = true;
};
check = {
command = "clippy";
};
};
};
}; # language-server
}; # languages
}; # helix config
}

View file

@ -1,15 +1,17 @@
{
nix-rice,
inputs,
pkgs,
rice,
...
}:
let
palette-hex = nix-rice.palette.toRgbHex rice.palette;
pal = rice.palette.hex;
in
{
programs.helix = {
enable = true;
themes = with palette-hex; {
package = inputs.helix.packages.${pkgs.system}.helix;
themes = with pal; {
nix-rice = {
"attribute" = bright.cyan;
"keyword" = {
@ -208,15 +210,6 @@ in
"file-modification-indicator"
];
lsp.display-messages = true;
# keys = let
# extend = {
# "A-x" = "extend_to_line_bounds";
# "X" = ["extend_line_up" "extend_to_line_bounds"];
# };
# in {
# normal = extend;
# select = extend;
# };
};
};
@ -238,23 +231,20 @@ in
];
language-server = {
qmlls = {
command = "qmlls";
args = [ "-E" ];
};
nil = {
command = "nil";
};
rust-analyzer = {
config = {
cargo = {
buildScripts = {
enable = true;
};
};
procMacro = {
enable = true;
};
check = {
command = "clippy";
};
cargo.buildScripts.enable = true;
procMacro.enable = true;
check.command = "clippy";
};
};
}; # language-server

View file

@ -1,10 +1,9 @@
{
nix-rice,
rice,
...
}:
let
palette-hex = nix-rice.palette.toRgbHex rice.palette;
pal = rice.palette.hex;
in
{
programs.kitty = {
@ -12,7 +11,7 @@ in
font = {
inherit (rice.fonts.monospace) name size;
};
settings = with palette-hex; {
settings = with pal; {
foreground = util.fg;
background = util.bg;
inherit (util) cursor;
@ -37,6 +36,7 @@ in
color15 = bright.white;
sync_to_monitor = "yes";
shell = "fish";
cursor_trail = 100;
};
};
}

View file

@ -1,82 +0,0 @@
{
pkgs,
lib,
config,
...
}:
{
xdg.desktopEntries.ollama = {
name = "Ollama";
type = "Application";
icon = ../icons/ollama.png;
exec =
let
inherit (lib) getExe getExe';
notify-send = "${getExe' pkgs.libnotify "notify-send"} -a \"Ollama\"";
systemctl = "${getExe' pkgs.systemd "systemctl"}";
podman = "${getExe pkgs.podman}";
in
"${pkgs.writeShellScript "ollama" ''
set -euo pipefail
exit_error() {
${notify-send} -w "Failure" $1
exit 1
}
container_checks() {
if [ "$(${podman} inspect -f {{.State.Health.Status}} ollama)" == "healthy" ]; then
return 0
else
return 1
fi
}
${notify-send} "Launching Ollama.." "Please be patient."
${systemctl} --user start podman-ollama
checks=0
until container_checks; do
sleep 2
checks=$((checks+1))
if [ $((checks%10)) -eq 0 ]; then
${notify-send} "Launching.."
fi
if [ $checks -ge 60 ]; then
${systemctl} --no-block --user stop podman-ollama.target
exit_error "Failed to launch!"
fi
done
${notify-send} "Ollama serving on port 11434."
''}";
};
services.podman = {
containers.ollama =
let
username = config.mainUser;
in
{
image = "docker.io/ollama/ollama:latest";
devices = [ "nvidia.com/gpu=all" ];
autoStart = false;
autoUpdate = "registry";
network = [ "ollama" ];
ports = [ "11434:11434" ];
volumes = [
"/home/${username}/.local/share/ollama:/models"
];
environment.OLLAMA_MODELS = "/models";
extraPodmanArgs = [
"--health-cmd"
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/11434'")
];
};
networks.ollama = {
subnet = "192.168.10.0/24";
gateway = "192.168.10.1";
};
};
}

View file

@ -1,48 +0,0 @@
{
lib,
...
}:
let
port = 3021;
in
{
imports = [ ./ollama.nix ];
localWebApps = {
openwebui = {
name = "OpenWebUI";
genericName = "LLM";
icon = ../icons/openwebui.png;
inherit port;
requires.containers = [
"openwebui"
"ollama"
];
};
};
services.podman = {
containers.openwebui =
let
str = builtins.toString;
in
{
# serviceName = "openwebui";
image = "ghcr.io/open-webui/open-webui:main";
ports = [ "${str port}:${str port}" ];
environment = {
WEBUI_AUTH = "False";
PORT = "${str port}";
};
autoStart = false;
networks = [ "ollama" ];
unitConfig = {
Requires = [ "podman-ollama.service" ];
};
extraOptions = [
"--health-cmd"
(lib.escapeShellArg "bash -c 'cat < /dev/null > /dev/tcp/localhost/${str port}'")
];
};
};
}

View file

@ -1,17 +0,0 @@
{
lib,
config,
...
}:
{
localWebApps = {
stable-diffusion = {
name = "Stable Diffusion";
genericName = "Image Generator";
icon = ../icons/comfyui.png;
id = 5;
port = 7860;
requires = [ "stable-diffusion" ];
};
};
}

View file

@ -1,39 +0,0 @@
{ rice, inputs, ... }:
{
programs.vscode = {
enable = true;
mutableExtensionsDir = false;
profiles.default = {
extensions = with inputs.nix-vscode.extensions.x86_64-linux.vscode-marketplace; [
rust-lang.rust-analyzer
ocamllabs.ocaml-platform
jnoortheen.nix-ide
mkhl.direnv
barbosshack.crates-io
vadimcn.vscode-lldb
kend.dancehelixkey
hikionori.kanagawa-vscode-theme
dbaeumer.vscode-eslint
ms-vscode.extension-test-runner
];
userSettings = {
"window.titleBarStyle" = "custom";
"editor.fontFamily" = "${rice.fonts.monospace.name}";
"editor.fontSize" = 12;
"editor.formatOnSave" = true;
"workbench.colorTheme" = "KanagawaTheme";
"rust-analyzer.debug.engine" = "vadimcn.vscode-lldb";
"rust-analyzer.inlayHints.chainingHints.enable" = false;
"rust-analyzer.inlayHints.parameterHints.enable" = false;
"rust-analyzer.inlayHints.typeHints.enable" = false;
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
"nix.serverSettings" = {
nil.formatting.command = [
"nixfmt"
];
};
};
};
};
}

View file

@ -1,11 +1,10 @@
{
nix-rice,
rice,
pkgs,
...
}:
let
palette-hex = nix-rice.palette.toRgbHex rice.palette;
pal = rice.palette.hex;
in
{
programs.wlogout = {
@ -13,7 +12,7 @@ in
package = pkgs.wleave;
layout = builtins.fromJSON (builtins.readFile ../dots/wlogout/layout);
style =
with palette-hex;
with pal;
(builtins.replaceStrings
[
"/usr/share/wlogout"

View file

@ -1,43 +0,0 @@
{
pkgs,
lib,
config,
inputs,
...
}:
let
inherit (lib) getExe;
inherit (config.home) homeDirectory;
palette-hex = inputs.nix-rice.palette.toRgbHex pkgs.rice.palette;
in
{
ezOneShots = with pkgs; {
xrdb = "${getExe xorg.xrdb} -load ${homeDirectory}/.Xresources";
};
home.packages = with pkgs; [
xorg.xrdb
];
xresources.properties = with palette-hex; {
"*.foreground" = util.fg;
"*.background" = util.bg;
"*.cursorColor" = util.cursor;
"*.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;
};
}

View file

@ -1,69 +0,0 @@
{
lib,
pkgs,
...
}:
{
programs.zsh = {
enable = true;
autosuggestion.enable = true;
enableCompletion = true;
syntaxHighlighting.enable = true;
enableVteIntegration = true;
autocd = true;
defaultKeymap = "viins";
initExtra = builtins.readFile ../dots/zsh;
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-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";
}
];
};
}

View file

@ -1,382 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
containerOptions = _: {
options = {
pullPolicy = mkOption {
type = with types; str;
description = "Podman container pulling policy";
default = "newer";
};
image = mkOption {
type = with types; str;
description = "OCI image to run.";
example = "library/hello-world";
};
imageFile = mkOption {
type = with types; nullOr package;
default = null;
description = ''
Path to an image file to load before running the image. This can
be used to bypass pulling the image from the registry.
The `image` attribute must match the name and
tag of the image contained in this file, as they will be used to
run the container with that image. If they do not match, the
image will be pulled from the registry as usual.
'';
example = literalExpression "pkgs.dockerTools.buildImage {...};";
};
login = {
username = mkOption {
type = with types; nullOr str;
default = null;
description = "Username for login.";
};
passwordFile = mkOption {
type = with types; nullOr str;
default = null;
description = "Path to file containing password.";
example = "/etc/nixos/dockerhub-password.txt";
};
registry = mkOption {
type = with types; nullOr str;
default = null;
description = "Registry where to login to.";
example = "https://docker.pkg.github.com";
};
};
cmd = mkOption {
type = with types; listOf str;
default = [ ];
description = "Commandline arguments to pass to the image's entrypoint.";
example = literalExpression ''
["--port=9000"]
'';
};
labels = mkOption {
type = with types; attrsOf str;
default = { };
description = "Labels to attach to the container at runtime.";
example = literalExpression ''
{
"traefik.https.routers.example.rule" = "Host(`example.container`)";
}
'';
};
entrypoint = mkOption {
type = with types; nullOr str;
description = "Override the default entrypoint of the image.";
default = null;
example = "/bin/my-app";
};
environment = mkOption {
type = with types; attrsOf str;
default = { };
description = "Environment variables to set for this container.";
example = literalExpression ''
{
DATABASE_HOST = "db.example.com";
DATABASE_PORT = "3306";
}
'';
};
environmentFiles = mkOption {
type = with types; listOf path;
default = [ ];
description = "Environment files for this container.";
example = literalExpression ''
[
/path/to/.env
/path/to/.env.secret
]
'';
};
log-driver = mkOption {
type = types.str;
default = "journald";
description = ''
Logging driver for the container. The default of
`"journald"` means that the container's logs will be
handled as part of the systemd unit.
For more details and a full list of logging drivers, refer to podman documentation.
For Docker:
[Docker engine documentation](https://docs.docker.com/engine/reference/run/#logging-drivers---log-driver)
For Podman:
Refer to the docker-run(1) man page.
'';
};
ports = mkOption {
type = with types; listOf str;
default = [ ];
description = ''
Network ports to publish from the container to the outer host.
Valid formats:
- `<ip>:<hostPort>:<containerPort>`
- `<ip>::<containerPort>`
- `<hostPort>:<containerPort>`
- `<containerPort>`
Both `hostPort` and `containerPort` can be specified as a range of
ports. When specifying ranges for both, the number of container
ports in the range must match the number of host ports in the
range. Example: `1234-1236:1234-1236/tcp`
When specifying a range for `hostPort` only, the `containerPort`
must *not* be a range. In this case, the container port is published
somewhere within the specified `hostPort` range.
Example: `1234-1236:1234/tcp`
Refer to the
[Docker engine documentation](https://docs.docker.com/engine/reference/run/#expose-incoming-ports) for full details.
'';
example = literalExpression ''
[
"8080:9000"
]
'';
};
user = mkOption {
type = with types; nullOr str;
default = null;
description = ''
Override the username or UID (and optionally groupname or GID) used
in the container.
'';
example = "nobody:nogroup";
};
volumes = mkOption {
type = with types; listOf str;
default = [ ];
description = ''
List of volumes to attach to this container.
Note that this is a list of `"src:dst"` strings to
allow for `src` to refer to `/nix/store` paths, which
would be difficult with an attribute set. There are
also a variety of mount options available as a third
field; please refer to the
[docker engine documentation](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems) for details.
'';
example = literalExpression ''
[
"volume_name:/path/inside/container"
"/path/on/host:/path/inside/container"
]
'';
};
workdir = mkOption {
type = with types; nullOr str;
default = null;
description = "Override the default working directory for the container.";
example = "/var/lib/hello_world";
};
dependsOn = mkOption {
type = with types; listOf str;
default = [ ];
description = ''
Define which other containers this one depends on. They will be added to both After and Requires for the unit.
Use the same name as the attribute under `virtualisation.oci-containers.containers`.
'';
example = literalExpression ''
containers = {
node1 = {};
node2 = {
dependsOn = [ "node1" ];
}
}
'';
};
hostname = mkOption {
type = with types; nullOr str;
default = null;
description = "The hostname of the container.";
example = "hello-world";
};
preRunExtraOptions = mkOption {
type = with types; listOf str;
default = [ ];
description = "Extra options for podman that go before the `run` argument.";
example = [
"--runtime"
"runsc"
];
};
extraOptions = mkOption {
type = with types; listOf str;
default = [ ];
description = "Extra options for podman run`.";
example = literalExpression ''
["--network=host"]
'';
};
autoStart = mkOption {
type = types.bool;
default = false;
description = ''
When enabled, the container is automatically started on boot.
If this option is set to false, the container has to be started on-demand via its service.
'';
};
};
};
mkService =
name: container:
let
podman = lib.getExe pkgs.podman;
rm = lib.getExe' pkgs.coreutils "rm";
printf = lib.getExe' pkgs.coreutils "printf";
getId = ''"$(${lib.getExe' pkgs.coreutils "id"} -u)"'';
dependsOn = map (x: "podman-${x}.service") container.dependsOn;
escapedName = lib.escapeShellArg name;
preStartScript = pkgs.writeShellApplication {
name = "pre-start";
runtimeInputs = [ ];
text = ''
${printf} "Running pre-start script.."
${podman} rm -f ${name} || true
${lib.optionalString (container.imageFile != null) ''
${podman} load -i ${container.imageFile}
''}
${rm} -f /run/user/${getId}/podman-${escapedName}.ctr-id
${printf} " success.\nStarting Podman...\n"
'';
};
script = concatStringsSep " \\\n " (
[
"exec ${podman} "
]
++ map escapeShellArg container.preRunExtraOptions
++ [
"run"
"--log-level=debug"
"--rm"
"--name=${escapedName}"
"--log-driver=${container.log-driver}"
]
++ optional (container.entrypoint != null) "--entrypoint=${escapeShellArg container.entrypoint}"
++ optional (container.hostname != null) "--hostname=${escapeShellArg container.hostname}"
++ optional (container.pullPolicy != null) "--pull=${container.pullPolicy}"
++ [
"--cidfile=/run/user/${getId}/podman-${escapedName}.ctr-id"
# "--sdnotify=ignore"
"--cgroups=no-conmon"
"--sdnotify=conmon"
"-d"
"--replace"
]
++ (mapAttrsToList (k: v: "-e ${escapeShellArg k}=${escapeShellArg v}") container.environment)
++ map (f: "--env-file ${escapeShellArg f}") container.environmentFiles
++ map (p: "-p ${escapeShellArg p}") container.ports
++ optional (container.user != null) "-u ${escapeShellArg container.user}"
++ map (v: "-v ${escapeShellArg v}") container.volumes
++ (mapAttrsToList (k: v: "-l ${escapeShellArg k}=${escapeShellArg v}") container.labels)
++ optional (container.workdir != null) "-w ${escapeShellArg container.workdir}"
++ map escapeShellArg container.extraOptions
++ [ container.image ]
++ map escapeShellArg container.cmd
);
inherit (lib)
concatStringsSep
escapeShellArg
optional
mapAttrsToList
;
in
{
Unit = {
WantedBy = lib.optional container.autoStart "default.target"; # graphical-session instead maybe?
After = dependsOn;
Requires = dependsOn;
# StopWhenUnneeded = true;
};
# TODO make network target..
# wants = lib.optional (container.imageFile == null) "network-online.target";
# after = lib.optionals (container.imageFile == null) [ "network-online.target" ]
# ++ dependsOn;
# environment = proxy_env;
Service = {
### There is no generalized way of supporting `reload` for docker
### containers. Some containers may respond well to SIGHUP sent to their
### init process, but it is not guaranteed; some apps have other reload
### mechanisms, some don't have a reload signal at all, and some docker
### images just have broken signal handling. The best compromise in this
### case is probably to leave ExecReload undefined, so `systemctl reload`
### will at least result in an error instead of potentially undefined
### behaviour.
###
### Advanced users can still override this part of the unit to implement
### a custom reload handler, since the result of all this is a normal
### systemd service from the perspective of the NixOS module system.
###
# ExecReload = ...;
###
ExecStartPre = [ "${preStartScript}/bin/pre-start" ];
ExecStart = [
"${pkgs.writeShellScript "start" script}"
];
ExecStop = [
"${podman} stop --ignore --cidfile=/run/user/${getId}/podman-${escapedName}.ctr-id"
"${podman} rm -f --ignore --cidfile=/run/user/${getId}/podman-${escapedName}.ctr-id"
];
# TimeoutStartSec = 0;
# TimeoutStopSec = 120;
# Restart = "always";
Environment = [ "PODMAN_SYSTEMD_UNIT=podman-${name}.service" ];
Type = "notify";
NotifyAccess = "all";
# Type = "exec";
};
};
cfg = config.containers;
inherit (lib)
mapAttrs'
nameValuePair
mkOption
types
mkIf
literalExpression
;
in
{
options.containers = mkOption {
default = { };
type = with types; attrsOf (submodule containerOptions);
};
config = mkIf (cfg != { }) {
systemd.user.services = mapAttrs' (k: v: nameValuePair "podman-${k}" (mkService k v)) cfg;
};
}

View file

@ -1,212 +0,0 @@
{
lib,
config,
...
}:
let
inherit (lib)
filterAttrs
concatStrings
concatStringsSep
mapAttrsToList
concatLists
foldlAttrs
concatMapAttrs
mapAttrs'
nameValuePair
boolToString
;
inherit (builtins) typeOf toString stringLength;
# build up serialisation machinery from here for various types
# list -> array
array = a: "[${concatStringsSep "," a}]";
# attrset -> hashmap
_assoc = a: mapAttrsToList (name: val: "${name}: ${val}") a;
assoc = a: ''
{
${concatStringsSep ",\n" (concatLists (map _assoc a))}
}'';
# attrset -> struct
_struct_kv =
k: v:
if v == null then
""
else
(concatStringsSep ":" [
k
(serialise.${typeOf v} v)
]);
_struct_concat =
s:
foldlAttrs (
acc: k: v:
if stringLength acc > 0 then
concatStringsSep ", " [
acc
(_struct_kv k v)
]
else
_struct_kv k v
) "" s;
_struct_filt = s: _struct_concat (filterAttrs (_k: v: v != null) s);
struct = s: "(${_struct_filt s})";
toQuotedString = s: ''"${toString s}"'';
# make an attrset for struct serialisation
serialise = {
int = toString;
float = toString;
bool = boolToString;
string = toString;
path = toString;
null = toString;
set = struct;
list = array;
};
# define the key for a keybind
defineBinding =
binding:
struct {
inherit (binding) modifiers;
key = if (binding.key == null) then null else toQuotedString binding.key;
};
# map keybinding from list of attrset to hashmap of (mod,key): action
_mapBindings =
bindings:
map (inner: { "${defineBinding inner}" = maybeToString (checkAction inner.action); }) bindings;
mapBindings = bindings: assoc (_mapBindings bindings);
# check a keybinding's action
# escape with quotes if it's a Spawn action
checkAction =
a:
if typeOf a == "set" && a.type == "Spawn" then
{
inherit (a) type;
data = toQuotedString a.data;
}
else
a;
maybeToString =
s:
if typeOf s == "set" then
concatStrings [
s.type
"("
(toString s.data)
")"
]
else
s;
mapCosmicSettings =
application: options:
mapAttrs' (
k: v:
nameValuePair "cosmic/${application}/v${options.version}/${k}" {
enable = true;
text = serialise.${typeOf v} v;
}
) options.option;
in
# deconstructKeybindAttr = attr: mapAttrs' (
# name: value:
# ) attr;
# rec_attr = lib.types.attrsOf (lib.types.oneOf lib.types.string rec_attr);
{
options.cosmic = {
enable =
with lib;
mkOption {
default = false;
type = types.bool;
};
defaultKeybindings =
with lib;
mkOption {
default = true;
type = types.bool;
};
# binds = with lib;
# mkOption {
# default = {};
# type = with types; rec_attr;
# };
keybindings =
with lib;
mkOption {
default = [ ];
type =
with types;
listOf (submodule {
options = {
modifiers = mkOption {
type = listOf str;
default = [ ];
};
key = mkOption {
type = nullOr str;
default = null;
};
action = mkOption {
type = either str (submodule {
options = {
type = mkOption {
type = str;
};
data = mkOption {
type = oneOf [
str
int
];
default = "";
};
};
});
};
};
});
};
otherSettings =
with lib;
mkOption {
default = { };
type =
with types;
attrsOf (submodule {
options = {
version = mkOption {
type = str;
default = "1";
};
option = mkOption {
type = attrsOf anything;
};
};
});
};
};
# TODO we need to split between system_actions, workspaces, custom
config.xdg.configFile =
{
"cosmic/com.system76.CosmicSettings.Shortcuts/v1/custom".text =
mapBindings config.cosmic.keybindings;
"cosmic/com.system76.CosmicSettings.Shortcuts/v1/defaults" = {
text = "{}";
enable = !config.cosmic.defaultKeybindings;
};
}
// concatMapAttrs (
application: options: mapCosmicSettings application options
) config.cosmic.otherSettings;
}

View file

@ -1,61 +0,0 @@
{
config,
lib,
...
}:
let
inherit (lib) mkOption;
inherit (builtins) typeOf listToAttrs;
in
{
options.flatpaks = mkOption {
default = [ ];
type =
with lib.types;
listOf (
either str (submodule {
options = {
name = mkOption {
type = str;
};
overrides = mkOption {
type = attrsOf (attrsOf (either str (listOf str)));
default = { };
};
};
})
);
};
config.services.flatpak =
let
userOverrides = listToAttrs (
map (
fp:
if (typeOf fp == "string") then
{
name = fp;
value = { };
}
else
{
inherit (fp) name;
value = fp.overrides;
}
) config.flatpaks
);
in
{
enable = true;
uninstallUnmanaged = true;
update.auto.enable = true;
packages = map (fp: if (typeOf fp == "set") then fp.name else fp) config.flatpaks;
overrides = userOverrides // {
global = {
Context.sockets = [ "wayland" ];
Environment = {
ELECTRON_OZONE_PLATFORM_HINT = "auto";
};
};
};
};
}

View file

@ -1,146 +0,0 @@
/*
This file is provided under the MIT licence:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
# Generated by npins. Do not modify; will be overwritten regularly
let
data = builtins.fromJSON (builtins.readFile ./sources.json);
version = data.version;
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
range =
first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
concatMapStrings = f: list: concatStrings (map f list);
concatStrings = builtins.concatStringsSep "";
# If the environment variable NPINS_OVERRIDE_${name} is set, then use
# the path directly as opposed to the fetched source.
# (Taken from Niv for compatibility)
mayOverride =
name: path:
let
envVarName = "NPINS_OVERRIDE_${saneName}";
saneName = stringAsChars (c: if (builtins.match "[a-zA-Z0-9]" c) == null then "_" else c) name;
ersatz = builtins.getEnv envVarName;
in
if ersatz == "" then
path
else
# this turns the string into an actual Nix path (for both absolute and
# relative paths)
builtins.trace "Overriding path of \"${name}\" with \"${ersatz}\" due to set \"${envVarName}\"" (
if builtins.substring 0 1 ersatz == "/" then
/. + ersatz
else
/. + builtins.getEnv "PWD" + "/${ersatz}"
);
mkSource =
name: spec:
assert spec ? type;
let
path =
if spec.type == "Git" then
mkGitSource spec
else if spec.type == "GitRelease" then
mkGitSource spec
else if spec.type == "PyPi" then
mkPyPiSource spec
else if spec.type == "Channel" then
mkChannelSource spec
else if spec.type == "Tarball" then
mkTarballSource spec
else
builtins.throw "Unknown source type ${spec.type}";
in
spec // { outPath = mayOverride name path; };
mkGitSource =
{
repository,
revision,
url ? null,
submodules,
hash,
branch ? null,
...
}:
assert repository ? type;
# At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
# In the latter case, there we will always be an url to the tarball
if url != null && !submodules then
builtins.fetchTarball {
inherit url;
sha256 = hash; # FIXME: check nix version & use SRI hashes
}
else
let
url =
if repository.type == "Git" then
repository.url
else if repository.type == "GitHub" then
"https://github.com/${repository.owner}/${repository.repo}.git"
else if repository.type == "GitLab" then
"${repository.server}/${repository.repo_path}.git"
else
throw "Unrecognized repository type ${repository.type}";
urlToName =
url: rev:
let
matched = builtins.match "^.*/([^/]*)(\\.git)?$" url;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null then "-${short}" else "";
in
"${if matched == null then "source" else builtins.head matched}${appendShort}";
name = urlToName url revision;
in
builtins.fetchGit {
rev = revision;
inherit name;
# hash = hash;
inherit url submodules;
};
mkPyPiSource =
{ url, hash, ... }:
builtins.fetchurl {
inherit url;
sha256 = hash;
};
mkChannelSource =
{ url, hash, ... }:
builtins.fetchTarball {
inherit url;
sha256 = hash;
};
mkTarballSource =
{
url,
locked_url ? url,
hash,
...
}:
builtins.fetchTarball {
url = locked_url;
sha256 = hash;
};
in
if version == 5 then
builtins.mapAttrs mkSource data.pins
else
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"

View file

@ -1,145 +0,0 @@
{
"pins": {
"culr": {
"type": "Git",
"repository": {
"type": "Git",
"url": "https://git.atagen.co/atagen/culr"
},
"branch": "master",
"submodules": false,
"revision": "40feebba44d4722706b66ac51e1997cb630c09c9",
"url": null,
"hash": "16rjgm4hj8dgkrr2maq9mnkdarvj3vrzw4y018abn340nfyr9rlr"
},
"helix": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "helix-editor",
"repo": "helix"
},
"branch": "master",
"submodules": false,
"revision": "7ebf65002940d0ce8d6e59c3ec22c736f7d57d9c",
"url": "https://github.com/helix-editor/helix/archive/7ebf65002940d0ce8d6e59c3ec22c736f7d57d9c.tar.gz",
"hash": "0x34kv59yl787qa6gfd3bvakb8n4j67wj02zp0pcljzl8b7gcm68"
},
"hjem": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "feel-co",
"repo": "hjem"
},
"branch": "main",
"submodules": false,
"revision": "ae49a5a2e013c710d2b2cf046ae365d08eae75b3",
"url": "https://github.com/feel-co/hjem/archive/ae49a5a2e013c710d2b2cf046ae365d08eae75b3.tar.gz",
"hash": "1571dkq3ng9m9yip0fdzd4dqmckmjmpp7an7jp5kasqirhpd5w64"
},
"home-manager": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "nix-community",
"repo": "home-manager"
},
"branch": "master",
"submodules": false,
"revision": "d094c6763c6ddb860580e7d3b4201f8f496a6836",
"url": "https://github.com/nix-community/home-manager/archive/d094c6763c6ddb860580e7d3b4201f8f496a6836.tar.gz",
"hash": "1d72lb88xq16sik4p8vjbmnj9w6p358rpzcwscrg0nyi2z1bf5sy"
},
"ironbar": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "JakeStanger",
"repo": "ironbar"
},
"branch": "master",
"submodules": false,
"revision": "f2bc33ec26698f2aeb28d0c8e0c5605d5ffbcce1",
"url": "https://github.com/JakeStanger/ironbar/archive/f2bc33ec26698f2aeb28d0c8e0c5605d5ffbcce1.tar.gz",
"hash": "182gi303bdf887jfd38cfcnjdd5kf2917alz388wqmx7ck1wn2sf"
},
"lix": {
"type": "Git",
"repository": {
"type": "Git",
"url": "https://git.lix.systems/lix-project/lix"
},
"branch": "main",
"submodules": false,
"revision": "63d550938ba2a3690be987e884fe95e384708a82",
"url": null,
"hash": "1jnphmq9dxs26mk18q3b1flj6r29gwfiqjjxxaxp8qxa5m613ldg"
},
"lix-module": {
"type": "Git",
"repository": {
"type": "Git",
"url": "https://git.lix.systems/lix-project/nixos-module"
},
"branch": "main",
"submodules": false,
"revision": "fa69ae26cc32dda178117b46487c2165c0e08316",
"url": null,
"hash": "13x2dca4s049m8fa2y4b45kgqnpk3cf26j0j0yascah32zzxn7rh"
},
"nix-vscode": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "nix-community",
"repo": "nix-vscode-extensions"
},
"branch": "master",
"submodules": false,
"revision": "da51d4cab526bef885e8c95ab2b9455bfe0940d4",
"url": "https://github.com/nix-community/nix-vscode-extensions/archive/da51d4cab526bef885e8c95ab2b9455bfe0940d4.tar.gz",
"hash": "01bb7jnrv53j7lpgdqm6cgsijl8cm5i8v0zx30hslvzmpihg0ybl"
},
"nixos-cachyos-kernel": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "drakon64",
"repo": "nixos-cachyos-kernel"
},
"branch": "main",
"submodules": false,
"revision": "8516d89c4e0c4a25cea1be8431db3963359ee81b",
"url": "https://github.com/drakon64/nixos-cachyos-kernel/archive/8516d89c4e0c4a25cea1be8431db3963359ee81b.tar.gz",
"hash": "0ay9zqb4g7jx82pgcsnxy2nkyvk8y4xssska0afd7hxsimfnsl1s"
},
"nixpkgs": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "nixos",
"repo": "nixpkgs"
},
"branch": "nixos-unstable",
"submodules": false,
"revision": "42a1c966be226125b48c384171c44c651c236c22",
"url": "https://github.com/nixos/nixpkgs/archive/42a1c966be226125b48c384171c44c651c236c22.tar.gz",
"hash": "082dpl311xlspwm5l3h2hf10ww6l59m7k2g2hdrqs4kwwsj9x6mf"
},
"nixpkgs-stable": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "nixos",
"repo": "nixpkgs"
},
"branch": "release-24.11",
"submodules": false,
"revision": "e1cd802516a4515cceedfdedcbae9ea4df50a371",
"url": "https://github.com/nixos/nixpkgs/archive/e1cd802516a4515cceedfdedcbae9ea4df50a371.tar.gz",
"hash": "0yp82j423ibabnp71k2fpprfnmd6sr52vfknk689gygvyask8mx4"
}
},
"version": 5
}

View file

@ -1,7 +0,0 @@
{ ... }:
let
sources = import ./npins;
in
{
nixpkgs.flake.source = sources.nixpkgs;
}

View file

@ -1,17 +1,16 @@
{
nixpkgs,
nix-rice,
inputs,
system,
...
nix-rice,
}:
let
pkgs = nixpkgs.legacyPackages.${system};
pkgs = inputs.nixpkgs.legacyPackages.${system};
inherit (nix-rice) kitty-themes;
inherit (nix-rice.palette) toRGBShortHex;
inherit (nix-rice.palette) toRGBShortHex toRGBHex;
theme = kitty-themes.parseTheme ./pal.conf;
in
rec {
palette = {
palette = theme // {
normal = {
black = theme.color0;
red = theme.color1;
@ -40,7 +39,9 @@ rec {
inherit (theme) cursor;
# url = theme.url_color;
};
} // theme;
hex = toRGBHex palette;
shortHex = toRGBShortHex palette;
};
fonts =
let
@ -103,18 +104,22 @@ rec {
borders = {
thickness = 6;
rounding = 0;
gaps_in = 16;
gaps_in = 32;
gaps_out = 72;
};
bg = {
image = pkgs.callPackage ./wallpaper.nix { } {
palette = toRGBShortHex palette;
wallpaper = builtins.path rec {
name = "wallpaper.jpg";
path = ../${name};
sha256 = "2db3f9d0397fbd4746ada297bd14c0c7d3e22c7d4e894968fcfece90bbfb902a";
};
wallpaper =
let
name = "wallpaper.jpg";
in
builtins.path {
inherit name;
path = ./${name};
sha256 = "2db3f9d0397fbd4746ada297bd14c0c7d3e22c7d4e894968fcfece90bbfb902a";
};
};
};
@ -126,15 +131,11 @@ rec {
name = "Afterglow-Recolored-Dracula-Orange";
};
plymouth =
let
theme = "spinner_alt";
in
{
inherit theme;
font = "${fonts.sans.package}/share/fonts/truetype/InriaSans-Regular.ttf";
themePackages = [
(pkgs.adi1090x-plymouth-themes.override { selected_themes = [ theme ]; })
];
};
plymouth = {
theme = "starship";
font = "${fonts.sans.package}/share/fonts/truetype/InriaSans-Regular.ttf";
themePackages = [
inputs.hudcore.packages.${pkgs.system}.default
];
};
}

View file

@ -1,12 +1,6 @@
{ pkgs }:
{ palette }:
let
rendersvg = pkgs.runCommand "rendersvg" { } ''
mkdir -p $out/bin
ln -s ${pkgs.resvg}/bin/resvg $out/bin/rendersvg
'';
in
pkgs.stdenv.mkDerivation rec {
pkgs.stdenv.mkDerivation {
name = "generated-gtk-theme-nix-rice";
src = pkgs.fetchFromGitHub {
owner = "nana-4";
@ -14,17 +8,21 @@ pkgs.stdenv.mkDerivation rec {
rev = "d7f59a37ef51f893c28b55dc344146e04b2cd52c";
sha256 = "sha256-PnpFAmKEpfg3wBwShLYviZybWQQltcw7fpsQkTUZtww=";
};
buildInputs = with pkgs; [
sassc
bc
which
rendersvg
meson
ninja
nodePackages.sass
gtk4.dev
optipng
];
buildInputs = builtins.attrValues {
inherit (pkgs)
sassc
bc
which
rendersvg
meson
optipng
ninja
;
inherit (pkgs.nodePackages)
sass
;
inherit (pkgs.gtk4) dev;
};
phases = [
"unpackPhase"
"installPhase"

View file

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

Before After
Before After

View file

@ -1,10 +1,15 @@
{ pkgs, lib }:
{
pkgs,
lib,
stdenv,
...
}:
{
palette,
wallpaper,
}:
let
str_pal =
strPal =
let
inherit (lib) concatStringsSep;
inherit (builtins) foldl' attrValues;
@ -13,7 +18,7 @@ let
foldl' (acc: el: acc ++ (attrValues el)) [ ] [ palette.normal palette.bright palette.util ]
);
in
pkgs.stdenv.mkDerivation {
stdenv.mkDerivation {
name = "generated-wallpaper.png";
src = wallpaper;
buildInputs = [
@ -23,7 +28,7 @@ pkgs.stdenv.mkDerivation {
phases = [ "installPhase" ];
installPhase = ''
echo -e "Generating wallpaper from ${wallpaper} using palette:\n${str_pal}.."
${pkgs.lib.getExe pkgs.lutgen} apply --lum 0.8 -l 10 -s 128 -n 8 -o $out ${wallpaper} -- ${str_pal}
echo -e "Generating wallpaper from ${wallpaper} using palette:\n${strPal}.."
${lib.getExe pkgs.lutgen} apply --lum 0.8 -l 10 -s 128 -n 8 -o $out ${wallpaper} -- ${strPal}
'';
}

View file

View file

@ -58,7 +58,7 @@
services.power-profiles-daemon.enable = false;
services.tlp.enable = true;
environment.sessionVariables = rec {
environment.sessionVariables = {
NIXOS_OZONE_WL = "1";
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=5";
EDITOR = "hx";
@ -77,16 +77,18 @@
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
};
environment.systemPackages = with pkgs; [
wl-clipboard
wl-clipboard-x11
xclip
];
environment.systemPackages = builtins.attrValues {
inherit (pkgs)
wl-clipboard
wl-clipboard-x11
xclip
;
};
networking.hostName = "adrift"; # Define your hostname.
users.users.plank = {

View file

@ -1,12 +0,0 @@
{
nix = {
settings = {
substituters = [
"https://nix-community.cachix.org"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
};
}

View file

@ -5,49 +5,12 @@
mainUser,
...
}:
let
getFlakePackage = package: inputs."${package}".packages.x86_64-linux.default;
in
{
# these settings propagate to home-manager's nixpkgs
nixpkgs = {
overlays = [
# inputs.nix-rice.overlays.default
inputs.helix.overlays.default
inputs.nil.overlays.nil
inputs.niri.overlays.niri
];
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
cudaSupport = true;
};
};
nix = {
# add flake inputs to our registry to allow global use
registry = lib.mapAttrs (_: value: { flake = value; }) inputs;
settings = {
# trusted-users = ["bolt" "plank"];
experimental-features = [
"nix-command"
"flakes"
"pipe-operator"
];
substitute = true;
};
extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
optimise.automatic = true;
# package = pkgs.lix;
};
imports = [
./modules/network.nix
./modules/term.nix
./modules/systemdboot.nix
./modules/limine.nix
./modules/sound.nix
./modules/sydney.nix
./modules/docs.nix
@ -57,11 +20,6 @@ in
./modules/culr.nix
];
programs.meat = {
enable = true;
flake = "/home/${mainUser}/.nix";
};
hardware.enableRedistributableFirmware = true;
hardware.enableAllFirmware = true;
@ -102,20 +60,12 @@ in
# services.tailscale.enable = true;
# TODO - move these to more appropriate places
environment.systemPackages = with pkgs; [
curl
eza
git
jujutsu
];
# services.atuin.enable = true;
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 3d --keep 3";
package = getFlakePackage "nh";
environment.systemPackages = builtins.attrValues {
inherit (pkgs)
curl
eza
git
;
};
programs.nix-index-database.comma.enable = true;
@ -131,5 +81,5 @@ in
systemd.user.extraConfig = "LogLevel=debug";
system.nixos.tags = [ "fatcock" ];
system.nixos.tags = [ "fatcock-xxl" ];
}

View file

@ -1,13 +0,0 @@
{ pkgs, ... }:
{
services.desktopManager.cosmic = {
enable = true;
};
environment.cosmic.excludePackages = with pkgs; [
cosmic-store
cosmic-edit
cosmic-term
];
services.displayManager.cosmic-greeter.enable = true;
services.system76-scheduler.enable = true;
}

View file

@ -1,9 +1,11 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
man-pages
man-pages-posix
];
environment.systemPackages = {
inherit (pkgs)
man-pages
man-pages-posix
;
};
documentation.dev.enable = true;
documentation.man.enable = true;

42
system/modules/limine.nix Normal file
View file

@ -0,0 +1,42 @@
{
lib,
rice,
...
}:
{
boot.loader.limine = {
enable = true;
style =
let
pal = rice.palette.shortHex;
in
{
wallpapers = [ ../../wallpaper.jpg ];
interface = {
brandingColor = 1;
branding = "welcome to quiver";
};
graphicalTerminal =
let
getPal = p: builtins.attrValues p |> builtins.concatStringsSep ";";
in
{
palette = getPal pal.normal;
brightPalette = getPal pal.bright;
marginGradient = 0;
margin = 256;
foreground = pal.util.fg;
background = "20" + pal.util.bg;
brightForeground = pal.bright.yellow;
brightBackground = pal.util.bg;
};
backdrop = pal.util.bg;
};
maxGenerations = 5;
extraEntries = ''
/Windows
protocol: efi
path: boot():/EFI/Microsoft/Boot/bootmgfw.efi
'';
};
}

View file

@ -1,6 +1,6 @@
{
pkgs,
mainUser,
inputs,
...
}:
{
@ -21,6 +21,13 @@
};
programs.niri = {
enable = true;
package = pkgs.niri-unstable;
package = inputs.niri.packages.x86_64-linux.niri-unstable;
};
services.niri-session-manager = {
enable = true;
# settings = {
# save-interval = 5;
# max-backup-count = 12;
# };
};
}

View file

@ -1,12 +1,63 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
home-manager
cachix
nixfmt-rfc-style
nil
statix
deadnix
npins
];
pkgs,
lib,
inputs,
mainUser,
...
}:
{
# these settings propagate to home-manager's nixpkgs
nixpkgs = {
config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
cudaSupport = true;
};
};
nix = {
# add flake inputs to our registry to allow global use
registry = lib.mapAttrs (_: value: { flake = value; }) inputs;
settings = {
# trusted-users = ["bolt" "plank"];
experimental-features = [
"nix-command"
"flakes"
"pipe-operator"
];
substitute = true;
};
extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
optimise.automatic = true;
# package = pkgs.lix;
};
# services.smooooth = {
# enable = true;
# path = "/home/${mainUser}/.nix";
# blockers = [
# "hx"
# {
# nix = "die";
# }
# ];
# nixPackage = pkgs.lix;
# };
programs.meat = {
enable = true;
flake = "/home/${mainUser}/.nix";
};
environment.systemPackages = builtins.attrValues {
inherit (pkgs)
home-manager
cachix
nixfmt-rfc-style
;
inherit (inputs.nil.packages.${pkgs.system}) nil;
};
}

View file

@ -1,12 +1,15 @@
{ pkgs, ... }:
let
inherit (pkgs) fish elvish;
inherit (pkgs) fish;
in
{
programs.fish = {
enable = true;
};
programs.autojump.enable = true;
programs.zoxide = {
enable = true;
enableFishIntegration = true;
};
environment.systemPackages = [
fish
];

View file

@ -51,8 +51,11 @@
"vt.global_cursor_default=0"
];
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linuxPackages_cachyos;
# pkgs.linuxPackages_xanmod_latest;
services.scx = {
enable = true;
scheduler = "scx_bpfland";
};
boot.kernelPackages = pkgs.linuxPackages_cachyos;
boot.supportedFilesystems = {
ntfs = true;
btrfs = true;
@ -61,10 +64,10 @@
boot.loader.systemd-boot.configurationLimit = 5;
boot.loader.efi.canTouchEfiVariables = true;
boot.plymouth = {
enable = true;
inherit (rice.plymouth) theme themePackages font;
};
# boot.plymouth = {
# enable = true;
# inherit (rice.plymouth) theme themePackages font;
# };
security.tpm2.enable = true;
@ -90,10 +93,6 @@
nix.settings.trusted-users = [ "bolt" ];
virtualisation.lxc = {
unprivilegedContainers = true;
enable = true;
};
virtualisation.oci-containers.backend = "podman";
hardware.nvidia-container-toolkit.enable = true;
virtualisation = {
@ -130,14 +129,22 @@
# motherboard = "amd";
# };
# hardware.ckb-next.enable = true;
environment.systemPackages = builtins.attrValues {
inherit (pkgs)
wl-clipboard
wl-clipboard-x11
xclip
;
};
hardware.ckb-next.enable = true;
environment.systemPackages =
builtins.attrValues {
inherit (pkgs)
wl-clipboard
wl-clipboard-x11
xclip
;
inherit (pkgs.kdePackages) qtbase qtdeclarative;
}
++ [
(inputs.quickshell.packages.${pkgs.system}.default.override {
withHyprland = false;
withI3 = false;
})
];
programs.fuse.userAllowOther = true;
services.libinput.mouse = {
accelProfile = "flat";
@ -189,4 +196,7 @@
DATABASE_URL = "sqlite:///${config.services.open-webui.stateDir}/newdb.db";
};
};
# for quickshell
qt.enable = true;
}

View file

@ -7,23 +7,15 @@
"https://cache.nixos.org"
"https://nix-community.cachix.org"
"https://helix.cachix.org"
"https://cuda-maintainers.cachix.org"
"https://cache.garnix.io"
"https://walker-git.cachix.org"
"https://anmonteiro.nix-cache.workers.dev"
"https://viperml.cachix.org"
"https://drakon64-nixos-cachyos-kernel.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"walker-git.cachix.org-1:vmC0ocfPWh0S/vRAQGtChuiZBTAe4wiKDeyyXM0/7pM="
"ocaml.nix-cache.com-1:/xI2h2+56rwFfKyyFVbkJSeGqSIYMC/Je+7XXqGKDIY="
"viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8="
"drakon64-nixos-cachyos-kernel.cachix.org-1:J3gjZ9N6S05pyLA/P0M5y7jXpSxO/i0rshrieQJi5D0="
];
};
}

7
util/get-modules.nix Normal file
View file

@ -0,0 +1,7 @@
{ inputs }:
let
inherit (inputs.nixpkgs) lib;
in
l:
lib.filterAttrs (_: v: builtins.elem v l) inputs
|> lib.mapAttrsToList (n: v: v.nixosModules.${n} or v.nixosModules.default)

View file

@ -1,9 +0,0 @@
{
inputs,
...
}:
{
rice = import ./rice.nix;
inherit (inputs.comfyui.overlays) comfyui;
inherit (inputs.comfyui-plugins.overlays) comfyui-plugins;
}