aboutsummaryrefslogtreecommitdiff
path: root/scripts/default.nix
blob: 1c5756617e927703f284739751d9186425e0f6c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{ pkgs, ... }:

let

  # open a window with live video feed from the camera
  webcam = pkgs.writeScriptBin "webcam" ''
    ${pkgs.mpv}/bin/mpv av://v4l2:/dev/video0 --profile=low-latency --untimed
  '';

  # create new repo on fern
  git-new-repo = pkgs.writeScriptBin "git-new-repo" ''
    if [ $# -eq 0 ]; then
        echo "requires an arg"
        exit 1
    fi

    # $1 - section/repo-name

    ssh git@ferrn git init --bare "$1";
    git remote add origin git@ferrn:"$1";
    git push -u origin HEAD;
  '';

  # set git repo descriptions on cgit
  git-set-desc = pkgs.writeScriptBin "git-set-desc" ''
    remote=$(git remote get-url --push origin)
    scp .git/description "$remote/description"
  '';

  # screen record with ffmpeg and slop
  record = import ./record.nix pkgs;

  # file uploader
  uploader = import ./up.nix pkgs;

  # battery script
  battery = import ./battery.nix pkgs;

  # fzf script to switch between tmux sessions
  tmux-fzf = pkgs.writeScriptBin "tmux-fzf" ''
    tbin() {
      ${pkgs.tmux}/bin/tmux "$@"
    }
    fbin() {
      ${pkgs.fzf}/bin/fzf "$@"
    }

    __fzf() {
        fbin --cycle --height 7 --reverse
    }

    __list_to_fzf() {
        tbin ls -F "#{session_name}" | fzf
    }

    if [ -n "$TMUX" ]; then
        tbin switch-client -t "$(__list_to_fzf)"
    else
        tbin a -t "$(tbin ls -F "#{session_name}" | fbin)"
    fi
  '';

  touchscreen = 21;
  stylus = 15;
  portait-transform = builtins.toString [ 0 (-1) 1 1 0 0 0 0 1 ];
  landscape-transform = builtins.toString [ 0 0 0 0 0 0 0 0 0 ];
  portrait = pkgs.writeScriptBin "portrait" ''
    ${pkgs.xorg.xrandr}/bin/xrandr -o left
    ${pkgs.xorg.xinput}/bin/xinput set-prop ${builtins.toString touchscreen} --type=float "Coordinate Transformation Matrix" ${portait-transform}
    ${pkgs.xorg.xinput}/bin/xinput set-prop ${builtins.toString stylus} --type=float "Coordinate Transformation Matrix" ${portait-transform}
  '';
  landscape = pkgs.writeScriptBin "landscape" ''
    ${pkgs.xorg.xrandr}/bin/xrandr -o normal
    ${pkgs.xorg.xinput}/bin/xinput set-prop ${builtins.toString touchscreen} --type=float "Coordinate Transformation Matrix" ${landscape-transform}
    ${pkgs.xorg.xinput}/bin/xinput set-prop ${builtins.toString stylus} --type=float "Coordinate Transformation Matrix" ${landscape-transform}
  '';

in
[
  webcam
  git-set-desc
  git-new-repo
  record
  uploader
  battery
  tmux-fzf
  portrait
  landscape
]