This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

specify packages instead of packageOverrides

+60 -731
+2 -2
flake.nix
··· 50 50 clanCore.secretsUploadDirectory = "/etc/secrets"; 51 51 clanCore.secretsDirectory = pkgs.lib.mkForce config.clanCore.secretsUploadDirectory; 52 52 krebs.secret.directory = config.clanCore.secretsUploadDirectory; 53 - nixpkgs.config.packageOverrides = import ./5pkgs pkgs; # TODO move into packages 54 53 nixpkgs.overlays = [ 55 54 self.inputs.stockholm.overlays.default 56 55 (import (self.inputs.stockholm.inputs.nix-writers + "/pkgs")) # TODO get rid of that overlay ··· 73 72 ]; 74 73 flake.nixosConfigurations = clan.nixosConfigurations; 75 74 flake.clanInternals = clan.clanInternals; 76 - perSystem = { config, pkgs, system, ... }: { 75 + perSystem = { config, lib, pkgs, system, ... }: { 76 + packages = lib.mapAttrs (name: v_: pkgs.callPackage ./5pkgs/${name} {}) (builtins.readDir ./5pkgs); 77 77 devShells.default = pkgs.mkShell { 78 78 packages = [ 79 79 clan-core.packages.${system}.clan-cli
-24
5pkgs/default.nix
··· 1 - self: super: let 2 - lib = super.lib; 3 - 4 - # This callPackage will try to detect obsolete overrides. 5 - callPackage = path: args: let 6 - override = super.callPackage path args; 7 - upstream = lib.optionalAttrs (override ? "name") 8 - (super.${(builtins.parseDrvName override.name).name} or {}); 9 - in if upstream ? "name" && 10 - override ? "name" && 11 - builtins.compareVersions upstream.name override.name != -1 12 - then 13 - builtins.trace 14 - "Upstream `${upstream.name}' gets overridden by `${override.name}'." 15 - override 16 - else override; 17 - 18 - subdirsOf = path: 19 - lib.mapAttrs (name: _: path + "/${name}") 20 - (lib.filterAttrs (_: x: x == "directory") (builtins.readDir path)); 21 - 22 - in lib.mapAttrs (_: lib.flip callPackage {}) 23 - (lib.filterAttrs (_: dir: lib.pathExists (dir + "/default.nix")) 24 - (subdirsOf ./.))
+2 -2
5pkgs/bank/default.nix
··· 1 - { writeDashBin, coreutils, pass, hledger, diffutils }: 1 + { writers, coreutils, pass, hledger, diffutils }: 2 2 3 - writeDashBin "bank" '' 3 + writers.writeDashBin "bank" '' 4 4 tmp=$(mktemp) 5 5 ${pass}/bin/pass show hledger > $tmp 6 6 ${hledger}/bin/hledger --file=$tmp "$@"
-29
5pkgs/dl/default.nix
··· 1 - { pkgs }: 2 - pkgs.writers.writeBashBin "dl" '' 3 - set -efux 4 - LINK_OR_SEARCH=$@ 5 - if [[ $LINK_OR_SEARCH == magnet:?* ]] || [[ $LINK_OR_SEARCH =~ ^https?: ]]; then 6 - LINK=$LINK_OR_SEARCH 7 - else 8 - SEARCH=$LINK_OR_SEARCH 9 - fi 10 - 11 - if ! [ -z ''${SEARCH+x} ]; then 12 - LINK=$(${pkgs.we-get}/bin/we-get -n 50 -t the_pirate_bay,1337x --json -s "$SEARCH" | 13 - ${pkgs.jq}/bin/jq -r 'to_entries | 14 - .[] | 15 - "\(.key) [\(.value.seeds)]\t\(.value.link)" 16 - ' | 17 - ${pkgs.fzf}/bin/fzf -d '\t' --with-nth=1 | 18 - ${pkgs.coreutils}/bin/cut -f 2 19 - ) 20 - fi 21 - 22 - if [ -z ''${CATEGORY+x} ]; then 23 - CATEGORY=$(echo -e 'movies\nseries' | ${pkgs.fzf}/bin/fzf) 24 - fi 25 - 26 - ${pkgs.transmission}/bin/transmission-remote yellow.r \ 27 - -w /var/download/finished/sorted/"$CATEGORY" \ 28 - -a "$LINK" 29 - ''
-13
5pkgs/dls/default.nix
··· 1 - { pkgs }: 2 - pkgs.writers.writeDashBin "dls" '' 3 - set -efux 4 - SESSION_ID=$( 5 - curl -Ss -d '{}' http://yellow.r:9091/transmission/rpc -v -o /dev/null 2>&1 | 6 - grep -oP '(?<=X-Transmission-Session-Id: )\w+' 7 - ) 8 - ${pkgs.curl}/bin/curl -Ss \ 9 - http://yellow.r:9091/transmission/rpc \ 10 - -H "X-Transmission-Session-Id: $SESSION_ID" \ 11 - -d '{"arguments":{"fields":["errorString","eta","isFinished","name","sizeWhenDone","status"]},"method":"torrent-get","tag":4}' | 12 - jq . 13 - ''
-35
5pkgs/drbd9/default.nix
··· 1 - { lib, stdenv, git, fetchzip, fetchFromGitHub, kernel }: let 2 - 3 - version = "9.1.7"; 4 - 5 - in stdenv.mkDerivation { 6 - pname = "drbd"; 7 - version = "${kernel.version}-${version}"; 8 - 9 - src = fetchzip { 10 - url = "https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.7.tar.gz"; 11 - sha256 = "sha256-JsbtOrqhZkG7tFEc6tDmj3RlxZggl0HOKfCI8lYtQok="; 12 - }; 13 - # src = fetchFromGitHub { 14 - # owner = "LINBIT"; 15 - # repo = "drbd"; 16 - # rev = "drbd-${version}"; 17 - # sha256 = "sha256-8HAt+k0yi6XsZZ9mkVCQkv2pn65o3Zsa0KwTSBJh0yY="; 18 - # leaveDotGit = true; 19 - # }; 20 - 21 - nativeBuildInputs = [ git ] ++ kernel.moduleBuildDependencies; 22 - 23 - # hardeningDisable = [ "pic" ]; 24 - 25 - makeFlags = kernel.makeFlags ++ [ 26 - "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" 27 - ]; 28 - 29 - installPhase = '' 30 - install -D drbd/drbd.ko -t "$out/lib/modules/${kernel.modDirVersion}/updates/" 31 - install -D drbd/drbd_transport_tcp.ko -t "$out/lib/modules/${kernel.modDirVersion}/updates/" 32 - ''; 33 - 34 - enableParallelBuilding = true; 35 - }
+2 -2
5pkgs/emot-menu/default.nix
··· 1 - { coreutils, dmenu, gnused, writeDashBin, writeText, xdotool }: let 1 + { coreutils, dmenu, gnused, writers, writeText, xdotool }: let 2 2 3 3 emoticons = writeText "emoticons" '' 4 4 ¯\(°_o)/¯ | dunno lol shrug dlol ··· 24 24 ''; 25 25 26 26 in 27 - writeDashBin "emoticons" '' 27 + writers.writeDashBin "emoticons" '' 28 28 set -efu 29 29 30 30 data=$(${coreutils}/bin/cat ${emoticons})
-28
5pkgs/firefoxPlugins/noscript.nix
··· 1 - { fetchgit, stdenv, bash, zip }: 2 - 3 - stdenv.mkDerivation rec { 4 - name = "noscript"; 5 - id = "{73a6fe31-595d-460b-a920-fcc0f8843232}"; 6 - 7 - src = fetchgit { 8 - url = "https://github.com/avian2/noscript"; 9 - rev = "c900a079793868bb080ab1e23522d29dc121b4c6"; 10 - sha256 = "1y06gh5a622yrsx0h7v92qnvdi97i54ln09zc1lvk8x430z5bdly"; 11 - }; 12 - 13 - buildInputs = [ zip ]; 14 - 15 - patchPhase = '' 16 - substituteInPlace "version.sh" \ 17 - --replace "/bin/bash" "${bash}/bin/bash" 18 - ''; 19 - 20 - buildPhase = '' 21 - ./makexpi.sh 22 - ''; 23 - 24 - installPhase = '' 25 - mkdir -p $out/ 26 - cp *.xpi $out/${id}.xpi 27 - ''; 28 - }
-31
5pkgs/firefoxPlugins/ublock.nix
··· 1 - { fetchgit, stdenv, bash, python, zip }: 2 - 3 - stdenv.mkDerivation rec { 4 - name = "ublock"; 5 - id = "{2b10c1c8-a11f-4bad-fe9c-1c11e82cac42}"; 6 - 7 - src = fetchgit { 8 - url = "https://github.com/chrisaljoudi/uBlock"; 9 - rev = "a70a50052a7914cbf86d46a725812b98434d8c70"; 10 - sha256 = "1qfzy79f8x01i33x0m95k833z1jgxjwb8wvlr6fj6id1kxfvzh77"; 11 - }; 12 - 13 - buildInputs = [ 14 - zip 15 - python 16 - ]; 17 - 18 - patchPhase = '' 19 - substituteInPlace "tools/make-firefox.sh" \ 20 - --replace "/bin/bash" "${bash}/bin/bash" 21 - ''; 22 - 23 - buildPhase = '' 24 - tools/make-firefox.sh all 25 - ''; 26 - 27 - installPhase = '' 28 - mkdir -p $out/ 29 - cp dist/build/uBlock.firefox.xpi $out/${id}.xpi 30 - ''; 31 - }
-19
5pkgs/firefoxPlugins/vimperator.nix
··· 1 - { fetchgit, stdenv, zip }: 2 - 3 - stdenv.mkDerivation rec { 4 - name = "vimperator"; 5 - id = "vimperator@mozdev.org"; 6 - 7 - src = fetchgit { 8 - url = "https://github.com/vimperator/vimperator-labs.git"; 9 - rev = "ba7d8e72516fdc22246748c8183d7bc90f6fb073"; 10 - sha256 = "0drz67qm5hxxzw699rswlpjkg4p2lfipx119pk1nyixrqblcsvq2"; 11 - }; 12 - 13 - buildInputs = [ zip ]; 14 - 15 - installPhase = '' 16 - mkdir -p $out/ 17 - cp downloads/vimperator*.xpi $out/${id}.xpi 18 - ''; 19 - }
+30
5pkgs/generate-krebs-intermediate-ca/default.nix
··· 1 + { pkgs }: 2 + pkgs.writers.writeDashBin "generate-intermediate-ca" '' 3 + TMPDIR=$(mktemp -d) 4 + trap "rm -rf $TMPDIR;" INT TERM EXIT 5 + mkdir -p "$TMPDIR/krebs" 6 + pass show brain/ca/ca.key > "$TMPDIR/krebs/ca.key" 7 + pass show brain/ca/ca.crt > "$TMPDIR/krebs/ca.crt" 8 + export STEPPATH="$TMPDIR/step" 9 + cat << EOF > "$TMPDIR/intermediate.tpl" 10 + { 11 + "subject": {{ toJson .Subject }}, 12 + "keyUsage": ["certSign", "crlSign"], 13 + "basicConstraints": { 14 + "isCA": true, 15 + "maxPathLen": 0 16 + }, 17 + "nameConstraints": { 18 + "critical": true, 19 + "permittedDNSDomains": ["r" ,"w"] 20 + } 21 + } 22 + EOF 23 + 24 + ${pkgs.step-cli}/bin/step certificate create "Krebs ACME CA" intermediate_ca.crt intermediate_ca.key \ 25 + --template "$TMPDIR/intermediate.tpl" \ 26 + --not-after 8760h \ 27 + --ca "$TMPDIR/krebs/ca.crt" \ 28 + --ca-key "$TMPDIR/krebs/ca.key" \ 29 + --no-password --insecure 30 + ''
-82
5pkgs/l-gen-secrets/default.nix
··· 1 - { pkgs }: 2 - pkgs.writers.writeDashBin "l-gen-secrets" '' 3 - set -efu 4 - HOSTNAME=$1 5 - TMPDIR=$(${pkgs.coreutils}/bin/mktemp -d) 6 - if [ "''${DRYRUN-n}" = "n" ]; then 7 - trap 'rm -rf $TMPDIR' EXIT 8 - else 9 - echo "$TMPDIR" 10 - set -x 11 - fi 12 - mkdir -p $TMPDIR/out 13 - 14 - PASSWORD=$(${pkgs.pwgen}/bin/pwgen 25 1) 15 - HASHED_PASSWORD=$(echo $PASSWORD | ${pkgs.hashPassword}/bin/hashPassword -s) > /dev/null 16 - 17 - # ssh 18 - ${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f $TMPDIR/ssh.id_ed25519 -P "" -C "" >/dev/null 19 - ${pkgs.coreutils}/bin/mv $TMPDIR/ssh.id_ed25519 $TMPDIR/out/ 20 - 21 - # tor 22 - ${pkgs.coreutils}/bin/timeout 1 ${pkgs.tor}/bin/tor --HiddenServiceDir $TMPDIR/tor --HiddenServicePort 1 --SocksPort 0 >/dev/null || : 23 - ${pkgs.coreutils}/bin/mv $TMPDIR/tor/hs_ed25519_secret_key $TMPDIR/out/ssh-tor.priv 24 - 25 - # tinc 26 - ${pkgs.coreutils}/bin/mkdir -p $TMPDIR/tinc 27 - ${pkgs.tinc_pre}/bin/tinc --config $TMPDIR/tinc generate-keys 4096 </dev/null 28 - ${pkgs.coreutils}/bin/mv $TMPDIR/tinc/ed25519_key.priv $TMPDIR/out/retiolum.ed25519_key.priv 29 - ${pkgs.coreutils}/bin/mv $TMPDIR/tinc/rsa_key.priv $TMPDIR/out/retiolum.rsa_key.priv 30 - 31 - # wireguard 32 - ${pkgs.wireguard-tools}/bin/wg genkey > $TMPDIR/out/wiregrill.key 33 - ${pkgs.coreutils}/bin/cat $TMPDIR/out/wiregrill.key | ${pkgs.wireguard-tools}/bin/wg pubkey > $TMPDIR/wiregrill.pub 34 - 35 - # system passwords 36 - cat <<EOF > $TMPDIR/out/hashedPasswords.nix 37 - { 38 - root = "$HASHED_PASSWORD"; 39 - mainUser = "$HASHED_PASSWORD"; 40 - } 41 - EOF 42 - 43 - set +f 44 - if [ "''${DRYRUN-n}" = "n" ]; then 45 - cd $TMPDIR/out 46 - for x in *; do 47 - ${pkgs.coreutils}/bin/cat $x | ${pkgs.pass}/bin/pass insert -m hosts/$HOSTNAME/$x > /dev/null 48 - done 49 - echo $PASSWORD | ${pkgs.pass}/bin/pass insert -m admin/$HOSTNAME/pass > /dev/null 50 - ${pkgs.coreutils}/bin/cat $TMPDIR/tor/hostname | ${pkgs.pass}/bin/pass insert -m admin/$HOSTNAME/torname > /dev/null 51 - fi 52 - set -f 53 - 54 - cat <<EOF 55 - { r6, w6, ... }: 56 - { 57 - nets = { 58 - retiolum = { 59 - ip4.addr = "10.243.0.changeme"; 60 - ip6.addr = r6 "changeme"; 61 - aliases = [ 62 - "$HOSTNAME.r" 63 - ]; 64 - tinc.pubkey = ${"''"} 65 - $(cat $TMPDIR/tinc/rsa_key.pub | sed 's/^/ /') 66 - ${"''"}; 67 - tinc.pubkey_ed25519 = "$(cat $TMPDIR/tinc/ed25519_key.pub | ${pkgs.gnused}/bin/sed 's/.* = //')"; 68 - }; 69 - wiregrill = { 70 - ip6.addr = w6 "changeme"; 71 - aliases = [ 72 - "$HOSTNAME.w" 73 - ]; 74 - wireguard.pubkey = ${"''"} 75 - $(cat $TMPDIR/wiregrill.pub) 76 - ${"''"}; 77 - }; 78 - }; 79 - ssh.pubkey = "$(cat $TMPDIR/ssh.id_ed25519.pub)"; 80 - } 81 - EOF 82 - ''
+2 -2
5pkgs/logify/default.nix
··· 1 - { curl, writeDashBin }: 1 + { writers }: 2 2 3 3 #usage: ping 8.8.8.8 |& logify -I 4 - writeDashBin "logify" '' 4 + writers.writeDashBin "logify" '' 5 5 date_args=''${@:--Is} 6 6 while read line; do echo $(date "$date_args") $line; done 7 7 ''
+20
5pkgs/minidhcp/minidhcp
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p dnsmasq 3 + 4 + set -efux 5 + 6 + tmpdir=$(mktemp -d) 7 + trap 'rm -rf "$tmpdir"' EXIT 8 + 9 + cat > "$tmpdir"/dnsmasq.conf <<EOF 10 + interface=vm0 11 + dhcp-leasefile=$tmpdir/dnsmasq.leases 12 + port=0 13 + 14 + dhcp-range=10.102.0.100,10.102.0.150,24h 15 + 16 + # DNS 17 + dhcp-option=option:dns-server,10.102.0.1 18 + EOF 19 + 20 + sudo dnsmasq -k -C "$tmpdir"/dnsmasq.conf
+1 -1
5pkgs/nichtparasoup/default.nix
··· 10 10 rev = "c6dcd0d"; 11 11 sha256 = "10xy20bjdnd5bjv2hf6v5y5wi0mc9555awxkjqf57rk6ngc5w6ss"; 12 12 }; 13 - in pkgs.writeDashBin "nichtparasoup" '' 13 + in pkgs.writers.writeDashBin "nichtparasoup" '' 14 14 ${py}/bin/python ${src}/nichtparasoup.py "$@" 15 15 ''
+1 -1
5pkgs/nm-dmenu/default.nix
··· 1 1 { pkgs, lib, ... }: 2 2 3 - pkgs.writeDashBin "nm-dmenu" '' 3 + pkgs.writers.writeDashBin "nm-dmenu" '' 4 4 export PATH=$PATH:${lib.makeBinPath [ 5 5 pkgs.dmenu 6 6 pkgs.networkmanagerapplet
-286
5pkgs/q/default.nix
··· 1 - { pkgs, ... }: 2 - let 3 - q-cal = let 4 - # XXX 23 is the longest line of cal's output 5 - pad = ''{ 6 - ${pkgs.gnused}/bin/sed ' 7 - # rtrim 8 - s/ *$// 9 - 10 - # delete last empty line 11 - ''${/^$/d} 12 - ' \ 13 - | ${pkgs.gawk}/bin/awk '{printf "%-23s\n", $0}' \ 14 - | ${pkgs.gnused}/bin/sed ' 15 - # colorize header 16 - 1,2s/.*/&/ 17 - 18 - # colorize week number 19 - s/^[ 1-9][0-9]/&/ 20 - ' 21 - }''; 22 - in '' 23 - ${pkgs.coreutils}/bin/paste \ 24 - <(${pkgs.util-linux}/bin/cal -mw \ 25 - $(${pkgs.coreutils}/bin/date +'%m %Y' -d 'last month') \ 26 - | ${pad} 27 - ) \ 28 - <(${pkgs.util-linux}/bin/cal -mw \ 29 - | ${pkgs.gnused}/bin/sed ' 30 - # colorize day of month 31 - s/\(^\| \)'"$(${pkgs.coreutils}/bin/date +%e)"'\>/&/ 32 - ' \ 33 - | ${pad} 34 - ) \ 35 - <(${pkgs.util-linux}/bin/cal -mw \ 36 - $(${pkgs.coreutils}/bin/date +'%m %Y' -d 'next month') \ 37 - | ${pad} 38 - ) \ 39 - | ${pkgs.gnused}/bin/sed 's/\t/ /g' 40 - ''; 41 - 42 - q-isodate = '' 43 - ${pkgs.coreutils}/bin/date \ 44 - '+%Y-%m-%dT%H:%M:%S%:z' 45 - ''; 46 - 47 - q-gitdir = '' 48 - if test -d .git; then 49 - #git status --porcelain 50 - branch=$( 51 - ${pkgs.git}/bin/git branch \ 52 - | ${pkgs.gnused}/bin/sed -rn 's/^\* (.*)/\1/p' 53 - ) 54 - echo "± $LOGNAME@''${HOSTNAME-$(${pkgs.nettools}/bin/hostname)}:$PWD .git $branch" 55 - fi 56 - ''; 57 - 58 - q-intel_backlight = '' 59 - cd /sys/class/backlight/intel_backlight 60 - </dev/null exec ${pkgs.gawk}/bin/awk ' 61 - END { 62 - getline actual_brightness < "actual_brightness" 63 - getline max_brightness < "max_brightness" 64 - getline brightness < "brightness" 65 - printf "intel_backlight %d%% %d/%d\n" \ 66 - , actual_brightness / max_brightness * 100 \ 67 - , actual_brightness \ 68 - , max_brightness 69 - } 70 - ' 71 - ''; 72 - 73 - q-power_supply = let 74 - power_supply = pkgs.writeBash "power_supply" '' 75 - set -efu 76 - uevent=$1 77 - eval "$(${pkgs.gnused}/bin/sed -n ' 78 - s/^\([A-Z_]\+=[0-9A-Za-z_-]*\)$/export \1/p 79 - ' $uevent)" 80 - case $POWER_SUPPLY_NAME in 81 - AC) 82 - exit # not battery 83 - ;; 84 - esac 85 - exec </dev/null 86 - exec ${pkgs.gawk}/bin/awk ' 87 - function die(s) { 88 - printf "%s: %s\n", name, s 89 - exit 1 90 - } 91 - 92 - function print_hm(h, m) { 93 - m = (h - int(h)) * 60 94 - return sprintf("%dh%dm", h, m) 95 - } 96 - 97 - function print_bar(n, r, t1, t2, t_col) { 98 - t1 = int(r * n) 99 - t2 = n - t1 100 - if (r >= .42) t_col = "1;32" 101 - else if (r >= 23) t_col = "1;33" 102 - else if (r >= 11) t_col = "1;31" 103 - else t_col = "5;1;31" 104 - return sgr(t_col) strdup("■", t1) sgr(";30") strdup("■", t2) sgr() 105 - } 106 - 107 - function sgr(p) { 108 - return "\x1b[" p "m" 109 - } 110 - 111 - function strdup(s,n,t) { 112 - t = sprintf("%"n"s","") 113 - gsub(/ /,s,t) 114 - return t 115 - } 116 - 117 - END { 118 - name = ENVIRON["POWER_SUPPLY_NAME"] 119 - 120 - charge_unit = "Ah" 121 - charge_now = ENVIRON["POWER_SUPPLY_CHARGE_NOW"] / 10^6 122 - charge_full = ENVIRON["POWER_SUPPLY_CHARGE_FULL"] / 10^6 123 - 124 - current_unit = "A" 125 - current_now = ENVIRON["POWER_SUPPLY_CURRENT_NOW"] / 10^6 126 - 127 - energy_unit = "Wh" 128 - energy_now = ENVIRON["POWER_SUPPLY_ENERGY_NOW"] / 10^6 129 - energy_full = ENVIRON["POWER_SUPPLY_ENERGY_FULL"] / 10^6 130 - 131 - power_unit = "W" 132 - power_now = ENVIRON["POWER_SUPPLY_POWER_NOW"] / 10^6 133 - 134 - voltage_unit = "V" 135 - voltage_now = ENVIRON["POWER_SUPPLY_VOLTAGE_NOW"] / 10^6 136 - voltage_min_design = ENVIRON["POWER_SUPPLY_VOLTAGE_MIN_DESIGN"] / 10^6 137 - 138 - #printf "charge_now: %s\n", charge_now 139 - #printf "charge_full: %s\n", charge_full 140 - #printf "current_now: %s\n", current_now 141 - #printf "energy_now: %s\n", energy_now 142 - #printf "energy_full: %s\n", energy_full 143 - #printf "energy_full: %s\n", ENVIRON["POWER_SUPPLY_ENERGY_FULL"] 144 - #printf "energy_full: %s\n", ENVIRON["POWER_SUPPLY_ENERGY_FULL"] / 10^6 145 - #printf "power_now: %s\n", power_now 146 - #printf "voltage_now: %s\n", voltage_now 147 - 148 - if (current_now == 0 && voltage_now != 0) { 149 - current_now = power_now / voltage_now 150 - } 151 - if (power_now == 0) { 152 - power_now = current_now * voltage_now 153 - } 154 - if (charge_now == 0 && voltage_min_design != 0) { 155 - charge_now = energy_now / voltage_min_design 156 - } 157 - if (energy_now == 0) { 158 - energy_now = charge_now * voltage_min_design 159 - } 160 - if (charge_full == 0 && voltage_min_design != 0) { 161 - charge_full = energy_full / voltage_min_design 162 - } 163 - if (energy_full == 0) { 164 - energy_full = charge_full * voltage_min_design 165 - } 166 - 167 - if (charge_now == 0 || charge_full == 0) { 168 - die("unknown charge") 169 - } 170 - 171 - charge_ratio = charge_now / charge_full 172 - 173 - out = out name 174 - out = out sprintf(" %s", print_bar(10, charge_ratio)) 175 - out = out sprintf(" %d%", charge_ratio * 100) 176 - out = out sprintf(" %.2f%s", charge_now, charge_unit) 177 - if (current_now != 0) { 178 - out = out sprintf("/%.1f%s", current_now, current_unit) 179 - } 180 - out = out sprintf(" %d%s", energy_full, energy_unit) 181 - if (power_now != 0) { 182 - out = out sprintf("/%.1f%s", power_now, power_unit) 183 - } 184 - if (current_now != 0) { 185 - out = out sprintf(" %s", print_hm(charge_now / current_now)) 186 - } 187 - 188 - print out 189 - } 190 - ' 191 - ''; 192 - in '' 193 - for uevent in /sys/class/power_supply/*/uevent; do 194 - ${power_supply} "$uevent" || : 195 - done 196 - ''; 197 - 198 - q-virtualization = '' 199 - echo "VT: $(${pkgs.systemd}/bin/systemd-detect-virt)" 200 - ''; 201 - 202 - q-wireless = '' 203 - for dev in $( 204 - ${pkgs.iw}/bin/iw dev \ 205 - | ${pkgs.gnused}/bin/sed -n 's/^\s*Interface\s\+\([0-9a-z]\+\)$/\1/p' 206 - ); do 207 - inet=$(${pkgs.iproute2}/bin/ip addr show $dev \ 208 - | ${pkgs.gnused}/bin/sed -n ' 209 - s/.*inet \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p 210 - ') \ 211 - || unset inet 212 - ssid=$(${pkgs.iw}/bin/iw dev $dev link \ 213 - | ${pkgs.gnused}/bin/sed -n ' 214 - s/.*\tSSID: \(.*\)/\1/p 215 - ') \ 216 - || unset ssid 217 - echo "$dev''${inet+ $inet}''${ssid+ $ssid}" 218 - done 219 - ''; 220 - 221 - q-online = '' 222 - if ${pkgs.curl}/bin/curl -s google.com >/dev/null; then 223 - echo 'online' 224 - else 225 - echo offline 226 - fi 227 - ''; 228 - 229 - q-thermal_zone = '' 230 - for i in /sys/class/thermal/thermal_zone*; do 231 - type=$(${pkgs.coreutils}/bin/cat $i/type) 232 - temp=$(${pkgs.coreutils}/bin/cat $i/temp) 233 - printf '%s %s°C\n' $type $(echo $temp / 1000 | ${pkgs.bc}/bin/bc) 234 - done 235 - ''; 236 - 237 - q-todo = '' 238 - TODO_file=$HOME/TODO 239 - if test -e "$TODO_file"; then 240 - ${pkgs.coreutils}/bin/cat "$TODO_file" \ 241 - | ${pkgs.gawk}/bin/gawk -v now=$(${pkgs.coreutils}/bin/date +%s) ' 242 - BEGIN { print "remind=0" } 243 - /^[0-9]/{ 244 - x = $1 245 - gsub(".", "\\\\&", x) 246 - rest = substr($0, index($0, " ")) 247 - rest = $0 248 - sub(" *", "", rest) 249 - gsub(".", "\\\\&", rest) 250 - print "test $(${pkgs.coreutils}/bin/date +%s -d"x") -lt "now" && \ 251 - echo \"\x1b[38;5;208m\""rest esc "\"\x1b[m\" && \ 252 - (( remind++ ))" 253 - } 254 - END { print "test $remind = 0 && echo \"nothing to remind\"" } 255 - ' \ 256 - | { 257 - # bash needed for (( ... )) 258 - ${pkgs.bash}/bin/bash 259 - } 260 - else 261 - echo "$TODO_file: no such file or directory" 262 - fi 263 - ''; 264 - 265 - in 266 - # bash needed for <(...) 267 - pkgs.writeBashBin "q" '' 268 - set -eu 269 - export PATH=/var/empty 270 - (${q-todo}) || : 271 - if [ "$PWD" != "$HOME" ]; then 272 - (HOME=$PWD; ${q-todo}) || : 273 - fi 274 - echo 275 - ${q-cal} 276 - echo 277 - ${q-isodate} 278 - (${q-gitdir}) & 279 - (${q-intel_backlight}) & 280 - (${q-power_supply}) & 281 - (${q-virtualization}) & 282 - (${q-wireless}) & 283 - (${q-online}) & 284 - (${q-thermal_zone}) & 285 - wait 286 - ''
-6
5pkgs/rs/default.nix
··· 1 - { pkgs, ... }: 2 - 3 - #TODO: get tab-completion working again 4 - pkgs.writeBashBin "rs" '' 5 - rsync -vaP --append-verify "$@" 6 - ''
-38
5pkgs/super-vnc/default.nix
··· 1 - { pkgs, lib }: let 2 - 3 - quoteChar = c: 4 - if c == "\n" then "'\n'" 5 - else c; 6 - quote = x: if x == "" then "''" else lib.stringAsChars quoteChar x; 7 - 8 - in pkgs.writers.writeDashBin "super-vnc" '' 9 - PATH=${lib.makeBinPath (with pkgs; [ 10 - xorg.xrandr gnugrep coreutils xorg.xorgserver gnused openssh gawk tightvnc 11 - ])} 12 - remote=$1 13 - res_x=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1) 14 - res_y=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2) 15 - export modeline="$(gtf "$res_x" "$res_y" 60 | sed -n 's/.*Modeline "\([^" ]\+\)" \(.*\)/\1 \2/p')" 16 - export name="$(echo "$modeline" | sed 's/\([^ ]\+\) .*/\1/')" 17 - export vncline="''${res_x}x''${res_y}+0+0" 18 - 19 - if [ -z "$modeline" -o -z "$name" ]; then 20 - echo "Error! modeline=$modeline name=$name" 21 - exit 1 22 - fi 23 - 24 - echo $modeline 25 - 26 - # TODO user random highport 27 - ssh "$remote" -L 5900:localhost:55900 bash <<EOF 28 - set -x 29 - export DISPLAY=:0 30 - export output=\$(xrandr | grep disconnected | tail -1 | cut -d' ' -f1) 31 - xrandr --newmode $modeline 32 - xrandr --verbose --addmode "\$output" "$name" 33 - xrandr --output "\$output" --off 34 - xrandr --verbose --output "\$output" --mode "$name" --right-of "\$(xrandr | grep primary | cut -d ' ' -f1)" 35 - EOF 36 - sleep 2 37 - vncviewer localhost:55900 38 - ''
-51
5pkgs/tdlib-purple/default.nix
··· 1 - { stdenv, pkgs, fetchFromGitHub, cmake, pidgin, libwebp, libtgvoip } : 2 - 3 - let 4 - 5 - tdlib = stdenv.mkDerivation rec { 6 - version = "1.6.0"; 7 - pname = "tdlib"; 8 - 9 - src = fetchFromGitHub { 10 - owner = "tdlib"; 11 - repo = "td"; 12 - rev = "v${version}"; 13 - sha256 = "0zlzpl6fgszg18kwycyyyrnkm255dvc6fkq0b0y32m5wvwwl36cv"; 14 - }; 15 - 16 - buildInputs = with pkgs; [ gperf openssl readline zlib ]; 17 - nativeBuildInputs = [ pkgs.cmake ]; 18 - 19 - }; 20 - 21 - in stdenv.mkDerivation rec { 22 - pname = "tdlib-purple"; 23 - version = "0.7.8"; 24 - 25 - src = fetchFromGitHub { 26 - owner = "ars3niy"; 27 - repo = pname; 28 - rev = "v${version}"; 29 - sha256 = "17g54mcxsidcx37l6m4p8i06ln1hvq3347dhdl9xkkn7pqpwvv1c"; 30 - }; 31 - 32 - cmakeFlags = [ 33 - "-Dtgvoip_INCLUDE_DIRS=${libtgvoip.dev}/include/tgvoip" 34 - ]; 35 - 36 - nativeBuildInputs = [ cmake ]; 37 - buildInputs = [ pidgin tdlib libwebp libtgvoip ]; 38 - 39 - installPhase = '' 40 - mkdir -p $out/lib/purple-2/ 41 - cp *.so $out/lib/purple-2/ 42 - ''; 43 - 44 - meta = with stdenv.lib; { 45 - homepage = "https://github.com/ars3niy/tdlib-purple"; 46 - description = "New libpurple plugin for Telegram"; 47 - license = licenses.gpl2; 48 - maintainers = [ maintainers.lassulus ]; 49 - platforms = platforms.linux; 50 - }; 51 - }
-62
5pkgs/xephyrify/default.nix
··· 1 - { writeDashBin, writeHaskellPackage, coreutils, xorg, virtualgl, ... }: 2 - 3 - let 4 - 5 - xephyrify-xmonad = writeHaskellPackage "xephyrify-xmonad" { 6 - executables.xmonad = { 7 - extra-depends = [ 8 - "containers" 9 - "unix" 10 - "xmonad" 11 - ]; 12 - text = /* haskell */ '' 13 - module Main where 14 - import XMonad 15 - import Data.Monoid 16 - import System.Posix.Process (executeFile) 17 - import qualified Data.Map as Map 18 - 19 - main :: IO () 20 - main = do 21 - xmonad def 22 - { workspaces = [ "1" ] 23 - , layoutHook = myLayoutHook 24 - , keys = myKeys 25 - , normalBorderColor = "#000000" 26 - , focusedBorderColor = "#000000" 27 - , handleEventHook = myEventHook 28 - } 29 - 30 - myEventHook :: Event -> X All 31 - 32 - myEventHook (ConfigureEvent { ev_event_type = 22 }) = do 33 - spawn "${xorg.xrandr}/bin/xrandr >/dev/null 2>&1" 34 - return (All True) 35 - 36 - myEventHook _ = do 37 - return (All True) 38 - 39 - myLayoutHook = Full 40 - myKeys _ = Map.fromList [] 41 - ''; 42 - }; 43 - }; 44 - 45 - in writeDashBin "xephyrify" '' 46 - NDISPLAY=''${NDISPLAY:-$(${coreutils}/bin/shuf -i 100-65536 -n 1)} 47 - echo "using DISPLAY $NDISPLAY" 48 - ${xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable -dpi 60 -nolisten local :$NDISPLAY & 49 - if test -n $DROP_TO_USER; then 50 - sleep 1 51 - ls /tmp/.X11-unix/ 52 - id 53 - ${coreutils}/bin/chgrp "$DROP_TO_USER" "/tmp/.X11-unix/X$NDISPLAY" 54 - ${coreutils}/bin/chmod 770 "/tmp/.X11-unix/X$NDISPLAY" 55 - fi 56 - XEPHYR_PID=$! 57 - DISPLAY=:$NDISPLAY ${xephyrify-xmonad}/bin/xmonad & 58 - XMONAD_PID=$! 59 - DISPLAY=:$NDISPLAY ${virtualgl}/bin/vglrun "$@" 60 - kill $XMONAD_PID 61 - kill $XEPHYR_PID 62 - ''
-17
5pkgs/xml2json/default.nix
··· 1 - { pkgs, ... }: 2 - let 3 - pp = pkgs.python35Packages; 4 - in pp.buildPythonPackage rec { 5 - name = "xml2json-${version}"; 6 - version = "22ffcd"; 7 - propagatedBuildInputs = [ 8 - pp.simplejson 9 - ]; 10 - src = pkgs.fetchFromGitHub { 11 - owner = "hay"; 12 - repo = "xml2json"; 13 - rev = "${version}"; 14 - sha256 = "1snjd6q6bk517350gdrl8kkphkra0iaz56i583h2q57ab09r29vc"; 15 - }; 16 - doCheck = false; 17 - }