Compare commits

...

16 commits

12 changed files with 95 additions and 225 deletions

View file

@ -54,7 +54,6 @@ in
../overlays/wired-notify.nix ../overlays/wired-notify.nix
../overlays/wallpapers.nix ../overlays/wallpapers.nix
../overlays/nil.nix ../overlays/nil.nix
../overlays/dix.nix
../overlays/eepy.nix ../overlays/eepy.nix
../overlays/calibre-no-mime.nix ../overlays/calibre-no-mime.nix
../overlays/fcitx5-table-extra-taiwanese.nix ../overlays/fcitx5-table-extra-taiwanese.nix
@ -177,7 +176,6 @@ in
../homeModules/common/fzf.nix ../homeModules/common/fzf.nix
../homeModules/common/git.nix ../homeModules/common/git.nix
../homeModules/common/gpg.nix ../homeModules/common/gpg.nix
../homeModules/common/kitty.nix
../homeModules/common/ghostty.nix ../homeModules/common/ghostty.nix
../homeModules/common/leana.nix ../homeModules/common/leana.nix
../homeModules/common/locale.nix ../homeModules/common/locale.nix

View file

@ -69,41 +69,27 @@
pkgs.onefetch pkgs.onefetch
pkgs.just pkgs.just
# nix tools pkgs.nixfmt-rfc-style # formatter
# # Alejandra handles inline comments poorly pkgs.nurl # fetcher made easy
# # https://github.com/kamadorueda/alejandra/issues/429 pkgs.nix-diff # debug cache miss
# pkgs.alejandra
pkgs.nixfmt-rfc-style
pkgs.nurl
pkgs.dix
pkgs.niv
pkgs.npins pkgs.npins
pkgs.nix-tree pkgs.nix-tree # analyze closure
pkgs.nix-output-monitor
pkgs.nh
# productivity / media # productivity / media
pkgs.evolution pkgs.evolution
pkgs.libreoffice pkgs.libreoffice
pkgs.minder # mindmap tool
pkgs.calibre pkgs.calibre
pkgs.foliate # TODO: replace calibre with foliate
# pkgs.rawtherapee
pkgs.digikam pkgs.digikam
pkgs.gimp
pkgs.easyeffects
pkgs.nautilus pkgs.nautilus
pkgs.sushi # space bar previewer pkgs.sushi # space bar previewer
# pkgs.blender
# pkgs.inkscape
# pkgs.aseprite
# pkgs.xournalpp # pkgs.xournalpp
pkgs.nicotine-plus
pkgs.picard # music tagger pkgs.picard # music tagger
pkgs.qbittorrent
pkgs.mousai pkgs.mousai
pkgs.localsend # file share with iOS pkgs.nicotine-plus
pkgs.minder # mindmap tool pkgs.qbittorrent
pkgs.mkvtoolnix pkgs.mkvtoolnix
pkgs.localsend # file share with iOS
# social # social
pkgs.iamb pkgs.iamb
@ -175,17 +161,6 @@
mouse-scroll-multiplier = 1; mouse-scroll-multiplier = 1;
}; };
}; };
kitty = {
enable = false;
font.size = 12; # sweet spot for framework 13
settings = {
shell = lib.getExe config.programs.fish.package;
# https://github.com/kovidgoyal/kitty/issues/1866
# https://sw.kovidgoyal.net/kitty/conf/#terminal-bell
linux_bell_theme = "elementary";
};
};
chromium.enable = true; chromium.enable = true;
}; };

View file

@ -18,7 +18,7 @@
lib.makeBinPath [ lib.makeBinPath [
ghc ghc
pkgs.libnotify pkgs.libnotify
pkgs.hrt-time pkgs.mullvad-status
] ]
}" }"
''; '';

View file

