Compare commits

..

5 commits
main ... macos

Author SHA1 Message Date
mrflos
9d69a35a79 feat(nvim): version 0.10 2024-08-19 17:41:19 +03:00
mrflos
3673a7ea06 feat(nvim): avoid popups 2024-08-12 17:15:52 +03:00
mrflos
9a2a4f68ca fix(macos): new font syntax and typo in php conf 2024-08-09 13:24:48 +03:00
mrflos
6891dbfaf2 macos custom tweaks 2024-08-09 12:42:09 +03:00
mrflos
232b3546e1 wip macos config 2024-08-09 12:41:40 +03:00
21 changed files with 578 additions and 813 deletions

2
.gitignore vendored
View file

@ -1,4 +1,2 @@
.DS_Store .DS_Store
deploy/result
configuration.nix configuration.nix
darwin-configuration.nix

8
darwin-configuration.nix Normal file
View file

@ -0,0 +1,8 @@
# NixOS config entry point
# import the hardware and configuration files specific to your machine
{
imports =
[
./machines/MacMiniM2-darwin-configuration.nix
];
}

View file

@ -1,57 +0,0 @@
let
krops = builtins.fetchGit {
url = "https://cgit.krebsco.de/krops/";
};
lib = import "${krops}/lib";
pkgs = import "${krops}/pkgs" {};
source = name: lib.evalSource [
{
dotfiles.file = toString ../dotfiles;
machines.file = toString ../machines;
modules.file = toString ../modules;
nixos-config.symlink = "machines/${name}/configuration.nix";
nixpkgs.git = {
clean.exclude = ["/.version-suffix"];
ref = "086b448a5d54fd117f4dc2dee55c9f0ff461bdc1";
url = https://github.com/NixOS/nixpkgs;
shallow = true;
};
#secrets.pass = {
# dir = toString ./secrets";
# name = "${name}";
#};
}
];
zoro = pkgs.krops.writeDeploy "deploy-zoro" {
source = source "zoro";
target = lib.mkTarget "optisseur@10.42.0.3:4222" // {
extraOptions = [
#"-o"
#"ControlMaster=auto"
#"-o"
#"ControlPath=~/.ssh/master-%r@%h:%p"
#"-o"
#"ControlPersist=480m"
];
sudo = true;
};
};
sanji = pkgs.krops.writeDeploy "deploy-sanji" {
source = source "sanji";
target = "root@server02.mydomain.org";
};
in {
zoro = zoro;
sanji = sanji;
all = pkgs.writeScript "deploy-all-servers"
(lib.concatStringsSep "\n" [ zoro sanji ]);
}
# ssh-add -t 4h ~/.ssh/id_ed25519
# nix-build ./krops.nix -A zoro && ./result
# nix-build ./krops.nix -A sanji && ./result
# nix-build ./krops.nix -A all && ./result

2
dotfiles/init_yeswiki_repos.sh Normal file → Executable file
View file

@ -14,7 +14,7 @@
corebranch="doryphore-dev" corebranch="doryphore-dev"
curdir="$HOME/Developpements" #${PWD} curdir="$HOME/Developpements" #${PWD}
repos=$(curl --request GET --url "https://api.github.com/orgs/yeswiki/repos" | jq '.[].full_name' | tr -d "\"" | sort) repos=$(curl --request GET --url "https://api.github.com/orgs/yeswiki/repos?per_page=100" | jq '.[].full_name' | tr -d "\"" | sort)
# core # core
printf "\n================ Install YesWiki core ================\n" printf "\n================ Install YesWiki core ================\n"

View file

@ -89,5 +89,7 @@ background_opacity 1
#background_image ~/Nextcloud/Images/Wallpapers/kitty-bg.png #background_image ~/Nextcloud/Images/Wallpapers/kitty-bg.png
#background_image_layout cscaled #background_image_layout cscaled
#background_tint 0.99 #background_tint 0.99
#modify_font cell_height 130% modify_font cell_height 130%
startup_session ~/.config/kitty/session.conf startup_session ~/.config/kitty/session.conf
hide_window_decorations titlebar-only

View file

@ -1 +0,0 @@
quitOnTopLevelReturn: true

View file

@ -0,0 +1,21 @@
return {
{
-- Install markdown preview, use npx if available.
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
ft = { "markdown" },
build = function(plugin)
if vim.fn.executable("npx") then
vim.cmd("!cd " .. plugin.dir .. " && cd app && npx --yes yarn install")
else
vim.cmd([[Lazy load markdown-preview.nvim]])
vim.fn["mkdp#util#install"]()
end
end,
init = function()
if vim.fn.executable("npx") then
vim.g.mkdp_filetypes = { "markdown" }
end
end,
},
}

View file

@ -1,9 +1,9 @@
"$schema" = 'https://starship.rs/config-schema.json' "$schema" = 'https://starship.rs/config-schema.json'
#format = '${custom.tztime}$all$directory$character'
format = '$directory$character' format = '$directory$character'
right_format = '$all' right_format = '$all'
add_newline = true add_newline = true # Inserts a blank line between shell prompts
command_timeout = 2000
[character] [character]
success_symbol = '[➜ ](bold green)' success_symbol = '[➜ ](bold green)'

View file

@ -1,3 +1,4 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
@ -13,9 +14,7 @@
"hid_apple.swap_fn_leftctrl=1" "hid_apple.swap_fn_leftctrl=1"
"hid_apple.iso_layout=0" "hid_apple.iso_layout=0"
]; ];
boot.kernel.sysctl = { boot.kernel.sysctl = { "vm.swappiness" = 10;};
"vm.swappiness" = 10;
};
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
@ -39,10 +38,7 @@
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.firewall = { networking.firewall = {
enable = true; enable = true;
allowedTCPPorts = [ allowedTCPPorts = [ 80 443 ];
80
443
];
}; };
# Set your time zone. # Set your time zone.
@ -80,18 +76,7 @@
../modules/local-dev.nix ../modules/local-dev.nix
../modules/nixos.nix ../modules/nixos.nix
]; ];
services.eris-server = {
enable = true;
backends = [
"badger+file:///var/eris?put&get" # local one on /var/eris
# "coap+tcp://eris.example.com:5683?get" # an online one
];
mountpoint = "/mnt/media/eris"; # useful to mount eris-fs folders
listenHttp = ":8080"; # or "[::1]:8080"
listenCoap = ":5683"; # or "[::1]:5683"
decode = true; # for http access via https://127.0.0.1:8080/uri-res/N2R?urn:eris:...
package = pkgs.eris-go; # default package
};
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions
# on your system were taken. It's perfectly fine and recommended to leave # on your system were taken. It's perfectly fine and recommended to leave

View file

@ -1,27 +1,15 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ { config, lib, pkgs, modulesPath, ... }:
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = [ imports =
(modulesPath + "/hardware/network/broadcom-43xx.nix") [ (modulesPath + "/hardware/network/broadcom-43xx.nix")
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
"xhci_pci"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.blacklistedKernelModules = [ ]; boot.blacklistedKernelModules = [ ];
@ -29,51 +17,39 @@
#rtl8192eu #rtl8192eu
]; ];
fileSystems."/" = { fileSystems."/" =
device = "/dev/disk/by-uuid/d56411cf-7072-48a8-aab7-70fb73695e64"; { device = "/dev/disk/by-uuid/d56411cf-7072-48a8-aab7-70fb73695e64";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot/efi" = { fileSystems."/boot/efi" =
device = "/dev/disk/by-uuid/37E1-D07F"; { device = "/dev/disk/by-uuid/37E1-D07F";
fsType = "vfat"; fsType = "vfat";
}; };
fileSystems."/mnt/nas/music" = { fileSystems."/mnt/nas/music" =
{
device = "192.168.1.2:/volume1/music"; device = "192.168.1.2:/volume1/music";
options = [ options = [ "nfsvers=4.2" "x-systemd.automount" "noauto" "rw" "relatime" "user" "acl" "defaults"];
"nfsvers=4.2"
"x-systemd.automount"
"noauto"
"rw"
"relatime"
"user"
"acl"
"defaults"
];
fsType = "nfs"; fsType = "nfs";
}; };
services.rpcbind.enable = true; # needed for NFS services.rpcbind.enable = true; # needed for NFS
systemd.mounts = [ systemd.mounts = [{
{
type = "nfs"; type = "nfs";
mountConfig = { mountConfig = {
Options = "defaults,acl,user,noauto,relatime,rw"; Options = "defaults,acl,user,noauto,relatime,rw";
}; };
what = "192.168.1.2:/volume1/music"; what = "192.168.1.2:/volume1/music";
where = "/mnt/nas/music"; where = "/mnt/nas/music";
} }];
];
systemd.automounts = [ systemd.automounts = [{
{
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
automountConfig = { automountConfig = {
TimeoutIdleSec = "600"; TimeoutIdleSec = "600";
}; };
where = "/mnt/nas/music"; where = "/mnt/nas/music";
} }];
];
swapDevices = [ ]; swapDevices = [ ];
@ -97,8 +73,8 @@
# brcmfmac being loaded during hibernation would not let a successful resume # brcmfmac being loaded during hibernation would not let a successful resume
# https://bugzilla.kernel.org/show_bug.cgi?id=101681#c116. # https://bugzilla.kernel.org/show_bug.cgi?id=101681#c116.
# Also brcmfmac could randomly crash on resume from sleep. # Also brcmfmac could randomly crash on resume from sleep.
powerUpCommands = lib.mkBefore "${pkgs.kmod}/bin/modprobe brcmfmac && ${pkgs.kmod}/bin/modprobe brcmfmac_wcc"; powerUpCommands = lib.mkBefore "${pkgs.kmod}/bin/modprobe brcmfmac";
powerDownCommands = lib.mkBefore "${pkgs.kmod}/bin/rmmod brcmfmac_wcc && ${pkgs.kmod}/bin/rmmod brcmfmac"; powerDownCommands = lib.mkBefore "${pkgs.kmod}/bin/rmmod brcmfmac";
}; };
# USB subsystem wakes up MBP right after suspend unless we disable it. # USB subsystem wakes up MBP right after suspend unless we disable it.

View file

@ -0,0 +1,33 @@
{ config, pkgs, ... }:
{
imports = [
../modules/console.nix
../modules/local-dev.nix
../modules/home-config.nix
];
fonts = {
packages = with pkgs; [
inter
(nerdfonts.override { fonts = [ "Iosevka" ]; })
];
};
# Use a custom configuration.nix location.
# $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
# environment.darwinConfig = "$HOME/.config/nixpkgs/darwin/configuration.nix";
# Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true;
nix.package = pkgs.nix;
networking.hostName = "ace";
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true; # default shell on catalina
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 4;
}

View file

@ -1,40 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "uas" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/f2ac5701-a169-4053-bca8-acdfa2227cfc";
fsType = "btrfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/0682-2C9F";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/372c281f-7970-40a6-824d-97dd5d2d6043"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -1,18 +1,17 @@
# cli programs should be available on servers and desktop # cli programs should be available on servers and desktop
{ config, pkgs, ... }: { config, pkgs, ... }:
let let
unstable = unstable = import
import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/7afa2c97ebb0585d00c64c112344483e89e00545)
(builtins.fetchTarball "https://github.com/nixos/nixpkgs/tarball/7afa2c97ebb0585d00c64c112344483e89e00545")
# reuse the current configuration # reuse the current configuration
{ config = config.nixpkgs.config; }; { config = config.nixpkgs.config; };
in in
{ {
programs.zsh.enable = true; programs.zsh.enable = true;
programs.fzf = { # programs.fzf = {
fuzzyCompletion = true; # fuzzyCompletion = true;
keybindings = true; # keybindings = true;
}; # };
# programs.neovim = { # programs.neovim = {
# enable = true; # enable = true;
@ -49,20 +48,18 @@ in
htop htop
lazygit lazygit
lsd lsd
magic-wormhole
mc mc
micro micro
mosh mosh
mpc-cli mpc-cli
mpd mpd
mpv
neofetch neofetch
unstable.neovim unstable.neovim
ollama ollama
pandoc pandoc
pass pass
pciutils pciutils
pinentry #pinentry
ripgrep ripgrep
rustc rustc
slides slides
@ -72,12 +69,12 @@ in
tokei tokei
tree tree
unzip unzip
usbutils #usbutils
wget wget
whois whois
wl-clipboard wl-clipboard
wirelesstools
yazi yazi
#wirelesstools
yt-dlp yt-dlp
zellij zellij
zoxide zoxide

View file

@ -63,7 +63,7 @@
droidcam.enable = true; droidcam.enable = true;
firefox.enable = true; firefox.enable = true;
firefox.languagePacks = ["fr"]; firefox.languagePacks = ["fr"];
#hyprland.enable = true; hyprland.enable = true;
ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass"; # conflict between kde and gnome cf. https://github.com/NixOS/nixpkgs/issues/75867 ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass"; # conflict between kde and gnome cf. https://github.com/NixOS/nixpkgs/issues/75867
ssh.startAgent = true; ssh.startAgent = true;
@ -96,9 +96,7 @@
(callPackage ./sddm-rose-pine.nix {}) (callPackage ./sddm-rose-pine.nix {})
(vscode-with-extensions.override { (vscode-with-extensions.override {
vscode = vscodium; vscode = vscodium;
vscodeExtensions = vscodeExtensions = with vscode-extensions; [
with vscode-extensions;
[
#bmewburn.vscode-intelephense-client #bmewburn.vscode-intelephense-client
#dracula-theme.theme-dracula #dracula-theme.theme-dracula
mvllow.rose-pine mvllow.rose-pine
@ -119,7 +117,8 @@
version = "0.9.2"; version = "0.9.2";
sha256 = "113w2iis4zi4z3sqc3vd2apyrh52hbh2gvmxjr5yvjpmrsksclbd"; sha256 = "113w2iis4zi4z3sqc3vd2apyrh52hbh2gvmxjr5yvjpmrsksclbd";
} }
]; ]
;
}) })
(chromium.override { (chromium.override {
enableWideVine = true; # DRM support enableWideVine = true; # DRM support
@ -128,33 +127,34 @@
audacious audacious
calibre calibre
digikam digikam
eaglemode #rose-pine-gtk-theme
#rose-pine-icon-theme
#element-desktop
filezilla filezilla
gimp-with-plugins gimp-with-plugins
hunspell hunspell
hunspellDicts.fr-moderne hunspellDicts.fr-moderne
#hyprpaper
inkscape-with-extensions inkscape-with-extensions
#kde-rounded-corners
kitty kitty
latte-dock latte-dock
libreoffice-qt libreoffice-qt
libsForQt5.ark libsForQt5.ark
#libsForQt5.krohnkite
#libsForQt5.bismuth
mixxx mixxx
mumble mumble
neochat
nextcloud-client nextcloud-client
obsidian obsidian
signal-desktop signal-desktop
thunderbird thunderbird
tigervnc tigervnc
#tor-browser-bundle-bin
transmission-qt transmission-qt
unetbootin unetbootin
vlc vlc
## niri scroll window manager
niri
waybar
fuzzel
alacritty
]; ];
# Do not restart the display manager automatically # Do not restart the display manager automatically

View file

@ -1,55 +1,39 @@
# Inject the right home-manager config for the machine. { config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
let let
plasma-manager = pkgs.fetchFromGitHub { # unstable = import
owner = "pjones"; # (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/7afa2c97ebb0585d00c64c112344483e89e00545)
repo = "plasma-manager"; # # reuse the current configuration
rev = "4e56cfeb95081a43cb49487d0996dc936d6201e5"; # { config = config.nixpkgs.config; };
sha256 = "sha256-LJ/lFEupLSi7xtUps234hhMk7ZdVLRoYeU7KiCFaoGw="; #
}; #startupScript = pkgs.pkgs.writeShellScriptBin "hyprland-start" ''
startupScript = pkgs.pkgs.writeShellScriptBin "hyprland-start" '' # ${pkgs.waybar}/bin/waybar &
${pkgs.waybar}/bin/waybar & # ${pkgs.swww}/bin/swww init &
${pkgs.swww}/bin/swww init & #
# sleep 1
sleep 1 # ${pkgs.swww}/bin/swww img /home/mrflos/Nextcloud/Images/Wallpapers/chihiro014.jpg &
# '';
${pkgs.swww}/bin/swww img /home/mrflos/Nextcloud/Images/Wallpapers/chihiro014.jpg & in {
'';
in
{
# TODO can we automate the installation of home-manager ? # TODO can we automate the installation of home-manager ?
# sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager # sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager
imports = [ <home-manager/nixos> ]; imports = [
#<home-manager/nixos>
# Let Home Manager install and manage itself. <home-manager/nix-darwin>
#programs.home-manager.enable = true; ];
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
users.users.mrflos = { users.users.mrflos = {
isNormalUser = true; #isNormalUser = true;
description = "mrflos"; description = "mrflos";
createHome = true; createHome = true;
extraGroups = [ #extraGroups = ["users" "docker" "libvirtd" "lxd" "networkmanager" "wheel" ];
"users"
"docker"
"libvirtd"
"lxd"
"networkmanager"
"wheel"
];
uid = 1000; uid = 1000;
shell = pkgs.zsh; shell = pkgs.zsh;
home = "/Users/mrflos";
}; };
nix.settings.trusted-users = [ "mrflos" ]; nix.settings.trusted-users = [ "mrflos" ];
home-manager.backupFileExtension = "backup"; home-manager.backupFileExtension = "backup";
home-manager.users.mrflos = home-manager.users.mrflos = { pkgs, ... }: {
{ pkgs, ... }:
{
home.stateVersion = "23.05"; home.stateVersion = "23.05";
home.packages = with pkgs; [ home.packages = with pkgs; [
gcc gcc
@ -60,17 +44,17 @@ in
rust-analyzer-unwrapped rust-analyzer-unwrapped
php83Packages.composer php83Packages.composer
nodejs_20 nodejs_20
swww # swww
grimblast # grimblast
swaylock #swaylock
waybar #waybar
yarn yarn
]; ];
imports = [ #imports = [
(plasma-manager + "/modules") # (plasma-manager + "/modules")
./home-plasma.nix # ./home-plasma.nix
]; #];
home.file = { home.file = {
"./.config/kitty/" = { "./.config/kitty/" = {
source = ../dotfiles/kitty; source = ../dotfiles/kitty;
@ -82,11 +66,6 @@ in
recursive = true; recursive = true;
}; };
"./.config/lazygit/" = {
source = ../dotfiles/lazygit;
recursive = true;
};
"./.config/tmux/" = { "./.config/tmux/" = {
source = ../dotfiles/tmux; source = ../dotfiles/tmux;
recursive = true; recursive = true;
@ -106,9 +85,7 @@ in
address = "mrflos@chmok.net"; address = "mrflos@chmok.net";
primary = true; primary = true;
thunderbird = { thunderbird = { enable = true; };
enable = true;
};
imap = { imap = {
host = "mail.infomaniak.com"; host = "mail.infomaniak.com";
port = 993; port = 993;
@ -124,9 +101,7 @@ in
userName = "mrflos@yeswiki.pro"; userName = "mrflos@yeswiki.pro";
address = "mrflos@yeswiki.pro"; address = "mrflos@yeswiki.pro";
thunderbird = { thunderbird = { enable = true; };
enable = true;
};
imap = { imap = {
host = "mail.infomaniak.com"; host = "mail.infomaniak.com";
port = 993; port = 993;
@ -143,9 +118,7 @@ in
address = "mrflos@mrflos.pw"; address = "mrflos@mrflos.pw";
primary = false; primary = false;
thunderbird = { thunderbird = { enable = true; };
enable = true;
};
imap = { imap = {
host = "mrflos.pw"; host = "mrflos.pw";
port = 993; port = 993;
@ -165,9 +138,7 @@ in
address = "contact@yeswiki.pro"; address = "contact@yeswiki.pro";
primary = false; primary = false;
thunderbird = { thunderbird = { enable = true; };
enable = true;
};
imap = { imap = {
host = "mail.infomaniak.com"; host = "mail.infomaniak.com";
port = 993; port = 993;
@ -184,9 +155,7 @@ in
address = "contact@yeswiki.net"; address = "contact@yeswiki.net";
primary = false; primary = false;
thunderbird = { thunderbird = { enable = true; };
enable = true;
};
imap = { imap = {
host = "mail.infomaniak.com"; host = "mail.infomaniak.com";
port = 993; port = 993;
@ -264,118 +233,111 @@ in
zstyle :omz:plugins:ssh-agent agent-forwarding yes zstyle :omz:plugins:ssh-agent agent-forwarding yes
zstyle :omz:plugins:ssh-agent lazy yes zstyle :omz:plugins:ssh-agent lazy yes
''; '';
plugins = [ plugins = [ "git" "ssh-agent" ];
"git"
"ssh-agent"
];
# theme = "robbyrussell"; # theme = "robbyrussell";
}; };
}; };
}; };
services.ssh-agent.enable = true; #services.ssh-agent.enable = true;
wayland.windowManager.hyprland.enable = true; #wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.settings = { #wayland.windowManager.hyprland.settings = {
exec-once = ''${startupScript}/bin/hyprland-start''; # exec-once = ''${startupScript}/bin/hyprland-start'';
"$mod" = "SUPER"; # "$mod" = "SUPER";
# assign apps # assign apps
"$term" = "kitty"; # "$term" = "kitty";
"$editor" = "nvim"; # "$editor" = "nvim";
"$file" = "dolphin"; # "$file" = "dolphin";
"$browser" = "firefox"; # "$browser" = "firefox";
bind = # bind = [
[ # ", Print, exec, grimblast copy area"
", Print, exec, grimblast copy area"
# Window/Session actions # Window/Session actions
"$mod, Q, killactive" # "$mod, Q, killactive"
"ALT, F4, killactive" # "ALT, F4, killactive"
"$mod, delete, exit" # kill hyperland session # "$mod, delete, exit" # kill hyperland session
"$mod, W, togglefloating" # toggle the window on focus to float # "$mod, W, togglefloating" # toggle the window on focus to float
"$mod, G, togglegroup" # toggle the window on focus to float # "$mod, G, togglegroup" # toggle the window on focus to float
"ALT, return, fullscreen" # toggle the window on focus to fullscreen # "ALT, return, fullscreen" # toggle the window on focus to fullscreen
"$mod, L, exec, swaylock" # lock screen # "$mod, L, exec, swaylock" # lock screen
# "$mod, backspace, exec, wlogout-launcher-hyprland 1" # logout menu # "$mod, backspace, exec, wlogout-launcher-hyprland 1" # logout menu
"$CONTROL, ESCAPE, exec, systemctl-toggle --user waybar.service" # "$CONTROL, ESCAPE, exec, systemctl-toggle --user waybar.service"
# Application shortcuts # Application shortcuts
"$mod, T, exec, $term" # open terminal # "$mod, T, exec, $term" # open terminal
"$mod, E, exec, $file" # open file manager # "$mod, E, exec, $file" # open file manager
"$mod, C, exec, $editor" # open vscode # "$mod, C, exec, $editor" # open vscode
"$mod, F, exec, $browser" # open browser # "$mod, F, exec, $browser" # open browser
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
"$mod, left, movefocus, l" # "$mod, left, movefocus, l"
"$mod, right, movefocus, r" # "$mod, right, movefocus, r"
"$mod, up, movefocus, u" # "$mod, up, movefocus, u"
"$mod, down, movefocus, d" # "$mod, down, movefocus, d"
"ALT, Tab, movefocus, d" # "ALT, Tab, movefocus, d"
# Switch workspaces relative to the active workspace with mainMod + CTRL + [←→] # Switch workspaces relative to the active workspace with mainMod + CTRL + [←→]
"$mod CTRL, right, workspace, r+1" # "$mod CTRL, right, workspace, r+1"
"$mod CTRL, left, workspace, r-1" # "$mod CTRL, left, workspace, r-1"
# move to the first empty workspace instantly with mainMod + CTRL + [↓] # move to the first empty workspace instantly with mainMod + CTRL + [↓]
"$mod CTRL, down, workspace, empty" # "$mod CTRL, down, workspace, empty"
# Move active window to a relative workspace with mainMod + CTRL + ALT + [←→] # Move active window to a relative workspace with mainMod + CTRL + ALT + [←→]
"$mod CTRL ALT, right, movetoworkspace, r+1" # "$mod CTRL ALT, right, movetoworkspace, r+1"
"$mod CTRL ALT, left, movetoworkspace, r-1" # "$mod CTRL ALT, left, movetoworkspace, r-1"
# Move active window around current workspace with mainMod + SHIFT + CTRL [←→↑↓] # Move active window around current workspace with mainMod + SHIFT + CTRL [←→↑↓]
"$mod SHIFT $CONTROL, left, movewindow, l" # "$mod SHIFT $CONTROL, left, movewindow, l"
"$mod SHIFT $CONTROL, right, movewindow, r" # "$mod SHIFT $CONTROL, right, movewindow, r"
"$mod SHIFT $CONTROL, up, movewindow, u" # "$mod SHIFT $CONTROL, up, movewindow, u"
"$mod SHIFT $CONTROL, down, movewindow, d" # "$mod SHIFT $CONTROL, down, movewindow, d"
# Scroll through existing workspaces with mainMod + scroll # Scroll through existing workspaces with mainMod + scroll
"$mod, mouse_down, workspace, e+1" # "$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1" # "$mod, mouse_up, workspace, e-1"
# Special workspaces (scratchpad) # Special workspaces (scratchpad)
"$mod ALT, S, movetoworkspacesilent, special" # "$mod ALT, S, movetoworkspacesilent, special"
"$mod, S, togglespecialworkspace," # "$mod, S, togglespecialworkspace,"
# Toggle Layout # Toggle Layout
"$mod, J, togglesplit," # dwindle # "$mod, J, togglesplit," # dwindle
] # ]
++ ( # ++ (
# workspaces # workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10} # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists ( # builtins.concatLists (builtins.genList (
builtins.genList ( # x: let
x: # ws = let
let # c = (x + 1) / 10;
ws = # in
let # builtins.toString (x + 1 - (c * 10));
c = (x + 1) / 10; # in [
in # "$mod, ${ws}, workspace, ${toString (x + 1)}"
builtins.toString (x + 1 - (c * 10)); # "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
in # "$mod ALT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}" # Move window silently to workspace Super + Alt + [0-9]
[ # ]
"$mod, ${ws}, workspace, ${toString (x + 1)}" # )
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" # 10)
"$mod ALT, ${ws}, movetoworkspacesilent, ${toString (x + 1)}" # Move window silently to workspace Super + Alt + [0-9] # );
] #
) 10 # # Move/Resize windows with mainMod + LMB/RMB and dragging
) # bindm = [
); # "$mod, mouse:272, movewindow"
# "$mod, mouse:273, resizewindow"
# ];
# Move/Resize windows with mainMod + LMB/RMB and dragging # # Resize windows
bindm = [ # binde = [
"$mod, mouse:272, movewindow" # "$mod SHIFT, right, resizeactive, 30 0"
"$mod, mouse:273, resizewindow" # "$mod SHIFT, left, resizeactive, -30 0"
]; # "$mod SHIFT, up, resizeactive, 0 -30"
# "$mod SHIFT, down, resizeactive, 0 30"
# Resize windows # ];
binde = [ # };
"$mod SHIFT, right, resizeactive, 30 0"
"$mod SHIFT, left, resizeactive, -30 0"
"$mod SHIFT, up, resizeactive, 0 -30"
"$mod SHIFT, down, resizeactive, 0 30"
];
};
}; };
} }

View file

@ -1,4 +1,12 @@
{ { config, pkgs, lib, ... }:
let
plasma-manager = pkgs.fetchFromGitHub {
owner = "pjones";
repo = "plasma-manager";
rev = "4e56cfeb95081a43cb49487d0996dc936d6201e5";
sha256 = "sha256-LJ/lFEupLSi7xtUps234hhMk7ZdVLRoYeU7KiCFaoGw=";
};
in {
programs.plasma = { programs.plasma = {
enable = true; enable = true;
shortcuts = { shortcuts = {
@ -45,35 +53,21 @@
"kaccess"."Toggle Screen Reader On and Off" = "Meta+Alt+S"; "kaccess"."Toggle Screen Reader On and Off" = "Meta+Alt+S";
"kcm_touchpad"."Disable Touchpad" = "Touchpad Off"; "kcm_touchpad"."Disable Touchpad" = "Touchpad Off";
"kcm_touchpad"."Enable Touchpad" = "Touchpad On"; "kcm_touchpad"."Enable Touchpad" = "Touchpad On";
"kcm_touchpad"."Toggle Touchpad" = [ "kcm_touchpad"."Toggle Touchpad" = ["Touchpad Toggle,Touchpad Toggle" "Meta+Ctrl+Zenkaku Hankaku"];
"Touchpad Toggle,Touchpad Toggle"
"Meta+Ctrl+Zenkaku Hankaku"
];
"kded5"."Show System Activity" = "Ctrl+Esc"; "kded5"."Show System Activity" = "Ctrl+Esc";
"kded5"."display" = [ "kded5"."display" = ["Display" "Meta+P,Display" "Meta+P,Changer d'affichage"];
"Display"
"Meta+P,Display"
"Meta+P,Changer d'affichage"
];
"khotkeys"."{d03619b6-9b3c-48cc-9d9c-a2aadb485550}" = [ ]; "khotkeys"."{d03619b6-9b3c-48cc-9d9c-a2aadb485550}" = [ ];
"kitty.desktop"."_launch" = "Meta+T,none"; "kitty.desktop"."_launch" = "Meta+T,none";
"kmix"."decrease_microphone_volume" = "Microphone Volume Down"; "kmix"."decrease_microphone_volume" = "Microphone Volume Down";
"kmix"."decrease_volume" = "Volume Down"; "kmix"."decrease_volume" = "Volume Down";
"kmix"."increase_microphone_volume" = "Microphone Volume Up"; "kmix"."increase_microphone_volume" = "Microphone Volume Up";
"kmix"."increase_volume" = "Volume Up"; "kmix"."increase_volume" = "Volume Up";
"kmix"."mic_mute" = [ "kmix"."mic_mute" = ["Microphone Mute" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Couper le son du microphone"];
"Microphone Mute"
"Meta+Volume Mute,Microphone Mute"
"Meta+Volume Mute,Couper le son du microphone"
];
"kmix"."mute" = "Volume Mute"; "kmix"."mute" = "Volume Mute";
"konversation"."next_active_tab" = [ ]; "konversation"."next_active_tab" = [ ];
"konversation"."toggle_mainwindow_visibility" = [ ]; "konversation"."toggle_mainwindow_visibility" = [ ];
"ksmserver"."Halt Without Confirmation" = "none,,Éteindre sans confirmation"; "ksmserver"."Halt Without Confirmation" = "none,,Éteindre sans confirmation";
"ksmserver"."Lock Session" = [ "ksmserver"."Lock Session" = ["Screensaver,Meta+L" "Screensaver,Verrouiller la session"];
"Screensaver,Meta+L"
"Screensaver,Verrouiller la session"
];
"ksmserver"."Log Out" = "Ctrl+Alt+Del"; "ksmserver"."Log Out" = "Ctrl+Alt+Del";
"ksmserver"."Log Out Without Confirmation" = "none,,Déconnexion sans confirmation"; "ksmserver"."Log Out Without Confirmation" = "none,,Déconnexion sans confirmation";
"ksmserver"."Reboot Without Confirmation" = "none,,Redémarrer sans confirmation"; "ksmserver"."Reboot Without Confirmation" = "none,,Redémarrer sans confirmation";
@ -81,11 +75,7 @@
"kwin"."Decrease Opacity" = "none,,Diminuer l'opacité de la fenêtre active de 5 %"; "kwin"."Decrease Opacity" = "none,,Diminuer l'opacité de la fenêtre active de 5 %";
"kwin"."Edit Tiles" = "none,Meta+T,Basculer ou sortir de l'éditeur de recouvrement"; "kwin"."Edit Tiles" = "none,Meta+T,Basculer ou sortir de l'éditeur de recouvrement";
"kwin"."Expose" = "Ctrl+F9"; "kwin"."Expose" = "Ctrl+F9";
"kwin"."ExposeAll" = [ "kwin"."ExposeAll" = ["Ctrl+F10" "Launch (C),Ctrl+F10" "Launch (C),Activer / désactiver la présentation des fenêtres (tous les bureaux)"];
"Ctrl+F10"
"Launch (C),Ctrl+F10"
"Launch (C),Activer / désactiver la présentation des fenêtres (tous les bureaux)"
];
"kwin"."ExposeClass" = "Ctrl+F7"; "kwin"."ExposeClass" = "Ctrl+F7";
"kwin"."ExposeClassCurrentDesktop" = [ ]; "kwin"."ExposeClassCurrentDesktop" = [ ];
"kwin"."Grid-Tiling: Close Desktop" = [ ]; "kwin"."Grid-Tiling: Close Desktop" = [ ];
@ -216,10 +206,7 @@
"kwin"."Walk Through Windows of Current Application Alternative (Reverse)" = "none,,Naviguer parmi les fenêtres de l'application alternative courante (en ordre inverse)"; "kwin"."Walk Through Windows of Current Application Alternative (Reverse)" = "none,,Naviguer parmi les fenêtres de l'application alternative courante (en ordre inverse)";
"kwin"."Window Above Other Windows" = "none,,Conserver une fenêtre au-dessus des autres"; "kwin"."Window Above Other Windows" = "none,,Conserver une fenêtre au-dessus des autres";
"kwin"."Window Below Other Windows" = "none,,Conserver une fenêtre au-dessous des autres"; "kwin"."Window Below Other Windows" = "none,,Conserver une fenêtre au-dessous des autres";
"kwin"."Window Close" = [ "kwin"."Window Close" = ["Alt+F4" "Meta+Q,Alt+F4,Fermer une fenêtre"];
"Alt+F4"
"Meta+Q,Alt+F4,Fermer une fenêtre"
];
"kwin"."Window Fullscreen" = "none,,Mettre une fenêtre en plein écran"; "kwin"."Window Fullscreen" = "none,,Mettre une fenêtre en plein écran";
"kwin"."Window Grow Horizontal" = "none,,Maximiser horizontalement une fenêtre"; "kwin"."Window Grow Horizontal" = "none,,Maximiser horizontalement une fenêtre";
"kwin"."Window Grow Vertical" = "none,,Maximiser verticalement une fenêtre"; "kwin"."Window Grow Vertical" = "none,,Maximiser verticalement une fenêtre";
@ -227,10 +214,7 @@
"kwin"."Window Maximize" = "Meta+PgUp"; "kwin"."Window Maximize" = "Meta+PgUp";
"kwin"."Window Maximize Horizontal" = "none,,Maximiser horizontalement une fenêtre"; "kwin"."Window Maximize Horizontal" = "none,,Maximiser horizontalement une fenêtre";
"kwin"."Window Maximize Vertical" = "none,,Maximiser verticalement une fenêtre"; "kwin"."Window Maximize Vertical" = "none,,Maximiser verticalement une fenêtre";
"kwin"."Window Minimize" = [ "kwin"."Window Minimize" = ["Meta+PgDown" "Meta+M,Meta+PgDown,Réduire une fenêtre"];
"Meta+PgDown"
"Meta+M,Meta+PgDown,Réduire une fenêtre"
];
"kwin"."Window Move" = "none,,Déplacer une fenêtre"; "kwin"."Window Move" = "none,,Déplacer une fenêtre";
"kwin"."Window Move Center" = "none,,Déplacer la fenêtre au centre"; "kwin"."Window Move Center" = "none,,Déplacer la fenêtre au centre";
"kwin"."Window No Border" = "none,,Afficher / Masquer la barre de titre et la bordure"; "kwin"."Window No Border" = "none,,Afficher / Masquer la barre de titre et la bordure";
@ -294,11 +278,7 @@
"kwin"."Window to Screen 6" = "none,,Envoyer la fenêtre sur l'écran 6"; "kwin"."Window to Screen 6" = "none,,Envoyer la fenêtre sur l'écran 6";
"kwin"."Window to Screen 7" = "none,,Envoyer la fenêtre sur l'écran 7"; "kwin"."Window to Screen 7" = "none,,Envoyer la fenêtre sur l'écran 7";
"kwin"."view_actual_size" = "Meta+0"; "kwin"."view_actual_size" = "Meta+0";
"kwin"."view_zoom_in" = [ "kwin"."view_zoom_in" = ["Meta++" "Meta+=,Meta++" "Meta+=,Zoom avant"];
"Meta++"
"Meta+=,Meta++"
"Meta+=,Zoom avant"
];
"kwin"."view_zoom_out" = "Meta+-"; "kwin"."view_zoom_out" = "Meta+-";
"lattedock"."activate entry 1" = "none,Meta+1,Activer l'entrée 1"; "lattedock"."activate entry 1" = "none,Meta+1,Activer l'entrée 1";
"lattedock"."activate entry 10" = "none,Meta+0,Activer l'entrée 10"; "lattedock"."activate entry 10" = "none,Meta+0,Activer l'entrée 10";
@ -354,15 +334,8 @@
"org.kde.konsole.desktop"."NewWindow" = [ ]; "org.kde.konsole.desktop"."NewWindow" = [ ];
"org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T,none"; "org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T,none";
"org.kde.krunner.desktop"."RunClipboard" = "Alt+Shift+F2,none"; "org.kde.krunner.desktop"."RunClipboard" = "Alt+Shift+F2,none";
"org.kde.krunner.desktop"."_launch" = [ "org.kde.krunner.desktop"."_launch" = ["Alt+Space" "Alt+F2" "Search,none"];
"Alt+Space" "org.kde.plasma.emojier.desktop"."_launch" = ["Meta+." "Meta+Ctrl+Alt+Shift+Space,none"];
"Alt+F2"
"Search,none"
];
"org.kde.plasma.emojier.desktop"."_launch" = [
"Meta+."
"Meta+Ctrl+Alt+Shift+Space,none"
];
"org.kde.spectacle.desktop"."ActiveWindowScreenShot" = "Meta+Print,none"; "org.kde.spectacle.desktop"."ActiveWindowScreenShot" = "Meta+Print,none";
"org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = [ ]; "org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = [ ];
"org.kde.spectacle.desktop"."FullScreenScreenShot" = "Shift+Print,none"; "org.kde.spectacle.desktop"."FullScreenScreenShot" = "Shift+Print,none";
@ -1125,7 +1098,7 @@
"kwinrc"."Tiling/ed6da6d2-dc03-5e69-aae5-b2fee83fe2cd"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; "kwinrc"."Tiling/ed6da6d2-dc03-5e69-aae5-b2fee83fe2cd"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}";
"kwinrc"."Windows"."AutoRaise" = true; "kwinrc"."Windows"."AutoRaise" = true;
"kwinrc"."Windows"."AutoRaiseInterval" = 300; "kwinrc"."Windows"."AutoRaiseInterval" = 300;
"kwinrc"."Windows"."ElectricBorderCornerRatio" = 1.0e-2; "kwinrc"."Windows"."ElectricBorderCornerRatio" = 0.01;
"kwinrc"."Windows"."Placement" = "Maximizing"; "kwinrc"."Windows"."Placement" = "Maximizing";
"kwinrc"."Windows"."RollOverDesktops" = true; "kwinrc"."Windows"."RollOverDesktops" = true;
"kwinrc"."Xwayland"."Scale" = 1.75; "kwinrc"."Xwayland"."Scale" = 1.75;

View file

@ -1,95 +1,34 @@
# Local developpement # Local developpement
{ { pkgs, config, lib, ... }: {
pkgs, homebrew.enable = true;
config, homebrew.brews = [
lib, # `brew install`
... #"imagemagick"
}:
{
virtualisation = {
docker.enable = true;
#docker.rootless = {
# enable = true;
# setSocketVariable = true;
#};
#libvirtd.enable = true;
#lxd.enable = true;
#waydroid.enable = true;
};
systemd.services.yeswikidev = { # `brew install`, always `brew services restart`, `brew link`, `brew unlink mysql` (if it is installed)
enable = true;
script = ''
${pkgs.systemd}/bin/systemctl start mysql
# etc
'';
serviceConfig =
let
startstop =
command:
(pkgs.writeShellApplication {
name = "yeswikidev";
runtimeInputs = with pkgs; [ systemd ];
text = ''
systemctl ${command} mysql.service
'';
});
#startstopFullShell = pkgs.writeShellApplication {
# name = "yeswikidev";
# runtimeInputs = with pkgs; [ systemd ];
# text = ''
# systemctl "$1" mysql.service
# '';
#});
#commands = [ "start" "stop" ];
#scripts = map (command: (pkgs.writeShellApplication {
# name = "yeswikidev";
# runtimeInputs = with pkgs; [ systemd ];
# text = ''
# systemctl ${command} mysql.service
# '';
#})) commands;
in
#execs = {
# ExecStart = "start";
# ExecStop = "stop";
#};
# https://nixos.org/manual/nix/stable/language/builtins
# https://nixos.org/manual/nix/stable/language/builtins#builtins-mapAttrs
#execAttrs = attrNames execs; # ["Start" "Stop"];
#execs2 = mapAttrs (k: v: ()) execs;
{ {
# pkgs.writeScript, pkgs.writeScriptBin name = "mariadb";
#ExecStart = startstop "start"; #restart_service = true;
#ExecStop = startstop "stop"; link = true;
# OR conflicts_with = [ "mysql" ];
# ExecStart = "${startstopFullShell} start"; }
# ExecStop = "${startstopFullShell} stop"; ];
# OR
# ExecStart = "${scripts[0]}";
# ExecStop = "${scripts[1]}";
};
};
services.mysql = {
enable = true;
package = pkgs.mariadb;
};
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
# $ nix search wget # $ nix search wget
environment.systemPackages = environment.systemPackages = with pkgs;
with pkgs;
let let
php83 = pkgs.php83.buildEnv { extraConfig = "memory_limit = 2G"; }; php83 = pkgs.php83.buildEnv { extraConfig = ''
in memory_limit = 2G
[ max_upload_size = 2G
#clang ''; };
in [
dart-sass
cmake
dart-sass dart-sass
dbeaver-bin
docker-compose docker-compose
eris-go fd
fzf
gcc gcc
go go
nixfmt-rfc-style nixfmt-rfc-style
@ -105,7 +44,8 @@
php83Packages.php-cs-fixer php83Packages.php-cs-fixer
python3 python3
python311Packages.virtualenv python311Packages.virtualenv
rpi-imager ripgrep
rust-analyzer-unwrapped
ruff-lsp ruff-lsp
stylelint stylelint
symfony-cli symfony-cli

View file

@ -1,35 +0,0 @@
# cli basic programs and configs that should be available on every server
{ config, pkgs, ... }:
{
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
bat
btop
findutils
fzf
gnugrep
git
glances
htop
lazygit
lsd
magic-wormhole
mc
micro
mosh
neovim
ripgrep
tmux
tree
unzip
wget
];
}

View file

@ -14,5 +14,7 @@
}; };
# TODO : find what is installing this, probably obsidian? # TODO : find what is installing this, probably obsidian?
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ]; nixpkgs.config.permittedInsecurePackages = [
"electron-25.9.0"
];
} }

View file

@ -1,7 +1,6 @@
{ { stdenvNoCC
stdenvNoCC, , fetchFromGitHub
fetchFromGitHub, , libsForQt5
libsForQt5,
}: }:
stdenvNoCC.mkDerivation rec { stdenvNoCC.mkDerivation rec {
@ -9,7 +8,9 @@ stdenvNoCC.mkDerivation rec {
version = "1.2"; version = "1.2";
dontBuild = true; dontBuild = true;
propagatedUserEnvPkgs = [ libsForQt5.qt5.qtgraphicaleffects ]; propagatedUserEnvPkgs = [
libsForQt5.qt5.qtgraphicaleffects
];
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lwndhrst"; owner = "lwndhrst";