summaryrefslogtreecommitdiff
path: root/default.nix
blob: 950dee0d092c4878ed822e38a875d544efe0b219 (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{

  pkgsSrc ? ./pkgs.nix

}: rec {

  pkgs = (import pkgsSrc) {};

  gitConfig = pkgs.writeTextDir "git/config"
    (builtins.readFile ./base/gitconfig);

  git = pkgs.writeScriptBin "git" ''
    #!${pkgs.bash}/bin/bash
    export XDG_CONFIG_HOME=${gitConfig}
    exec ${pkgs.git}/bin/git "$@"
  '';

  zsh = ((import ./zsh) { inherit pkgs; }).zsh;

  loadout = pkgs.buildEnv {
    name = "loadout";
    paths = [

      pkgs.gnugrep
      pkgs.ag
      pkgs.gawk

      git
      pkgs.mercurial
      pkgs.breezy # bzr

      pkgs.gcc
      pkgs.gnumake
      pkgs.cmake
      pkgs.strace

      pkgs.curl
      pkgs.wget
      pkgs.rsync

      pkgs.hostname
      pkgs.netcat
      pkgs.nmap
      pkgs.dnsutils
      pkgs.openssh

      pkgs.tmux

      pkgs.ncdu
      pkgs.htop

      pkgs.unzip
      pkgs.unrar
      pkgs.gzip

      pkgs.jq
      pkgs.yq
      pkgs.go

      pkgs.xsel
      pkgs.pavucontrol

      (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; })

      ((import ./nvim) { inherit pkgs; }).nvim
      zsh
      ((import ./alacritty) { inherit pkgs zsh; }).alacritty
      ((import ./awesome) { inherit pkgs; }).awesome
    ];
  };

  appimageEntrypoint = pkgs.writeScriptBin "mediocre-loadout" ''
    #!${pkgs.bash}/bin/bash

    cmd="$1"; shift;

    if [ "$cmd" = "editor" ]; then exec nvim "$@"; fi
    if [ "$cmd" = "shell" ]; then exec zsh "$@"; fi
    if [ "$cmd" = "gui" ]; then exec alacritty "$@"; fi
    if [ "$cmd" = "wm" ]; then exec awesome "$@"; fi

    echo "USAGE: $0 [editor|shell|gui|wm] [passthrough args...]"
    exit 1
  '';

  appimageIcon = pkgs.stdenv.mkDerivation {
    name = "mediocre-loadout-icon";
    src = ./bonzi.png;
    builder = builtins.toFile "builder.sh" ''
      source $stdenv/setup
      dir=share/icons/hicolor/256x256/apps
      mkdir -p "$out"/$dir
      cp $src "$out"/$dir/mediocre-loadout.png
    '';
  };

  appimageDesktopFile = pkgs.writeTextDir "share/applications/mediocre-loadout.desktop" ''
    [Desktop Entry]
    Name=Mediocre Loadout
    Exec=mediocre-loadout gui
    Icon=mediocre-loadout
    Type=Application
    Categories=Utility;
  '';

  appimageTarget = pkgs.buildEnv {
    name = "mediocre-loadout-target";
    paths = [
      loadout
      appimageEntrypoint
      appimageIcon
      appimageDesktopFile
    ];
  };

  appimageTargetFlat = pkgs.stdenv.mkDerivation {
    name = "mediocre-loadout-target-flat";
    src = appimageTarget;
    builder = builtins.toFile "builder.sh" ''
      source $stdenv/setup
      cp -rL "$src" "$out"
    '';
  };

  appimage = ((import ./appimage.nix) { pkgsSrc = pkgsSrc; }) {
    name = "mediocre-loadout";
    target = appimageTargetFlat;
  };

}