@ -65,20 +65,7 @@ config =
, Run $ , Run $
Com Com
"tomorrow" "tomorrow"
[ "--target", "2025-08-14" [ "--target", "2026-02-02=monmaster"
, "--target", "2025-08-21"
, "--target", "2025-08-22"
, "--target", "2025-09-16=snip snip"
, "--target", "2025-10-13=no teef"
, "--target", "2025-10-31=dragon book"
, "--target", "2025-11-19=scalpel"
, "--target", "2025-11-29=à deux"
-- , "--target", "2025-12-15=campus baguette"
-- , "--target", "2025-12-16=dragon book"
, "--target", "2025-12-18=baguette"
, "--target", "2025-12-30=seule"
, "--target", "2026-02-02=monmaster"
, "--target", "2026-02-22=dernier appel"
] ]
"" ""
(60 &minute) (60 &minute)
@ -102,7 +89,7 @@ config =
] ]
(6 &second) (6 &second)
, Run $ Com "powerprofilesctl" ["get"] "" (6 &second) , Run $ Com "powerprofilesctl" ["get"] "" (6 &second)
, Run $ Com "hrt-time" ["days"] "" (60 &minute) , Run $ Com "mullvad-status" [] "" (6 &second)
, Run XMonadLog , Run XMonadLog
, Run $ , Run $
Weather Weather
@ -124,8 +111,9 @@ config =
<> alignSep config <> alignSep config
<> intercalate "|" <> intercalate "|"
[ " %LFRN% " [ " %LFRN% "
, " %mullvad-status% "
, " %battery%, %powerprofilesctl%) " , " %battery%, %powerprofilesctl%) "
, " %hereClock% (%tomorrow%, %hrt-time%) " , " %hereClock% (%tomorrow%) "
] ]
} }

View file

@ -3,10 +3,8 @@
import XMonad import XMonad
import XMonad.Actions.CopyWindow import XMonad.Actions.CopyWindow
import XMonad.Actions.Navigation2D
import XMonad.Actions.Submap import XMonad.Actions.Submap
import XMonad.Actions.SwapWorkspaces import XMonad.Actions.SwapWorkspaces
import XMonad.Actions.Warp
import XMonad.Hooks.DynamicLog import XMonad.Hooks.DynamicLog
import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.InsertPosition import XMonad.Hooks.InsertPosition
@ -48,7 +46,6 @@ main =
$ withSB xmobarConfig . docks $ withSB xmobarConfig . docks
$ setEwmhActivateHook myActivateHook $ setEwmhActivateHook myActivateHook
$ ewmhFullscreen . ewmh $ ewmhFullscreen . ewmh
$ withNavigation2DConfig def
$ def $ def
{ modMask = superMask { modMask = superMask
, borderWidth = 5 , borderWidth = 5
@ -283,9 +280,6 @@ removedKeybinds =
++ [ (superMask , n) | n <- [xK_1 .. xK_9] ] ++ [ (superMask , n) | n <- [xK_1 .. xK_9] ]
++ [ (superMask .|. shiftMask, n) | n <- [xK_1 .. xK_9] ] ++ [ (superMask .|. shiftMask, n) | n <- [xK_1 .. xK_9] ]
warpToWindowCenter :: X ()
warpToWindowCenter = warpToWindow 0.5 0.5
keybinds :: [((KeyMask, KeySym), X ())] keybinds :: [((KeyMask, KeySym), X ())]
keybinds = keybinds =
[ [
@ -325,39 +319,20 @@ keybinds =
, submap $ M.fromList , submap $ M.fromList
[ ((0, xK_t), withFocused $ windows . W.sink) [ ((0, xK_t), withFocused $ windows . W.sink)
, ((0, xK_l), withFocused $ windows . flip W.float centeredFloat) , ((0, xK_l), withFocused $ windows . flip W.float centeredFloat)
, ((0, xK_c), windows copyToAll)
, ((0, xK_k), killAllOtherCopies)
] ]
) )
-- Switch between layers
, ((altMask, xK_s), switchLayer )
-- We override default focus shifting bindings to warp the cursor to the center of the new window.
-- This is especially useful because mag doesn't work well with focusFollowsMouse.
-- The order is important: focus shift, and then warp the cursor
--
-- Warp when focus shifts by binding, not by mouse (otherwise it's annoying)
-- Directional navigation of windows
, ((altMask, xK_l), windowGo R False >> warpToWindowCenter)
, ((altMask, xK_h), windowGo L False >> warpToWindowCenter)
, ((altMask, xK_k), windowGo U False >> warpToWindowCenter)
, ((altMask, xK_j), windowGo D False >> warpToWindowCenter)
-- Swap adjacent windows
, ((altMask .|. superMask, xK_l), windowSwap R False >> warpToWindowCenter)
, ((altMask .|. superMask, xK_h), windowSwap L False >> warpToWindowCenter)
, ((altMask .|. superMask, xK_k), windowSwap U False >> warpToWindowCenter)
, ((altMask .|. superMask, xK_j), windowSwap D False >> warpToWindowCenter)
] ]
-- Screenshots -- Screenshots
++ (let fullscreen = "maim -u | xclip -in -selection clipboard -t image/png" ++ (let fullscreen = "maim -u | xclip -in -selection clipboard -t image/png"
withSelection = "maim -u -s -b 5 -o | xclip -in -selection clipboard -t image/png" withSelection = "maim -u -s -b 5 -o | xclip -in -selection clipboard -t image/png"
toFloat = "maim -u -s -b 5 -o | feh --auto-zoom -" toFloat = "maim -u -s -b 5 -o | feh --auto-zoom -"
in [ ((0, xK_Print), spawn fullscreen ) in [ ((0, xK_Print), unGrab >> spawn fullscreen )
, ((superMask .|. shiftMask, xK_3 ), spawn fullscreen ) , ((superMask .|. shiftMask, xK_3 ), unGrab >> spawn fullscreen )
, ((superMask .|. shiftMask, xK_4 ), spawn withSelection) , ((superMask .|. shiftMask, xK_4 ), unGrab >> spawn withSelection)
, ((superMask .|. shiftMask, xK_5 ), spawn toFloat ) , ((superMask .|. shiftMask, xK_5 ), unGrab >> spawn toFloat )
] ]
) )

View file

@ -11,7 +11,10 @@
# #
# Script dependencies # Script dependencies
# #
home.packages = [ pkgs.vivid ]; home.packages = [
pkgs.vivid
pkgs.nix-output-monitor # pretty ui for shells
];
programs = { programs = {
fd.enable = true; fd.enable = true;
fzf.enable = true; fzf.enable = true;

View file

@ -1,62 +0,0 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.programs.kitty;
in
{
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.nerd-fonts.iosevka
];
programs.kitty = {
font.name = "family=\"Iosevka NFM\"";
settings = rec {
# Make text thicker
text_composition_strategy = lib.mkIf pkgs.stdenv.isLinux "2.8 0";
# Don't prompt
confirm_os_window_close = 0;
# Never underline links
underline_hyperlinks = "never";
# No default bindings
clear_all_shortcuts = "no";
# cursor
cursor_blink_interval = 1;
cursor_stop_blinking_after = 15; # always blink
# theme
background = "#fdf6e3";
foreground = "#073642";
cursor = "#000000";
cursor_text_color = "#ffffff";
selection_foreground = foreground;
selection_background = "#dbcba3";
color0 = "#073642";
color8 = "#4d4d4d";
color1 = "#af005f";
color9 = "#d33682";
color2 = "#859900";
color10 = "#29a350";
color3 = "#ba9b23";
color11 = "#d6b429";
color4 = "#268bd2";
color12 = "#469edd";
color5 = "#5f5faf";
color13 = "#6060d1";
color6 = "#2aa198";
color14 = "#4bccc1"; # a platupus? perry the platupus?
color7 = "#a0a1a7";
color15 = "#eeeadd";
};
};
};
}

View file

@ -1,6 +0,0 @@
let
sources = import ../../npins;
in
final: _: {
dix = sources.dix.asFlake.packages.${final.stdenv.hostPlatform.system}.default;
}

View file

@ -0,0 +1,40 @@
if ! type mullvad >/dev/null; then
echo -n "Mullvad unavailable"
exit 1
fi
MULLVAD_STATUS="$(mullvad status -j)"
function xmobarColor {
fg="$1"
x="$2"
echo -n "<fc=$fg>$x</fc>"
}
case "$(echo "$MULLVAD_STATUS" | jq -r ".state")" in
connected)
function has-feature {
echo "$MULLVAD_STATUS" | jq --exit-status ".details.feature_indicators|contains([\"$1\"])" >/dev/null
}
if has-feature "LockdownMode"; then
xmobarColor "green" "Mullvad On "
else
xmobarColor "orange" "Mullvad On"
fi
COUNTRY="$(echo "$MULLVAD_STATUS" | jq -r '.details.location.country')"
CITY="$(echo "$MULLVAD_STATUS" | jq -r '.details.location.city')"
echo -n " ($COUNTRY,$CITY)"
;;
disconnected)
function is-locked-down {
echo "$MULLVAD_STATUS" | jq --exit-status ".details.locked_down" >/dev/null
}
if is-locked-down "LockdownMode"; then
xmobarColor "red" "Mullvad Off "
else
xmobarColor "orange" "Mullvad Off"
fi
;;
esac

