summaryrefslogtreecommitdiff
path: root/default.nix
blob: 1535885e3eb34bd1ee71548cd7d766fab7570bac (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
{

  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.xdg-utils

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

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

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

    cmd="$1"; shift;

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

    echo "USAGE: $0 [nvim|zsh|alacritty|awesome] [passthrough args...]"
    exit 1
  '';

  appimageDesktopFile = builtins.toFile "mediocre-loadout.desktop" ''
    [Desktop Entry]
    Name=Mediocre Loadout
    Exec=mediocre-loadout alacritty
    Icon=mediocre-loadout
    Type=Application
    Categories=Utility;
  '';

  appdir = pkgs.stdenv.mkDerivation {
    name = "mediocre-loadout-target-flat";

    inherit appimageEntrypoint appimageDesktopFile;
    appimageIcon = ./bonzi.png;
    src = loadout;

    builder = builtins.toFile "builder.sh" ''
      source $stdenv/setup

      cp -rL "$src" "$out"
      chmod -R +w "$out"

      rm -rf "$out"/share/applications/*
      cp "$appimageDesktopFile" "$out"/share/applications/mediocre-loadout.desktop
      cp "$appimageEntrypoint" "$out"/bin/mediocre-loadout

      icondir=share/icons/hicolor/256x256/apps
      mkdir -p "$out"/$icondir
      cp "$appimageIcon" "$out"/$icondir/mediocre-loadout.png
    '';
  };

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

}