diff --git a/flake.lock b/flake.lock
index bedad47..76391fa 100644
--- a/flake.lock
+++ b/flake.lock
@@ -10,11 +10,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1715290355,
- "narHash": "sha256-2T7CHTqBXJJ3ZC6R/4TXTcKoXWHcvubKNj9SfomURnw=",
+ "lastModified": 1716561646,
+ "narHash": "sha256-UIGtLO89RxKt7RF2iEgPikSdU53r6v/6WYB0RW3k89I=",
"owner": "ryantm",
"repo": "agenix",
- "rev": "8d37c5bdeade12b6479c85acd133063ab53187a0",
+ "rev": "c2fc0762bbe8feb06a2e59a364fa81b3a57671c9",
"type": "github"
},
"original": {
@@ -77,11 +77,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
- "lastModified": 1716264197,
- "narHash": "sha256-ryPizz6evZsfAjFjUWgxCVzBZ9m1BDVKlMomOHze8VE=",
+ "lastModified": 1717214600,
+ "narHash": "sha256-6cL574j1SSL9At2oZwGarAv9FcwphI9Pd8im+uQ5/bE=",
"owner": "rycee",
"repo": "nur-expressions",
- "rev": "cccd903ebbe5837579d6746ac430beec60d96c19",
+ "rev": "4118c12978f50c094d2e40146d2b1524012a6dd5",
"type": "gitlab"
},
"original": {
@@ -186,11 +186,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
- "lastModified": 1715865404,
- "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=",
+ "lastModified": 1717285511,
+ "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9",
+ "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github"
},
"original": {
@@ -358,11 +358,11 @@
},
"hardware": {
"locked": {
- "lastModified": 1716173274,
- "narHash": "sha256-FC21Bn4m6ctajMjiUof30awPBH/7WjD0M5yqrWepZbY=",
+ "lastModified": 1717248095,
+ "narHash": "sha256-e8X2eWjAHJQT82AAN+mCI0B68cIDBJpqJ156+VRrFO0=",
"owner": "nixos",
"repo": "nixos-hardware",
- "rev": "d9e0b26202fd500cf3e79f73653cce7f7d541191",
+ "rev": "7b49d3967613d9aacac5b340ef158d493906ba79",
"type": "github"
},
"original": {
@@ -483,11 +483,11 @@
]
},
"locked": {
- "lastModified": 1715930644,
- "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=",
+ "lastModified": 1717097707,
+ "narHash": "sha256-HC5vJ3oYsjwsCaSbkIPv80e4ebJpNvFKQTBOGlHvjLs=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d",
+ "rev": "0eb314b4f0ba337e88123e0b1e57ef58346aafd9",
"type": "github"
},
"original": {
@@ -619,11 +619,11 @@
]
},
"locked": {
- "lastModified": 1716170277,
- "narHash": "sha256-fCAiox/TuzWGVaAz16PxrR4Jtf9lN5dwWL2W74DS0yI=",
+ "lastModified": 1717297675,
+ "narHash": "sha256-43UmlS1Ifx17y93/Vc258U7bOlAAIZbu8dsGDHOIIr0=",
"owner": "Mic92",
"repo": "nix-index-database",
- "rev": "e0638db3db43b582512a7de8c0f8363a162842b9",
+ "rev": "972a52bee3991ae1f1899e6452e0d7c01ee566d9",
"type": "github"
},
"original": {
@@ -639,11 +639,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
- "lastModified": 1716254495,
- "narHash": "sha256-2cOTkGglFvwxnVpK1BiIU1ZTT7P0qGxW99UCPoDPBxI=",
+ "lastModified": 1717291708,
+ "narHash": "sha256-9oqdLMnfzywk1B2Lx6jQP6mAL6or6clVtOp+vXBsn9E=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
- "rev": "deab460d7d0ec00eb7bd7b87044882c7ddfbf293",
+ "rev": "4b46d344b7a9e2d026e7da71161826cc01b9eaa8",
"type": "github"
},
"original": {
@@ -670,23 +670,23 @@
},
"nixpkgs-lib": {
"locked": {
- "lastModified": 1714640452,
- "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=",
+ "lastModified": 1717284937,
+ "narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
"type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz"
+ "url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
},
"original": {
"type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz"
+ "url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
"nixpkgs-stable": {
"locked": {
- "lastModified": 1716061101,
- "narHash": "sha256-H0eCta7ahEgloGIwE/ihkyGstOGu+kQwAiHvwVoXaA0=",
+ "lastModified": 1717265169,
+ "narHash": "sha256-IITcGd6xpNoyq9SZBigCkv4+qMHSqot0RDPR4xsZ2CA=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "e7cc61784ddf51c81487637b3031a6dd2d6673a2",
+ "rev": "3b1b4895b2c5f9f5544d02132896aeb9ceea77bc",
"type": "github"
},
"original": {
@@ -714,11 +714,11 @@
},
"nixpkgs_3": {
"locked": {
- "lastModified": 1716137900,
- "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=",
+ "lastModified": 1716948383,
+ "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1",
+ "rev": "ad57eef4ef0659193044870c731987a6df5cf56b",
"type": "github"
},
"original": {
@@ -746,11 +746,11 @@
},
"nixpkgs_5": {
"locked": {
- "lastModified": 1716062047,
- "narHash": "sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA=",
+ "lastModified": 1717112898,
+ "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "02923630b89aa1ab36ef8e422501a6f4fd4b2016",
+ "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0",
"type": "github"
},
"original": {
@@ -762,11 +762,11 @@
},
"nur": {
"locked": {
- "lastModified": 1716316781,
- "narHash": "sha256-ybuEOdUtk7/X9GjZp72npoSk5GHT+9jpL7aPoXaTu7A=",
+ "lastModified": 1717300007,
+ "narHash": "sha256-rtggYfQX+ooy+5lXBOArmFiPmsemf5jLC8G9WKfGGM0=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "83bfd9ae2490c05fac7381100a13211cd27c3109",
+ "rev": "95edadf3f532643a9dbc55aa21f1fd3a01816007",
"type": "github"
},
"original": {
@@ -801,11 +801,11 @@
"utils": "utils_2"
},
"locked": {
- "lastModified": 1716315549,
- "narHash": "sha256-WvNl8Mr9OJxTrk8uZ1v/Qqj9PRHL/xrRSuJqMSlfkG4=",
+ "lastModified": 1717300760,
+ "narHash": "sha256-dQIfOkT/gVzEcXjzQkRMuRhKEoddvZit2yj2kydl6TI=",
"owner": "xunuwu",
"repo": "small-nvim",
- "rev": "7a3db695c926e9eb70d01efe8c29539200b2f306",
+ "rev": "040b84066cd6332d61c7d1b8ae571da8e74f75d8",
"type": "github"
},
"original": {
@@ -820,11 +820,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
- "lastModified": 1716244104,
- "narHash": "sha256-XXbqfkyWe0d0O+zqRQWi2oXi6wYDmTzXedFkBRwx1VI=",
+ "lastModified": 1717297459,
+ "narHash": "sha256-cZC2f68w5UrJ1f+2NWGV9Gx0dEYmxwomWN2B0lx0QRA=",
"owner": "Mic92",
"repo": "sops-nix",
- "rev": "fddd52460e3332eedd8a0043af5675338a5b3e0b",
+ "rev": "ab2a43b0d21d1d37d4d5726a892f714eaeb4b075",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 9c07714..bca37c8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -23,7 +23,9 @@
name = "dots";
};
- packages = import ./pkgs {inherit pkgs;};
+ packages = import ./pkgs {
+ inherit pkgs;
+ };
formatter = pkgs.alejandra;
};
diff --git a/home/profiles/nixdesk/default.nix b/home/profiles/nixdesk/default.nix
index 67be1dd..e2f99e6 100644
--- a/home/profiles/nixdesk/default.nix
+++ b/home/profiles/nixdesk/default.nix
@@ -7,6 +7,7 @@
../../terminal
../../terminal/programs/zellij.nix
+ ../../terminal/programs/beets.nix
../../editors/nvim.nix
#../../editors/emacs.nix
../../editors/vscode.nix
@@ -19,7 +20,8 @@
../../programs/desktop
../../programs/desktop/theme.nix
../../programs/desktop/awesome
- ../../programs/desktop/hyprland
+ #../../programs/desktop/hyprland
+ ../../programs/desktop/sway
# development
../../develop
diff --git a/home/profiles/nixdesk/kanshi.nix b/home/profiles/nixdesk/kanshi.nix
index cc1f64f..9dffd77 100644
--- a/home/profiles/nixdesk/kanshi.nix
+++ b/home/profiles/nixdesk/kanshi.nix
@@ -1,7 +1,7 @@
{
services.kanshi = {
enable = true;
- systemdTarget = "hyprland-session.target";
+ # systemdTarget = "hyprland-session.target"; # default is sway
settings = [
{
profile.name = "default";
diff --git a/home/programs/desktop/common/fuzzel.nix b/home/programs/desktop/common/fuzzel.nix
new file mode 100644
index 0000000..7e6e59f
--- /dev/null
+++ b/home/programs/desktop/common/fuzzel.nix
@@ -0,0 +1,24 @@
+{
+ lib,
+ pkgs,
+ ...
+}: {
+ programs.fuzzel = {
+ enable = true;
+ settings = {
+ main = {
+ terminal = "${lib.getExe pkgs.foot}";
+ layer = "overlay";
+ };
+ colors = {
+ background = "#181818ff";
+ text = "#a4c6d9ff";
+ match = "#ae61b5ff";
+ border = "#feafffff";
+ selection = "#242424ff";
+ selection-text = "#ffffffff";
+ selection-match = "#fac1ffff";
+ };
+ };
+ };
+}
diff --git a/home/programs/desktop/common/wl-clipboard.nix b/home/programs/desktop/common/wl-clipboard.nix
new file mode 100644
index 0000000..67c1897
--- /dev/null
+++ b/home/programs/desktop/common/wl-clipboard.nix
@@ -0,0 +1,5 @@
+{pkgs, ...}: {
+ home.packages = with pkgs; [
+ wl-clipboard
+ ];
+}
diff --git a/home/programs/desktop/common/wob.nix b/home/programs/desktop/common/wob.nix
new file mode 100644
index 0000000..e7b853e
--- /dev/null
+++ b/home/programs/desktop/common/wob.nix
@@ -0,0 +1,5 @@
+{
+ services.wob = {
+ enable = true;
+ };
+}
diff --git a/home/programs/desktop/default.nix b/home/programs/desktop/default.nix
index d1ee342..0498bb4 100644
--- a/home/programs/desktop/default.nix
+++ b/home/programs/desktop/default.nix
@@ -2,13 +2,14 @@
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
- xdg-desktop-portal-hyprland
- xdg-desktop-portal-kde
+ xdg-desktop-portal-wlr
+ xdg-desktop-portal-gtk
];
config = {
preferred = {
- default = "hyprland;gtk";
- "org.freedesktop.impl.portal.FileChooser" = "kde";
+ default = "gtk";
+ "org.freedesktop.impl.portal.Screenshot" = "wlr";
+ "org.freedesktop.impl.portal.Screencast" = "wlr";
};
};
};
diff --git a/home/programs/desktop/hyprland/default.nix b/home/programs/desktop/hyprland/default.nix
index 99b6d6d..e0e8b98 100644
--- a/home/programs/desktop/hyprland/default.nix
+++ b/home/programs/desktop/hyprland/default.nix
@@ -1,10 +1,14 @@
{
pkgs,
lib,
- inputs,
+ osConfig,
config,
...
}: {
+ imports = [
+ ../common/fuzzel.nix
+ ];
+
home.packages = with pkgs; [
wl-clipboard
];
@@ -12,6 +16,7 @@
services.cliphist = {
enable = true;
systemdTarget = "hyprland-session.target";
+ extraOptions = ["-max-items" "150"];
};
#systemd.user.services.cliphist = {
# Unit = {
@@ -31,24 +36,6 @@
# WantedBy = ["hyprland-session.target"];
# };
#};
- programs.fuzzel = {
- enable = true;
- settings = {
- main = {
- terminal = "${lib.getExe pkgs.foot}";
- layer = "overlay";
- };
- colors = {
- background = "#181818ff";
- text = "#a4c6d9ff";
- match = "#ae61b5ff";
- border = "#feafffff";
- selection = "#242424ff";
- selection-text = "#ffffffff";
- selection-match = "#fac1ffff";
- };
- };
- };
programs.waybar = {
enable = true;
@@ -183,7 +170,7 @@
};
"clock" = {
"tooltim-format" = "{:%Y %B}\n{calendar}";
- "format-alt" = "{:%Y-%m-%d}";
+ "format-alt" = "{:%a %Y-%m-%d}";
};
"pulseaudio" = {
"format" = "{volume}%";
@@ -214,7 +201,7 @@
settings = {
exec-once = [
#"${lib.getExe pkgs.xwaylandvideobridge}"
- "${lib.getExe pkgs.swaybg} -i ${config.xdg.userDirs.pictures}/wallpaper.png"
+ "${lib.getExe pkgs.swaybg} -i ${config.xdg.userDirs.pictures}/wallpaper"
];
env = [
"NIXOS_OZONE_WL,1" # for any ozone-based browser & electron apps to run on wayland
@@ -229,7 +216,7 @@
];
input = {
- kb_layout = "eu";
+ kb_layout = osConfig.services.xserver.xkb.layout;
};
general = {
@@ -273,6 +260,7 @@
"$mainMod, P, exec, ${lib.getExe pkgs.fuzzel}"
"$mainMod SHIFT, V, exec, ${lib.getExe pkgs.cliphist} list | ${lib.getExe pkgs.wofi} --dmenu | ${lib.getExe pkgs.cliphist} decode | ${pkgs.wl-clipboard}/bin/wl-copy"
"$mainMod SHIFT, S, exec, ${lib.getExe pkgs.grimblast} --freeze copy area"
+ "$mainMod SHIFT, BACKSPACE, exec, systemctl suspend"
"$mainMod, N, togglesplit"
"$mainMod SHIFT, N, swapsplit"
diff --git a/home/programs/desktop/sway/default.nix b/home/programs/desktop/sway/default.nix
new file mode 100644
index 0000000..4b0fb95
--- /dev/null
+++ b/home/programs/desktop/sway/default.nix
@@ -0,0 +1,99 @@
+{
+ config,
+ pkgs,
+ lib,
+ osConfig,
+ ...
+}: {
+ imports = [
+ ../common/fuzzel.nix
+ ../common/wob.nix
+ ../common/wl-clipboard.nix
+ ];
+
+ services.cliphist = {
+ enable = true;
+ systemdTarget = "sway-session.target";
+ extraOptions = ["-max-items" "150"];
+ };
+
+ wayland.windowManager.sway = {
+ enable = true;
+ checkConfig = false; # doesnt work with custom wallpaper
+ config = {
+ modifier = "Mod4";
+ output = {
+ "*".bg = "${config.xdg.userDirs.pictures}/wallpaper fill";
+ };
+ input = {
+ "*".xkb_layout = osConfig.services.xserver.xkb.layout;
+ };
+ bars = [
+ {
+ workspaceNumbers = false;
+ statusCommand = "${lib.getExe pkgs.i3status}";
+ }
+ ];
+ keybindings = let
+ mod = config.wayland.windowManager.sway.config.modifier;
+ wobVolume = "${pkgs.wireplumber}/bin/wpctl get-volume @DEFAULT_SINK@ | awk '{print $2*100}' > $XDG_RUNTIME_DIR/wob.sock";
+ setVolume = limit: amount: "${pkgs.wireplumber}/bin/wpctl set-volume -l ${limit} @DEFAULT_AUDIO_SINK@ ${amount}";
+ perMonitor = workspace: "\"$(${config.wayland.windowManager.sway.package}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[] | select(.focused == true).id')${toString workspace}\"";
+ #perMonitor = workspace: "${lib.getExe (pkgs.writeShellScriptBin "perMonitor" ''
+ # id=$( md5sum <<< ${config.wayland.windowManager.sway.package}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[] | select(.focused == true).id' )
+ # echo $((0x''${id%% *}))
+ #'')} workspace";
+ #perMonitor = pkgs.writeShellScriptBin "perMonitor" ''
+ # args=( "$@" )
+ # id=$( ${config.wayland.windowManager.sway.package}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[] | select(.focused == true).id' )
+ # # args[$#-1]=$(( ''${args[$#-1]} + $id * 10 ))
+ # args[$#-1]="$id:''${args[$#-1]}"
+ # swaymsg ''${args[@]}
+ #'';
+ dir = with config.wayland.windowManager.sway.config; {
+ inherit up down left right;
+ };
+ in
+ lib.mkOptionDefault (
+ {
+ "${mod}+Shift+v" = "exec ${lib.getExe pkgs.cliphist} list | ${lib.getExe pkgs.wofi} --dmenu | ${lib.getExe pkgs.cliphist} decode | ${pkgs.wl-clipboard}/bin/wl-copy";
+ "${mod}+Ctrl+${dir.left}" = "focus output left";
+ "${mod}+Ctrl+${dir.right}" = "focus output right";
+ "${mod}+Ctrl+${dir.up}" = "focus output up";
+ "${mod}+Ctrl+${dir.down}" = "focus output down";
+
+ "${mod}+Ctrl+Shift+${dir.left}" = "move output left";
+ "${mod}+Ctrl+Shift+${dir.right}" = "move output right";
+ "${mod}+Ctrl+Shift+${dir.up}" = "move output up";
+ "${mod}+Ctrl+Shift+${dir.down}" = "move output down";
+
+ "${mod}+d" = "exec ${lib.getExe pkgs.fuzzel}";
+ "${mod}+Shift+Backspace" = "exec systemctl suspend";
+ "${mod}+Shift+s" = "exec ${lib.getExe pkgs.grimblast} copy area";
+
+ "XF86AudioRaiseVolume" = "exec ${setVolume "1.5" "3%+"} && ${wobVolume}";
+ "XF86AudioLowerVolume" = "exec ${setVolume "1.5" "3%-"} && ${wobVolume}";
+ "XF86AudioPlay" = "exec ${lib.getExe pkgs.playerctl} play-pause";
+ "XF86AudioStop" = "exec ${lib.getExe pkgs.playerctl} stop";
+ "XF86AudioNext" = "exec ${lib.getExe pkgs.playerctl} next";
+ "XF86AudioPrev" = "exec ${lib.getExe pkgs.playerctl} previous";
+ }
+ // builtins.listToAttrs (lib.flatten
+ (builtins.map (x: [
+ {
+ name = "${mod}+${toString x}";
+ #value = "exec swaymsg workspace ${toString x}";
+ value = "exec swaymsg workspace number ${perMonitor x} ${toString x}";
+ #value = "exec ${lib.getExe perMonitor} workspace ${toString x}";
+ }
+ {
+ name = "${mod}+Shift+${toString x}";
+ #value = "exec swaymsg move workspace ${toString x}";
+ value = "exec swaymsg move container to workspace number ${perMonitor x} ${toString x}";
+ #value = "exec ${lib.getExe perMonitor} move workspace ${toString x}";
+ }
+ ]) (lib.range 0 9)))
+ );
+ };
+ };
+}
diff --git a/home/programs/desktop/theme.nix b/home/programs/desktop/theme.nix
index aa1ae4c..52b556a 100644
--- a/home/programs/desktop/theme.nix
+++ b/home/programs/desktop/theme.nix
@@ -7,6 +7,9 @@
size = 16;
};
+ # Also sets org.freedesktop.appearance color-scheme
+ dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark";
+
gtk = {
enable = true;
theme = {
@@ -21,6 +24,9 @@
name = "Sans";
size = 11;
};
+ gtk2.extraConfig = "gtk-application-prefer-dark-theme=1";
+ gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
+ gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
qt = {
diff --git a/home/programs/media/jellyfin.nix b/home/programs/media/jellyfin.nix
index ee3f963..49f0cb7 100644
--- a/home/programs/media/jellyfin.nix
+++ b/home/programs/media/jellyfin.nix
@@ -2,5 +2,6 @@
home.packages = with pkgs; [
jellyfin-media-player
sonixd
+ feishin
];
}
diff --git a/home/programs/misc/discord.nix b/home/programs/misc/discord.nix
index 76817fa..70b1b31 100644
--- a/home/programs/misc/discord.nix
+++ b/home/programs/misc/discord.nix
@@ -1,17 +1,6 @@
{pkgs, ...}: {
home.packages = with pkgs; [
- # TODO: remove this once the vesktop screenshare update gets released
- (vesktop.overrideAttrs (final: prev: {
- version = "ab9e8579eea046187c5cdb51e2041a0beb6e8601";
- src = pkgs.fetchgit {
- url = "https://github.com/Vencord/Vesktop.git";
- rev = "ab9e8579eea046187c5cdb51e2041a0beb6e8601";
- hash = "sha256-s3ndHHN8mqbzL40hMDXXDl+VV9pOk4XfnaVCaQvFFsg=";
- };
- pnpmDeps = prev.pnpmDeps.overrideAttrs {
- outputHash = "sha256-6ezEBeYmK5va3gCh00YnJzZ77V/Ql7A3l/+csohkz68=";
- };
- }))
+ vesktop
(discord.override {
withVencord = true;
withOpenASAR = true;
diff --git a/home/services/system/polkit-agent.nix b/home/services/system/polkit-agent.nix
index dd55fd1..065ba21 100644
--- a/home/services/system/polkit-agent.nix
+++ b/home/services/system/polkit-agent.nix
@@ -1,3 +1,4 @@
+# TODO fix polkit, this dosent work
{pkgs, ...}: {
systemd.user.services.polkit-gnome-authentication-agent-1 = {
Unit.Description = "polkit-gnome-authentication-agent-1";
diff --git a/home/terminal/programs/beets.nix b/home/terminal/programs/beets.nix
new file mode 100644
index 0000000..f04df64
--- /dev/null
+++ b/home/terminal/programs/beets.nix
@@ -0,0 +1,83 @@
+let
+ musicDir = "/home/xun/music/library";
+in {
+ programs.beets = {
+ enable = true;
+ settings = {
+ directory = "${musicDir}/data";
+ library = "${musicDir}/beets/beets.db";
+ import = {
+ log = "${musicDir}/beets/import.log";
+ incremental = true;
+ };
+ plugins = [
+ "embedart"
+ "fetchart"
+ "discogs"
+ #"advancedrewrite"
+ "lyrics"
+ "spotify"
+ "scrub"
+ "duplicates"
+ "unimported"
+ ];
+
+ genres = true;
+
+ spotify.source_weight = 0.7;
+
+ embedart = {
+ auto = true;
+ ifempty = false;
+ remove_art_file = false;
+ };
+
+ fetchart = {
+ auto = true;
+ cautious = true;
+ minwidth = 500;
+ maxwidth = 1200;
+ cover_format = "jpeg";
+ sources = [
+ {"coverart" = "release";}
+ {"coverart" = "releasegroup";}
+ "albumart"
+ "amazon"
+ "google"
+ "itunes"
+ "fanarttv"
+ "lastfm"
+ "wikipedia"
+ ];
+
+ lyrics = {
+ fallback = "''";
+ sources = ["musicmatch" "google"];
+ };
+
+ replace = {
+ "[\\\\]" = "'";
+ "[_]" = "-";
+ "[\\]" = "-";
+ "^\\." = "'";
+ "[\\x00-\\x1f]" = "'";
+ "[<>:\"\\?\\*\\|]" = "'";
+ "\\.$" = "'";
+ "\\s+$" = "'";
+ "^\\s+" = "'";
+ "^-" = "'";
+ "’" = "'";
+ "′" = "'";
+ "″" = "'";
+ "‐" = "-";
+ };
+
+ aunique = {
+ keys = ["albumartist" "albumtype" "year" "album"];
+ disambuguators = ["format" "mastering" "media" "label" "albumdisambig" "releasegroupdisambig"];
+ bracket = "[]";
+ };
+ };
+ };
+ };
+}
diff --git a/home/terminal/programs/tmux.nix b/home/terminal/programs/tmux.nix
index a33dd34..9a8d4fa 100644
--- a/home/terminal/programs/tmux.nix
+++ b/home/terminal/programs/tmux.nix
@@ -9,6 +9,8 @@
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}";
+
+ set-option -g status-style bg=default
'';
};
}
diff --git a/home/terminal/shell/zsh.nix b/home/terminal/shell/zsh.nix
index 1c2c1c5..2b4e801 100644
--- a/home/terminal/shell/zsh.nix
+++ b/home/terminal/shell/zsh.nix
@@ -23,6 +23,9 @@
# improve ^w behaviour
WORDCHARS=
+ # pretty completion menu
+ zstyle ':completion:*' menu select
+
# shift-tab in completion menu
bindkey '^[[Z' reverse-menu-complete
diff --git a/hosts/hopper/brawlstats.nix b/hosts/hopper/brawlstats.nix
index 0615a4e..f7d1663 100644
--- a/hosts/hopper/brawlstats.nix
+++ b/hosts/hopper/brawlstats.nix
@@ -30,7 +30,7 @@
serviceConfig = {
StandardInput = "socket";
ExecStart = "${pkgs.writeShellScript "brawlstats-web.sh" ''
- parameters=$(head -n1 | ${lib.getExe pkgs.gawk} '{print $2}' | ${lib.getExe pkgs.gnused} 's/%20/ /g')
+ parameters=$(head -n1 | ${lib.getExe pkgs.gawk} '{print $2}' | ${lib.getExe pkgs.gnused} 's/,/ /g')
response=""
tosvg() {
diff --git a/hosts/hopper/default.nix b/hosts/hopper/default.nix
index 3a9ad56..ce4dd7b 100644
--- a/hosts/hopper/default.nix
+++ b/hosts/hopper/default.nix
@@ -7,9 +7,15 @@
./brawlstats.nix
];
+ services.tailscale.extraUpFlags = [
+ "--ssh"
+ ];
+
networking.hostName = "hopper";
swapDevices = [];
+ networking.interfaces.eno1.wakeOnLan.enable = true;
+
system.stateVersion = "23.11";
}
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 3ce828c..4a2c38d 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -1,4 +1,5 @@
{pkgs, ...}: {
jdnbtexplorer = pkgs.qt6Packages.callPackage ./jdnbtexplorer {};
gamesand = pkgs.callPackage ./gamesand {};
+ pince = pkgs.callPackage ./pince {};
}
diff --git a/pkgs/pince/default.nix b/pkgs/pince/default.nix
new file mode 100644
index 0000000..bd239f5
--- /dev/null
+++ b/pkgs/pince/default.nix
@@ -0,0 +1,132 @@
+{
+ lib,
+ python3,
+ python3Packages,
+ wrapGAppsHook,
+ gobject-introspection,
+ gtk3,
+ cmake,
+ fetchgit,
+ qt6,
+ git,
+ gdb,
+ xorg,
+ xcb-util-cursor,
+}: let
+ libptrscan = builtins.fetchTarball {
+ url = "https://github.com/kekeimiku/PointerSearcher-X/releases/download/v0.7.3-dylib/libptrscan_pince-x86_64-unknown-linux-gnu.tar.gz";
+ sha256 = "sha256:1as9hjp1xf3mfsxyaw5lxibmxr73nhnbgsxabvg34df7g9ihfq3f";
+ };
+in
+ python3Packages.buildPythonApplication rec {
+ pname = "PINCE";
+ version = "0.1";
+ format = "other";
+ #src = fetchFromGitHub {
+ # owner = "korcankaraokcu";
+ # repo = "PINCE";
+ # rev = "823b213c531d9ffda1aa2b6504bc8a9eefc0c27f";
+ # hash = "sha256-4MTdr4++1tVfXg/t58kcILi2zS83T4IwqgKKXh0Kx3Q=";
+ #};
+ src = fetchgit {
+ url = "https://github.com/korcankaraokcu/PINCE";
+ rev = "823b213c531d9ffda1aa2b6504bc8a9eefc0c27f";
+ hash = "sha256-5jcxWMJHoqCIFLgMyygZ3uh5WfkD0pjiqWg1iKzdwZc=";
+ leaveDotGit = true;
+ };
+
+ dontUseCmakeConfigure = true;
+ dontWrapPythonPrograms = true;
+ dontWrapGApps = true;
+
+ patchPhase = ''
+ # Remove ".venv/PINCE" exist check
+ sed -i '/^if \[ ! -d "\.venv\/PINCE" \]; /,/activate$/ s/^/# /' "./PINCE.sh"
+ sed -i '$s/.venv\/PINCE\/bin\/python3/${lib.escape ["/"] (toString python3)}\/bin\/python3/g' "./PINCE.sh"
+ sed -i 's/#!\/bin\/bash/#!\/bin\/sh/' "./PINCE.sh"
+
+ sed -i 's/\/bin\/gdb/gdb/g' "libpince/typedefs.py"
+
+ # Create a simple start script
+ cat > pince <<- SHELL
+ #!/usr/bin/env bash
+
+ sh PINCE.sh "\$@"
+
+ read -p "Press enter to exit..."
+
+ SHELL
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+
+ sed -i 's/git submodule.*//g' install.sh
+ . <(sed -n '/^exit_on_error() /,/^}/p' install.sh)
+ . <(sed -n '/^set_install_vars() /,/^}/p' install.sh)
+ . <(sed -n '/^compile_translations() /,/^}/p' install.sh)
+ . <(sed -n '/^compile_libscanmem() /,/^}/p' install.sh)
+ . <(sed -n '/^install_libscanmem() /,/^}/p' install.sh)
+
+ install_libscanmem || exit_on_error
+
+ mkdir -p libpince/libptrscan
+ cp ${libptrscan}/ptrscan.py libpince/libptrscan/
+ cp ${libptrscan}/libptrscan_pince.so libpince/libptrscan/libptrscan.so
+
+ LRELEASE_CMD=${qt6.qttools}/bin/lrelease compile_translations || exit_on_error
+
+ runHook postBuild
+ '';
+
+ fixupPhase = ''
+ runHook preFixup
+
+ makeWrapper ${lib.getExe python3} $out/bin/PINCE \
+ "''${gappsWrapperArgs[@]}" \
+ --set PYTHONPATH "${python3Packages.makePythonPath (with python3Packages; [
+ pexpect
+ pyqt6
+ distorm3
+ keystone-engine
+ pygdbmi
+ keyboard
+ pygobject3
+ ])}" \
+ --suffix PATH : "${lib.makeBinPath [
+ gdb
+ qt6.full
+ ]}" \
+ --add-flags "$out/share/pince/PINCE.py"
+
+ runHook postFixup
+ '';
+
+ nativeBuildInputs = [
+ wrapGAppsHook
+ git
+ cmake
+ gobject-introspection
+ ];
+ buildInputs = [
+ python3
+ ];
+ propagatedBuildInputs = with python3Packages; [
+ qt6.full
+ xorg.libxcb
+ xcb-util-cursor
+ gtk3
+ pyqt6
+ pexpect
+ distorm3
+ keystone-engine
+ pygdbmi
+ keyboard
+ pygobject3
+ gdb
+ ];
+ installPhase = ''
+ mkdir -p $out/share/pince
+ cp -r . $out/share/pince
+ '';
+ }
diff --git a/system/default.nix b/system/default.nix
index 1ef0895..9e44132 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -11,6 +11,7 @@ let
./network/networkd.nix
./network/avahi.nix
+ ./network/localsend.nix
./network/tailscale.nix
./desktop
diff --git a/system/network/localsend.nix b/system/network/localsend.nix
new file mode 100644
index 0000000..d28c474
--- /dev/null
+++ b/system/network/localsend.nix
@@ -0,0 +1,8 @@
+{pkgs, ...}: {
+ environment.systemPackages = with pkgs; [
+ localsend
+ ];
+
+ networking.firewall.allowedTCPPorts = [53317];
+ networking.firewall.allowedUDPPorts = [53317];
+}
diff --git a/system/programs/steam.nix b/system/programs/steam.nix
index 762e822..113321e 100644
--- a/system/programs/steam.nix
+++ b/system/programs/steam.nix
@@ -6,6 +6,7 @@
}: {
environment.systemPackages = [
pkgs.protontricks
+ pkgs.steamtinkerlaunch
];
programs.steam = {
diff --git a/system/services/containers/experimental/default.nix b/system/services/containers/experimental/default.nix
index 180001b..8989aa1 100644
--- a/system/services/containers/experimental/default.nix
+++ b/system/services/containers/experimental/default.nix
@@ -1,10 +1,4 @@
-{
- config,
- pkgs,
- lib,
- inputs,
- ...
-}: {
+{config, ...}: {
imports = [
#./smbshare.nix
];
@@ -104,7 +98,7 @@
];
};
jellyfin = {
- image = "jellyfin/jellyfin";
+ image = "jellyfin/jellyfin:2024052005";
volumes = [
"/media/config/jellyfin/config:/config"
"/media/config/jellyfin/cache:/cache"
@@ -313,6 +307,8 @@
lyrics,
spotify,
scrub,
+ duplicates,
+ unimported,
]
genres: yes
@@ -320,9 +316,6 @@
spotify:
source_weight: 0.7
- advancesrewrite:
- artist GHOST: Ghost and Pals
-
embedart:
auto: yes
ifempty: no
diff --git a/system/services/syncthing.nix b/system/services/syncthing.nix
index 3df65ad..5914346 100644
--- a/system/services/syncthing.nix
+++ b/system/services/syncthing.nix
@@ -15,7 +15,7 @@
autoAcceptFolders = true;
};
"redmi-note-10-pro" = {
- id = "MRAHIKH-TNHAKEG-OHMEFXI-BO54SXR-6IL2Y3B-3HVOWZF-ZGTS2OX-YSWTPQF";
+ id = "WJPE56U-56LPOYB-IAENGSW-IFQ4A6J-66JX73I-ONXX4PY-QXJK6IF-UZHVWA7";
autoAcceptFolders = true;
};
"hopper" = {
@@ -26,11 +26,19 @@
folders = {
"~/secrets" = {
devices = builtins.attrNames config.services.syncthing.settings.devices;
+ versioning = {
+ type = "trashcan";
+ params.cleanoutDays = "180";
+ };
id = "sfw9y-yusup";
};
"~/docs/xun-megavault" = {
devices = builtins.attrNames config.services.syncthing.settings.devices;
id = "1zkf-wf5r";
+ versioning = {
+ type = "simple";
+ params.keep = "15";
+ };
};
};
};