Compare commits

...

11 commits

Author SHA1 Message Date
1cd19687be lmao 2023-10-28 22:25:06 +02:00
224c80c420 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/6bba64781e4b7c1f91a733583defbd3e46b49408' (2023-10-10)
  → 'github:nix-community/home-manager/ae631b0b20f06f7d239d160723d228891ddb2fe0' (2023-10-20)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f99e5f03cc0aa231ab5950a15ed02afec45ed51a' (2023-10-09)
  → 'github:NixOS/nixpkgs/7c9cc5a6e5d38010801741ac830a3f8fd667a7a0' (2023-10-19)
• Updated input 'nixpkgs-stable':
    'github:NixOS/nixpkgs/bd1cde45c77891214131cbbea5b1203e485a9d51' (2023-10-11)
  → 'github:NixOS/nixpkgs/679cadfdfed2b90311a247b2d6ef6dfd3d6cab73' (2023-10-20)
2023-10-21 19:01:23 +02:00
a15428963c AAAAAAAAAAAAAAAAAAAAAAAAAAAAAa 2023-09-25 20:11:47 +02:00
6af89065f1 Merge branch 'master' of gitlab.com:schrottkatze/nix-configs 2023-09-25 19:47:49 +02:00
1e4e46dfd7 grrr 2023-09-25 19:47:34 +02:00
8475640b1d remove ripgrep...? 2023-09-25 19:47:23 +02:00
ed9ca536ad Merge branch 'master' of gitlab.com:schrottkatze/nix-configs 2023-09-25 19:43:55 +02:00
e38fd62181 Meow 2023-09-25 19:32:00 +02:00
a60f9016d1 flake.lock: Add
Flake lock file updates:

• Added input 'arion':
    'github:hercules-ci/arion/28902d348807c494115177595f812a3e54cc913b' (2023-08-23)
• Added input 'arion/flake-parts':
    'github:hercules-ci/flake-parts/47478a4a003e745402acf63be7f9a092d51b83d7' (2023-02-09)
• Added input 'arion/flake-parts/nixpkgs-lib':
    follows 'arion/nixpkgs'
• Added input 'arion/haskell-flake':
    'github:srid/haskell-flake/c2cafce9d57bfca41794dc3b99c593155006c71e' (2023-02-02)
• Added input 'arion/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/0a63bfa3f00a3775ea3a6722b247880f1ffe91ce' (2023-07-15)
• Added input 'arion/hercules-ci-effects/flake-parts':
    'github:hercules-ci/flake-parts/8e8d955c22df93dbe24f19ea04f47a74adbdc5ec' (2023-07-04)
• Added input 'arion/hercules-ci-effects/flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/4bc72cae107788bf3f24f30db2e2f685c9298dc9?dir=lib' (2023-06-29)
• Added input 'arion/hercules-ci-effects/hercules-ci-agent':
    'github:hercules-ci/hercules-ci-agent/367dd8cd649b57009a6502e878005a1e54ad78c5' (2023-07-05)
• Added input 'arion/hercules-ci-effects/hercules-ci-agent/flake-parts':
    'github:hercules-ci/flake-parts/8e8d955c22df93dbe24f19ea04f47a74adbdc5ec' (2023-07-04)
• Added input 'arion/hercules-ci-effects/hercules-ci-agent/flake-parts/nixpkgs-lib':
    follows 'arion/hercules-ci-effects/hercules-ci-agent/nixpkgs'
• Added input 'arion/hercules-ci-effects/hercules-ci-agent/haskell-flake':
    'github:srid/haskell-flake/74210fa80a49f1b6f67223debdbf1494596ff9f2' (2023-05-22)
• Added input 'arion/hercules-ci-effects/hercules-ci-agent/nixpkgs':
    'github:NixOS/nixpkgs/0fbe93c5a7cac99f90b60bdf5f149383daaa615f' (2023-07-02)
• Added input 'arion/hercules-ci-effects/nixpkgs':
    follows 'arion/nixpkgs'
• Added input 'arion/nixpkgs':
    'github:NixOS/nixpkgs/545c7a31e5dedea4a6d372712a18e00ce097d462' (2023-02-13)
• Added input 'easymacros':
    'git+https://gitlab.com/obsidianical/easymacros.git?ref=refs/heads/main&rev=43405b3bcf786513adc6534ed0e6618c458ba2cb' (2022-09-07)
• Added input 'easymacros/flake-utils':
    'github:numtide/flake-utils/bee6a7250dd1b01844a2de7e02e4df7d8a0a206c' (2022-06-24)
• Added input 'easymacros/naersk':
    'github:nix-community/naersk/cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f' (2022-06-12)
• Added input 'easymacros/naersk/nixpkgs':
    'github:NixOS/nixpkgs/660ac43ff9ab1f12e28bfb31d4719795777fe152' (2022-07-02)
• Added input 'easymacros/nixpkgs':
    'github:NixOS/nixpkgs/660ac43ff9ab1f12e28bfb31d4719795777fe152' (2022-07-02)
• Added input 'gumseite':
    'git+https://gitlab.com/schrottkatze/gum-schulsachen.git?ref=refs/heads/master&rev=57f43b774151e34bbf3de5f159924aca93750561' (2023-03-30)
• Added input 'gumseite/flake-utils':
    'github:numtide/flake-utils/93a2b84fc4b70d9e089d029deacc3583435c2ed6' (2023-03-15)
• Added input 'gumseite/nixpkgs':
    'github:NixOS/nixpkgs/5b7cd5c39befee629be284970415b6eb3b0ff000' (2023-03-28)
• Added input 'home-manager':
    'github:nix-community/home-manager/b372d7f8d5518aaba8a4058a453957460481afbc' (2023-05-29)
• Added input 'home-manager/nixpkgs':
    follows 'nixpkgs'
• Added input 'home-manager/utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Added input 'karton':
    'git+https://gitlab.com/obsidianical/microbin.git?ref=refs/heads/master&rev=5002f11bf360e4508fc73c28fa0aa0f80bf0713d' (2023-05-03)
• Added input 'karton/naersk':
    'github:nix-community/naersk/d998160d6a076cfe8f9741e56aeec7e267e3e114' (2022-12-15)
• Added input 'karton/naersk/nixpkgs':
    'github:NixOS/nixpkgs/f5ffd5787786dde3a8bf648c7a1b5f78c4e01abb' (2023-03-03)
• Added input 'karton/nixpkgs':
    'github:NixOS/nixpkgs/f5ffd5787786dde3a8bf648c7a1b5f78c4e01abb' (2023-03-03)
• Added input 'karton/utils':
    'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)
• Added input 'mac-brcm-fw':
    'path:./mac-brcm-fw?lastModified=1&narHash=sha256-ewzM8IBKNFCx73ah5rflcdx605ukRF3oTWwih2CTsvs%3D' (1970-01-01)
• Added input 'meowsite':
    'git+https://gitlab.com/obsidianical/meowsite.git?ref=refs/heads/master&rev=f40a32b22bc96b07cb78fb5751cf92d5f30b1c24' (2023-03-15)
• Added input 'meowsite/flake-utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Added input 'meowsite/nixpkgs':
    'github:NixOS/nixpkgs/ab1254087f4cdf4af74b552d7fc95175d9bdbb49' (2023-01-22)
• Added input 'nixos-hardware':
    'github:networkException/nixos-hardware/8e28b9ee431b265d1fc74b8b819ea0816344c4a1' (2023-06-27)
• Added input 'nixpkgs':
    'github:NixOS/nixpkgs/e35dcc04a3853da485a396bdd332217d0ac9054f' (2023-09-22)
• Added input 'nixpkgs-stable':
    'github:NixOS/nixpkgs/261abe8a44a7e8392598d038d2e01f7b33cf26d0' (2023-09-24)
• Added input 'wordsofgod':
    'git+https://gitlab.com/obsidianical/wordsofgod.git?ref=refs/heads/master&rev=93c03cbe6f7bac22c7c5023d4bcba3af837ce43b' (2023-02-09)
• Added input 'wordsofgod/naersk':
    'github:nix-community/naersk/d998160d6a076cfe8f9741e56aeec7e267e3e114' (2022-12-15)
• Added input 'wordsofgod/naersk/nixpkgs':
    'github:NixOS/nixpkgs/d25de6654a34d99dceb02e71e6db516b3b545be6' (2023-02-05)
• Added input 'wordsofgod/nixpkgs':
    'github:NixOS/nixpkgs/d25de6654a34d99dceb02e71e6db516b3b545be6' (2023-02-05)
• Added input 'wordsofgod/utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
2023-09-25 19:30:57 +02:00
b99824885a Merge branch 'master' of gitlab.com:schrottkatze/nix-configs 2023-09-25 19:30:33 +02:00
5e4b9ee4c0 last commit 2023-08-24 16:57:47 +02:00
27 changed files with 464 additions and 213 deletions

View file

@ -1,4 +0,0 @@
sudo nixos-rebuild switch --flake . \
--impure --override-input mac-brcm-fw path:/home/jade/mac-brcm-fw \
--build-host 192.168.178.119 --no-build-nix

View file

@ -1,3 +0,0 @@
sudo nixos-rebuild switch --flake . \
--impure --override-input mac-brcm-fw path:/home/jade/mac-brcm-fw \

View file

@ -1 +0,0 @@
sudo nixos-rebuild switch --flake . --impure

View file

@ -27,12 +27,13 @@ with builtins;
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [
nushellFull networkmanager htmlq
wget git neofetch pciutils zip unzip gnutar iw btop nodejs jdk8 jdk11 wget git neofetch pciutils zip unzip gnutar iw btop nodejs jdk8 jdk11
jdk libsecret gh nix-prefetch-scripts fzf glab ripgrep jdk libsecret gh nix-prefetch-scripts fzf glab ripgrep
sl lolcat appimage-run git-crypt file whois p7zip file nmap cmatrix tree sl lolcat appimage-run git-crypt file whois p7zip file nmap cmatrix tree
socat smartmontools socat smartmontools mprocs
dig aria2 usbutils
]; ];
}; };
@ -101,7 +102,7 @@ with builtins;
users.users.jade = { users.users.jade = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" ]; extraGroups = [ "wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark" ];
packages = [ packages = [
pkgs.marksman pkgs.marksman
]; ];

View file

@ -245,11 +245,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1695550077, "lastModified": 1697838989,
"narHash": "sha256-xoxR/iY69/3lTnnZDP6gf3J46DUKPcf+Y1jH03tfZXE=", "narHash": "sha256-hwVlO+st8vWJO6iy3/JbMHrUyY4Ak7xUSmffoWqBPUg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a88df2fb101778bfd98a17556b3a2618c6c66091", "rev": "ae631b0b20f06f7d239d160723d228891ddb2fe0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -418,11 +418,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1695559356, "lastModified": 1697777081,
"narHash": "sha256-kXZ1pUoImD9OEbPCwpTz4tHsNTr4CIyIfXb3ocuR8sI=", "narHash": "sha256-n2vQARhKevRGyeo+LAa8g+CdUQsdH/caNk8jnylcPhY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "261abe8a44a7e8392598d038d2e01f7b33cf26d0", "rev": "679cadfdfed2b90311a247b2d6ef6dfd3d6cab73",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -569,11 +569,11 @@
}, },
"nixpkgs_9": { "nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1695360818, "lastModified": 1697723726,
"narHash": "sha256-JlkN3R/SSoMTa+CasbxS1gq+GpGxXQlNZRUh9+LIy/0=", "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e35dcc04a3853da485a396bdd332217d0ac9054f", "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -55,7 +55,7 @@
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.jade = { nixosConfig, pkgs, ... }: { home-manager.users.jade = { nixosConfig, pkgs, ... }: {
home.sessionVariables.TZ = nixosConfig.time.timeZone; home.sessionVariables.TZ = nixosConfig.time.timeZone;
home.stateVersion = "${nixosConfig.system.stateVersion}"; home.stateVersion = "22.11";
}; };
} }
]; ];

View file

@ -13,6 +13,7 @@ import System.Exit
import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP import XMonad.Hooks.StatusBar.PP
import XMonad.Hooks.EwmhDesktops
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import qualified Data.Map as M import qualified Data.Map as M
@ -20,6 +21,8 @@ import qualified Data.Map as M
import XMonad.Layout.Spacing import XMonad.Layout.Spacing
import XMonad.Layout.Tabbed import XMonad.Layout.Tabbed
import XMonad.Actions.KeyRemap
import XMonad.Prompt import XMonad.Prompt
import XMonad.Prompt.Layout import XMonad.Prompt.Layout
import Graphics.X11.ExtraTypes.XF86 import Graphics.X11.ExtraTypes.XF86
@ -29,7 +32,7 @@ import Control.Monad (when)
-- The preferred terminal program, which is used in a binding below and by -- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules. -- certain contrib modules.
-- --
myTerminal = "kitty" myTerminal = "kitty"
-- Whether focus follows the mouse pointer. -- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool myFocusFollowsMouse :: Bool
@ -41,14 +44,14 @@ myClickJustFocuses = False
-- Width of the window border in pixels. -- Width of the window border in pixels.
-- --
myBorderWidth = 2 myBorderWidth = 2
-- modMask lets you specify which modkey you want to use. The default -- modMask lets you specify which modkey you want to use. The default
-- is mod1Mask ("left alt"). You may also consider using mod3Mask -- is mod1Mask ("left alt"). You may also consider using mod3Mask
-- ("right alt"), which does not conflict with emacs keybindings. The -- ("right alt"), which does not conflict with emacs keybindings. The
-- "windows key" is usually mod4Mask. -- "windows key" is usually mod4Mask.
-- --
myModMask = mod4Mask myModMask = mod4Mask
-- The default number of workspaces (virtual screens) and their names. -- The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a -- By default we use numeric strings, but any string may be used as a
@ -59,129 +62,129 @@ myModMask = mod4Mask
-- --
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9] -- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
-- --
myWorkspaces = ["comms","browser","3","4","5","6","7","8","9"] myWorkspaces = ["comms","browser","3","4","5","6","7","8","9"]
-- Border colors for unfocused and focused windows, respectively. -- Border colors for unfocused and focused windows, respectively.
-- --
myNormalBorderColor = "#3c3836" myNormalBorderColor = "#3c3836"
myFocusedBorderColor = "#504945" myFocusedBorderColor = "#504945"
myRemaps = KeymapTable [ ((0, xK_a), (0, xK_b)) ]
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here. -- Key bindings. Add, modify or remove key bindings here.
-- --
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ((modm, xK_Return), spawn $ XMonad.terminal conf)
, ((modm .|. shiftMask, xK_q), kill)
-- -- Rotate through the available layout algorithms
, ((modm, xK_space ), sendMessage NextLayout)
[ ((modm, xK_Return), spawn $ XMonad.terminal conf) -- rofiing
, ((modm .|. shiftMask, xK_q), kill) , ((modm, xK_d), spawn "rofi -show drun")
-- Rotate through the available layout algorithms , ((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons")
, ((modm, xK_space ), sendMessage NextLayout) , ((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark")
, ((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy")
-- rofiing , ((modm, xK_o), spawn "rofi -show searchwolf -modes searchwolf:searchwolf -theme gruvbox-dark")
, ((modm, xK_d), spawn "rofi -show drun")
, ((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons")
, ((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark")
, ((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy")
, ((modm, xK_o), spawn "rofi -show searchwolf -modes searchwolf:searchwolf -theme gruvbox-dark") -- screenshotting
-- TODO: Fix/rewrite window-screenshot.sh
, ((modm, xK_w), spawn "window-screenshot.nu")
, ((modm, xK_s), spawn "flameshot gui -c -p $HOME/Pictures/screenshots")
, ((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots")
, ((modm, xK_t), spawn "ocr-screenshot.sh")
-- screenshotting , ((modm .|. shiftMask, xK_t), spawn "DEVICE=\"MELF0410:00 1FD2:7007\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi")
-- TODO: Fix/rewrite window-screenshot.sh
, ((modm, xK_w), spawn "window-screenshot.sh")
, ((modm, xK_s), spawn "flameshot gui -c -p $HOME/Pictures/screenshots")
, ((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots")
, ((modm, xK_t), spawn "ocr-screenshot.sh")
, ((modm .|. shiftMask, xK_t), spawn "DEVICE=\"MELF0410:00 1FD2:7007\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi") -- Reset the layouts on the current workspace to default
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- Reset the layouts on the current workspace to default -- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) -- Push window back into tiling
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) , ((modm .|. shiftMask, xK_space ), withFocused $ windows . W.sink)
-- Push window back into tiling
, ((modm .|. shiftMask, xK_space ), withFocused $ windows . W.sink)
-- Resize viewed windows to the correct size -- Resize viewed windows to the correct size
, ((modm, xK_n ), refresh) , ((modm, xK_n ), refresh)
-- Move focus to the next window -- Move focus to the next window
, ((modm, xK_Tab ), layoutPrompt def) , ((modm, xK_Tab ), layoutPrompt def)
-- Move focus -- Move focus
, ((modm, xK_j ), windows W.focusDown) , ((modm, xK_j ), windows W.focusDown)
, ((modm, xK_k ), windows W.focusUp ) , ((modm, xK_k ), windows W.focusUp )
-- Swap the focused window with the next window -- Swap the focused window with the next window
, ((modm .|. shiftMask, xK_j ), windows W.swapDown ) , ((modm .|. shiftMask, xK_j ), windows W.swapDown )
, ((modm .|. shiftMask, xK_k ), windows W.swapUp ) , ((modm .|. shiftMask, xK_k ), windows W.swapUp )
-- Shrink the master area -- Shrink the master area
, ((modm, xK_h ), sendMessage Shrink) , ((modm, xK_h ), sendMessage Shrink)
, ((modm, xK_l ), sendMessage Expand) , ((modm, xK_l ), sendMessage Expand)
-- Increment the number of windows in the master area -- Increment the number of windows in the master area
, ((modm , xK_comma ), sendMessage (IncMasterN 1)) , ((modm , xK_comma ), sendMessage (IncMasterN 1))
, ((modm , xK_period), sendMessage (IncMasterN (-1))) , ((modm , xK_period), sendMessage (IncMasterN (-1)))
-- Brightness n stuff -- Brightness n stuff
-- , ((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+") -- , ((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+")
-- , ((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-") -- , ((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-")
-- , ((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle") -- , ((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle")
-- , ((0, xF86XK_MonBrightnessUp), spawn "brightnessctl set +10%") -- , ((0, xF86XK_MonBrightnessUp), spawn "brightnessctl set +10%")
-- , ((0, xF86XK_MonBrightnessDown), spawn "brightnessctl set 10%-") -- , ((0, xF86XK_MonBrightnessDown), spawn "brightnessctl set 10%-")
-- , ((0, xF86XK_KbdBrightnessUp), spawn "brightnessctl -d \"kbd_backlight\" set +10%") -- , ((0, xF86XK_KbdBrightnessUp), spawn "brightnessctl -d \"kbd_backlight\" set +10%")
-- , ((0, xF86XK_KbdBrightnessDown), spawn "brightnessctl -d \"kbd_backlight\" set 10%-") -- , ((0, xF86XK_KbdBrightnessDown), spawn "brightnessctl -d \"kbd_backlight\" set 10%-")
-- Toggle the status bar gap -- Toggle the status bar gap
-- Use this binding with avoidStruts from Hooks.ManageDocks. -- Use this binding with avoidStruts from Hooks.ManageDocks.
-- See also the statusBar function from Hooks.DynamicLog. -- See also the statusBar function from Hooks.DynamicLog.
-- --
-- , ((modm , xK_b ), sendMessage ToggleStruts) -- , ((modm , xK_b ), sendMessage ToggleStruts)
--, ((modm .|. shiftMask, xK_e ), io (exitWith ExitSuccess)) --, ((modm .|. shiftMask, xK_e ), io (exitWith ExitSuccess))
-- Restart xmonad -- Restart xmonad
--, ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") --, ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart")
-- Run xmessage with a summary of the default keybindings (useful for beginners) -- Run xmessage with a summary of the default keybindings (useful for beginners)
] ]
++ ++
-- --
-- mod-[1..9], Switch to workspace N -- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N -- mod-shift-[1..9], Move client to workspace N
-- --
[((m .|. modm, k), windows $ f i) [((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
-- ++ -- ++
-- --
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
-- --
-- [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f)) -- [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
-- | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..] -- | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
-- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] -- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- Mouse bindings: default actions bound to mouse events -- Mouse bindings: default actions bound to mouse events
-- --
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
-- mod-button1, Set the window to floating mode and move by dragging
[ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
>> windows W.shiftMaster))
-- mod-button1, Set the window to floating mode and move by dragging -- mod-button2, Raise the window to the top of the stack
[ ((modm, button1), (\w -> focus w >> mouseMoveWindow w , ((modm, button2), (\w -> focus w >> windows W.shiftMaster))
>> windows W.shiftMaster))
-- mod-button2, Raise the window to the top of the stack -- mod-button3, Set the window to floating mode and resize by dragging
, ((modm, button2), (\w -> focus w >> windows W.shiftMaster)) , ((modm, button3), (\w -> focus w >> mouseResizeWindow w
>> windows W.shiftMaster))
-- mod-button3, Set the window to floating mode and resize by dragging -- you may also bind events to the mouse scroll wheel (button4 and button5)
, ((modm, button3), (\w -> focus w >> mouseResizeWindow w ]
>> windows W.shiftMaster))
-- you may also bind events to the mouse scroll wheel (button4 and button5)
]
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- Layouts: -- Layouts:
@ -195,16 +198,16 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
-- which denotes layout choice. -- which denotes layout choice.
tabCfg = def tabCfg = def
{ activeColor = "#282828" { activeColor = "#282828"
, inactiveColor = "#1d2021" , inactiveColor = "#1d2021"
, urgentColor = "#9d0006" , urgentColor = "#9d0006"
, activeBorderColor = "#504945" , activeBorderColor = "#504945"
, inactiveBorderColor = "#3c3836" , inactiveBorderColor = "#3c3836"
, urgentBorderColor = "#cc241d" , urgentBorderColor = "#cc241d"
, activeTextColor = "#ebdbb2" , activeTextColor = "#ebdbb2"
, inactiveTextColor = "#bdae93" , inactiveTextColor = "#bdae93"
, urgentTextColor = "#ebdbb2" , urgentTextColor = "#ebdbb2"
} }
myLayout = tiled ||| tabbed shrinkText tabCfg ||| Mirror tiled myLayout = tiled ||| tabbed shrinkText tabCfg ||| Mirror tiled
where where
-- default tiling algorithm partitions the screen into two panes -- default tiling algorithm partitions the screen into two panes
@ -235,10 +238,10 @@ myLayout = tiled ||| tabbed shrinkText tabCfg ||| Mirror tiled
-- 'className' and 'resource' are used below. -- 'className' and 'resource' are used below.
-- --
myManageHook = composeAll myManageHook = composeAll
[ className =? "MPlayer" --> doFloat [ className =? "MPlayer" --> doFloat
, className =? "Gimp" --> doFloat , className =? "Gimp" --> doFloat
, resource =? "desktop_window" --> doIgnore , resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore ] , resource =? "kdesktop" --> doIgnore ]
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- Event handling -- Event handling
@ -273,11 +276,12 @@ myLogHook = return ()
-- --
-- By default, do nothing. -- By default, do nothing.
myStartupHook = do myStartupHook = do
spawn "pkill oneko; oneko -tofocus -tora -position +-1+5 -fg palevioletred3 -bg pink -name 'Rose the desktop kitty'" spawn "pkill oneko; oneko -tofocus -tora -position +-1+5 -fg palevioletred3 -bg pink -name 'Rose the desktop kitty'"
--spawn "pkill polybar; polybar" --spawn "pkill polybar; polybar"
spawn "pkill volumeicon; volumeicon" spawn "pkill volumeicon; volumeicon"
spawn "pkill nm-applet; nm-applet" spawn "pkill nm-applet; nm-applet"
spawn "mullvad-vpn --background" spawn "mullvad-vpn --background"
setDefaultKeyRemap myRemaps [myRemaps]
@ -287,7 +291,7 @@ myStartupHook = do
-- Run xmonad with the settings you specify. No need to modify this. -- Run xmonad with the settings you specify. No need to modify this.
-- --
mySB = statusBarProp "polybar" (pure xmobarPP) mySB = statusBarProp "polybar" (pure xmobarPP)
main = xmonad $ withEasySB mySB defToggleStrutsKey defaults main = xmonad $ withEasySB mySB defToggleStrutsKey (ewmh defaults)
-- A structure containing your configuration settings, overriding -- A structure containing your configuration settings, overriding
-- fields in the default config. Any you don't override, will -- fields in the default config. Any you don't override, will
@ -316,4 +320,3 @@ defaults = def
, logHook = myLogHook , logHook = myLogHook
, startupHook = myStartupHook , startupHook = myStartupHook
} }

View file

@ -53,6 +53,11 @@ in {
device = "DELL081C:00 044E:121F Mouse"; device = "DELL081C:00 044E:121F Mouse";
sensitivity = 255; sensitivity = 255;
}; };
hardware.usbWwan.enable = true;
systemd.services."ModemManager".enable = true;
systemd.services."ModemManager".wants = [ "NetworkManager.service" ];
systemd.services."ModemManager".wantedBy = [ "multi-user.target" ];
programs.wireshark.enable = true;
boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694"; boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
boot.kernelParams = [ "resume_offset=7380652" ]; boot.kernelParams = [ "resume_offset=7380652" ];
@ -64,7 +69,7 @@ in {
services.xserver.libinput.touchpad.tapping = false; services.xserver.libinput.touchpad.tapping = false;
environment.systemPackages = [ pkgs.vivaldi pkgs.vivaldi-ffmpeg-codecs pkgs.plantuml ]; environment.systemPackages = [ pkgs.vivaldi pkgs.vivaldi-ffmpeg-codecs pkgs.plantuml pkgs.mqttui pkgs.mobile-broadband-provider-info pkgs.modem-manager-gui pkgs.wireshark];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
@ -82,31 +87,31 @@ in {
}; };
}; };
nixpkgs = { # nixpkgs = {
overlays = [ # overlays = [
(self: super: { # (self: super: {
linux_zen_xeniafied = pkgs.linuxPackagesFor (pkgs.linuxKernel.kernels.linux_zen.override { # linux_zen_xeniafied = pkgs.linuxPackagesFor (pkgs.linuxKernel.kernels.linux_zen.override {
structuredExtraConfig = with lib.kernel; { # structuredExtraConfig = with lib.kernel; {
"FB" = yes; # "FB" = yes;
"FRAMEBUFFER_CONSOLE" = yes; # "FRAMEBUFFER_CONSOLE" = yes;
"VGA_CONSOLE" = yes; # "VGA_CONSOLE" = yes;
"VIDEO_SELECT" = yes; # "VIDEO_SELECT" = yes;
LOGO = lib.mkForce yes; # LOGO = lib.mkForce yes;
LOGO_LINUX_CLUT224 = yes; # LOGO_LINUX_CLUT224 = yes;
}; # };
ignoreConfigErrors = true; # ignoreConfigErrors = true;
}); # });
}) # })
]; # ];
}; # };
boot.kernelPackages = pkgs.linuxPackages_zen; boot.kernelPackages = pkgs.linuxPackages_zen;
boot.kernelPatches = [ # boot.kernelPatches = [
{ # {
name = "fomx"; # name = "fomx";
patch = ../../other/0001-fomx.patch; # patch = ../../other/0001-fomx.patch;
} # }
]; # ];
services.xserver.displayManager.autoLogin = { services.xserver.displayManager.autoLogin = {
enable = true; enable = true;

View file

@ -57,7 +57,7 @@
# latest linux kernel # latest linux kernel
#boot.kernelPackages = pkgs.linuxPackages_latest; #boot.kernelPackages = pkgs.linuxPackages_latest;
#boot.kernelPackages = pkgs.linux_zen_xeniafied; #boot.kernelPackages = pkgs.linux_zen_xeniafied;
boot.kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
# boot.kernelPatches = [ # boot.kernelPatches = [
# { # {
# name = "fomx"; # name = "fomx";

View file

@ -30,7 +30,7 @@
}; };
services = { services = {
openssh.permitRootLogin = "no"; openssh.permitRootLogin = "without-password";
fail2ban = { fail2ban = {
enable = true; enable = true;
bantime-increment.enable = true; bantime-increment.enable = true;

View file

@ -7,7 +7,7 @@
dbuser = "nextcloud"; dbuser = "nextcloud";
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
dbname = "nextcloud"; dbname = "nextcloud";
adminpassFile = "${../secret-data/nextcloud-admin-pass}"; adminpassFile = "${../../secret-data/nextcloud-admin-pass}";
adminuser = "root"; adminuser = "root";
}; };
package = pkgs.nextcloud25; package = pkgs.nextcloud25;

View file

@ -33,7 +33,7 @@
"PENPOT_SMTP_HOST" = "smtp.migadu.com"; "PENPOT_SMTP_HOST" = "smtp.migadu.com";
"PENPOT_SMTP_PORT" = "587"; "PENPOT_SMTP_PORT" = "587";
"PENPOT_SMTP_USERNAME" = "noreply-pp@schrottkatze.de"; "PENPOT_SMTP_USERNAME" = "noreply-pp@schrottkatze.de";
"PENPOT_SMTP_PASSWORD" = "${builtins.readFile ../secret-data/penpot-smtp-pass}"; "PENPOT_SMTP_PASSWORD" = "${builtins.readFile ../../secret-data/penpot-smtp-pass}";
"PENPOT_SMTP_TLS" = "true"; "PENPOT_SMTP_TLS" = "true";
"PENPOT_SMTP_SSL" = "false"; "PENPOT_SMTP_SSL" = "false";
}; };

View file

@ -13,7 +13,7 @@
SIGNUPS_VERIFY = true; SIGNUPS_VERIFY = true;
ROCKET_LOG = "debug"; ROCKET_LOG = "debug";
ENABLE_WAL = false; ENABLE_WAL = false;
ADMIN_TOKEN = builtins.readFile ../secret-data/vaultwarden-admin-token; ADMIN_TOKEN = builtins.readFile ../../secret-data/vaultwarden-admin-token;
DOMAIN = "https://vw.schrottkatze.de"; DOMAIN = "https://vw.schrottkatze.de";
SMTP_TIMEOUT = 15; SMTP_TIMEOUT = 15;
ROCKET_PORT = 8812; ROCKET_PORT = 8812;

5
justfile Normal file
View file

@ -0,0 +1,5 @@
test:
sudo nixos-rebuild test --flake . --impure
build:
sudo nixos-rebuild switch --flake . --impure

View file

@ -13,6 +13,7 @@
jack.enable = true; jack.enable = true;
}; };
}; };
hardware.pulseaudio.enable = pkgs.lib.mkForce false;
sound.mediaKeys.enable = true; sound.mediaKeys.enable = true;
home-manager.users.jade = { pkgs, ... }: { home-manager.users.jade = { pkgs, ... }: {
home.packages = with pkgs; [ home.packages = with pkgs; [

View file

@ -2,6 +2,7 @@
let let
cfg = config.jade.desktop; cfg = config.jade.desktop;
# window-screenshot = pkgs.writeTextFile "window-screenshot.nu" (builtins.readFile ../../other/scripts/desktop/window-screenshot.nu);
window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../../other/scripts/desktop/window-screenshot.sh); window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../../other/scripts/desktop/window-screenshot.sh);
# desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh); # desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh);
desktop-ctl = import ../../other/scripts/desktop/desktopctl.nix { inherit pkgs; }; desktop-ctl = import ../../other/scripts/desktop/desktopctl.nix { inherit pkgs; };
@ -102,10 +103,13 @@ in with lib; {
desktopManager = { desktopManager = {
xterm.enable = false; xterm.enable = false;
# gnome = {
# enable = true;
# };
}; };
displayManager = { displayManager = {
#defaultSession = "none+i3"; defaultSession = "none+xmonad";
gdm.enable = true; gdm.enable = true;
}; };
@ -153,17 +157,12 @@ in with lib; {
notifications.x11.enable = true; notifications.x11.enable = true;
notifications.test = true; notifications.test = true;
}; };
services.colord.enable = true;
home-manager.users.jade = { pkgs, ... }: { home-manager.users.jade = { pkgs, ... }: {
programs.bat = { programs.bat = {
# TODO: more config # TODO: more config
enable = true; enable = true;
}; };
programs.exa = {
# TODO: more config
enable = true;
};
programs.nushell = { programs.nushell = {
enable = true; enable = true;
package = config.users.defaultUserShell; package = config.users.defaultUserShell;
@ -172,9 +171,6 @@ in with lib; {
source ${pkgs.nu_scripts}/share/nu_scripts/modules/nix/nix.nu; source ${pkgs.nu_scripts}/share/nu_scripts/modules/nix/nix.nu;
''; '';
}; };
programs.ripgrep = {
enable = true;
};
services.dunst = { services.dunst = {
enable = true; enable = true;
settings = { settings = {
@ -195,11 +191,17 @@ in with lib; {
theme = ../../other/rofi-themes/applauncher.rasi; theme = ../../other/rofi-themes/applauncher.rasi;
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
spotifyd spotify-tui
#nushell #nushell
nu_scripts direnv nu_scripts direnv
just bacon
magic-wormhole-rs magic-wormhole-rs
yt-dlp
argyllcms argyllcms
displaycal displaycal
@ -209,11 +211,13 @@ in with lib; {
i3lock rofimoji feh xorg.xinput arandr flameshot i3lock rofimoji feh xorg.xinput arandr flameshot
tesseract5 imagemagick xclip xmacro libwacom wacomtablet xorg.xev tesseract5 imagemagick xclip xmacro libwacom wacomtablet xorg.xev
syncplay
# categories # categories
# filemanager # filemanager
xfce.thunar xfce.tumbler xfce.thunar-archive-plugin gnome.file-roller xfce.thunar xfce.tumbler xfce.thunar-archive-plugin gnome.file-roller
# media/file viewers # media/file viewers
vlc evince nomacs vlc mpv evince nomacs
# from environment.systemPackages cleanup # from environment.systemPackages cleanup
font-manager xdotool xorg.xwininfo gparted librewolf firefox uhk-agent font-manager xdotool xorg.xwininfo gparted librewolf firefox uhk-agent

View file

@ -1,34 +1,60 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ let
addNuShebang = path: builtins.concatStringsSep "\n\n" [
"#!${pkgs.nushellFull}/bin/nu"
(builtins.readFile path)
];
in {
config = { config = {
networking = { networking = {
networkmanager.wifi.backend = "wpa_supplicant"; networkmanager = {
extraHosts = '' wifi.backend = "wpa_supplicant";
127.0.0.1 www.youtube.com dispatcherScripts = [
127.0.0.1 www.reddit.com {
127.0.0.1 www.tiktok.com type = "basic";
127.0.0.1 www.twitter.com source = pkgs.writeText "dispatcher" (addNuShebang ../../other/scripts/dispatcher.nu);
127.0.0.1 www.instagram.com }
127.0.0.1 www.facebook.com ];
127.0.0.1 www.snapchat.com };
hosts = {
"127.0.0.1" = [
"www.tiktok.com"
"www.twitter.com"
"www.instagram.com"
"www.facebook.com"
"www.snapchat.com"
127.0.0.1 youtube.com "tiktok.com"
127.0.0.1 reddit.com "twitter.com"
127.0.0.1 tiktok.com "instagram.com"
127.0.0.1 twitter.com "facebook.com"
127.0.0.1 instagram.com "snapchat.com"
127.0.0.1 facebook.com
127.0.0.1 snapchat.com
127.0.0.1 google-analytics.com "google-analytics.com"
127.0.0.1 stats.g.doubleclick.net "stats.g.doubleclick.net"
127.0.0.1 googleadservices.com "googleadservices.com"
127.0.0.1 googletagmanager.com "googletagmanager.com"
127.0.0.1 googletagservices.com "googletagservices.com"
127.0.0.1 googlesyndication.com "googlesyndication.com"
''; ];
"10.31.208.9" = [
"mqtt.z9"
];
};
}; };
environment.etc = (with builtins; (
listToAttrs (
map (v: {
name = "networkhooks/${v}";
value = {
text = addNuShebang ../../other/scripts/networkhooks/${v};
mode = "0755";
};
})
(attrNames (readDir ../../other/scripts/networkhooks))
)
));
systemd.services."NetworkManager-wait-online".enable = false; systemd.services."NetworkManager-wait-online".enable = false;
services.mullvad-vpn.enable = true; services.mullvad-vpn.enable = true;
home-manager.users.jade = { pkgs, ... }: { home-manager.users.jade = { pkgs, ... }: {

View file

@ -31,19 +31,14 @@ in with lib; {
}; };
}; };
languages = { languages = {
language = [ "php" = {
{ name = "php";
name = "rust"; file-types = [ "php" ];
} language-server = {
{ command = "psalm";
name = "php"; args = ["--language-server"];
file-types = [ "php" ]; };
language-server = { };
command = "psalm";
args = ["--language-server"];
};
}
];
}; };
}; };
}; };

49
modules/utils.nix Normal file
View file

@ -0,0 +1,49 @@
{ pkgs, lib }: rec {
# taken from https://github.com/NixOS/nixpkgs/blob/3650808d85dccbfa3be3d785dfd3ce33a757bd2c/pkgs/build-support/trivial-builders/default.nix#L335
writeNuShellApplication =
{ name
, text
, runtimeInputs ? [ ]
, meta ? { }
, checkPhase ? null
}:
writeTextFile {
inherit name meta;
executable = true;
destination = "/bin/${name}";
allowSubstitutes = true;
preferLocalBuild = false;
text = ''
#!${pkgs.nushell}
'' + lib.optionalString (runtimeInputs != [ ]) ''
$env.PATH = ($env.PATH | split row (char esep) | prepend '${lib.makeBinPath runtimeInputs}');
'' + ''
${text}
'';
checkPhase =
# GHC (=> shellcheck) isn't supported on some platforms (such as risc-v)
# but we still want to use writeShellApplication on those platforms
if checkPhase == null then ''
runHook preCheck
nu -c "nu-check -d $target"
runHook postCheck
''
else checkPhase;
};
packageNushellApplication =
{ name
, path
, runtimeInputs ? [ ]
, meta ? { }
, checkPhase ? null
}:
writeNuShellApplication {
inherit name runtimeInputs meta checkPhase;
text = builtins.readFile path;
};
}

View file

@ -6,13 +6,22 @@ in with lib; {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
home-manager.users.jade = { pkgs, ... }: { home-manager.users.jade = { pkgs, ... }: {
home.file = {
zellij-forgot = {
target = ".config/zellij/plugins/zellij-forgot.wasm";
source = builtins.fetchurl "https://github.com/karimould/zellij-forgot/releases/download/0.2.0/zellij_forgot.wasm";
};
monocle = {
target = ".config/zellij/plugins/monocle.wasm";
source = builtins.fetchurl "https://github.com/imsnif/monocle/releases/download/0.37.2/monocle.wasm";
};
};
programs.zellij = { programs.zellij = {
enable = true; enable = true;
enableZshIntegration = true;
settings = { settings = {
theme = "gruvbox-dark"; theme = "gruvbox-dark";
themes.gruvbox-dark = { themes.gruvbox-dark = {
fg = "#D5C4A1"; fg = "#d5c4a1";
bg = "#282828"; bg = "#282828";
black = "#3C3836"; black = "#3C3836";
red = "#CC241D"; red = "#CC241D";
@ -21,9 +30,16 @@ in with lib; {
blue = "#3C8588"; blue = "#3C8588";
magenta = "#B16286"; magenta = "#B16286";
cyan = "#689D6A"; cyan = "#689D6A";
white = "#FBF1C7"; white = "#665c54";
orange = "#D65D0E"; orange = "#D65D0E";
}; };
# keybinds = {
# session = {
# "bind \"o\"" = {
# LaunchOrFocusPlugin = ["file:/home/jade/.config/zellij/plugins/monocle.wasm" { floating = true; }];
# };
# };
# };
pane_frames = false; pane_frames = false;
}; };
}; };

View file

@ -247,9 +247,21 @@ $env.config = {
hooks: { hooks: {
pre_prompt: [{ || pre_prompt: [{ ||
let direnv = (direnv export json | from json) let direnv = (direnv export json | from json | default {})
let direnv = if ($direnv | length) == 1 { $direnv } else { {} } if ($direnv | is-empty) {
$direnv | load-env return
}
$direnv
| items {|key, value|
{
key: $key
value: (if $key in $env.ENV_CONVERSIONS {
do ($env.ENV_CONVERSIONS | get $key | get from_string) $value
} else {
$value
})
}
} | transpose -ird | load-env
}] # run before the prompt is shown }] # run before the prompt is shown
pre_execution: [{ null }] # run before the repl input is run pre_execution: [{ null }] # run before the repl input is run
env_change: { env_change: {
@ -793,3 +805,5 @@ start_zellij
alias gnix = cd ~/nix-configs; alias gnix = cd ~/nix-configs;
alias grepo = cd ~/Documents/repos; alias grepo = cd ~/Documents/repos;
alias wh = wormhole-rs; alias wh = wormhole-rs;
alias nix-shell = nix-shell --run 'nu -li';
alias nsp = nix-shell --run 'nu -li' -p;

View file

@ -0,0 +1,19 @@
#!/usr/bin/env nu
def main [ ] {
let reg = (
xwininfo -id (xdotool getactivewindow)
| lines
| parse '{key}: {value}'
| str trim
| get value
| echo {
x: $in.1
y: $in.2
w: $in.5
h: $in.6
}
);
flameshot gui --region $"($reg.w)x($reg.h)+($reg.x)+($reg.y)" -c -p ~/Pictures/screenshots
}

19
other/scripts/dispatcher.nu Executable file
View file

@ -0,0 +1,19 @@
def main [
interface: string
type: string
] {
$env.PATH = ($env.PATH | split row (char esep) | append '/run/current-system/sw/bin');
let currentnet = (
nmcli -m tabular connection show --active
| detect columns
| first
| get name
);
systemd-cat echo $"($currentnet) \(($interface)): ($type)";
if $interface == 'wlp2s0' {
^$"/etc/networkhooks/($currentnet).nu" $interface $type
}
}

View file

@ -0,0 +1,40 @@
def main [
interface: string
type: string
] {
if not ($type == 'up') {
exit
};
mullvad disconnect;
let page = http get 'http://172.0.0.1/';
let hotspot_ip = $page | htmlq 'input[name=uamip]' -a 'value';
let hotspot_port = $page | htmlq 'input[name=uamport]' -a 'value';
let pl_data = $page
| htmlq input -a name -r input[name=button]
| lines
| wrap name
| merge (
$page
| htmlq input -a value
| lines
| wrap value
)
| drop 1;
let payload = $pl_data
| each {|kv| [
($kv.name | url encode --all)
($kv.value | url encode --all) ]
| str join '='
} | str join '&';
let res = curl --insecure --resolve $"www.hotsplots.de:($hotspot_port):($hotspot_ip)" -H 'Content-Type: application/x-www-form-urlencoded' "https://www.hotsplots.de/auth/login.php" --data-raw $"($payload)" ;
let url = $res | htmlq 'meta[http-equiv=refresh]' -a 'content' | parse '0;url={url}';
http get $url.url.0;
mullvad connect;
}

View file

@ -0,0 +1,22 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p curl htmlq
# echo "Fetching cookie and CSRF token..."
# form=$(curl --silent --location --junk-session-cookies --cookie-jar /tmp/wifionice "https://login.wifionice.de/en/" --resolve login.wifionice.de:443:10.101.64.10 -i | htmlq "input")
# keys=$(htmlq "input" --attribute "name" <<< "$form")
# values=$(htmlq "input" --attribute "value" <<< "$form")
# payload=$(paste --delimiters="=" <(echo "$keys") <(echo "$values") | tr "\n" "&")
# echo "Payload: \"$payload\""
# echo "POSTing payload..."
# curl --cookie /tmp/wifionice "https://login.wifionice.de/en/" --resolve login.wifionice.de:443:10.101.64.10 -d "$payload"
def main [
interface: string
type: string
] {
let form = curl --silent --location --junk-session-cookies --cookie-jar /tmp/wifionice 'https://login.wifionice.de/en/' --resolve 'login.wifionice.de:443:10.101.64.10' -i | htmlq 'input';
# TODO
}

View file

@ -0,0 +1,41 @@
const wave_timeout = 15min;
def main [
interface: string
type: string
] {
if not ('/var/lib/ccchh-winken/last' | path exists) {
mkdir '/var/lib/ccchh-winken';
0 | into datetime | save '/var/lib/ccchh-winken/last' -f;
}
let $last_waved = open '/var/lib/ccchh-winken/last' --raw | into datetime;
if ((date now) - $last_waved) > $wave_timeout {
if $type == "up" {
mullvad disconnect;
curl mqtt://mqtt.z9/winkekatze/katz9/eye/set -d (rand-color);
curl mqtt://mqtt.z9/winkekatze/Viktoria/eye/set -d (rand-color);
curl mqtt://mqtt.z9/winkekatze/allcats -d 'wink';
mullvad connect;
date now | save '/var/lib/ccchh-winken/last' -f;
}
}
}
def rand-color [] {
const colors = [
"blue"
"cyan"
"green"
"pink"
"red"
"white"
"yellow"
];
$colors | get (random integer 0..(($colors | length) - 1))
}

View file

@ -1 +0,0 @@
sudo nixos-rebuild test --flake . --impure