Compare commits
27 commits
42b2f14173
...
378828b856
Author | SHA1 | Date | |
---|---|---|---|
378828b856 |
|||
d3d266bf9b |
|||
6a0ecd3fe7 |
|||
683509d009 |
|||
04e8033af3 |
|||
b82a3580ec |
|||
8c6b9f65c9 |
|||
f813eb37d3 |
|||
484bddd03b |
|||
0fa9bee865 |
|||
327f149a42 |
|||
655626c237 |
|||
ef617f52db |
|||
fa71542fe2 |
|||
89ca8e59b3 |
|||
9750c64d9c |
|||
dee3cc7745 |
|||
598e92640e |
|||
681cd8a453 |
|||
098f38e9a4 |
|||
33f6b08982 |
|||
98690011c4 |
|||
574c0d2db1 |
|||
3ab2613290 |
|||
fba74410c0 |
|||
a64d7571d8 |
|||
c9da7d036b |
40 changed files with 354 additions and 300 deletions
21
TODO.md
21
TODO.md
|
@ -1,21 +0,0 @@
|
|||
## Todo
|
||||
|
||||
This is a list of all the things I still have to fix/achive in this
|
||||
configuration:
|
||||
|
||||
- [ ] Fix apparmor
|
||||
- [ ] Lanzaboote
|
||||
- [ ] Remove all `with`
|
||||
- [ ] better documentation
|
||||
- [ ] Fix greetd
|
||||
- [ ] ClamAV
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
||||
- [ ]
|
35
flake.lock
generated
35
flake.lock
generated
|
@ -311,10 +311,10 @@
|
|||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 315532800,
|
||||
"narHash": "sha256-X5WIcIkFxPhw7mS219TbEOgrugbMx/2cin09OlWobT8=",
|
||||
"rev": "dab3a6e781554f965bde3def0aa2fda4eb8f1708",
|
||||
"narHash": "sha256-aW0rd3E6pilfWXcNrMwbA4ehW3BZJ0oep4LQbUgOrgg=",
|
||||
"rev": "fa0ef8a6bb1651aa26c939aeb51b5f499e86b0ec",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre830668.dab3a6e78155/nixexprs.tar.xz"
|
||||
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre831232.fa0ef8a6bb16/nixexprs.tar.xz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
|
@ -354,11 +354,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752701746,
|
||||
"narHash": "sha256-OVqrNbAzMaVOBxdoLqbZyn0vOq9/XwcWVPVKJbHwz5Q=",
|
||||
"lastModified": 1752837946,
|
||||
"narHash": "sha256-oLkH/Mr0cfrjD6WRf6GqJV6sizX0ZgYqD6gFdziyKVo=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "986749cdb9ca9078b66297d60bbf21d48e33a6cf",
|
||||
"revCount": 639,
|
||||
"rev": "e55d519c280192d8d97695b6c5905a0d7a46f8fe",
|
||||
"revCount": 647,
|
||||
"type": "git",
|
||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
||||
},
|
||||
|
@ -374,7 +374,6 @@
|
|||
"lanzaboote": "lanzaboote",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"quickshell": "quickshell",
|
||||
"rust-overlay": "rust-overlay_2",
|
||||
"systems": "systems",
|
||||
"watt": "watt"
|
||||
}
|
||||
|
@ -400,26 +399,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752633862,
|
||||
"narHash": "sha256-Bj7ozT1+5P7NmvDcuAXJvj56txcXuAhk3Vd9FdWFQzk=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "8668ca94858206ac3db0860a9dec471de0d995f8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
|
|
|
@ -67,12 +67,6 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# The things rust is making me do...
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# DetNix is doing too well these days not to use it.
|
||||
determinate = {
|
||||
url = "github:determinatesystems/determinate";
|
||||
|
|
|
@ -32,7 +32,6 @@ in {
|
|||
microfetch
|
||||
mprocs
|
||||
nmap
|
||||
polkit
|
||||
ripgrep
|
||||
smartmontools
|
||||
television
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console.keyMap = "uk";
|
||||
security.polkit.enable = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
||||
services = {
|
||||
fstrim.enable = lib.mkDefault true;
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
{pkgs, ...}: let
|
||||
# a newer nil version, for pipes support.
|
||||
newer-nil = pkgs.nil.overrideAttrs (_: {
|
||||
version = "unstable-02-06-2025";
|
||||
new-nil = pkgs.nil.overrideAttrs (_: {
|
||||
version = "unstable-18-07-2025";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "oxalica";
|
||||
repo = "nil";
|
||||
rev = "577d160da311cc7f5042038456a0713e9863d09e";
|
||||
hash = "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=";
|
||||
rev = "524ae2d67dd84d99a10f409ed6cd8e4e7b3cae3f";
|
||||
hash = "sha256-Uy2qzd+fMoBcp4NPSO7DavEC1pGMegmAqoEMvmXbIQU=";
|
||||
};
|
||||
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
||||
inherit (newer-nil) src;
|
||||
hash = "sha256-uZsLlFU9GKLvFllF7Kf5Q7HfN26KQojf4rvOb9p7Rjs=";
|
||||
inherit (new-nil) src;
|
||||
hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8=";
|
||||
};
|
||||
});
|
||||
in {
|
||||
|
@ -74,7 +74,6 @@ in {
|
|||
pdfpc
|
||||
pfetch
|
||||
playerctl
|
||||
polkit
|
||||
presenterm
|
||||
pulsemixer
|
||||
ripgrep
|
||||
|
@ -95,6 +94,6 @@ in {
|
|||
xournalpp
|
||||
zathura
|
||||
;
|
||||
inherit newer-nil;
|
||||
inherit new-nil;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console.keyMap = "us";
|
||||
security.polkit.enable = true;
|
||||
|
||||
# boot.kernelPackages = pkgs.linuxPackagesFor xanmod_blox;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
@ -20,15 +19,14 @@
|
|||
system76-scheduler = {
|
||||
enable = true;
|
||||
};
|
||||
gnome.gnome-keyring.enable = true;
|
||||
};
|
||||
security.pam.services.login.enableGnomeKeyring = true;
|
||||
environment.systemPackages = [pkgs.seahorse];
|
||||
|
||||
meta = {
|
||||
mainUser.gitSigningKey = "";
|
||||
};
|
||||
modules = {
|
||||
system = {
|
||||
isGraphical = true;
|
||||
impermanence.enable = true;
|
||||
boot = {
|
||||
systemd-boot.enable = true;
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
anki
|
||||
asciinema
|
||||
beets
|
||||
bitwarden-cli
|
||||
bitwarden-desktop
|
||||
bubblewrap
|
||||
cachix
|
||||
calc
|
||||
|
@ -31,9 +29,9 @@
|
|||
impala
|
||||
imv
|
||||
inetutils
|
||||
inshellisense
|
||||
joplin-desktop
|
||||
jujutsu
|
||||
julia
|
||||
just
|
||||
keepassxc
|
||||
lazygit
|
||||
|
@ -50,7 +48,6 @@
|
|||
pavucontrol
|
||||
pdfarranger
|
||||
picard
|
||||
polkit
|
||||
pulsemixer
|
||||
python3
|
||||
pwvucontrol
|
||||
|
@ -64,7 +61,6 @@
|
|||
spotify
|
||||
starship
|
||||
telegram-desktop
|
||||
texliveFull
|
||||
thunderbird
|
||||
topiary
|
||||
tor-browser
|
||||
|
@ -73,7 +69,6 @@
|
|||
typst
|
||||
vesktop
|
||||
vivid
|
||||
walker
|
||||
wayneko
|
||||
wireguard-tools
|
||||
xdg-utils
|
||||
|
@ -82,17 +77,13 @@
|
|||
zathura
|
||||
zotero
|
||||
zoxide
|
||||
# coreutils-full # All of the GNU coreutils
|
||||
curl # I sometimes need to curl stuff
|
||||
git # take a guess
|
||||
curl
|
||||
git
|
||||
wget
|
||||
unzip # zipping and unzipping stuff
|
||||
unzip
|
||||
zip
|
||||
util-linux
|
||||
;
|
||||
inherit
|
||||
(pkgs.wineWowPackages)
|
||||
waylandFull
|
||||
zed-editor
|
||||
;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console.keyMap = "uk";
|
||||
security.polkit.enable = true;
|
||||
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
programs.nix-ld.enable = true;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console.keyMap = "uk";
|
||||
security.polkit.enable = true;
|
||||
programs.nix-ld.enable = false;
|
||||
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
||||
services = {
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
microfetch
|
||||
nmap
|
||||
pfetch
|
||||
polkit
|
||||
ripgrep
|
||||
smartmontools
|
||||
util-linux
|
||||
|
|
|
@ -11,16 +11,6 @@
|
|||
inherit (config.modules.system) systemType;
|
||||
in {
|
||||
options.modules.system = {
|
||||
mainUser = mkOption {
|
||||
type = enum config.modules.system.users;
|
||||
default = elemAt config.modules.system.users 0;
|
||||
description = ''
|
||||
The username of the main user for your system.
|
||||
|
||||
In case of a multiple systems, this will be the user with priority in ordered lists and enabled options.
|
||||
'';
|
||||
};
|
||||
|
||||
users = mkOption {
|
||||
type = listOf str;
|
||||
default = ["cr"];
|
||||
|
|
34
modules/programs/gui/bitwarden.mod.nix
Normal file
34
modules/programs/gui/bitwarden.mod.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (config.modules.system) isGraphical;
|
||||
inherit (lib.modules) mkIf;
|
||||
|
||||
bitwarden-desktop-wrapped = pkgs.symlinkJoin {
|
||||
name = "bitwarden-desktop-wrapped";
|
||||
paths = [pkgs.bitwarden-desktop];
|
||||
nativeBuildInputs = [pkgs.makeWrapper];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/bitwarden --set \
|
||||
BITWARDEN_SSH_AUTH_SOCK /run/user/1000/ssh-agent.sock
|
||||
'';
|
||||
};
|
||||
in {
|
||||
config = mkIf isGraphical {
|
||||
environment = {
|
||||
systemPackages = lib.attrValues {
|
||||
inherit
|
||||
(pkgs)
|
||||
bitwarden-cli
|
||||
;
|
||||
inherit bitwarden-desktop-wrapped;
|
||||
};
|
||||
# Set the ssh socket globally. This alows all applications and shells to use
|
||||
# the ssh-agent.
|
||||
sessionVariables."SSH_AUTH_SOCK" = "/run/user/1000/ssh-agent.sock";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -9,15 +9,13 @@
|
|||
# https://peter.sh/experiments/chromium-command-line-switches/
|
||||
flags = concatStringsSep " " [
|
||||
"--no-first-run"
|
||||
"--use-vulkan"
|
||||
"--enable-features=Vulkan,UseOzonePlatform"
|
||||
"--enable-features=UseOzonePlatform"
|
||||
"--enable-gpu-rasterization"
|
||||
"--force-dark-mode"
|
||||
"--enable-smooth-scrolling"
|
||||
"--enable-features=UseOzonePlatform"
|
||||
"--ozone-platform=wayland"
|
||||
"--user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3'"
|
||||
"--use-angle=vulkan"
|
||||
];
|
||||
brave-wrapped = pkgs.symlinkJoin {
|
||||
name = "brave";
|
||||
|
@ -216,6 +214,8 @@ in {
|
|||
"mnjggcdmjocbbbhaepdhchncahnbgone"
|
||||
# Decentraleyes
|
||||
"ldpochfccmkkmhdbclfhpagapcfdljkj"
|
||||
# Humble new tab page
|
||||
"mfgdmpfihlmdekaclngibpjhdebndhdj"
|
||||
];
|
||||
};
|
||||
|
||||
|
|
17
modules/programs/gui/dolphin.mod.nix
Normal file
17
modules/programs/gui/dolphin.mod.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (config.modules.system) isGraphical;
|
||||
in {
|
||||
config = mkIf isGraphical {
|
||||
environment.systemPackages = with pkgs; [
|
||||
kdePackages.dolphin
|
||||
kdePackages.kio-fuse #to mount remote filesystems via FUSE
|
||||
kdePackages.kio-extras #extra protocols support (sftp, fish and more)
|
||||
];
|
||||
};
|
||||
}
|
|
@ -26,7 +26,7 @@
|
|||
# font-style-bold-italic = JetBrainsMono NF Italic;
|
||||
|
||||
app-notifications = "no-clipboard-copy";
|
||||
background-opacity = 0.75;
|
||||
background-opacity = 0.9;
|
||||
bold-is-bright = "true";
|
||||
confirm-close-surface = "false";
|
||||
cursor-style-blink = "false";
|
||||
|
|
|
@ -24,9 +24,16 @@
|
|||
log_level = "ERROR"
|
||||
'';
|
||||
|
||||
btop-no-desktop-entry = pkgs.btop.overrideAttrs (prev: {
|
||||
postInstall = ''
|
||||
${prev.postInstall or ""}
|
||||
rm -rf $out/share/applications/*.desktop
|
||||
'';
|
||||
});
|
||||
|
||||
btop-wrapped = pkgs.symlinkJoin {
|
||||
name = "btop-wrapped";
|
||||
paths = [pkgs.btop];
|
||||
paths = [btop-no-desktop-entry];
|
||||
nativeBuildInputs = [pkgs.makeWrapper];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/btop --set XDG_CONFIG_HOME "${btop-settings}"
|
||||
|
|
|
@ -10,8 +10,7 @@ in {
|
|||
services.spotifyd = mkIf isGraphical {
|
||||
enable = true;
|
||||
settings = {
|
||||
};
|
||||
config = {
|
||||
backend = "pipe";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,11 +3,6 @@
|
|||
in {
|
||||
options.modules.programs.ssh.enable = mkEnableOption "ssh";
|
||||
config = {
|
||||
# set the ssh socket globally. This alows all applications and shells to use
|
||||
# the ssh-agent.
|
||||
environment.sessionVariables.SSH_AUTH_SOCK = "/run/user/1000/ssh-agent";
|
||||
programs.ssh.startAgent = true;
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
ports = [22];
|
||||
|
|
|
@ -82,9 +82,6 @@ in {
|
|||
GTK_THEME = cfg.theme.name;
|
||||
XCURSOR_THEME = "BreezeX-RosePine-Linux";
|
||||
XCURSOR_SIZE = cursorSize;
|
||||
|
||||
HYPRCURSOR_THEME = "BreezeX-RosePine-Linux";
|
||||
HYPRCURSOR_SIZE = cursorSize;
|
||||
};
|
||||
etc = let
|
||||
css = import ./gtk-colors.nix {inherit (config.modules.style.colorScheme) colors;};
|
||||
|
|
|
@ -34,7 +34,10 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
config =
|
||||
mkIf cfg.enable {
|
||||
config = mkIf cfg.enable {
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "qt5ct";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -19,6 +19,11 @@ in {
|
|||
qt6.qt5compat
|
||||
qt6.qtmultimedia
|
||||
qt6.qtdeclarative
|
||||
qt6.qtsvg
|
||||
qt6.qtwayland
|
||||
qt6.qtbase
|
||||
kdePackages.breeze
|
||||
kdePackages.breeze-icons
|
||||
];
|
||||
|
||||
# taken from outfoxxed.
|
||||
|
|
|
@ -1,103 +1,105 @@
|
|||
pragma Singleton
|
||||
pragma ComponentBehavior: Bound
|
||||
pragma Singleton
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Services.Pipewire
|
||||
import Quickshell.Wayland
|
||||
|
||||
import qs.config
|
||||
|
||||
Singleton {
|
||||
id: audioPopup
|
||||
property bool popupOpen: true
|
||||
id: root
|
||||
|
||||
property var volume: sink.ready ? audioPopup.sink.audio.volume : 0
|
||||
property real volume: Pipewire.defaultAudioSink?.audio?.volume ?? 0
|
||||
property real popupOpacity: 0
|
||||
|
||||
property var visible: volume
|
||||
|
||||
property PwNode sink: Pipewire.defaultAudioSink
|
||||
|
||||
// bind the node so we can read its properties
|
||||
PwObjectTracker {
|
||||
objects: [audioPopup.sink]
|
||||
objects: [Pipewire.defaultAudioSink]
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
interval: 3000
|
||||
running: false
|
||||
repeat: false
|
||||
|
||||
onTriggered: audioPopup.visible = false
|
||||
onVolumeChanged: {
|
||||
root.popupOpacity = 1;
|
||||
loader.activeAsync = true;
|
||||
timer.restart();
|
||||
timer_opacity.restart();
|
||||
}
|
||||
|
||||
LazyLoader {
|
||||
id: loader
|
||||
activeAsync: audioPopup.popupOpen
|
||||
activeAsync: false
|
||||
|
||||
PanelWindow {
|
||||
id: popup
|
||||
width: 400
|
||||
height: 30
|
||||
visible: true
|
||||
|
||||
// Give the window an empty click mask so all clicks pass through it.
|
||||
implicitWidth: rect.implicitWidth
|
||||
implicitHeight: 50
|
||||
color: "transparent"
|
||||
mask: Region {}
|
||||
|
||||
// Use the wlroots specific layer property to ensure it displays over
|
||||
// fullscreen windows.
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
|
||||
color: "transparent"
|
||||
|
||||
anchors {
|
||||
bottom: true
|
||||
}
|
||||
|
||||
margins {
|
||||
bottom: 250
|
||||
}
|
||||
anchors.bottom: true
|
||||
margins.bottom: 100
|
||||
|
||||
Rectangle {
|
||||
id: rect
|
||||
Layout.fillWidth: true
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
color: "white"
|
||||
height: parent.height
|
||||
width: parent.width
|
||||
anchors.fill: parent
|
||||
color: Colors.surface0
|
||||
implicitWidth: 300
|
||||
implicitHeight: parent.implicitHeight
|
||||
radius: 5
|
||||
opacity: 0
|
||||
opacity: root.popupOpacity
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
|
||||
Behavior on width {
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: 200
|
||||
duration: 500
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: "black"
|
||||
height: 20
|
||||
radius: height / 2
|
||||
id: bar
|
||||
color: Colors.blue
|
||||
implicitWidth: rect.implicitWidth * root.volume - 20
|
||||
implicitHeight: 30
|
||||
topRightRadius: 5
|
||||
bottomRightRadius: 5
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
topLeftRadius: 0
|
||||
bottomLeftRadius: 0
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: parent.width * audioPopup.sink.audio.volume
|
||||
Behavior on implicitWidth {
|
||||
NumberAnimation {
|
||||
duration: 300
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
interval: 2000
|
||||
running: false
|
||||
onTriggered: loader.activeAsync = false
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer_opacity
|
||||
interval: 1500
|
||||
running: false
|
||||
onTriggered: {
|
||||
root.popupOpacity = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,9 +49,9 @@ Singleton {
|
|||
}
|
||||
}
|
||||
width: 450
|
||||
color: Config.catppuccin.base
|
||||
color: Colors.base
|
||||
radius: 5
|
||||
border.color: Config.catppuccin.mantle
|
||||
border.color: Colors.mantle
|
||||
border.width: 2
|
||||
|
||||
ColumnLayout {
|
||||
|
@ -64,9 +64,9 @@ Singleton {
|
|||
id: searchContainer
|
||||
Layout.fillWidth: true
|
||||
implicitHeight: searchbox.implicitHeight + 10
|
||||
color: Config.catppuccin.base
|
||||
color: Colors.base
|
||||
radius: 3
|
||||
border.color: Config.catppuccin.mantle
|
||||
border.color: Colors.mantle
|
||||
|
||||
RowLayout {
|
||||
id: searchbox
|
||||
|
@ -76,7 +76,7 @@ Singleton {
|
|||
TextInput {
|
||||
id: search
|
||||
Layout.fillWidth: true
|
||||
color: Config.catppuccin.text
|
||||
color: Colors.text
|
||||
font.pointSize: 13
|
||||
|
||||
focus: true
|
||||
|
@ -252,7 +252,7 @@ Singleton {
|
|||
highlight: Rectangle {
|
||||
radius: 5
|
||||
color: "transparent"
|
||||
border.color: Config.catppuccin.lavender
|
||||
border.color: Colors.lavender
|
||||
border.width: 2
|
||||
}
|
||||
keyNavigationEnabled: true
|
||||
|
@ -293,7 +293,7 @@ Singleton {
|
|||
}
|
||||
Text {
|
||||
text: modelData.name
|
||||
color: Config.catppuccin.text
|
||||
color: Colors.text
|
||||
font.family: "JetBrainsMono Nerd Font Mono"
|
||||
font.pointSize: 13
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
|
|
|
@ -106,7 +106,7 @@ Scope {
|
|||
property: "width"
|
||||
from: rect.width
|
||||
to: 0
|
||||
duration: failed ? 10000 : 800
|
||||
duration: root.failed ? 10000 : 800
|
||||
onFinished: popupLoader.active = false
|
||||
|
||||
// Pause the animation when the mouse is hovering over the popup,
|
||||
|
|
25
modules/style/quickshell/shell/config/Colors.qml
Normal file
25
modules/style/quickshell/shell/config/Colors.qml
Normal file
|
@ -0,0 +1,25 @@
|
|||
pragma Singleton
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
readonly property color base: "#1e1e2e"
|
||||
readonly property color mantle: "#181825"
|
||||
readonly property color surface0: "#313244"
|
||||
readonly property color surface1: "#45475a"
|
||||
readonly property color surface2: "#585b70"
|
||||
readonly property color text: "#cdd6f4"
|
||||
readonly property color rosewater: "#f5e0dc"
|
||||
readonly property color lavender: "#b4befe"
|
||||
readonly property color red: "#f38ba8"
|
||||
readonly property color peach: "#fab387"
|
||||
readonly property color yellow: "#f9e2af"
|
||||
readonly property color green: "#a6e3a1"
|
||||
readonly property color teal: "#a6e3a1"
|
||||
readonly property color blue: "#89b4fa"
|
||||
readonly property color mauve: "#cba6f7"
|
||||
readonly property color flamingo: "#f2cdcd"
|
||||
}
|
|
@ -25,24 +25,6 @@ Singleton {
|
|||
readonly property int rounding: 0
|
||||
}
|
||||
|
||||
readonly property QtObject catppuccin: QtObject {
|
||||
readonly property color base: "#1e1e2e"
|
||||
readonly property color mantle: "#181825"
|
||||
readonly property color surface0: "#313244"
|
||||
readonly property color surface1: "#45475a"
|
||||
readonly property color surface2: "#585b70"
|
||||
readonly property color text: "#cdd6f4"
|
||||
readonly property color rosewater: "#f5e0dc"
|
||||
readonly property color lavender: "#b4befe"
|
||||
readonly property color red: "#f38ba8"
|
||||
readonly property color peach: "#fab387"
|
||||
readonly property color yellow: "#f9e2af"
|
||||
readonly property color green: "#a6e3a1"
|
||||
readonly property color teal: "#a6e3a1"
|
||||
readonly property color blue: "#89b4fa"
|
||||
readonly property color mauve: "#cba6f7"
|
||||
readonly property color flamingo: "#f2cdcd"
|
||||
}
|
||||
readonly property QtObject volumeslider: QtObject {
|
||||
readonly property int width: 50
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Qt.labs.folderlistmodel 2.9
|
||||
|
||||
PanelWindow {
|
||||
id: root
|
||||
|
@ -9,6 +10,24 @@ PanelWindow {
|
|||
WlrLayershell.layer: WlrLayer.Background
|
||||
WlrLayershell.namespace: "shell:background"
|
||||
|
||||
// property string basePath: "file:///home/cr/Documents/Backgrounds/"
|
||||
// property var absPath: folderModel.get(Math.floor(Math.random() * folderModel.count), "filePath")
|
||||
// property var finalPath: absPath
|
||||
|
||||
// property bool _: log()
|
||||
// function log() {
|
||||
// console.log(absPath);
|
||||
// console.log(folderModel.count);
|
||||
// return true;
|
||||
// }
|
||||
FolderListModel {
|
||||
id: folderModel
|
||||
// folder: root.basePath
|
||||
nameFilters: ["*.png"]
|
||||
showDirs: false
|
||||
showFiles: true
|
||||
}
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
bottom: true
|
||||
|
@ -16,13 +35,21 @@ PanelWindow {
|
|||
right: true
|
||||
}
|
||||
|
||||
Item {
|
||||
id: background
|
||||
anchors.fill: parent
|
||||
Image {
|
||||
id: image
|
||||
asynchronous: true
|
||||
source: "/home/cr/repos/projects/nichts/modules/style/wholefoods.png"
|
||||
// Item {
|
||||
// id: background
|
||||
// anchors.fill: parent
|
||||
// Image {
|
||||
// id: image
|
||||
// source: Qt.resolvedUrl(root.finalPath)
|
||||
// }
|
||||
// }
|
||||
Timer {
|
||||
id: timer
|
||||
// 10 minutes
|
||||
interval: 1000 * 60 * 10
|
||||
running: false
|
||||
onTriggered: {
|
||||
root.popupOpacity = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ Rectangle {
|
|||
width: text.width + 5
|
||||
height: text.height + 5
|
||||
implicitWidth: width
|
||||
border.color: Config.catppuccin.rosewater
|
||||
border.color: Colors.rosewater
|
||||
border.width: 0
|
||||
radius: 5
|
||||
color: "transparent"
|
||||
|
@ -24,7 +24,7 @@ Rectangle {
|
|||
font.family: "JetBrainsMono NF Mono"
|
||||
font.pointSize: 15
|
||||
|
||||
color: Config.catppuccin.text
|
||||
color: Colors.text
|
||||
}
|
||||
|
||||
SystemClock {
|
||||
|
|
|
@ -36,7 +36,7 @@ Rectangle {
|
|||
// height: workspaces.length * root.wsItemHeight
|
||||
implicitWidth: list.implicitWidth
|
||||
color: "transparent"
|
||||
border.color: Config.catppuccin.rosewater
|
||||
border.color: Colors.rosewater
|
||||
border.width: 0
|
||||
radius: 7
|
||||
|
||||
|
@ -93,9 +93,9 @@ Rectangle {
|
|||
height: wsItem.height - 5
|
||||
width: parent.width * wsItem.animActive
|
||||
radius: height / 2
|
||||
border.color: Config.catppuccin.mantle
|
||||
border.color: Colors.mantle
|
||||
border.width: 0
|
||||
color: Config.catppuccin.blue
|
||||
color: Colors.blue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,10 +5,10 @@ import Quickshell.Wayland
|
|||
import QtQuick
|
||||
import QtQuick.Effects
|
||||
|
||||
import "../bar"
|
||||
import qs.modules.bar
|
||||
|
||||
import "../../config"
|
||||
import "../"
|
||||
import qs.config
|
||||
import qs.modules
|
||||
|
||||
Variants {
|
||||
model: Quickshell.screens
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
//@ pragma Env QS_NO_RELOAD_POPUP=1
|
||||
//@ pragma Env QT_QML_GENERATE_QMLLS_INI
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
|
@ -10,10 +9,7 @@ import qs
|
|||
ShellRoot {
|
||||
id: shellroot
|
||||
|
||||
Component.onCompleted: [Launcher.init()]
|
||||
Component.onCompleted: [Launcher.init(), AudioPopup.init()]
|
||||
|
||||
Drawers {}
|
||||
// Background {}Popup
|
||||
//
|
||||
|
||||
}
|
||||
|
|
|
@ -1,14 +1,30 @@
|
|||
{pkgs, ...}: {
|
||||
security = {
|
||||
polkit = {
|
||||
enable = true;
|
||||
package = pkgs.polkit;
|
||||
};
|
||||
|
||||
# Enable Soteria, a GTK-based Polkit authentication agent.
|
||||
soteria.enable = true;
|
||||
apparmor = {
|
||||
enable = true;
|
||||
killUnconfinedConfinables = true;
|
||||
packages = [pkgs.apparmor-profiles];
|
||||
};
|
||||
|
||||
pam.services = {
|
||||
login.kwallet = {
|
||||
enable = true;
|
||||
# package = pkgs.kdePackages.kwallet-pam;
|
||||
};
|
||||
niri = {
|
||||
allowNullPassword = true;
|
||||
kwallet = {
|
||||
enable = true;
|
||||
package = pkgs.kdePackages.kwallet-pam;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
environment.systemPackages = with pkgs.kdePackages; [
|
||||
kwallet # provides helper service
|
||||
kwallet-pam # provides helper service
|
||||
kwalletmanager # provides KCMs and stuff
|
||||
];
|
||||
}
|
||||
|
|
9
modules/system/system.mod.nix
Normal file
9
modules/system/system.mod.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{config, ...}: let
|
||||
machine-id = builtins.substring 0 32 (builtins.hashString "sha256" config.networking.hostName);
|
||||
in {
|
||||
system = {
|
||||
# My state version.
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
environment.etc."machine-id".text = "${machine-id}\n";
|
||||
}
|
|
@ -42,9 +42,7 @@ layout {
|
|||
active-gradient from="#E5989B" to="#FFB4A2" angle=45 relative-to="workspace-view" in="oklch longer hue"
|
||||
}
|
||||
border {
|
||||
width 1
|
||||
active-color "#000"
|
||||
inactive-color "#000"
|
||||
off
|
||||
}
|
||||
tab-indicator {
|
||||
width 2
|
||||
|
@ -69,10 +67,8 @@ layout {
|
|||
background-color "transparent"
|
||||
}
|
||||
// xwayland stuff
|
||||
spawn-at-startup "xwayland-satellite"
|
||||
spawn-at-startup "avizo-service"
|
||||
spawn-at-startup "keepassxc"
|
||||
spawn-at-startup "startxfce4"
|
||||
// spawn-at-startup "xwayland-satellite"
|
||||
spawn-at-startup "kwalletd6"
|
||||
spawn-at-startup "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell"
|
||||
environment {
|
||||
DISPLAY ":0"
|
||||
|
@ -93,7 +89,33 @@ overview {
|
|||
backdrop-color "#777777"
|
||||
}
|
||||
animations {
|
||||
// off
|
||||
window-close {
|
||||
duration-ms 250
|
||||
curve "linear"
|
||||
custom-shader r"
|
||||
vec4 fall_and_rotate(vec3 coords_geo, vec3 size_geo) {
|
||||
|
||||
float progress = niri_clamped_progress * niri_clamped_progress;
|
||||
vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy;
|
||||
coords.y -= progress * 1440.0;
|
||||
float random = (niri_random_seed - 0.5) / 2.0;
|
||||
random = sign(random) - random;
|
||||
float max_angle = 0.5 * random;
|
||||
float angle = progress * max_angle;
|
||||
mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
|
||||
coords = rotate * coords;
|
||||
coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0);
|
||||
vec3 coords_tex = niri_geo_to_tex * coords_geo;
|
||||
vec4 color = texture2D(niri_tex, coords_tex.st);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
vec4 close_color(vec3 coords_geo, vec3 size_geo) {
|
||||
return fall_and_rotate(coords_geo, size_geo);
|
||||
}
|
||||
"
|
||||
}
|
||||
}
|
||||
window-rule {
|
||||
match app-id="unset"
|
||||
|
@ -130,6 +152,9 @@ binds {
|
|||
Mod+Return {
|
||||
spawn "ghostty"
|
||||
}
|
||||
Mod+B {
|
||||
spawn "brave"
|
||||
}
|
||||
Mod+D {
|
||||
spawn "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell msg launcher open"
|
||||
}
|
||||
|
|
|
@ -15,21 +15,19 @@ in {
|
|||
# or with unexpected env vars set from wrappers.
|
||||
# See #160923 for more info.
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals =
|
||||
[
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.kdePackages.xdg-desktop-portal-kde
|
||||
]
|
||||
++ (
|
||||
optional config.programs.niri.enable
|
||||
pkgs.xdg-desktop-portal-gnome
|
||||
)
|
||||
++ (
|
||||
optional config.programs.hyprland.enable
|
||||
pkgs.xdg-desktop-portal-hyprland
|
||||
);
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.kdePackages.xdg-desktop-portal-kde
|
||||
pkgs.kdePackages.kwallet
|
||||
pkgs.xdg-desktop-portal-gnome
|
||||
];
|
||||
config = {
|
||||
hyprland.default = mkIf config.programs.hyprland.enable ["*"];
|
||||
common = {
|
||||
"org.freedesktop.impl.portal.Secret" = [
|
||||
"kwallet"
|
||||
];
|
||||
"org.freedesktop.secrets" = ["kwalletd6"];
|
||||
};
|
||||
niri = {
|
||||
default = [
|
||||
"gnome"
|
||||
|
@ -44,6 +42,4 @@ in {
|
|||
};
|
||||
};
|
||||
};
|
||||
environment.variables = {
|
||||
};
|
||||
}
|
||||
|
|
|
@ -29,11 +29,11 @@ in {
|
|||
|
||||
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
||||
|
||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||
XDG_SESSION_DESKTOP = "Hyprland";
|
||||
XDG_CURRENT_DESKTOP = "niri";
|
||||
XDG_SESSION_DESKTOP = "niri";
|
||||
XDG_SESSION_TYPE = "wayland";
|
||||
|
||||
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
|
||||
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
||||
|
||||
LIBSEAT_BACKEND = "logind";
|
||||
};
|
||||
|
|
|
@ -3,15 +3,7 @@
|
|||
pkgs,
|
||||
}: let
|
||||
inherit (pkgs) lib;
|
||||
helix = let
|
||||
latestNightly = (inputs.rust-overlay.lib.mkRustBin {} pkgs).nightly.latest.default;
|
||||
rustPlatform = pkgs.makeRustPlatform {
|
||||
rustc = latestNightly;
|
||||
cargo = latestNightly;
|
||||
stdenv = pkgs.clangStdenv;
|
||||
};
|
||||
in
|
||||
pkgs.callPackage ./helix {inherit rustPlatform;};
|
||||
helix = pkgs.callPackage ./helix {};
|
||||
kakoune = pkgs.callPackage ./kakoune.nix {};
|
||||
fish = pkgs.callPackage ./fish {inherit lib;};
|
||||
in {
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
{
|
||||
symlinkJoin,
|
||||
makeWrapper,
|
||||
callPackage,
|
||||
fetchzip,
|
||||
rustPlatform,
|
||||
alejandra,
|
||||
basedpyright,
|
||||
bash-language-server,
|
||||
callPackage,
|
||||
clang-tools,
|
||||
clippy,
|
||||
cmake-format,
|
||||
|
@ -14,57 +10,55 @@
|
|||
deadnix,
|
||||
deno,
|
||||
dprint,
|
||||
fetchzip,
|
||||
formats,
|
||||
gdb,
|
||||
golangci-lint-langserver,
|
||||
gopls,
|
||||
helix,
|
||||
kdePackages,
|
||||
kdlfmt,
|
||||
lazygit,
|
||||
lib,
|
||||
lldb_19,
|
||||
makeWrapper,
|
||||
nixd,
|
||||
ruff,
|
||||
rust-analyzer,
|
||||
rustPlatform,
|
||||
rustfmt,
|
||||
shellcheck,
|
||||
shfmt,
|
||||
simple-completion-language-server,
|
||||
superhtml,
|
||||
symlinkJoin,
|
||||
taplo,
|
||||
tinymist,
|
||||
typescript-language-server,
|
||||
vscode-langservers-extracted,
|
||||
zls,
|
||||
helix,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.meta) getExe;
|
||||
|
||||
custom-helix =
|
||||
(helix.override {inherit rustPlatform;}).overrideAttrs
|
||||
helix.overrideAttrs
|
||||
(finalAttrs: previousAttrs: {
|
||||
version = "25.07.1";
|
||||
version = "25.07.2";
|
||||
src = fetchzip {
|
||||
url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
|
||||
hash = "sha256-OLCJPleRHhQbHOm8EnMWDBV5qG4PKGCUhr4y8mSkvpg=";
|
||||
hash = "sha256-ZNsQwFfPXe6oewajx1tl68W60kVo7q2SuvTgy/o1HKk=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
RUSTFLAGS = "-Ctarget-cpu=native";
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (custom-helix) src;
|
||||
hash = "sha256-eVZVPyIk+kBq5hh+bzTveng6mb+6XAnCp0OAI1c+ObI=";
|
||||
hash = "sha256-3poZSvIrkx8lguxxDeNfngW6+4hH8TV/LHcZx5W5aXg=";
|
||||
};
|
||||
});
|
||||
|
||||
new-deadnix = deadnix.overrideAttrs (finalAttrs: previousAttrs: {
|
||||
|
||||
});
|
||||
|
||||
toml = formats.toml {};
|
||||
|
||||
helix-languages = callPackage ./languages.nix {inherit lib;};
|
||||
|
@ -93,6 +87,10 @@
|
|||
mouse = true;
|
||||
bufferline = "multiple";
|
||||
soft-wrap.enable = true;
|
||||
word-completion = {
|
||||
enable = true;
|
||||
trigger-length = 2;
|
||||
};
|
||||
cursor-shape = {
|
||||
insert = "bar";
|
||||
normal = "block";
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
nil,
|
||||
ruff,
|
||||
shfmt,
|
||||
simple-completion-language-server,
|
||||
typescript-language-server,
|
||||
vscode-langservers-extracted,
|
||||
zls,
|
||||
|
@ -29,17 +28,17 @@
|
|||
|
||||
# a newer nil version, for pipes support.
|
||||
new-nil = nil.overrideAttrs (_: {
|
||||
version = "unstable-02-06-2025";
|
||||
version = "unstable-18-07-2025";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "oxalica";
|
||||
repo = "nil";
|
||||
rev = "577d160da311cc7f5042038456a0713e9863d09e";
|
||||
hash = "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=";
|
||||
rev = "524ae2d67dd84d99a10f409ed6cd8e4e7b3cae3f";
|
||||
hash = "sha256-Uy2qzd+fMoBcp4NPSO7DavEC1pGMegmAqoEMvmXbIQU=";
|
||||
};
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (new-nil) src;
|
||||
hash = "sha256-uZsLlFU9GKLvFllF7Kf5Q7HfN26KQojf4rvOb9p7Rjs=";
|
||||
hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8=";
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -90,12 +89,6 @@
|
|||
auto-format = true;
|
||||
language-servers = ["dprint" "typescript-language-server"];
|
||||
}
|
||||
{
|
||||
name = "jjdescription";
|
||||
scope = "source.jjdescription";
|
||||
file-types = ["jjdescription"];
|
||||
language-servers = ["scls"];
|
||||
}
|
||||
{
|
||||
name = "json";
|
||||
formatter = mark "json";
|
||||
|
@ -104,11 +97,11 @@
|
|||
name = "markdown";
|
||||
auto-format = true;
|
||||
formatter = mark "md";
|
||||
language-servers = ["scls" "taplo"];
|
||||
language-servers = ["taplo"];
|
||||
}
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = ["nil" "scls" "deadnix"];
|
||||
language-servers = ["nil"];
|
||||
}
|
||||
{
|
||||
name = "qml";
|
||||
|
@ -172,12 +165,27 @@
|
|||
};
|
||||
|
||||
rust-analyzer = {
|
||||
config = {
|
||||
config.rust-analyzer = {
|
||||
checkOnSave.command = "clippy";
|
||||
procMacro.enable = true;
|
||||
cargo = {
|
||||
loadOutDirsFromCheck = true;
|
||||
features = "all";
|
||||
};
|
||||
assist = {
|
||||
preferSelf = true;
|
||||
};
|
||||
check = {
|
||||
command = "clippy";
|
||||
extraArgs = ["--" "-W" "clippy::pedantic" "-W" "clippy::nursery" "-W" "clippy::perf"];
|
||||
};
|
||||
cargo.features = "all";
|
||||
lens = {
|
||||
references = true;
|
||||
methodReferences = true;
|
||||
};
|
||||
completion.autoimport.enable = true;
|
||||
experimental.procAttrMacros = true;
|
||||
interpret.tests = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -220,26 +228,22 @@
|
|||
nil = {
|
||||
command = getExe new-nil;
|
||||
# alejandro
|
||||
config.nil.formatting.command = ["${getExe alejandra}" "-q"];
|
||||
config.nil = {
|
||||
formatting.command = ["${getExe alejandra}" "-q"];
|
||||
diagnostics = {
|
||||
bindingEndHintMinLines = 3;
|
||||
};
|
||||
nix.flake = {
|
||||
autoArchive = true;
|
||||
# autoEvalInputs = true;
|
||||
nixpkgsInputName = "nixpkgs";
|
||||
};
|
||||
};
|
||||
};
|
||||
deadnix = {
|
||||
command = getExe new-deadnix;
|
||||
};
|
||||
|
||||
scls = {
|
||||
command = getExe simple-completion-language-server;
|
||||
config = {
|
||||
max_completion_items = 100; # set max completion results len for each group: words, snippets, unicode-input
|
||||
feature_words = true; # enable completion by word
|
||||
feature_snippets = true; # enable snippets
|
||||
snippets_first = true; # completions will return before snippets by default
|
||||
snippets_inline_by_word_tail = false; # suggest snippets by WORD tail, for example text `xsq|` become `x^2|` when snippet `sq` has body `^2`
|
||||
feature_unicode_input = false; # enable "unicode input"
|
||||
feature_paths = false; # enable path completion
|
||||
feature_citations = false; # enable citation completion (only on `citation` feature enabled)
|
||||
};
|
||||
};
|
||||
|
||||
typescript-language-server = {
|
||||
command = getExe typescript-language-server;
|
||||
args = ["--stdio"];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue