Compare commits
No commits in common. "378828b8565a39bf0d9d72f5c7c41e19da5f56ed" and "42b2f141733ab2bdac3e329b8d647aff0f10b106" have entirely different histories.
378828b856
...
42b2f14173
40 changed files with 300 additions and 354 deletions
21
TODO.md
Normal file
21
TODO.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
## 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": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 315532800,
|
"lastModified": 315532800,
|
||||||
"narHash": "sha256-aW0rd3E6pilfWXcNrMwbA4ehW3BZJ0oep4LQbUgOrgg=",
|
"narHash": "sha256-X5WIcIkFxPhw7mS219TbEOgrugbMx/2cin09OlWobT8=",
|
||||||
"rev": "fa0ef8a6bb1651aa26c939aeb51b5f499e86b0ec",
|
"rev": "dab3a6e781554f965bde3def0aa2fda4eb8f1708",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre831232.fa0ef8a6bb16/nixexprs.tar.xz"
|
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre830668.dab3a6e78155/nixexprs.tar.xz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
|
@ -354,11 +354,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1752837946,
|
"lastModified": 1752701746,
|
||||||
"narHash": "sha256-oLkH/Mr0cfrjD6WRf6GqJV6sizX0ZgYqD6gFdziyKVo=",
|
"narHash": "sha256-OVqrNbAzMaVOBxdoLqbZyn0vOq9/XwcWVPVKJbHwz5Q=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "e55d519c280192d8d97695b6c5905a0d7a46f8fe",
|
"rev": "986749cdb9ca9078b66297d60bbf21d48e33a6cf",
|
||||||
"revCount": 647,
|
"revCount": 639,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
|
||||||
},
|
},
|
||||||
|
@ -374,6 +374,7 @@
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"quickshell": "quickshell",
|
"quickshell": "quickshell",
|
||||||
|
"rust-overlay": "rust-overlay_2",
|
||||||
"systems": "systems",
|
"systems": "systems",
|
||||||
"watt": "watt"
|
"watt": "watt"
|
||||||
}
|
}
|
||||||
|
@ -399,6 +400,26 @@
|
||||||
"type": "github"
|
"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": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347949,
|
"lastModified": 1689347949,
|
||||||
|
|
|
@ -67,6 +67,12 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
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.
|
# DetNix is doing too well these days not to use it.
|
||||||
determinate = {
|
determinate = {
|
||||||
url = "github:determinatesystems/determinate";
|
url = "github:determinatesystems/determinate";
|
||||||
|
|
|
@ -32,6 +32,7 @@ in {
|
||||||
microfetch
|
microfetch
|
||||||
mprocs
|
mprocs
|
||||||
nmap
|
nmap
|
||||||
|
polkit
|
||||||
ripgrep
|
ripgrep
|
||||||
smartmontools
|
smartmontools
|
||||||
television
|
television
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
console.keyMap = "uk";
|
console.keyMap = "uk";
|
||||||
|
security.polkit.enable = true;
|
||||||
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
||||||
services = {
|
services = {
|
||||||
fstrim.enable = lib.mkDefault true;
|
fstrim.enable = lib.mkDefault true;
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
{pkgs, ...}: let
|
{pkgs, ...}: let
|
||||||
# a newer nil version, for pipes support.
|
# a newer nil version, for pipes support.
|
||||||
new-nil = pkgs.nil.overrideAttrs (_: {
|
newer-nil = pkgs.nil.overrideAttrs (_: {
|
||||||
version = "unstable-18-07-2025";
|
version = "unstable-02-06-2025";
|
||||||
|
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
owner = "oxalica";
|
owner = "oxalica";
|
||||||
repo = "nil";
|
repo = "nil";
|
||||||
rev = "524ae2d67dd84d99a10f409ed6cd8e4e7b3cae3f";
|
rev = "577d160da311cc7f5042038456a0713e9863d09e";
|
||||||
hash = "sha256-Uy2qzd+fMoBcp4NPSO7DavEC1pGMegmAqoEMvmXbIQU=";
|
hash = "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=";
|
||||||
};
|
};
|
||||||
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
||||||
inherit (new-nil) src;
|
inherit (newer-nil) src;
|
||||||
hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8=";
|
hash = "sha256-uZsLlFU9GKLvFllF7Kf5Q7HfN26KQojf4rvOb9p7Rjs=";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
in {
|
in {
|
||||||
|
@ -74,6 +74,7 @@ in {
|
||||||
pdfpc
|
pdfpc
|
||||||
pfetch
|
pfetch
|
||||||
playerctl
|
playerctl
|
||||||
|
polkit
|
||||||
presenterm
|
presenterm
|
||||||
pulsemixer
|
pulsemixer
|
||||||
ripgrep
|
ripgrep
|
||||||
|
@ -94,6 +95,6 @@ in {
|
||||||
xournalpp
|
xournalpp
|
||||||
zathura
|
zathura
|
||||||
;
|
;
|
||||||
inherit new-nil;
|
inherit newer-nil;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
console.keyMap = "us";
|
console.keyMap = "us";
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
# boot.kernelPackages = pkgs.linuxPackagesFor xanmod_blox;
|
# boot.kernelPackages = pkgs.linuxPackagesFor xanmod_blox;
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
@ -19,14 +20,15 @@
|
||||||
system76-scheduler = {
|
system76-scheduler = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
};
|
};
|
||||||
|
security.pam.services.login.enableGnomeKeyring = true;
|
||||||
|
environment.systemPackages = [pkgs.seahorse];
|
||||||
meta = {
|
meta = {
|
||||||
mainUser.gitSigningKey = "";
|
mainUser.gitSigningKey = "";
|
||||||
};
|
};
|
||||||
modules = {
|
modules = {
|
||||||
system = {
|
system = {
|
||||||
isGraphical = true;
|
|
||||||
impermanence.enable = true;
|
impermanence.enable = true;
|
||||||
boot = {
|
boot = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
anki
|
anki
|
||||||
asciinema
|
asciinema
|
||||||
beets
|
beets
|
||||||
|
bitwarden-cli
|
||||||
|
bitwarden-desktop
|
||||||
bubblewrap
|
bubblewrap
|
||||||
cachix
|
cachix
|
||||||
calc
|
calc
|
||||||
|
@ -29,9 +31,9 @@
|
||||||
impala
|
impala
|
||||||
imv
|
imv
|
||||||
inetutils
|
inetutils
|
||||||
inshellisense
|
|
||||||
joplin-desktop
|
joplin-desktop
|
||||||
jujutsu
|
jujutsu
|
||||||
|
julia
|
||||||
just
|
just
|
||||||
keepassxc
|
keepassxc
|
||||||
lazygit
|
lazygit
|
||||||
|
@ -48,6 +50,7 @@
|
||||||
pavucontrol
|
pavucontrol
|
||||||
pdfarranger
|
pdfarranger
|
||||||
picard
|
picard
|
||||||
|
polkit
|
||||||
pulsemixer
|
pulsemixer
|
||||||
python3
|
python3
|
||||||
pwvucontrol
|
pwvucontrol
|
||||||
|
@ -61,6 +64,7 @@
|
||||||
spotify
|
spotify
|
||||||
starship
|
starship
|
||||||
telegram-desktop
|
telegram-desktop
|
||||||
|
texliveFull
|
||||||
thunderbird
|
thunderbird
|
||||||
topiary
|
topiary
|
||||||
tor-browser
|
tor-browser
|
||||||
|
@ -69,6 +73,7 @@
|
||||||
typst
|
typst
|
||||||
vesktop
|
vesktop
|
||||||
vivid
|
vivid
|
||||||
|
walker
|
||||||
wayneko
|
wayneko
|
||||||
wireguard-tools
|
wireguard-tools
|
||||||
xdg-utils
|
xdg-utils
|
||||||
|
@ -77,13 +82,17 @@
|
||||||
zathura
|
zathura
|
||||||
zotero
|
zotero
|
||||||
zoxide
|
zoxide
|
||||||
curl
|
# coreutils-full # All of the GNU coreutils
|
||||||
git
|
curl # I sometimes need to curl stuff
|
||||||
|
git # take a guess
|
||||||
wget
|
wget
|
||||||
unzip
|
unzip # zipping and unzipping stuff
|
||||||
zip
|
zip
|
||||||
util-linux
|
util-linux
|
||||||
zed-editor
|
;
|
||||||
|
inherit
|
||||||
|
(pkgs.wineWowPackages)
|
||||||
|
waylandFull
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
console.keyMap = "uk";
|
console.keyMap = "uk";
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
programs.nix-ld.enable = true;
|
programs.nix-ld.enable = true;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
console.keyMap = "uk";
|
console.keyMap = "uk";
|
||||||
|
security.polkit.enable = true;
|
||||||
programs.nix-ld.enable = false;
|
programs.nix-ld.enable = false;
|
||||||
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
||||||
services = {
|
services = {
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
microfetch
|
microfetch
|
||||||
nmap
|
nmap
|
||||||
pfetch
|
pfetch
|
||||||
|
polkit
|
||||||
ripgrep
|
ripgrep
|
||||||
smartmontools
|
smartmontools
|
||||||
util-linux
|
util-linux
|
||||||
|
|
|
@ -11,6 +11,16 @@
|
||||||
inherit (config.modules.system) systemType;
|
inherit (config.modules.system) systemType;
|
||||||
in {
|
in {
|
||||||
options.modules.system = {
|
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 {
|
users = mkOption {
|
||||||
type = listOf str;
|
type = listOf str;
|
||||||
default = ["cr"];
|
default = ["cr"];
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
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,13 +9,15 @@
|
||||||
# https://peter.sh/experiments/chromium-command-line-switches/
|
# https://peter.sh/experiments/chromium-command-line-switches/
|
||||||
flags = concatStringsSep " " [
|
flags = concatStringsSep " " [
|
||||||
"--no-first-run"
|
"--no-first-run"
|
||||||
"--enable-features=UseOzonePlatform"
|
"--use-vulkan"
|
||||||
|
"--enable-features=Vulkan,UseOzonePlatform"
|
||||||
"--enable-gpu-rasterization"
|
"--enable-gpu-rasterization"
|
||||||
"--force-dark-mode"
|
"--force-dark-mode"
|
||||||
"--enable-smooth-scrolling"
|
"--enable-smooth-scrolling"
|
||||||
"--enable-features=UseOzonePlatform"
|
"--enable-features=UseOzonePlatform"
|
||||||
"--ozone-platform=wayland"
|
"--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'"
|
"--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 {
|
brave-wrapped = pkgs.symlinkJoin {
|
||||||
name = "brave";
|
name = "brave";
|
||||||
|
@ -214,8 +216,6 @@ in {
|
||||||
"mnjggcdmjocbbbhaepdhchncahnbgone"
|
"mnjggcdmjocbbbhaepdhchncahnbgone"
|
||||||
# Decentraleyes
|
# Decentraleyes
|
||||||
"ldpochfccmkkmhdbclfhpagapcfdljkj"
|
"ldpochfccmkkmhdbclfhpagapcfdljkj"
|
||||||
# Humble new tab page
|
|
||||||
"mfgdmpfihlmdekaclngibpjhdebndhdj"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
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;
|
# font-style-bold-italic = JetBrainsMono NF Italic;
|
||||||
|
|
||||||
app-notifications = "no-clipboard-copy";
|
app-notifications = "no-clipboard-copy";
|
||||||
background-opacity = 0.9;
|
background-opacity = 0.75;
|
||||||
bold-is-bright = "true";
|
bold-is-bright = "true";
|
||||||
confirm-close-surface = "false";
|
confirm-close-surface = "false";
|
||||||
cursor-style-blink = "false";
|
cursor-style-blink = "false";
|
||||||
|
|
|
@ -24,16 +24,9 @@
|
||||||
log_level = "ERROR"
|
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 {
|
btop-wrapped = pkgs.symlinkJoin {
|
||||||
name = "btop-wrapped";
|
name = "btop-wrapped";
|
||||||
paths = [btop-no-desktop-entry];
|
paths = [pkgs.btop];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/btop --set XDG_CONFIG_HOME "${btop-settings}"
|
wrapProgram $out/bin/btop --set XDG_CONFIG_HOME "${btop-settings}"
|
||||||
|
|
|
@ -10,7 +10,8 @@ in {
|
||||||
services.spotifyd = mkIf isGraphical {
|
services.spotifyd = mkIf isGraphical {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
backend = "pipe";
|
};
|
||||||
|
config = {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
in {
|
in {
|
||||||
options.modules.programs.ssh.enable = mkEnableOption "ssh";
|
options.modules.programs.ssh.enable = mkEnableOption "ssh";
|
||||||
config = {
|
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 = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ports = [22];
|
ports = [22];
|
||||||
|
|
|
@ -82,6 +82,9 @@ in {
|
||||||
GTK_THEME = cfg.theme.name;
|
GTK_THEME = cfg.theme.name;
|
||||||
XCURSOR_THEME = "BreezeX-RosePine-Linux";
|
XCURSOR_THEME = "BreezeX-RosePine-Linux";
|
||||||
XCURSOR_SIZE = cursorSize;
|
XCURSOR_SIZE = cursorSize;
|
||||||
|
|
||||||
|
HYPRCURSOR_THEME = "BreezeX-RosePine-Linux";
|
||||||
|
HYPRCURSOR_SIZE = cursorSize;
|
||||||
};
|
};
|
||||||
etc = let
|
etc = let
|
||||||
css = import ./gtk-colors.nix {inherit (config.modules.style.colorScheme) colors;};
|
css = import ./gtk-colors.nix {inherit (config.modules.style.colorScheme) colors;};
|
||||||
|
|
|
@ -34,10 +34,7 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config =
|
||||||
qt = {
|
mkIf cfg.enable {
|
||||||
enable = true;
|
|
||||||
platformTheme = "qt5ct";
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,11 +19,6 @@ in {
|
||||||
qt6.qt5compat
|
qt6.qt5compat
|
||||||
qt6.qtmultimedia
|
qt6.qtmultimedia
|
||||||
qt6.qtdeclarative
|
qt6.qtdeclarative
|
||||||
qt6.qtsvg
|
|
||||||
qt6.qtwayland
|
|
||||||
qt6.qtbase
|
|
||||||
kdePackages.breeze
|
|
||||||
kdePackages.breeze-icons
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# taken from outfoxxed.
|
# taken from outfoxxed.
|
||||||
|
|
|
@ -1,105 +1,103 @@
|
||||||
pragma ComponentBehavior: Bound
|
|
||||||
pragma Singleton
|
pragma Singleton
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Services.Pipewire
|
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
|
import Quickshell.Services.Pipewire
|
||||||
import qs.config
|
|
||||||
|
|
||||||
Singleton {
|
Singleton {
|
||||||
id: root
|
id: audioPopup
|
||||||
|
property bool popupOpen: true
|
||||||
|
|
||||||
property real volume: Pipewire.defaultAudioSink?.audio?.volume ?? 0
|
property var volume: sink.ready ? audioPopup.sink.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 {
|
PwObjectTracker {
|
||||||
objects: [Pipewire.defaultAudioSink]
|
objects: [audioPopup.sink]
|
||||||
}
|
}
|
||||||
|
|
||||||
onVolumeChanged: {
|
Timer {
|
||||||
root.popupOpacity = 1;
|
id: timer
|
||||||
loader.activeAsync = true;
|
interval: 3000
|
||||||
timer.restart();
|
running: false
|
||||||
timer_opacity.restart();
|
repeat: false
|
||||||
|
|
||||||
|
onTriggered: audioPopup.visible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
LazyLoader {
|
LazyLoader {
|
||||||
id: loader
|
id: loader
|
||||||
activeAsync: false
|
activeAsync: audioPopup.popupOpen
|
||||||
|
|
||||||
PanelWindow {
|
PanelWindow {
|
||||||
id: popup
|
id: popup
|
||||||
|
width: 400
|
||||||
|
height: 30
|
||||||
visible: true
|
visible: true
|
||||||
implicitWidth: rect.implicitWidth
|
|
||||||
implicitHeight: 50
|
// Give the window an empty click mask so all clicks pass through it.
|
||||||
color: "transparent"
|
|
||||||
mask: Region {}
|
mask: Region {}
|
||||||
exclusionMode: ExclusionMode.Ignore
|
|
||||||
|
// Use the wlroots specific layer property to ensure it displays over
|
||||||
|
// fullscreen windows.
|
||||||
WlrLayershell.layer: WlrLayer.Overlay
|
WlrLayershell.layer: WlrLayer.Overlay
|
||||||
|
|
||||||
anchors.bottom: true
|
color: "transparent"
|
||||||
margins.bottom: 100
|
|
||||||
|
anchors {
|
||||||
|
bottom: true
|
||||||
|
}
|
||||||
|
|
||||||
|
margins {
|
||||||
|
bottom: 250
|
||||||
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: rect
|
id: rect
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
anchors.fill: parent
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
color: Colors.surface0
|
color: "white"
|
||||||
implicitWidth: 300
|
height: parent.height
|
||||||
implicitHeight: parent.implicitHeight
|
width: parent.width
|
||||||
radius: 5
|
radius: 5
|
||||||
opacity: root.popupOpacity
|
opacity: 0
|
||||||
|
|
||||||
Behavior on opacity {
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
}
|
||||||
|
|
||||||
|
Behavior on width {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: 500
|
duration: 200
|
||||||
easing.type: Easing.OutCubic
|
easing.type: Easing.OutCubic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bar
|
color: "black"
|
||||||
color: Colors.blue
|
height: 20
|
||||||
implicitWidth: rect.implicitWidth * root.volume - 20
|
radius: height / 2
|
||||||
implicitHeight: 30
|
|
||||||
topRightRadius: 5
|
|
||||||
bottomRightRadius: 5
|
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
left: parent.left
|
left: parent.left
|
||||||
verticalCenter: parent.verticalCenter
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on implicitWidth {
|
topLeftRadius: 0
|
||||||
NumberAnimation {
|
bottomLeftRadius: 0
|
||||||
duration: 300
|
|
||||||
easing.type: Easing.OutCubic
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
}
|
width: parent.width * audioPopup.sink.audio.volume
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
function init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,9 +49,9 @@ Singleton {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
width: 450
|
width: 450
|
||||||
color: Colors.base
|
color: Config.catppuccin.base
|
||||||
radius: 5
|
radius: 5
|
||||||
border.color: Colors.mantle
|
border.color: Config.catppuccin.mantle
|
||||||
border.width: 2
|
border.width: 2
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
@ -64,9 +64,9 @@ Singleton {
|
||||||
id: searchContainer
|
id: searchContainer
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
implicitHeight: searchbox.implicitHeight + 10
|
implicitHeight: searchbox.implicitHeight + 10
|
||||||
color: Colors.base
|
color: Config.catppuccin.base
|
||||||
radius: 3
|
radius: 3
|
||||||
border.color: Colors.mantle
|
border.color: Config.catppuccin.mantle
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
id: searchbox
|
id: searchbox
|
||||||
|
@ -76,7 +76,7 @@ Singleton {
|
||||||
TextInput {
|
TextInput {
|
||||||
id: search
|
id: search
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
color: Colors.text
|
color: Config.catppuccin.text
|
||||||
font.pointSize: 13
|
font.pointSize: 13
|
||||||
|
|
||||||
focus: true
|
focus: true
|
||||||
|
@ -252,7 +252,7 @@ Singleton {
|
||||||
highlight: Rectangle {
|
highlight: Rectangle {
|
||||||
radius: 5
|
radius: 5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Colors.lavender
|
border.color: Config.catppuccin.lavender
|
||||||
border.width: 2
|
border.width: 2
|
||||||
}
|
}
|
||||||
keyNavigationEnabled: true
|
keyNavigationEnabled: true
|
||||||
|
@ -293,7 +293,7 @@ Singleton {
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
text: modelData.name
|
text: modelData.name
|
||||||
color: Colors.text
|
color: Config.catppuccin.text
|
||||||
font.family: "JetBrainsMono Nerd Font Mono"
|
font.family: "JetBrainsMono Nerd Font Mono"
|
||||||
font.pointSize: 13
|
font.pointSize: 13
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
|
|
@ -106,7 +106,7 @@ Scope {
|
||||||
property: "width"
|
property: "width"
|
||||||
from: rect.width
|
from: rect.width
|
||||||
to: 0
|
to: 0
|
||||||
duration: root.failed ? 10000 : 800
|
duration: failed ? 10000 : 800
|
||||||
onFinished: popupLoader.active = false
|
onFinished: popupLoader.active = false
|
||||||
|
|
||||||
// Pause the animation when the mouse is hovering over the popup,
|
// Pause the animation when the mouse is hovering over the popup,
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
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,6 +25,24 @@ Singleton {
|
||||||
readonly property int rounding: 0
|
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 QtObject volumeslider: QtObject {
|
||||||
readonly property int width: 50
|
readonly property int width: 50
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
import Qt.labs.folderlistmodel 2.9
|
|
||||||
|
|
||||||
PanelWindow {
|
PanelWindow {
|
||||||
id: root
|
id: root
|
||||||
|
@ -10,24 +9,6 @@ PanelWindow {
|
||||||
WlrLayershell.layer: WlrLayer.Background
|
WlrLayershell.layer: WlrLayer.Background
|
||||||
WlrLayershell.namespace: "shell: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 {
|
anchors {
|
||||||
top: true
|
top: true
|
||||||
bottom: true
|
bottom: true
|
||||||
|
@ -35,21 +16,13 @@ PanelWindow {
|
||||||
right: true
|
right: true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Item {
|
Item {
|
||||||
// id: background
|
id: background
|
||||||
// anchors.fill: parent
|
anchors.fill: parent
|
||||||
// Image {
|
Image {
|
||||||
// id: image
|
id: image
|
||||||
// source: Qt.resolvedUrl(root.finalPath)
|
asynchronous: true
|
||||||
// }
|
source: "/home/cr/repos/projects/nichts/modules/style/wholefoods.png"
|
||||||
// }
|
|
||||||
Timer {
|
|
||||||
id: timer
|
|
||||||
// 10 minutes
|
|
||||||
interval: 1000 * 60 * 10
|
|
||||||
running: false
|
|
||||||
onTriggered: {
|
|
||||||
root.popupOpacity = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ Rectangle {
|
||||||
width: text.width + 5
|
width: text.width + 5
|
||||||
height: text.height + 5
|
height: text.height + 5
|
||||||
implicitWidth: width
|
implicitWidth: width
|
||||||
border.color: Colors.rosewater
|
border.color: Config.catppuccin.rosewater
|
||||||
border.width: 0
|
border.width: 0
|
||||||
radius: 5
|
radius: 5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
@ -24,7 +24,7 @@ Rectangle {
|
||||||
font.family: "JetBrainsMono NF Mono"
|
font.family: "JetBrainsMono NF Mono"
|
||||||
font.pointSize: 15
|
font.pointSize: 15
|
||||||
|
|
||||||
color: Colors.text
|
color: Config.catppuccin.text
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemClock {
|
SystemClock {
|
||||||
|
|
|
@ -36,7 +36,7 @@ Rectangle {
|
||||||
// height: workspaces.length * root.wsItemHeight
|
// height: workspaces.length * root.wsItemHeight
|
||||||
implicitWidth: list.implicitWidth
|
implicitWidth: list.implicitWidth
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Colors.rosewater
|
border.color: Config.catppuccin.rosewater
|
||||||
border.width: 0
|
border.width: 0
|
||||||
radius: 7
|
radius: 7
|
||||||
|
|
||||||
|
@ -93,9 +93,9 @@ Rectangle {
|
||||||
height: wsItem.height - 5
|
height: wsItem.height - 5
|
||||||
width: parent.width * wsItem.animActive
|
width: parent.width * wsItem.animActive
|
||||||
radius: height / 2
|
radius: height / 2
|
||||||
border.color: Colors.mantle
|
border.color: Config.catppuccin.mantle
|
||||||
border.width: 0
|
border.width: 0
|
||||||
color: Colors.blue
|
color: Config.catppuccin.blue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,10 @@ import Quickshell.Wayland
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Effects
|
import QtQuick.Effects
|
||||||
|
|
||||||
import qs.modules.bar
|
import "../bar"
|
||||||
|
|
||||||
import qs.config
|
import "../../config"
|
||||||
import qs.modules
|
import "../"
|
||||||
|
|
||||||
Variants {
|
Variants {
|
||||||
model: Quickshell.screens
|
model: Quickshell.screens
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
//@ pragma Env QS_NO_RELOAD_POPUP=1
|
//@ pragma Env QS_NO_RELOAD_POPUP=1
|
||||||
|
//@ pragma Env QT_QML_GENERATE_QMLLS_INI
|
||||||
|
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
|
@ -9,7 +10,10 @@ import qs
|
||||||
ShellRoot {
|
ShellRoot {
|
||||||
id: shellroot
|
id: shellroot
|
||||||
|
|
||||||
Component.onCompleted: [Launcher.init(), AudioPopup.init()]
|
Component.onCompleted: [Launcher.init()]
|
||||||
|
|
||||||
Drawers {}
|
Drawers {}
|
||||||
|
// Background {}Popup
|
||||||
|
//
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,30 +1,14 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
security = {
|
security = {
|
||||||
# Enable Soteria, a GTK-based Polkit authentication agent.
|
polkit = {
|
||||||
soteria.enable = true;
|
enable = true;
|
||||||
|
package = pkgs.polkit;
|
||||||
|
};
|
||||||
|
|
||||||
apparmor = {
|
apparmor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
killUnconfinedConfinables = true;
|
killUnconfinedConfinables = true;
|
||||||
packages = [pkgs.apparmor-profiles];
|
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
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{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,7 +42,9 @@ layout {
|
||||||
active-gradient from="#E5989B" to="#FFB4A2" angle=45 relative-to="workspace-view" in="oklch longer hue"
|
active-gradient from="#E5989B" to="#FFB4A2" angle=45 relative-to="workspace-view" in="oklch longer hue"
|
||||||
}
|
}
|
||||||
border {
|
border {
|
||||||
off
|
width 1
|
||||||
|
active-color "#000"
|
||||||
|
inactive-color "#000"
|
||||||
}
|
}
|
||||||
tab-indicator {
|
tab-indicator {
|
||||||
width 2
|
width 2
|
||||||
|
@ -67,8 +69,10 @@ layout {
|
||||||
background-color "transparent"
|
background-color "transparent"
|
||||||
}
|
}
|
||||||
// xwayland stuff
|
// xwayland stuff
|
||||||
// spawn-at-startup "xwayland-satellite"
|
spawn-at-startup "xwayland-satellite"
|
||||||
spawn-at-startup "kwalletd6"
|
spawn-at-startup "avizo-service"
|
||||||
|
spawn-at-startup "keepassxc"
|
||||||
|
spawn-at-startup "startxfce4"
|
||||||
spawn-at-startup "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell"
|
spawn-at-startup "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell"
|
||||||
environment {
|
environment {
|
||||||
DISPLAY ":0"
|
DISPLAY ":0"
|
||||||
|
@ -89,33 +93,7 @@ overview {
|
||||||
backdrop-color "#777777"
|
backdrop-color "#777777"
|
||||||
}
|
}
|
||||||
animations {
|
animations {
|
||||||
window-close {
|
// off
|
||||||
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 {
|
window-rule {
|
||||||
match app-id="unset"
|
match app-id="unset"
|
||||||
|
@ -152,9 +130,6 @@ binds {
|
||||||
Mod+Return {
|
Mod+Return {
|
||||||
spawn "ghostty"
|
spawn "ghostty"
|
||||||
}
|
}
|
||||||
Mod+B {
|
|
||||||
spawn "brave"
|
|
||||||
}
|
|
||||||
Mod+D {
|
Mod+D {
|
||||||
spawn "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell msg launcher open"
|
spawn "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell msg launcher open"
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,19 +15,21 @@ in {
|
||||||
# or with unexpected env vars set from wrappers.
|
# or with unexpected env vars set from wrappers.
|
||||||
# See #160923 for more info.
|
# See #160923 for more info.
|
||||||
xdgOpenUsePortal = true;
|
xdgOpenUsePortal = true;
|
||||||
extraPortals = [
|
extraPortals =
|
||||||
pkgs.xdg-desktop-portal-gtk
|
[
|
||||||
pkgs.kdePackages.xdg-desktop-portal-kde
|
pkgs.xdg-desktop-portal-gtk
|
||||||
pkgs.kdePackages.kwallet
|
pkgs.kdePackages.xdg-desktop-portal-kde
|
||||||
pkgs.xdg-desktop-portal-gnome
|
]
|
||||||
];
|
++ (
|
||||||
|
optional config.programs.niri.enable
|
||||||
|
pkgs.xdg-desktop-portal-gnome
|
||||||
|
)
|
||||||
|
++ (
|
||||||
|
optional config.programs.hyprland.enable
|
||||||
|
pkgs.xdg-desktop-portal-hyprland
|
||||||
|
);
|
||||||
config = {
|
config = {
|
||||||
common = {
|
hyprland.default = mkIf config.programs.hyprland.enable ["*"];
|
||||||
"org.freedesktop.impl.portal.Secret" = [
|
|
||||||
"kwallet"
|
|
||||||
];
|
|
||||||
"org.freedesktop.secrets" = ["kwalletd6"];
|
|
||||||
};
|
|
||||||
niri = {
|
niri = {
|
||||||
default = [
|
default = [
|
||||||
"gnome"
|
"gnome"
|
||||||
|
@ -42,4 +44,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
environment.variables = {
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ in {
|
||||||
|
|
||||||
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
||||||
|
|
||||||
XDG_CURRENT_DESKTOP = "niri";
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
XDG_SESSION_DESKTOP = "niri";
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
XDG_SESSION_TYPE = "wayland";
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
|
||||||
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
|
||||||
|
|
||||||
LIBSEAT_BACKEND = "logind";
|
LIBSEAT_BACKEND = "logind";
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,15 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
}: let
|
}: let
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib;
|
||||||
helix = pkgs.callPackage ./helix {};
|
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;};
|
||||||
kakoune = pkgs.callPackage ./kakoune.nix {};
|
kakoune = pkgs.callPackage ./kakoune.nix {};
|
||||||
fish = pkgs.callPackage ./fish {inherit lib;};
|
fish = pkgs.callPackage ./fish {inherit lib;};
|
||||||
in {
|
in {
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
{
|
{
|
||||||
|
symlinkJoin,
|
||||||
|
makeWrapper,
|
||||||
|
callPackage,
|
||||||
|
fetchzip,
|
||||||
|
rustPlatform,
|
||||||
alejandra,
|
alejandra,
|
||||||
basedpyright,
|
basedpyright,
|
||||||
bash-language-server,
|
bash-language-server,
|
||||||
callPackage,
|
|
||||||
clang-tools,
|
clang-tools,
|
||||||
clippy,
|
clippy,
|
||||||
cmake-format,
|
cmake-format,
|
||||||
|
@ -10,55 +14,57 @@
|
||||||
deadnix,
|
deadnix,
|
||||||
deno,
|
deno,
|
||||||
dprint,
|
dprint,
|
||||||
fetchzip,
|
|
||||||
formats,
|
formats,
|
||||||
gdb,
|
gdb,
|
||||||
golangci-lint-langserver,
|
golangci-lint-langserver,
|
||||||
gopls,
|
gopls,
|
||||||
helix,
|
|
||||||
kdePackages,
|
kdePackages,
|
||||||
kdlfmt,
|
kdlfmt,
|
||||||
lazygit,
|
lazygit,
|
||||||
lib,
|
lib,
|
||||||
lldb_19,
|
lldb_19,
|
||||||
makeWrapper,
|
|
||||||
nixd,
|
nixd,
|
||||||
ruff,
|
ruff,
|
||||||
rust-analyzer,
|
rust-analyzer,
|
||||||
rustPlatform,
|
|
||||||
rustfmt,
|
rustfmt,
|
||||||
shellcheck,
|
shellcheck,
|
||||||
shfmt,
|
shfmt,
|
||||||
simple-completion-language-server,
|
simple-completion-language-server,
|
||||||
superhtml,
|
superhtml,
|
||||||
symlinkJoin,
|
|
||||||
taplo,
|
taplo,
|
||||||
tinymist,
|
tinymist,
|
||||||
typescript-language-server,
|
typescript-language-server,
|
||||||
vscode-langservers-extracted,
|
vscode-langservers-extracted,
|
||||||
zls,
|
zls,
|
||||||
|
helix,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
|
|
||||||
custom-helix =
|
custom-helix =
|
||||||
helix.overrideAttrs
|
(helix.override {inherit rustPlatform;}).overrideAttrs
|
||||||
(finalAttrs: previousAttrs: {
|
(finalAttrs: previousAttrs: {
|
||||||
version = "25.07.2";
|
version = "25.07.1";
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
|
url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
|
||||||
hash = "sha256-ZNsQwFfPXe6oewajx1tl68W60kVo7q2SuvTgy/o1HKk=";
|
hash = "sha256-OLCJPleRHhQbHOm8EnMWDBV5qG4PKGCUhr4y8mSkvpg=";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RUSTFLAGS = "-Ctarget-cpu=native";
|
||||||
|
|
||||||
doInstallCheck = false;
|
doInstallCheck = false;
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||||
inherit (custom-helix) src;
|
inherit (custom-helix) src;
|
||||||
hash = "sha256-3poZSvIrkx8lguxxDeNfngW6+4hH8TV/LHcZx5W5aXg=";
|
hash = "sha256-eVZVPyIk+kBq5hh+bzTveng6mb+6XAnCp0OAI1c+ObI=";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
new-deadnix = deadnix.overrideAttrs (finalAttrs: previousAttrs: {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
toml = formats.toml {};
|
toml = formats.toml {};
|
||||||
|
|
||||||
helix-languages = callPackage ./languages.nix {inherit lib;};
|
helix-languages = callPackage ./languages.nix {inherit lib;};
|
||||||
|
@ -87,10 +93,6 @@
|
||||||
mouse = true;
|
mouse = true;
|
||||||
bufferline = "multiple";
|
bufferline = "multiple";
|
||||||
soft-wrap.enable = true;
|
soft-wrap.enable = true;
|
||||||
word-completion = {
|
|
||||||
enable = true;
|
|
||||||
trigger-length = 2;
|
|
||||||
};
|
|
||||||
cursor-shape = {
|
cursor-shape = {
|
||||||
insert = "bar";
|
insert = "bar";
|
||||||
normal = "block";
|
normal = "block";
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
nil,
|
nil,
|
||||||
ruff,
|
ruff,
|
||||||
shfmt,
|
shfmt,
|
||||||
|
simple-completion-language-server,
|
||||||
typescript-language-server,
|
typescript-language-server,
|
||||||
vscode-langservers-extracted,
|
vscode-langservers-extracted,
|
||||||
zls,
|
zls,
|
||||||
|
@ -28,17 +29,17 @@
|
||||||
|
|
||||||
# a newer nil version, for pipes support.
|
# a newer nil version, for pipes support.
|
||||||
new-nil = nil.overrideAttrs (_: {
|
new-nil = nil.overrideAttrs (_: {
|
||||||
version = "unstable-18-07-2025";
|
version = "unstable-02-06-2025";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "oxalica";
|
owner = "oxalica";
|
||||||
repo = "nil";
|
repo = "nil";
|
||||||
rev = "524ae2d67dd84d99a10f409ed6cd8e4e7b3cae3f";
|
rev = "577d160da311cc7f5042038456a0713e9863d09e";
|
||||||
hash = "sha256-Uy2qzd+fMoBcp4NPSO7DavEC1pGMegmAqoEMvmXbIQU=";
|
hash = "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=";
|
||||||
};
|
};
|
||||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||||
inherit (new-nil) src;
|
inherit (new-nil) src;
|
||||||
hash = "sha256-Sljr3ff8hl/qm/0wqc1GXsEr1wWn7NAXmdrd5wHzUX8=";
|
hash = "sha256-uZsLlFU9GKLvFllF7Kf5Q7HfN26KQojf4rvOb9p7Rjs=";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -89,6 +90,12 @@
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
language-servers = ["dprint" "typescript-language-server"];
|
language-servers = ["dprint" "typescript-language-server"];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "jjdescription";
|
||||||
|
scope = "source.jjdescription";
|
||||||
|
file-types = ["jjdescription"];
|
||||||
|
language-servers = ["scls"];
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "json";
|
name = "json";
|
||||||
formatter = mark "json";
|
formatter = mark "json";
|
||||||
|
@ -97,11 +104,11 @@
|
||||||
name = "markdown";
|
name = "markdown";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter = mark "md";
|
formatter = mark "md";
|
||||||
language-servers = ["taplo"];
|
language-servers = ["scls" "taplo"];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "nix";
|
name = "nix";
|
||||||
language-servers = ["nil"];
|
language-servers = ["nil" "scls" "deadnix"];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "qml";
|
name = "qml";
|
||||||
|
@ -165,27 +172,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
rust-analyzer = {
|
rust-analyzer = {
|
||||||
config.rust-analyzer = {
|
config = {
|
||||||
checkOnSave.command = "clippy";
|
|
||||||
procMacro.enable = true;
|
|
||||||
cargo = {
|
|
||||||
loadOutDirsFromCheck = true;
|
|
||||||
features = "all";
|
|
||||||
};
|
|
||||||
assist = {
|
|
||||||
preferSelf = true;
|
|
||||||
};
|
|
||||||
check = {
|
check = {
|
||||||
command = "clippy";
|
command = "clippy";
|
||||||
extraArgs = ["--" "-W" "clippy::pedantic" "-W" "clippy::nursery" "-W" "clippy::perf"];
|
extraArgs = ["--" "-W" "clippy::pedantic" "-W" "clippy::nursery" "-W" "clippy::perf"];
|
||||||
};
|
};
|
||||||
lens = {
|
cargo.features = "all";
|
||||||
references = true;
|
|
||||||
methodReferences = true;
|
|
||||||
};
|
|
||||||
completion.autoimport.enable = true;
|
|
||||||
experimental.procAttrMacros = true;
|
|
||||||
interpret.tests = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -228,22 +220,26 @@
|
||||||
nil = {
|
nil = {
|
||||||
command = getExe new-nil;
|
command = getExe new-nil;
|
||||||
# alejandro
|
# alejandro
|
||||||
config.nil = {
|
config.nil.formatting.command = ["${getExe alejandra}" "-q"];
|
||||||
formatting.command = ["${getExe alejandra}" "-q"];
|
|
||||||
diagnostics = {
|
|
||||||
bindingEndHintMinLines = 3;
|
|
||||||
};
|
|
||||||
nix.flake = {
|
|
||||||
autoArchive = true;
|
|
||||||
# autoEvalInputs = true;
|
|
||||||
nixpkgsInputName = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
deadnix = {
|
deadnix = {
|
||||||
command = getExe new-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 = {
|
typescript-language-server = {
|
||||||
command = getExe typescript-language-server;
|
command = getExe typescript-language-server;
|
||||||
args = ["--stdio"];
|
args = ["--stdio"];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue