Compare commits

...

22 commits

Author SHA1 Message Date
ef733f10a3
chore(nvim): add go treesitter plugin 2025-08-27 23:07:14 +02:00
0a4a477c25
chore(nvim): update nvim-k8s-lsp plugins 2025-08-27 23:04:52 +02:00
720bd2f391
fix(desktop): fix xdg-wlr file creation 2025-08-27 22:50:07 +02:00
3ebb38d6d4
fix(overlay): workaround for widevine-cdm nos available on google cdn 2025-08-27 22:25:56 +02:00
eeb7f1fe5a
chore(zsh): modifications related to upstream changes 2025-08-27 22:25:55 +02:00
35557352cb
chore: upgrade packages repositories 2025-08-27 22:25:55 +02:00
c7e8ec0628
feat(desktop): make portals installation configurable 2025-08-27 22:25:54 +02:00
308d6fca81
chore(waybar): apply icons name upstream change for audio module 2025-08-27 22:25:54 +02:00
0b053e3db2
fix(desktop): make screen sharing work 2025-08-27 22:25:53 +02:00
fc30593e0a
chore(work): add gnupg as SSH agent 2025-08-27 22:25:53 +02:00
7c5882f2c5
fix(sway): use wayland backend for chromium based crap 2025-08-27 22:25:52 +02:00
d5ca13547f
feat(work): install slack and chromium 2025-08-27 22:25:52 +02:00
94fce63f6f
fix(sway): swaylock unlable to unlock when installed on non-NixOS 2025-08-27 22:25:51 +02:00
6a8beb894d
chore(work): add kanshi configuration 2025-08-27 22:25:51 +02:00
89cc43f245
chore(work): add keyboard configuration 2025-08-27 22:25:50 +02:00
2e22c734de
feat(work): install sway 2025-08-27 22:25:50 +02:00
c1ee8f9d50
fix(sway): add possibility to not install swaylock package
Useful when using home-manager on third-party distribution. Swaylock
from nixpkgs become unable to unlock session because PAM
incompatibilities.
2025-08-27 22:25:49 +02:00
a359d8c06e
chore(qutebrowser): use regular nixgl wrapper 2025-08-27 22:25:49 +02:00
e446394b83
chore(firefox): use regular nixgl wrapper
And remove `enableNixGL` configuration in related home configurations
2025-08-27 22:25:48 +02:00
40da37234a
chore(sway): xdg portal is now configured with home-manager 2025-08-27 22:25:48 +02:00
e93c365d1b
chore(sway): acctivate nixgl 2025-08-27 22:25:47 +02:00
93bb0be9be
feat(home-manager): install nixgl 2025-08-27 22:25:47 +02:00
18 changed files with 179 additions and 158 deletions

76
flake.lock generated
View file

@ -22,12 +22,15 @@
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -43,11 +46,11 @@
]
},
"locked": {
"lastModified": 1748955489,
"narHash": "sha256-OmZXyW2g5qIuo5Te74McwR0TwauCO2sF3/SjGDVuxyg=",
"lastModified": 1755810213,
"narHash": "sha256-QdenO8f0PTg+tC6HuSvngKcbRZA5oZKmjUT+MXKOLQg=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "bb846c031be68a96466b683be32704ef6e07b159",
"rev": "6911d3e7f475f7b3558b4f5a6aba90fa86099baa",
"type": "github"
},
"original": {
@ -61,10 +64,10 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1755552883,
"narHash": "sha256-wdVtGyN8JkpByIiNwSevZMBy02vWwCPNaD/caCQJ6aM=",
"lastModified": 1755761639,
"narHash": "sha256-rEvyLY/3u1RfxsySyqScM3peGUVNJNmGApHVyIY7Cx0=",
"ref": "main",
"rev": "1ccd39ac6de09a7a73a9a36ec1c34f70cb5edfe2",
"rev": "d73f46baaff8c9fff2a7b11c97413ea3fb171584",
"shallow": true,
"type": "git",
"url": "ssh://git@git.epha.se:24422/ephase/nix-private.git"
@ -84,11 +87,11 @@
]
},
"locked": {
"lastModified": 1713543440,
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
"lastModified": 1752054764,
"narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=",
"owner": "nix-community",
"repo": "nixGL",
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
"rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5",
"type": "github"
},
"original": {
@ -113,11 +116,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1748693115,
"narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=",
"lastModified": 1755615617,
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc",
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
"type": "github"
},
"original": {
@ -128,11 +131,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1748693115,
"narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=",
"lastModified": 1755615617,
"narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc",
"rev": "20075955deac2583bb12f07151c2df830ef346b4",
"type": "github"
},
"original": {
@ -145,15 +148,14 @@
"nur": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix"
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1748973087,
"narHash": "sha256-ZN0XKKdCBC9eLeog7qYhfGPbajkPtQPdlxp/dhwONw4=",
"lastModified": 1755877557,
"narHash": "sha256-AjUqNCIgjQKfhvH+HUXZQLlSDiRTFQPSPN8Ws/O7mVQ=",
"owner": "nix-community",
"repo": "NUR",
"rev": "90add46380908ba4395f5f1dfec84224a3b0d4b9",
"rev": "332abf45be8133422a97e134b35782400ffc65bd",
"type": "github"
},
"original": {
@ -179,11 +181,11 @@
]
},
"locked": {
"lastModified": 1747603214,
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=",
"lastModified": 1754988908,
"narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd",
"rev": "3223c7a92724b5d804e9988c6b447a0d09017d48",
"type": "github"
},
"original": {
@ -192,24 +194,18 @@
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"systems": {
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}

View file

@ -51,11 +51,12 @@
overlays = [ nixgl.overlay ];
};
extraSpecialArgs = {
inherit stateVersion inputs;
inherit stateVersion inputs nixgl;
hostname = hostname;
username = username;
};
modules = [
{ nixpkgs.overlays = [ nixgl.overlay ];}
./home-manager/default.nix
];
};

View file

@ -1,4 +1,4 @@
{ inputs, lib, stateVersion, username, hostname, ... }:
{ inputs, lib, stateVersion, username, hostname, nixgl, ... }:
{
imports = [
inputs.sops-nix.homeManagerModules.sops
@ -12,7 +12,9 @@
nixpkgs.config.allowUnfree = true;
programs.home-manager.enable = true;
fonts.fontconfig.enable = true;
nixGL.packages = nixgl.packages;
nixGL.defaultWrapper = "mesa";
nixGL.installScripts = ["mesa"];
home = {
inherit stateVersion username;
homeDirectory = "/home/${username}";

View file

@ -24,14 +24,8 @@
kdenlive.enable = false;
mpv.enable = false;
};
web.firefox = {
enable = true;
enableNixGL = true;
};
web.qutebrowser = {
enable = true;
enableNixGL = true;
};
web.firefox.enable = true;
web.qutebrowser.enable = true;
web.webcord.enable = false;
gaming.lutris.enable = false;
desktop.sway = {

View file

@ -2,10 +2,7 @@
config.modules = {
application = {
zathura.enable = true;
foot = {
enable = true;
font-size = "10.5";
};
foot.enable = true;
};
audio.cmus.enable = true;
cli = {
@ -33,9 +30,22 @@
zellij.enable = true;
zsh.enable = true;
};
desktop.sway = {
enable = true;
kanshi = true;
swaylock.useNullPackage = true;
waybar = {
laptop = true;
gpuThermal.enable = false;
cpuThermal = {
hwmonPathAbs = "/sys/devices/platform/coretemp.0/hwmon/";
inputFilename = "temp1_input";
};
};
xdg.useDistributionPortals = true;
};
web.firefox = {
enable = true;
enableNixGL = true;
optionalExtensions = with pkgs.nur.repos.rycee.firefox-addons; [
okta-browser-plugin
];

View file

@ -1,4 +1,4 @@
{ pkgs, ... }:
{ pkgs, config, ... }:
{
home.packages = with pkgs; [
dejavu_fonts
@ -13,7 +13,23 @@
noto-fonts-cjk-sans
slurp
wl-clipboard
(config.lib.nixGL.wrap ungoogled-chromium)
(config.lib.nixGL.wrap slack)
];
targets.genericLinux.enable = true;
xdg.mime.enable = true;
wayland.windowManager.sway.config.input = {
"1:1:AT_Translated_Set_2_keyboard" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
"65261:8800:KBDFans_DZ60" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
};
home.sessionVariables = {
SSH_AUTH_SOCK = ''$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh'';
};
}

View file

@ -31,7 +31,7 @@ let
version = "main";
src = builtins.fetchGit {
url = "https://github.com/tonychg/nvim-k8s-lsp.git";
rev = "930aa20bcd54f2d6f16040e98ff4068b292c6c7f";
rev = "1dffda65f4fe117f67514ed5d93b18f62be1ef24";
ref = "main";
};
};
@ -167,6 +167,7 @@ in
p.cpp
p.cmake
p.dockerfile
p.go
p.hcl
p.helm
p.javascript

View file

@ -10,14 +10,14 @@ in
config = mkIf cfg.enable {
programs.zsh = {
enable = true;
dotDir = ".config/zsh";
dotDir = "${config.xdg.configHome}/zsh";
defaultKeymap = "viins";
enableCompletion = true;
history = {
ignoreAllDups = true;
save = 10000;
share = true;
path = "$HOME/.local/share/zsh/history";
path = "${config.xdg.dataHome }/zsh/history";
};
historySubstringSearch = {
enable = true;
@ -108,7 +108,7 @@ in
};
}];
localVariables = {
BASE16_THEME = "$HOME/.config/zsh/plugins/base16";
BASE16_THEME = "${config.xdg.configHome}/zsh/plugins/base16";
# Make ESC key more reactive to go to normal mode
KEYTIMEOUT = 1;
};

View file

@ -13,6 +13,26 @@ in
description = "configure laptop mode";
};
swaylock.useNullPackage = mkOption {
type = types.bool;
default = false;
description = ''
Use null package to not install swaylock with Nix
Useful when using Home-Manager on third-party distribution to avoid
problem with PAM
'';
};
xdg.useDistributionPortals = mkOption {
type = types.bool;
default = false;
description = ''
This prevent installing xdg-desktop-portal from nixpkgs. These
Useful when using Home-Manager on third-party distribution with old
version of portals (coucou Ubuntu LTS)
'';
};
wallpapers = {
lockscreen = mkOption {
type = types.str;
@ -133,8 +153,10 @@ in
};
};
# Avoid pixelated effect for QT application with fractionnal scaling
home.sessionVariables = {
# Use wayland for chrom{e|ium} based crap
NIXOS_OZONE_WL = "1";
# Avoid pixelated effect for QT application with fractionnal scaling
QT_SCALE_FACTOR_ROUNDING_POLICY = "RoundPreferFloor";
};
@ -158,6 +180,34 @@ in
desktop = "${config.home.homeDirectory}/documents";
publicShare = "${config.home.homeDirectory}/tmp/public";
};
portal = mkIf (cfg.xdg.useDistributionPortals == false) {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
];
xdgOpenUsePortal = true;
config = {
sway = {
default = [
"wlr"
"gtk"
];
};
};
};
};
# When using `useDistributionPackage`, create wlr configuration to let user
# choose the right screen. This is a workarount to not have to configure
# it manually.
home.file = mkIf cfg.xdg.useDistributionPortals {
"${config.xdg.configHome}/xdg-desktop-portal-wlr/config".text = ''
[screencast]
max_fps=30
chooser_type=simple
chooser_cmd=${pkgs.slurp}/bin/slurp -f %o -or
'';
};
};
}

View file

@ -42,18 +42,16 @@ with lib;
profile.name = "work";
profile.outputs = [
{
criteria = "Iiyama North America PL2480H 11183M2807013";
criteria = "Iiyama North America PL2792QN 1179214201663";
mode = "2560x1440";
position = "1450,0";
scale = 1.15;
}
{
criteria = "BOE 0x0A95 Unknown";
mode = "1920x1080";
position = "0,0";
}
{
criteria = "Iiyama North America PL2480H 11183M2807016";
mode = "1920x1080";
position = "1920,0";
}
{
criteria = "eDP-1";
status = "disable";
scale = 1.325;
}
];
}

View file

@ -6,6 +6,7 @@ in
{
config = mkIf config.modules.desktop.sway.enable {
wayland.windowManager.sway = {
package = config.lib.nixGL.wrap pkgs.sway;
enable = true;
wrapperFeatures.gtk = true;
systemd.enable = true;
@ -75,7 +76,7 @@ in
"${mod}+Alt+k" = "kill";
"${mod}+Alt+c" = "reload";
"${mod}+Alt+Backspace" = "exec swaynag -t warning -m 'Exit sway?' -B 'Yes' 'swaymsg exit'";
"${mod}+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock";
"${mod}+Alt+l" = if cfg.swaylock.useNullPackage then "exec swaylock" else "exec ${pkgs.swaylock}/bin/swaylock";
# Manage windows placement
"${mod}+b" = "splith";
"${mod}+v" = "splitv";

View file

@ -10,7 +10,7 @@ in
timeouts = [
{
timeout = 300;
command = "${pkgs.swaylock}/bin/swaylock -f";
command = if cfg.swaylock.useNullPackage then ''/usr/bin/swaylock -f'' else ''${pkgs.swaylock}/bin/swaylock -f'';
}
{
timeout = 600;
@ -21,11 +21,11 @@ in
events = [
{
event = "before-sleep";
command = "${pkgs.swaylock}/bin/swaylock -f";
command = if cfg.swaylock.useNullPackage then ''/usr/bin/swaylock -f'' else ''${pkgs.swaylock}/bin/swaylock -f'';
}
{
event = "lock";
command = "${pkgs.swaylock}/bin/swaylock -f";
command = if cfg.swaylock.useNullPackage then ''usr/bin/swaylock -f'' else ''${pkgs.swaylock}/bin/swaylock -f'';
}
];
};

View file

@ -6,9 +6,10 @@ in
{
config = mkIf config.modules.desktop.sway.enable {
programs.swaylock = {
package = if cfg.swaylock.useNullPackage then null else pkgs.swaylock;
enable = true;
settings = {
image = "${cfg.wallpapers.lockscreen}";
image = if cfg.wallpapers.lockscreen != "" then "${cfg.wallpapers.lockscreen}" else false;
scaling = "center";
color = "000000";
indicator-radius = 70;

View file

@ -101,8 +101,8 @@ in
"format-icons" = {
"car" = "";
"default" = "";
"handsfree" = "󰋎";
"headphones" = "󰋋";
"hands-free" = "󰋎";
"headphone" = "󰋋";
"headset" = "󰋎";
"phone" = "";
"portable" = "";

View file

@ -29,11 +29,6 @@ in
description = "Optional Firefox Plugins to install";
};
enableNixGL = mkOption {
type = types.bool;
default = false;
description = "Use NixGL to start Firefox";
};
};
config = mkIf cfg.enable {
programs.browserpass = {
@ -47,24 +42,6 @@ in
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
};
xdg.desktopEntries."firefox" = mkIf cfg.enableNixGL {
name = "Firefox NixGL Powered";
exec = "${pkgs.nixgl.nixGLMesa}/bin/nixGLMesa firefox %U";
icon = "firefox";
terminal = false;
type = "Application";
startupNotify = true;
actions = {
"new-private-window" = {
exec = "${pkgs.nixgl.nixGLMesa}/bin/nixGLMesa firefox --private-window %U";
name = "New Private Window";
};
"new-window" = {
exec = "${pkgs.nixgl.nixGLMesa}/bin/nixGLMesa firefox --new-window %U";
name = "New Window";
};
};
};
xdg.configFile."tridactyl/tridactylrc".text = ''
sanitize tridactyllocal tridactylsync
@ -93,13 +70,13 @@ in
allExtensions = cfg.baseExtensions ++ cfg.optionalExtensions;
in {
enable = true;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
package = config.lib.nixGL.wrap ( pkgs.wrapFirefox pkgs.firefox-unwrapped {
nativeMessagingHosts = [
# Tridactyl native connector
pkgs.tridactyl-native
pkgs.browserpass
];
};
});
profiles.ephase = {
id = 0;
name = "ephase";

View file

@ -6,35 +6,13 @@ in
{
options.modules.web.qutebrowser = {
enable = mkEnableOption "enable Qutebrowser web browser";
enableNixGL = mkOption {
type = types.bool;
default = false;
description = "Use NixGL to start Qutebrowser";
};
};
config = mkIf cfg.enable {
xdg.desktopEntries."org.qutebrowser.qutebrowser" = mkIf cfg.enableNixGL {
name = "QuteBrowser NixGL Powered";
exec = "${pkgs.nixgl.nixGLMesa}/bin/nixGLMesa qutebrowser %u";
icon = "qutebrowser";
terminal = false;
type = "Application";
startupNotify = true;
actions = {
"preference" = {
exec = "${pkgs.nixgl.nixGLMesa}/bin/nixGLMesa qutebrowser \"qute://settings\"";
name = "Preferences";
};
};
};
programs.qutebrowser = {
enable = true;
package = config.lib.nixGL.wrap pkgs.qutebrowser;
loadAutoconfig = true;
settings = {
qt.args = [
"autoplay-policy=user-gesture-required"
"ignore-gpu-blocklist"

View file

@ -16,20 +16,5 @@ in
alsa.support32Bit = true;
pulse.enable = true;
};
xdg.portal = {
enable = true;
wlr.enable = true;
# gtk portal needed to make gtk apps happy
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
config = {
common = {
default = [
"gtk"
];
"org.freedesktop.impl.portal.ScreenCast" = "wlr";
"org.freedesktop.impl.portal.Screenshot" = "wlr";
};
};
};
};
}

View file

@ -4,6 +4,17 @@
(final: prev: {
qutebrowser = prev.qutebrowser.override {
enableWideVine = if pkgs.system == "x86_64-linux" then true else false;
# Get Widevine friom slackware as google CDN seems to not working anymore
# TODO: Remove this when resolved upstream
# https://github.com/NixOS/nixpkgs/issues/435671
widevine-cdm = pkgs.widevine-cdm.overrideAttrs (oldAttrs: {
src = pkgs.fetchzip {
url = "https://alien.slackbook.org/slackbuilds/chromium-widevine-plugin/build/4.10.2891.0-linux-x64.zip" ;
hash = "sha256-ZO6FmqJUnB9VEJ7caJt58ym8eB3/fDATri3iOWCULRI";
stripRoot = false;
};
});
};
})
inputs.nur.overlays.default