View file

@ -0,0 +1,14 @@
{
writeShellApplication,
jq,
mullvad,
}:
writeShellApplication {
name = "mullvad-status";
runtimeInputs = [
mullvad
jq
];
text = builtins.readFile ./mullvad-status.sh;
}

View file

@ -1,39 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
libiconv,
darwin,
zlib,
}:
rustPlatform.buildRustPackage (
finalAttrs:
let
cargoToml = fromTOML (builtins.readFile (finalAttrs.src + "/Cargo.toml"));
cargoLock = finalAttrs.src + "/Cargo.lock";
in
{
pname = "tokei";
version = cargoToml.package.version;
src = fetchFromGitHub {
owner = "XAMPPRocky";
repo = "tokei";
rev = "v13.0.0-alpha.9";
hash = "sha256-OSIJYSUwc8SvszEOMgt+d/ljCW2jtBkPw6buof4JpUc=";
};
cargoLock.lockFile = cargoLock;
buildInputs = lib.optionals stdenv.isDarwin [
libiconv
darwin.Security
];
checkInputs = lib.optionals stdenv.isDarwin [ zlib ];
# enable all output formats
buildFeatures = [ "all" ];
}
)

View file

@ -32,22 +32,6 @@
"url": "https://api.github.com/repos/nix-community/disko/tarball/v1.11.0", "url": "https://api.github.com/repos/nix-community/disko/tarball/v1.11.0",
"hash": "13brimg7z7k9y36n4jc1pssqyw94nd8qvgfjv53z66lv4xkhin92" "hash": "13brimg7z7k9y36n4jc1pssqyw94nd8qvgfjv53z66lv4xkhin92"
}, },
"dix": {
"type": "GitRelease",
"repository": {
"type": "GitHub",
"owner": "bloxx12",
"repo": "dix"
},
"pre_releases": false,
"version_upper_bound": null,
"release_prefix": null,
"submodules": false,
"version": "v1.3.0",
"revision": "ba315562f8c4a957dc9c058d75a43419e3307f63",
"url": "https://api.github.com/repos/bloxx12/dix/tarball/v1.3.0",
"hash": "00gr8b6i9xis9kmbblvnafjpaa2hk18bs0i3pxisyzibp928bv2z"
},
"eepy": { "eepy": {
"type": "Git", "type": "Git",
"repository": { "repository": {
@ -100,9 +84,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "45abfa91905a5dafdddb711dd9402d45947cdfbb", "revision": "17da13840dc71ba36b0deb2c0e85097840630ad5",
"url": "https://github.com/ghostty-org/ghostty/archive/45abfa91905a5dafdddb711dd9402d45947cdfbb.tar.gz", "url": "https://github.com/ghostty-org/ghostty/archive/17da13840dc71ba36b0deb2c0e85097840630ad5.tar.gz",
"hash": "1pmfsxd65yva3ij2v20xb5r1hf3mx6lqr593nivnvsi345jnfh1y" "hash": "1ifa8fiqgc4pc7dyzh31d5g0wrawxvrpnz7lcf2qxjfjv5jq0k63"
}, },
"hategroup-dnsbl": { "hategroup-dnsbl": {
"type": "Git", "type": "Git",
@ -127,9 +111,9 @@
}, },
"branch": "release-25.11", "branch": "release-25.11",
"submodules": false, "submodules": false,
"revision": "6bd04da47cfb48dfd15eabf08364b78ad894f5b2", "revision": "82fb7dedaad83e5e279127a38ef410bcfac6d77c",
"url": "https://github.com/nix-community/home-manager/archive/6bd04da47cfb48dfd15eabf08364b78ad894f5b2.tar.gz", "url": "https://github.com/nix-community/home-manager/archive/82fb7dedaad83e5e279127a38ef410bcfac6d77c.tar.gz",
"hash": "1wvysqiybcyf2hzvvpja2522fqhk45554j0b07h3s7zhzc2056ia" "hash": "1rj0cazl5kjcfn4433fj31293yx421wbawryp5q3bq3fsmhkkr9h"
}, },
"infuse": { "infuse": {
"type": "GitRelease", "type": "GitRelease",
@ -197,9 +181,9 @@
}, },
"branch": "nixos-25.11-small", "branch": "nixos-25.11-small",
"submodules": false, "submodules": false,
"revision": "a35a20f6d3d51b6b42b68a6879701f7d87381896", "revision": "ff8a91eb93e8abfceed1957330b54e54e99c747a",
"url": "https://github.com/nixos/nixpkgs/archive/a35a20f6d3d51b6b42b68a6879701f7d87381896.tar.gz", "url": "https://github.com/nixos/nixpkgs/archive/ff8a91eb93e8abfceed1957330b54e54e99c747a.tar.gz",
"hash": "00781d4nhmqzvxph2lpsj3kika3v8y0nigfadr6y8lvzxrcppkfj" "hash": "0j0410wjpkxix1sxfr3fpd60iqvjrkgydiis7rqr4g44y042dfns"
}, },
"nur": { "nur": {
"type": "Git", "type": "Git",
@ -210,9 +194,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "68e3e935ba29960813ab1ecf2852a0ecbe8d5946", "revision": "9aa5514ef92b980580f90029447ecc732851e2a9",
"url": "https://github.com/nix-community/nur/archive/68e3e935ba29960813ab1ecf2852a0ecbe8d5946.tar.gz", "url": "https://github.com/nix-community/nur/archive/9aa5514ef92b980580f90029447ecc732851e2a9.tar.gz",
"hash": "02pmkhd6ram43qnmirh3z46w1l31rmm16mhkx36jaxhpnzlwgr2i" "hash": "1dx6r4nz2dmv6lq34aig2pcgb74m00kq7ma60fm34jih67ldpcs0"
}, },
"pin-emacs28": { "pin-emacs28": {
"type": "Git", "type": "Git",
@ -349,9 +333,9 @@
}, },
"branch": "mistress", "branch": "mistress",
"submodules": false, "submodules": false,
"revision": "ee12113e53e1b9b80638b6963a5b7075c3b81e93", "revision": "861a5942932820291eba572cbe251866895e3655",
"url": "https://git.confusedcompiler.org/leana8959/wallpapers/archive/ee12113e53e1b9b80638b6963a5b7075c3b81e93.tar.gz", "url": "https://git.confusedcompiler.org/leana8959/wallpapers/archive/861a5942932820291eba572cbe251866895e3655.tar.gz",
"hash": "1pv17pvc60jkr8y7j8g3q0wmy5qgsjxsq1gv23yb3gf52g4z98sk" "hash": "0p0q8v510zracsmymws88iv9qgxqyhiwlfcmln5p6yc8a7ra6p8y"
}, },
"wired-notify": { "wired-notify": {
"type": "Git", "type": "Git",
@ -375,9 +359,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "350c729b261e6f5529460140a5f0943dd4c5e156", "revision": "5c9624f3d0176727284678aebf677770dd1375b2",
"url": "https://github.com/0xc000022070/zen-browser-flake/archive/350c729b261e6f5529460140a5f0943dd4c5e156.tar.gz", "url": "https://github.com/0xc000022070/zen-browser-flake/archive/5c9624f3d0176727284678aebf677770dd1375b2.tar.gz",
"hash": "1fbx200712rdz3b8c4acrz0ib8fd636bvsiyv4m31xqpfqpj3kza" "hash": "1highzr36j8crd77y6331ggfm66n78075vj1rqhbbbxfq6aazkz8"
} }
}, },
"version": 5 "version": 5