├── .gitignore
├── modules
├── dev
│ ├── ruby
│ │ ├── guardrc
│ │ ├── pryrc
│ │ ├── rspec
│ │ ├── rdebugrc
│ │ ├── gas
│ │ │ └── users
│ │ ├── bundle
│ │ │ └── config
│ │ ├── gemrc
│ │ ├── irbrc
│ │ ├── erdconfig
│ │ ├── aprc
│ │ └── default.nix
│ ├── haskell
│ │ ├── hspec
│ │ ├── hindent.yaml
│ │ ├── hoogle.nix
│ │ ├── haskeline
│ │ ├── stack
│ │ │ └── config.yaml
│ │ ├── default.nix
│ │ ├── summoner.toml
│ │ ├── hlint.yaml
│ │ └── ghci
│ ├── agda
│ │ ├── defaults
│ │ └── default.nix
│ ├── rust
│ │ ├── rustfmt.toml
│ │ └── default.nix
│ ├── js
│ │ ├── packages
│ │ │ ├── README.md
│ │ │ ├── packages.json
│ │ │ └── default.nix
│ │ ├── npmrc
│ │ └── default.nix
│ ├── ocaml
│ │ ├── ocamlinit
│ │ ├── default.nix
│ │ └── utoprc
│ ├── base.nix
│ ├── blockchain.nix
│ ├── formal.nix
│ ├── clojure
│ │ ├── default.nix
│ │ └── lein
│ │ │ └── profiles.clj
│ ├── default.nix
│ ├── cxx
│ │ └── default.nix
│ └── python
│ │ └── default.nix
├── users
│ ├── authorized-keys.nix
│ ├── vyorkin.nix
│ └── default.nix
├── workspace
│ ├── i3
│ │ ├── rofi
│ │ │ ├── config
│ │ │ └── themes
│ │ │ │ ├── styles
│ │ │ │ └── colors.rasi
│ │ │ │ ├── dmenu.rasi
│ │ │ │ ├── sidebar-dark.rasi
│ │ │ │ ├── white.rasi
│ │ │ │ ├── ribbon.rasi
│ │ │ │ ├── black.rasi
│ │ │ │ ├── white-border.rasi
│ │ │ │ ├── white-no-border.rasi
│ │ │ │ ├── shadow.rasi
│ │ │ │ ├── onedark.rasi
│ │ │ │ ├── dark-sidebar.rasi
│ │ │ │ ├── gruvbox-dark.rasi
│ │ │ │ ├── gruvbox-dark-soft.rasi
│ │ │ │ ├── gruvbox-light.rasi
│ │ │ │ ├── gruvbox-light-hard.rasi
│ │ │ │ ├── gruvbox-light-soft.rasi
│ │ │ │ ├── material.rasi
│ │ │ │ ├── sidebar.rasi
│ │ │ │ ├── paper-float.rasi
│ │ │ │ ├── shadow-sidebar.rasi
│ │ │ │ ├── flat-orange.rasi
│ │ │ │ ├── sidetab.rasi
│ │ │ │ ├── fancy.rasi
│ │ │ │ ├── Pop-Dark.rasi
│ │ │ │ └── hack.rasi
│ │ ├── default.nix
│ │ ├── config
│ │ │ ├── scripts
│ │ │ │ ├── free.nix
│ │ │ │ ├── temperature.nix
│ │ │ │ ├── weather.nix
│ │ │ │ ├── emacs.nix
│ │ │ │ ├── free.hs
│ │ │ │ ├── brightness.nix
│ │ │ │ ├── bluetooth.nix
│ │ │ │ ├── sound.nix
│ │ │ │ ├── connections.nix
│ │ │ │ ├── network.hs
│ │ │ │ ├── default.nix
│ │ │ │ ├── temperature.hs
│ │ │ │ └── battery.nix
│ │ │ ├── blocks
│ │ │ │ ├── bluetooth
│ │ │ │ ├── brightness
│ │ │ │ ├── sound
│ │ │ │ └── battery
│ │ │ ├── env.nix
│ │ │ └── i3blocks.conf
│ │ ├── packages
│ │ │ └── bumblebee-status.nix
│ │ └── base.nix
│ ├── gnome
│ │ ├── default.nix
│ │ └── base.nix
│ ├── default.nix
│ ├── plasma.nix
│ ├── sway
│ │ ├── default.nix
│ │ ├── packages.nix
│ │ ├── mako.nix
│ │ └── wofi
│ │ │ └── default.nix
│ ├── qt.nix
│ ├── services.nix
│ ├── ssh.nix
│ ├── laptop-x11
│ │ ├── default.nix
│ │ └── xbindkeysrc
│ ├── cursor.nix
│ ├── base.nix
│ ├── gtk.nix
│ └── fonts.nix
├── apps
│ ├── reading
│ │ ├── default.nix
│ │ └── zathura
│ │ │ └── default.nix
│ ├── monitoring
│ │ ├── default.nix
│ │ ├── ksysguard
│ │ │ ├── default.nix
│ │ │ └── monitoring.sgrd
│ │ └── htop.nix
│ ├── web
│ │ ├── other.nix
│ │ ├── brave.nix
│ │ ├── default.nix
│ │ ├── google-chrome.nix
│ │ └── firefox.nix
│ ├── terminal
│ │ ├── default.nix
│ │ ├── tmux.nix
│ │ ├── alacritty.nix
│ │ └── kitty.nix
│ ├── tools
│ │ ├── blogging.nix
│ │ ├── json.nix
│ │ ├── disk.nix
│ │ ├── raspberry.nix
│ │ ├── screencasting.nix
│ │ ├── aws.nix
│ │ ├── finance.nix
│ │ ├── http.nix
│ │ ├── url.nix
│ │ ├── network.nix
│ │ ├── media.nix
│ │ ├── compression.nix
│ │ ├── base.nix
│ │ ├── search.nix
│ │ ├── default.nix
│ │ └── nix.nix
│ ├── pentest
│ │ ├── bluetooth.nix
│ │ ├── vulnerability.nix
│ │ ├── web.nix
│ │ ├── stego.nix
│ │ ├── crypto.nix
│ │ ├── forensics.nix
│ │ ├── fuzzing.nix
│ │ ├── hardware.nix
│ │ ├── rfid.nix
│ │ ├── default.nix
│ │ ├── explotation.nix
│ │ ├── sniffing.nix
│ │ ├── database.nix
│ │ ├── sdr.nix
│ │ ├── passwords.nix
│ │ ├── reversing.nix
│ │ ├── wireless.nix
│ │ └── backdoor.nix
│ ├── editor
│ │ ├── vscode.nix
│ │ ├── gamedev.nix
│ │ ├── office.nix
│ │ ├── default.nix
│ │ ├── emacs.nix
│ │ └── vim.nix
│ ├── media
│ │ └── default.nix
│ ├── torrent.nix
│ ├── gaming
│ │ └── default.nix
│ ├── db
│ │ ├── default.nix
│ │ └── postgresql
│ │ │ ├── default.nix
│ │ │ └── psqlrc
│ ├── shell
│ │ ├── fish.nix
│ │ └── zsh.nix
│ ├── streaming
│ │ └── default.nix
│ ├── messaging
│ │ └── default.nix
│ ├── fm
│ │ └── default.nix
│ ├── devops
│ │ └── default.nix
│ ├── scm
│ │ └── git.nix
│ └── default.nix
├── x11
│ ├── default.nix
│ ├── packages.nix
│ ├── xserver
│ │ ├── sddm.nix
│ │ ├── libinput.nix
│ │ ├── base.nix
│ │ └── lightdm.nix
│ ├── autorandr
│ │ ├── mobile
│ │ │ ├── config
│ │ │ └── setup
│ │ ├── work
│ │ │ ├── config
│ │ │ └── setup
│ │ ├── tv
│ │ │ ├── config
│ │ │ └── setup
│ │ └── home
│ │ │ ├── config
│ │ │ └── setup
│ ├── files.nix
│ └── Xmodmap
├── hardware
│ ├── base.nix
│ ├── default.nix
│ ├── firmware.nix
│ ├── bluetooth.nix
│ ├── opengl.nix
│ └── sound.nix
├── nixpkgs.nix
├── security.nix
├── network.nix
├── home.nix
├── virtualisation.nix
├── locale.nix
├── system.nix
├── boot
│ ├── plymouth
│ │ └── angular.nix
│ └── default.nix
├── default.nix
├── themes.nix
├── nix.nix
├── services.nix
└── overlay.nix
├── hosts
├── autism
│ ├── system
│ ├── hardware
│ │ ├── video.nix
│ │ ├── power.nix
│ │ ├── boot.nix
│ │ ├── default.nix
│ │ └── fs.nix
│ ├── nix.nix
│ ├── services.nix
│ └── default.nix
└── notbad
│ ├── system
│ ├── hardware
│ ├── power.nix
│ ├── boot.nix
│ ├── default.nix
│ └── fs.nix
│ ├── nix.nix
│ ├── services.nix
│ └── default.nix
├── profiles
├── server.nix
├── desktop-sway.nix
├── desktop-plasma.nix
├── desktop-i3.nix
├── default.nix
├── base.nix
└── desktop.nix
└── Makefile
/.gitignore:
--------------------------------------------------------------------------------
1 | result/*
2 |
--------------------------------------------------------------------------------
/modules/dev/ruby/guardrc:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/hosts/autism/system:
--------------------------------------------------------------------------------
1 | x86_64-linux
2 |
--------------------------------------------------------------------------------
/hosts/notbad/system:
--------------------------------------------------------------------------------
1 | x86_64-linux
2 |
--------------------------------------------------------------------------------
/modules/dev/haskell/hspec:
--------------------------------------------------------------------------------
1 | --color
2 |
--------------------------------------------------------------------------------
/modules/dev/agda/defaults:
--------------------------------------------------------------------------------
1 | standard-library
2 |
--------------------------------------------------------------------------------
/modules/users/authorized-keys.nix:
--------------------------------------------------------------------------------
1 | [
2 | ]
3 |
--------------------------------------------------------------------------------
/modules/dev/rust/rustfmt.toml:
--------------------------------------------------------------------------------
1 | edition = "2018"
2 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/config:
--------------------------------------------------------------------------------
1 | rofi.theme: hack
2 |
--------------------------------------------------------------------------------
/modules/dev/ruby/pryrc:
--------------------------------------------------------------------------------
1 | require '~/.dotpryrc/bootstrap'
2 |
--------------------------------------------------------------------------------
/modules/dev/ruby/rspec:
--------------------------------------------------------------------------------
1 | --colour
2 | --order random
3 |
--------------------------------------------------------------------------------
/hosts/autism/hardware/video.nix:
--------------------------------------------------------------------------------
1 | { lib, ... }:
2 |
3 | {
4 | }
5 |
--------------------------------------------------------------------------------
/modules/apps/reading/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./zathura
4 | ];
5 | }
6 |
--------------------------------------------------------------------------------
/modules/workspace/gnome/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./base.nix
4 | ];
5 | }
6 |
--------------------------------------------------------------------------------
/modules/workspace/i3/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./base.nix
4 | ];
5 | }
6 |
--------------------------------------------------------------------------------
/profiles/server.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = [
3 | ./base.nix
4 | ];
5 | }
6 |
--------------------------------------------------------------------------------
/modules/dev/ruby/rdebugrc:
--------------------------------------------------------------------------------
1 | eval require 'ruby-debug/completion'
2 | set autolist
3 | set autoeval
4 |
--------------------------------------------------------------------------------
/modules/dev/js/packages/README.md:
--------------------------------------------------------------------------------
1 | # Updating
2 |
3 | ```sh
4 | $ node2nix -d -i packages.json
5 | ```
6 |
--------------------------------------------------------------------------------
/modules/apps/monitoring/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./ksysguard
4 | ./htop.nix
5 | ];
6 | }
7 |
--------------------------------------------------------------------------------
/modules/dev/haskell/hindent.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | indent-size: 2
3 | line-length: 80
4 | force-trailing-newline: true
5 |
--------------------------------------------------------------------------------
/modules/apps/web/other.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [ nyxt ];
5 | }
6 |
--------------------------------------------------------------------------------
/modules/dev/ruby/gas/users:
--------------------------------------------------------------------------------
1 | ==> [vyorkin]
2 | name = Vasiliy Yorkin
3 | email = vasiliy.yorkin@gmail.com
4 |
--------------------------------------------------------------------------------
/modules/apps/web/brave.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | brave
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/workspace/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./base.nix
4 | ./fonts.nix
5 | ./services.nix
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/x11/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./xserver/base.nix
4 | ./packages.nix
5 | ./files.nix
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/terminal/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./alacritty.nix
4 | ./kitty.nix
5 | ./tmux.nix
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/tools/blogging.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | hugo
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/dev/ocaml/ocamlinit:
--------------------------------------------------------------------------------
1 | #use "topfind";;
2 | #thread;;
3 | #require "core.top";;
4 | #require "ppx_jane";;
5 |
6 | open Base;;
7 |
--------------------------------------------------------------------------------
/modules/apps/pentest/bluetooth.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | ];
6 | }
7 |
--------------------------------------------------------------------------------
/modules/apps/tools/json.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | jq
6 | jid
7 | ];
8 | }
9 |
--------------------------------------------------------------------------------
/modules/workspace/plasma.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, config, ... }:
2 |
3 | {
4 | desktopManager.plasma5 = {
5 | enable = true;
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/tools/disk.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | duf
6 | ncdu
7 | ];
8 | }
9 |
--------------------------------------------------------------------------------
/modules/apps/tools/raspberry.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | rpi-imager
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/tools/screencasting.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | asciinema
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/editor/vscode.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | programs.vscode = {
4 | enable = true;
5 | };
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/tools/aws.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | eksctl
6 | awscli2
7 | ];
8 | }
9 |
--------------------------------------------------------------------------------
/modules/apps/tools/finance.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | ledger-live-desktop
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/dev/base.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | ];
7 | };
8 | }
9 |
--------------------------------------------------------------------------------
/profiles/desktop-sway.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | ./desktop.nix
4 |
5 | sway
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/web/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./firefox.nix
4 | ./google-chrome.nix
5 | ./brave.nix
6 | ./other.nix
7 | ];
8 | }
9 |
--------------------------------------------------------------------------------
/modules/apps/web/google-chrome.nix:
--------------------------------------------------------------------------------
1 |
2 | { pkgs, ... }:
3 |
4 | {
5 | environment.systemPackages = with pkgs; [
6 | google-chrome
7 | ];
8 | }
9 |
--------------------------------------------------------------------------------
/profiles/desktop-plasma.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | ./desktop.nix
4 |
5 | plasma
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/editor/gamedev.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [ blender ];
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/profiles/desktop-i3.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | ./desktop.nix
4 |
5 | x11
6 | i3
7 | ];
8 | }
9 |
--------------------------------------------------------------------------------
/modules/apps/tools/http.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | curl
6 | wget
7 | httpie
8 | ];
9 | }
10 |
--------------------------------------------------------------------------------
/modules/apps/editor/office.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [ abiword gnumeric obsidian ];
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/tools/url.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | urlscan
6 | urlview
7 | urlwatch
8 | ];
9 | }
10 |
--------------------------------------------------------------------------------
/modules/hardware/base.nix:
--------------------------------------------------------------------------------
1 | {
2 | hardware = {
3 | # Enable scanner support
4 | # Docs: https://nixos.wiki/wiki/Scanners
5 | sane.enable = true;
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/modules/workspace/sway/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./base.nix
4 | ./packages.nix
5 | ./mako.nix
6 | ./waybar
7 | ./wofi
8 | ];
9 | }
10 |
--------------------------------------------------------------------------------
/modules/apps/editor/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./emacs.nix
4 | ./vim.nix
5 | ./vscode.nix
6 | ./office.nix
7 | ./gamedev.nix
8 | ];
9 | }
10 |
--------------------------------------------------------------------------------
/modules/workspace/qt.nix:
--------------------------------------------------------------------------------
1 | {
2 |
3 | home-manager.users.vyorkin = {
4 | qt = {
5 | enable = true;
6 | platformTheme = "gtk";
7 | };
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/modules/hardware/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./base.nix
4 | ./firmware.nix
5 | ./opengl.nix
6 | ./sound.nix
7 | ./bluetooth.nix
8 | ];
9 | }
10 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/free.nix:
--------------------------------------------------------------------------------
1 | { bc, ... }: ''
2 | echo `free | tail -2 | head -1 | awk '{print "scale=3; "$7"/1000000"}' | ${
3 | bc
4 | }/bin/bc -l`GB
5 | ''
6 |
--------------------------------------------------------------------------------
/modules/workspace/services.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | services = {
4 | lorri.enable = true;
5 | # dropbox.enable = true;
6 | };
7 | };
8 | }
9 |
--------------------------------------------------------------------------------
/modules/dev/blockchain.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | slither-analyzer
7 | ];
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/modules/apps/tools/network.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | prettyping
6 | inetutils
7 | nmap
8 | iw
9 | ];
10 | }
11 |
--------------------------------------------------------------------------------
/modules/apps/media/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | vlc
7 | mpv
8 | ];
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/apps/torrent.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | transmission
7 | stig
8 | ];
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/dev/haskell/hoogle.nix:
--------------------------------------------------------------------------------
1 | {
2 | services.hoogle = {
3 | enable = true;
4 | port = 9000;
5 | # Fix the URL for Hoogle logo
6 | home = "https://localhost:9000";
7 | };
8 | }
9 |
--------------------------------------------------------------------------------
/modules/apps/gaming/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | steamcmd
7 | steam
8 | ];
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/dev/formal.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | coq
7 | cvc4
8 | z3
9 | ];
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/modules/dev/ruby/bundle/config:
--------------------------------------------------------------------------------
1 | ---
2 | BUNDLE_JOBS: '4'
3 | 'BUNDLE_BUILD__NOKOGIRI: "--use-system-libraries BINDLE_BIN': false'
4 | BUNDLE_GEM__COC: '0'
5 | BUNDLE_GEM__TEST: rspec
6 | BUNDLE_GEM__MIT: 0
7 |
--------------------------------------------------------------------------------
/hosts/notbad/hardware/power.nix:
--------------------------------------------------------------------------------
1 | {
2 | powerManagement = {
3 | # Configure the governor used to regulate the frequence of
4 | # the available CPUs
5 | cpuFreqGovernor = "powersave";
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/temperature.nix:
--------------------------------------------------------------------------------
1 | { ... }:
2 | ''
3 | temp=$((`cat /sys/class/thermal/thermal_zone*/temp | sort | tail -1`/1000))
4 | echo $temp °
5 | [[ $temp -gt 80 ]] && exit 33
6 | ''
7 |
--------------------------------------------------------------------------------
/profiles/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | server = ./server.nix;
3 | desktop-i3 = ./desktop-i3.nix;
4 | desktop-sway = ./desktop-sway.nix;
5 | desktop-plasma = ./desktop-plasma.nix;
6 | base = ./base.nix;
7 | }
8 |
--------------------------------------------------------------------------------
/hosts/autism/hardware/power.nix:
--------------------------------------------------------------------------------
1 | {
2 | powerManagement = {
3 | # Configure the governor used to regulate the frequence of
4 | # the available CPUs
5 | cpuFreqGovernor = "performance";
6 | };
7 | }
8 |
--------------------------------------------------------------------------------
/modules/apps/tools/media.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | ffmpeg-full
6 | ffmpegthumbnailer
7 | imagemagickBig
8 | kdenlive
9 | ];
10 | }
11 |
--------------------------------------------------------------------------------
/modules/dev/ruby/gemrc:
--------------------------------------------------------------------------------
1 | ---
2 | :backtrace: false
3 | :bulk_threshold: 1000
4 | :sources:
5 | - https://rubygems.org
6 | :update_sources: true
7 | :verbose: true
8 | :search: --remote
9 | benchmark: false
10 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/weather.nix:
--------------------------------------------------------------------------------
1 | { bash, config, curl, iconfont, ... }: ''
2 | #!${bash}/bin/bash
3 | WTTR=$(curl wttr.in/?format=1)
4 | echo "$WTTR"
5 | ''
6 |
--------------------------------------------------------------------------------
/modules/x11/packages.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | xorg.xmodmap
6 | xcape
7 | xsel
8 |
9 | arandr
10 | autorandr
11 | ];
12 | }
13 |
--------------------------------------------------------------------------------
/modules/dev/haskell/haskeline:
--------------------------------------------------------------------------------
1 | maxhistorysize: Just 1000
2 | completionPromptLimit: Just 1000
3 | historyDuplicates: IgnoreConsecutive
4 | bellStyle: VisualBell
5 |
6 | bind: f7 : r e l o a d
7 | keyseq: "^[[18~" f7
8 |
--------------------------------------------------------------------------------
/modules/x11/xserver/sddm.nix:
--------------------------------------------------------------------------------
1 | {
2 | services.xserver.displayManager = {
3 | sddm.enable = true;
4 |
5 | job = {
6 | logToFile = true;
7 | logToJournal = true;
8 | };
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/dev/clojure/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | home.file = {
4 | ".lein" = {
5 | source = ./lein;
6 | recursive = true;
7 | };
8 | };
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/apps/tools/compression.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | zlib
6 | zip
7 | unzip
8 | bzip2
9 | zstd
10 | unrar
11 | atool
12 | ];
13 | }
14 |
--------------------------------------------------------------------------------
/modules/dev/agda/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | home.file = {
4 | ".agda" = {
5 | source = ./defaults;
6 | target = "./agda/defaults";
7 | };
8 | };
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: setup/notbad setup/autism clean
2 |
3 | setup/notbad:
4 | sudo nixos-rebuild switch --flake ".#notbad"
5 |
6 | setup/autism:
7 | sudo nixos-rebuild switch --flake ".#autism"
8 |
9 | clean:
10 | unlink ./result
11 |
--------------------------------------------------------------------------------
/modules/workspace/sway/packages.nix:
--------------------------------------------------------------------------------
1 | { pkgs, inputs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | wl-clipboard
6 | grim
7 | slurp
8 | pass-wayland
9 | wf-recorder
10 | ];
11 | }
12 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/mobile/config:
--------------------------------------------------------------------------------
1 | output DP-1
2 | off
3 | output HDMI-1
4 | off
5 | output DP-2
6 | off
7 | output HDMI-2
8 | off
9 | output eDP-1
10 | gamma 1.0:0.909:0.833
11 | mode 1920x1080
12 | pos 0x0
13 | primary
14 | rate 60.05
15 |
--------------------------------------------------------------------------------
/modules/apps/pentest/vulnerability.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | grype
6 | lynis
7 |
8 | # Vulnerability (CVE) scanner for Nix/NixOS
9 | vulnix
10 | ];
11 | }
12 |
--------------------------------------------------------------------------------
/modules/apps/pentest/web.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # burpsuite
6 | dirb
7 | gobuster
8 | urlhunter
9 | wfuzz
10 | # wpscan
11 | zap
12 | ];
13 | }
14 |
--------------------------------------------------------------------------------
/hosts/autism/nix.nix:
--------------------------------------------------------------------------------
1 | { lib, ... }:
2 |
3 | {
4 | nix = {
5 | # Maximum number of jobs that Nix will try to build in parallel.
6 | # Set to the total number of logical cores in the system
7 | settings.max-jobs = lib.mkDefault 6;
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/hosts/autism/services.nix:
--------------------------------------------------------------------------------
1 | {
2 | services = {
3 | clight = {
4 | # Maybe causes freezes on sway + nvidia
5 | enable = false;
6 | temperature = {
7 | day = 5500;
8 | night = 2000;
9 | };
10 | };
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/hosts/notbad/hardware/boot.nix:
--------------------------------------------------------------------------------
1 | {
2 | boot = {
3 | initrd = {
4 | availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ];
5 | kernelModules = [ "kvm-intel" ];
6 | };
7 |
8 | extraModulePackages = [ ];
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/hosts/notbad/nix.nix:
--------------------------------------------------------------------------------
1 | { lib, ... }:
2 |
3 | {
4 | nix = {
5 | # Maximum number of jobs that Nix will try to build in parallel.
6 | # Set to the total number of logical cores in the system
7 | settings.max-jobs = lib.mkDefault 4;
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/hosts/notbad/services.nix:
--------------------------------------------------------------------------------
1 | {
2 | services = {
3 | # Enable power management daemon. UPower numerates power
4 | # sources, maintains statistics and history data on them and
5 | # notifies about status changes
6 | upower.enable = true;
7 | };
8 | }
9 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/work/config:
--------------------------------------------------------------------------------
1 | output DVI-D-1
2 | off
3 | output DP-1
4 | off
5 | output DP-2
6 | off
7 | output HDMI-2
8 | crtc 0
9 | mode 2560x1440
10 | pos 0x0
11 | rate 59.95
12 | output HDMI-1
13 | crtc 1
14 | mode 2560x1440
15 | pos 2560x0
16 | rate 59.95
17 |
--------------------------------------------------------------------------------
/modules/dev/ruby/irbrc:
--------------------------------------------------------------------------------
1 |
2 | require 'irb/completion'
3 | require 'irb/ext/save-history'
4 |
5 | begin
6 | require 'rubygems'
7 | require 'pry'
8 |
9 | Pry.start || exit
10 | rescue LoadError => e
11 | puts "unable to load dependency: #{e.inspect}"
12 | end
13 |
--------------------------------------------------------------------------------
/modules/apps/db/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | imports = [
5 | ./postgresql
6 | ];
7 |
8 | environment.systemPackages = with pkgs; [
9 | redis
10 | mysql
11 | sqlite
12 | sqlitebrowser
13 | rocksdb
14 | mdbtools
15 | ];
16 | }
17 |
--------------------------------------------------------------------------------
/modules/apps/monitoring/ksysguard/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | home.file = {
4 | "monitoring" = {
5 | source = ./monitoring.sgrd;
6 | target = ".config/ksysguard/monitoring.sgrd";
7 | };
8 | };
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/dev/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | imports = [
3 | ./base.nix
4 | ./agda
5 | ./haskell
6 | ./ocaml
7 | ./formal.nix
8 | ./blockchain.nix
9 | ./rust
10 | ./cxx
11 | ./clojure
12 | ./ruby
13 | ./python
14 | ./js
15 | ];
16 | }
17 |
--------------------------------------------------------------------------------
/modules/x11/xserver/libinput.nix:
--------------------------------------------------------------------------------
1 | {
2 | services.xserver.libinput = {
3 | enable = true;
4 | tapping = false;
5 | clickMethod = "clickfinger";
6 | disableWhileTyping = true;
7 | scrollMethod = "twofinger";
8 | naturalScrolling = true;
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/mobile/setup:
--------------------------------------------------------------------------------
1 | eDP-1 00ffffffffffff0006af3d3100000000001a0104a51f1178028d15a156529d280a505400000001010101010101010101010101010101143780b87038244010103e0035ae100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe004231343048414e30332e31200a003b
2 |
--------------------------------------------------------------------------------
/hosts/autism/hardware/boot.nix:
--------------------------------------------------------------------------------
1 | {
2 | boot = {
3 | initrd = {
4 | availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
5 | kernelModules = [ ];
6 | };
7 |
8 | kernelModules = [ "kvm-amd" ];
9 | extraModulePackages = [ ];
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/hosts/notbad/hardware/default.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }:
2 |
3 | {
4 | imports = [
5 | "${inputs.nixos-hardware}/lenovo/thinkpad/x1/6th-gen"
6 | "${inputs.nixpkgs}/nixos/modules/installer/scan/not-detected.nix"
7 |
8 | ./boot.nix
9 | ./fs.nix
10 | ./power.nix
11 | ];
12 | }
13 |
--------------------------------------------------------------------------------
/modules/apps/shell/fish.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | programs.fish = {
4 | enable = true;
5 | };
6 |
7 | # Enable fish integration for broot.
8 | # See: https://github.com/Canop/broot
9 | programs.broot.enableFishIntegration = true;
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/modules/x11/files.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.file = {
6 | ".Xmodmap" = { source = ./Xmodmap; };
7 | "autorandr" = {
8 | source = ./autorandr;
9 | target = ".config/autorandr";
10 | };
11 | };
12 | };
13 | }
14 |
--------------------------------------------------------------------------------
/modules/apps/streaming/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | programs.obs-studio = {
6 | enable = true;
7 | package = pkgs.obs-studio;
8 |
9 | # Wayland-only plugins
10 | # plugins = [ pkgs.obs-wlrobs ];
11 | };
12 | };
13 | }
14 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/tv/config:
--------------------------------------------------------------------------------
1 | output DP-1
2 | off
3 | output DP-2
4 | off
5 | output HDMI-2
6 | off
7 | output HDMI-1
8 | gamma 1.0:0.769:0.556
9 | mode 1920x1080
10 | pos 0x0
11 | rate 60.00
12 | output eDP-1
13 | gamma 1.0:0.769:0.556
14 | mode 1920x1080
15 | pos 0x1080
16 | primary
17 | rate 60.05
18 |
--------------------------------------------------------------------------------
/modules/apps/messaging/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | skypeforlinux
7 | slack
8 | discord
9 | zoom-us
10 | tdesktop
11 | gitter
12 | gomuks
13 | # nheko
14 | ];
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/modules/dev/ocaml/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | programs.opam = {
6 | enable = true;
7 | };
8 |
9 | home.file = {
10 | ".utoprc" = { source = ./utoprc; };
11 | ".ocamlinit" = { source = ./ocamlinit; };
12 | };
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/modules/apps/tools/base.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | binutils
6 | coreutils
7 | pciutils
8 | usbutils
9 | elfutils
10 | patchelf
11 | util-linux
12 | bat
13 | # khal
14 | screenfetch
15 | tree
16 | dig
17 | ];
18 | }
19 |
--------------------------------------------------------------------------------
/modules/dev/js/npmrc:
--------------------------------------------------------------------------------
1 | registry=http://registry.npmjs.org/
2 | init-author-name=Vasiliy Yorkin
3 | init-author-email=vasiliy.yorkin@gmail.com
4 | init-author-url=https://github.com/vyorkin
5 | init-license=WTFPL
6 | username=vyorkin
7 | email=vasiliy.yorkin@gmail.com
8 | loglevel=warn
9 | prefix = ${HOME}/.npm-packages
10 |
--------------------------------------------------------------------------------
/modules/dev/ruby/erdconfig:
--------------------------------------------------------------------------------
1 | attributes:
2 | - content
3 | - foreign_key
4 | - inheritance
5 | disconnected: true
6 | filename: erd
7 | filetype: pdf
8 | indirect: true
9 | inheritance: false
10 | markup: true
11 | notation: bachman
12 | orientation: vertical
13 | polymorphism: false
14 | warn: false
15 | title: true
16 |
--------------------------------------------------------------------------------
/modules/hardware/firmware.nix:
--------------------------------------------------------------------------------
1 | {
2 | hardware = {
3 | # Enable all the firmware
4 | enableAllFirmware = true;
5 |
6 | # Enable all the firmware with a license allowing redistribution
7 | # (i.e. free firmware and firmware-linux-nonfree)
8 | enableRedistributableFirmware = true;
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/emacs.nix:
--------------------------------------------------------------------------------
1 | { config, ... }:
2 | let ec = "${config.home-manager.users.vyorkin.programs.emacs.finalPackage}/bin/emacsclient";
3 | in
4 | ''
5 | [[ $BLOCK_BUTTON -eq 2 ]] && ${ec} --eval "(org-clock-out)" > /dev/null
6 | ${ec} --eval "org-mode-line-string" | head -1 | cut -d\" -f 2
7 | ''
8 |
--------------------------------------------------------------------------------
/modules/apps/pentest/stego.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Universal steganographic tool
6 | # outguess
7 |
8 | # Steganography hiding tool
9 | # steghide
10 |
11 | # Steganography using ASCII files
12 | # stegsnow
13 | ];
14 | }
15 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/home/config:
--------------------------------------------------------------------------------
1 | output DVI-D-1
2 | off
3 | output DP-1
4 | off
5 | output DP-2
6 | crtc 0
7 | mode 3440x1440
8 | pos 1920x0
9 | rate 50.00
10 | output HDMI-2
11 | crtc 2
12 | mode 1920x1080
13 | pos 0x360
14 | rate 60.00
15 | output HDMI-1
16 | crtc 1
17 | mode 1680x1050
18 | pos 5360x390
19 | rate 59.95
20 |
--------------------------------------------------------------------------------
/modules/apps/fm/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | ranger
6 |
7 | # An alternative for w3mimgdisplay
8 | python39Packages.ueberzug
9 | ];
10 |
11 | home-manager.users.vyorkin = {
12 | programs.broot = {
13 | enable = false;
14 | };
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/modules/apps/tools/search.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | # Replacement for 'ls' written in Rust
6 | exa
7 |
8 | fd
9 | findutils
10 | rdfind
11 | ack
12 | ripgrep
13 | silver-searcher
14 | fzf
15 | skim
16 | fzy
17 | hstr
18 | ];
19 | }
20 |
--------------------------------------------------------------------------------
/modules/dev/rust/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | rustup
6 | cargo
7 | ];
8 |
9 | home-manager.users.vyorkin = {
10 | home.packages = with pkgs; [
11 | rust-analyzer
12 | ];
13 |
14 | home.file = { ".rustfmt.toml" = { source = ./rustfmt.toml; }; };
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/hosts/notbad/default.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | ./hardware
4 | ./nix.nix
5 | ./services.nix
6 |
7 | inputs.self.nixosProfiles.desktop-i3
8 | laptop-x11
9 |
10 | streaming
11 | ];
12 |
13 | location = {
14 | latitude = 55.7558;
15 | longitude = 37.6173;
16 | };
17 | }
18 |
--------------------------------------------------------------------------------
/hosts/autism/default.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | ./hardware
4 | ./nix.nix
5 | ./services.nix
6 |
7 | inputs.self.nixosProfiles.desktop-i3
8 |
9 | streaming
10 | pentest
11 | # gaming
12 | ];
13 |
14 | location = {
15 | latitude = 55.7558;
16 | longitude = 37.6173;
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/modules/apps/terminal/tmux.nix:
--------------------------------------------------------------------------------
1 | { pkgs, inputs, ... }:
2 |
3 | {
4 |
5 | environment.systemPackages = with pkgs; [
6 | tmux
7 | ];
8 |
9 | home-manager.users.vyorkin = {
10 | home.file = {
11 | ".tmux/plugins/tpm" = { source = inputs.tpm; };
12 | ".config/tmux/tmux.conf" = { source = "${inputs.tmux-config}/tmux.conf"; };
13 | };
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/styles/colors.rasi:
--------------------------------------------------------------------------------
1 | /* colors */
2 |
3 | * {
4 | al: #00000000;
5 | bg: #101010ff;
6 | se: #151515ff;
7 | fg: #f5f5f5ff;
8 | ac: #42A5F5ff;
9 | red: #EC7875ff;
10 | green: #61C766ff;
11 | yellow: #FDD835ff;
12 | blue: #42A5F5ff;
13 | purple: #BA68C8ff;
14 | cyan: #4DD0E1ff;
15 | }
16 |
--------------------------------------------------------------------------------
/modules/apps/monitoring/htop.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | programs.htop = {
4 | enable = true;
5 | settings = {
6 | vimMode = true;
7 | delay = 5;
8 | showCpuFrequency = true;
9 | showCpuUsage = true;
10 | treeView = true;
11 | hideUserlandThreads = true;
12 | };
13 | };
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/profiles/base.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | inputs.home-manager.nixosModules.home-manager
4 |
5 | hardware
6 | boot
7 | system
8 | network
9 | nix
10 | overlay
11 | nixpkgs
12 | services
13 | security
14 | locale
15 | home
16 | users
17 |
18 | git
19 | zsh
20 | ];
21 | }
22 |
--------------------------------------------------------------------------------
/modules/apps/pentest/crypto.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Tool for correcting bit errors in an AES key schedule
6 | # aesfix
7 |
8 | # Tool for locating AES keys in a captured memory image
9 | # aeskeyfind
10 |
11 | # Secure encryption and decryption of files and streams
12 | ccrypt
13 | ];
14 | }
15 |
--------------------------------------------------------------------------------
/modules/dev/cxx/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.packages = with pkgs; [
6 | clang
7 | clang-tools
8 | autoconf
9 | automake
10 | m4
11 | gnumake
12 | gdb
13 | cmake
14 | ccls
15 | bear
16 | meson
17 | ninja
18 | # ccache
19 | cpplint
20 | ];
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/modules/nixpkgs.nix:
--------------------------------------------------------------------------------
1 | {
2 | nixpkgs.config = {
3 | allowUnfree = true;
4 | allowBroken = true;
5 |
6 | android_sdk.accept_license = true;
7 |
8 | permittedInsecurePackages = [
9 | "openssl-1.0.2u"
10 | "p7zip-16.02"
11 | "python2.7-Pillow-6.2.2"
12 | "python-2.7.18.6-env"
13 | "python-2.7.18.6"
14 | "electron-13.6.9"
15 | ];
16 | };
17 | }
18 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/free.hs:
--------------------------------------------------------------------------------
1 | import System.Exit
2 |
3 | main :: IO ()
4 | main = do
5 | freeMemory <- read
6 | <$> (!!1) <$> words
7 | <$> (!!2) <$> lines
8 | <$> readFile "/proc/meminfo"
9 | putStrLn $ (take 5 $ show $ freeMemory / 1000000) ++ "GB"
10 | exitWith $ if freeMemory > 500000 then ExitSuccess else ExitFailure 33
11 |
12 |
--------------------------------------------------------------------------------
/modules/apps/devops/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | ansible
6 |
7 | drone
8 | drone-cli
9 |
10 | terraform
11 | tflint
12 | terraform-docs
13 | terraform-lsp
14 | terraform-providers.aws
15 | terraform-providers.docker
16 | terraform-providers.google
17 | terraform-providers.kubernetes
18 | ];
19 | }
20 |
--------------------------------------------------------------------------------
/modules/apps/tools/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | imports = [
5 | ./base.nix
6 | ./nix.nix
7 | ./search.nix
8 | ./screencasting.nix
9 | ./compression.nix
10 | ./http.nix
11 | ./json.nix
12 | ./url.nix
13 | ./disk.nix
14 | ./network.nix
15 | ./aws.nix
16 | ./media.nix
17 | ./blogging.nix
18 | ./finance.nix
19 | ./raspberry.nix
20 | ];
21 | }
22 |
--------------------------------------------------------------------------------
/hosts/autism/hardware/default.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }:
2 |
3 | {
4 | imports = [
5 | "${inputs.nixpkgs}/nixos/modules/installer/scan/not-detected.nix"
6 | "${inputs.nixos-hardware}/common/cpu/amd"
7 | "${inputs.nixos-hardware}/common/pc"
8 | # Enable fstrim
9 | "${inputs.nixos-hardware}/common/pc/ssd"
10 |
11 | ./boot.nix
12 | ./fs.nix
13 | ./power.nix
14 | ./video.nix
15 | ];
16 | }
17 |
--------------------------------------------------------------------------------
/modules/apps/pentest/forensics.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | capstone
6 | ddrescue
7 | ext4magic
8 | extundelete
9 | ghidra-bin
10 | p0f
11 | pdf-parser
12 |
13 | # Tool library for analyzing binary blobs and executable code
14 | python39Packages.binwalk
15 |
16 | python39Packages.distorm3
17 | sleuthkit
18 | volatility
19 | ];
20 | }
21 |
--------------------------------------------------------------------------------
/modules/apps/pentest/fuzzing.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Instrumentation-driven fuzzer for binary formats
6 | aflplusplus
7 |
8 | # x86 processor fuzzer
9 | # sandsifter
10 |
11 | # Black Box testing utilities
12 | # sfuzz
13 |
14 | # Network protocol fuzzer
15 | # spike
16 |
17 | # Web application bruteforcer
18 | wfuzz
19 | ];
20 | }
21 |
--------------------------------------------------------------------------------
/modules/workspace/ssh.nix:
--------------------------------------------------------------------------------
1 | {
2 | services.openssh = {
3 | enable = true;
4 | settings = {
5 | passwordAuthentication = false;
6 | permitRootLogin = "no";
7 | # forwardX11 = true;
8 | };
9 | ports = [ 22 ];
10 | };
11 |
12 | home-manager.users.vyorkin.programs.ssh = {
13 | enable = true;
14 | matchBlocks = {
15 | "*" = {
16 | compression = false;
17 | };
18 | };
19 | };
20 | }
21 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/blocks/bluetooth:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | if rfkill | grep bluetooth > /dev/null; then
4 | if rfkill | grep bluetooth | grep blocked > /dev/null; then
5 | if bluetoothctl info > /dev/null; then
6 | if pactl list sinks | grep bluez > /dev/null; then
7 | echo -n ""
8 | else
9 | echo -n ""
10 | fi
11 | else
12 | echo -n ""
13 | fi
14 | else
15 | echo -n ""
16 | fi
17 | fi
18 |
--------------------------------------------------------------------------------
/modules/apps/pentest/hardware.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Graphical serial terminal, like minicom
6 | cutecom
7 |
8 | # Identify, read, write, erase, and verify BIOS/ROM/flash chips
9 | flashrom
10 |
11 | # Friendly menu driven serial communication program
12 | minicom
13 |
14 | # Open on-chip JTAG debug solution for ARM and MIPS systems
15 | openocd
16 | ];
17 | }
18 |
--------------------------------------------------------------------------------
/modules/x11/Xmodmap:
--------------------------------------------------------------------------------
1 | clear lock
2 | clear control
3 | clear mod1
4 | clear mod2
5 | clear mod3
6 | clear mod4
7 | clear mod5
8 | keycode 37 = Hyper_L
9 | keycode 115 = Hyper_L
10 | keycode 66 = Control_L
11 | add control = Control_L Control_R
12 | add mod1 = Alt_L Alt_R Meta_L
13 | add mod2 = Num_Lock
14 | add mod3 = Hyper_L
15 | add mod4 = Super_L Super_R
16 | add mod5 = Mode_switch ISO_Level3_Shift
17 |
--------------------------------------------------------------------------------
/modules/dev/js/packages/packages.json:
--------------------------------------------------------------------------------
1 | [
2 | "purescript-emmet",
3 | "colorguard",
4 | "vtop",
5 | "git-issues",
6 | "madge",
7 | "import-js",
8 | "web3",
9 | "how-to-npm",
10 | "psi",
11 | "now",
12 | "json-package",
13 | "firebase-tools",
14 | "doiuse",
15 | "localtunnel",
16 | "manpm",
17 | "available-versions",
18 | "git-recall",
19 | "jsinspect",
20 | "tmi",
21 | "commitizen",
22 | "rollup",
23 | "pnpm",
24 | "iron-node",
25 | "@microsoft/rush"
26 | ]
27 |
--------------------------------------------------------------------------------
/profiles/desktop.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }: {
2 | imports = with inputs.self.nixosModules; [
3 | ./base.nix
4 |
5 | themes
6 | workspace
7 | ssh
8 | cursor
9 | gtk
10 | # qt
11 | gnome
12 |
13 | # lightdm
14 | sddm
15 |
16 | virtualisation
17 |
18 | apps
19 | tools
20 | fm
21 | terminal
22 | editor
23 | reading
24 | messaging
25 | web
26 | torrent
27 | db
28 | devops
29 | monitoring
30 | media
31 | dev
32 | ];
33 | }
34 |
--------------------------------------------------------------------------------
/modules/apps/editor/emacs.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | programs.emacs = {
6 | enable = true;
7 | package = pkgs.emacsPgtk;
8 | };
9 |
10 | services.emacs = {
11 | enable = true;
12 | package = pkgs.emacsPgtk;
13 | };
14 |
15 | home.packages = with pkgs; [
16 | ispell
17 | ];
18 |
19 | systemd.user.services.emacs.Service.Environment =
20 | "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/vyorkin/bin";
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/blocks/brightness:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | case $BLOCK_BUTTON in
4 | 4) sudo light -A 5;;
5 | 5) sudo light -U 5;;
6 | esac
7 | LIGHT=`light | cut -f 1 -d '.'`
8 |
9 | if [[ -n "$LIGHT" ]]; then
10 | if [[ $LIGHT -lt 33 ]]
11 | then
12 | icon=
13 | else
14 | if [[ $LIGHT -lt 66 ]]
15 | then
16 | icon=
17 | else
18 | icon=
19 | fi
20 | fi
21 | [[ -n $BLOCK_BUTTON ]] && text=" $LIGHT"
22 | echo "$icon$text"
23 | fi
24 |
--------------------------------------------------------------------------------
/modules/apps/pentest/rfid.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # MIFARE card manipulations binaries
6 | libfreefare
7 |
8 | # Near Field Communication (NFC) binarie
9 | libnfc
10 |
11 | # MiFare Classic Universal toolKit
12 | mfcuk
13 |
14 | # MIFARE Classic offline cracker
15 | mfoc
16 |
17 | # Terminal for working with Mifare Classic 1-4k Tags
18 | # mfterm
19 |
20 | # Tool to decode RFID tag data
21 | # rfdump
22 | ];
23 | }
24 |
--------------------------------------------------------------------------------
/modules/dev/python/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | with pkgs;
4 | let
5 | # p2-packages = python-packages: with python-packages; [ pyserial ];
6 | p3-packages = python-packages:
7 | with python-packages; [
8 | keyring
9 | virtualenv
10 | virtualenvwrapper
11 | pyserial
12 | sphinx
13 | ];
14 | in {
15 |
16 | home-manager.users.vyorkin = {
17 | home.packages = with pkgs; [
18 | # (python.withPackages p2-packages)
19 | (python3.withPackages p3-packages)
20 | ];
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/modules/apps/pentest/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | # See: https://github.com/NixOS/nixpkgs/issues/81418
3 |
4 | imports = [
5 | ./backdoor.nix
6 | ./bluetooth.nix
7 | ./crypto.nix
8 | ./database.nix
9 | ./explotation.nix
10 | # ./forensics.nix
11 | ./fuzzing.nix
12 | ./hardware.nix
13 | ./passwords.nix
14 | ./recon.nix
15 | ./reversing.nix
16 | ./rfid.nix
17 | ./sdr.nix
18 | ./sniffing.nix
19 | ./stego.nix
20 | ./vulnerability.nix
21 | ./web.nix
22 | ./wireless.nix
23 | ];
24 | }
25 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/env.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, config, ... }:
2 | let
3 | apps = config.defaultApps;
4 | in {
5 | inherit apps;
6 |
7 | browser1 = apps.browser.cmd;
8 | browser2 = "${pkgs.google-chrome}/bin/google-chrome-stable";
9 | browser3 = "${pkgs.tor-browser}/bin/tor-browser";
10 | browser4 = "${pkgs.qutebrowser}/bin/qutebrowser";
11 | term1 = apps.term.cmd;
12 | term2 = "${pkgs.kitty}/bin/kitty";
13 |
14 | mod = "Mod4";
15 | hyper = "Mod3";
16 | alt = "Mod1";
17 |
18 | step1 = "1";
19 | step2 = "10";
20 | }
21 |
--------------------------------------------------------------------------------
/modules/hardware/bluetooth.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | # Enable support for Bluetooth devices
5 | # Docs: https://nixos.wiki/wiki/Bluetooth
6 | hardware.bluetooth = {
7 | enable = true;
8 |
9 | # Enable all bluez plugins
10 | package = pkgs.bluezFull;
11 |
12 | # Modern headsets will generally try to connect using the A2DP profile.
13 | # To enable this we need to add the following lines:
14 | settings = { General = { Enable = "Source,Sink,Media,Socket"; }; };
15 | };
16 |
17 | services.blueman.enable = true;
18 | }
19 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/brightness.nix:
--------------------------------------------------------------------------------
1 | { iconfont, light, config, ... }: ''
2 | case $BLOCK_BUTTON in
3 | 4) sudo ${light}/bin/light -A 5;;
4 | 5) sudo ${light}/bin/light -U 5;;
5 | esac
6 | LIGHT=`${light}/bin/light | cut -f 1 -d '.'`
7 | if [[ $LIGHT -lt 33 ]]
8 | then
9 | icon=
10 | else
11 | if [[ $LIGHT -lt 66 ]]
12 | then
13 | icon=
14 | else
15 | icon=
16 | fi
17 | fi
18 | [[ -n $BLOCK_BUTTON ]] && text=" $LIGHT"
19 | echo "$icon$text"
20 | ''
21 |
--------------------------------------------------------------------------------
/modules/apps/scm/git.nix:
--------------------------------------------------------------------------------
1 | { inputs, pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | programs.git = {
6 | enable = true;
7 |
8 | # Enable delta syntax highlighter
9 | delta.enable = true;
10 | };
11 |
12 | home.packages = with pkgs; [ delta ];
13 |
14 | home.file = {
15 | ".gitconfig" = { source = "${inputs.git-config}/gitconfig"; };
16 | ".gitignore" = { source = "${inputs.git-config}/gitignore"; };
17 | ".gitmessage" = { source = "${inputs.git-config}/gitmessage"; };
18 | };
19 | };
20 | }
21 |
--------------------------------------------------------------------------------
/modules/workspace/laptop-x11/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, config, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | # Allows to bind commands to certain keys or key
6 | # combinations on the keyboard
7 | xbindkeys
8 |
9 | # GUI for xbindkeys
10 | xbindkeys-config
11 |
12 | xorg.xbacklight
13 | ];
14 |
15 | # Install Light backlight control command
16 | programs.light.enable = true;
17 |
18 | home-manager.users.vyorkin = {
19 | home.file = {
20 | ".xbindkeysrc" = { source = ./xbindkeysrc; };
21 | };
22 | };
23 | }
24 |
--------------------------------------------------------------------------------
/modules/dev/js/packages/default.nix:
--------------------------------------------------------------------------------
1 | # This file has been generated by node2nix 1.9.0. Do not edit!
2 |
3 | { inputs, pkgs ? import {
4 | inherit system;
5 | }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs_latest"}:
6 |
7 | let
8 | nodeEnv = import ./node-env.nix {
9 | inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
10 | inherit pkgs nodejs;
11 | libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
12 | };
13 | in
14 | import ./node-packages.nix {
15 | inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
16 | inherit nodeEnv;
17 | }
18 |
--------------------------------------------------------------------------------
/modules/workspace/cursor.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, ... }: {
2 |
3 | environment.sessionVariables = {
4 | XCURSOR_PATH = lib.mkForce "/home/vyorkin/.icons";
5 | XCURSOR_SIZE = lib.mkForce "16";
6 | };
7 |
8 | home-manager.users.vyorkin = {
9 | home.pointerCursor = {
10 | package = pkgs.breeze-qt5;
11 | name = "Breeze";
12 | size = 16;
13 | };
14 |
15 | # home.file = {
16 | # ".icons/default" = { source = "${pkgs.breeze-qt5}/share/icons/breeze_cursors"; };
17 | # ".icons/Breeze" = { source = "${pkgs.breeze-qt5}/share/icons/breeze_cursors"; };
18 | # };
19 | };
20 | }
21 |
--------------------------------------------------------------------------------
/modules/apps/pentest/explotation.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Browser Exploitation Framework (BeEF)
6 | # beef-xss
7 |
8 | # Searchable Exploit Database archive
9 | # exploitdb
10 |
11 | # Framework for exploit development and vulnerability research (broken)
12 | # metasploit
13 |
14 | # MSFvenom Payload Creator (MSFPC)
15 | # msfpc
16 |
17 | # Social-Engineer Toolkit
18 | # set
19 |
20 | # Shellcode writing toolkit
21 | # shellnoob
22 |
23 | # Smart meter testing framework
24 | # termineter
25 | ];
26 | }
27 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/bluetooth.nix:
--------------------------------------------------------------------------------
1 | { iconfont, bash, bluez, pulseaudio, utillinux, python3, ... }:
2 | ''
3 | #!${bash}/bin/bash
4 | if ${utillinux}/bin/rfkill | grep bluetooth > /dev/null; then
5 | if ${utillinux}/bin/rfkill | grep bluetooth | grep blocked > /dev/null; then
6 | if ${bluez}/bin/bluetoothctl info > /dev/null; then
7 | if ${pulseaudio}/bin/pactl list sinks | grep bluez > /dev/null; then
8 | echo -n ""
9 | else
10 | echo -n ""
11 | fi
12 | else
13 | echo -n ""
14 | fi
15 | else
16 | echo -n ""
17 | fi
18 | fi
19 | ''
20 |
--------------------------------------------------------------------------------
/hosts/autism/hardware/fs.nix:
--------------------------------------------------------------------------------
1 | # Mount points are created automatically if they don’t already exist.
2 | # For device, it’s best to use the topology-independent device aliases in
3 | # /dev/disk/by-label and /dev/disk/by-uuid, as these don’t change if the
4 | # topology changes (e.g. if a disk is moved to another IDE controller).
5 |
6 | {
7 | fileSystems."/" =
8 | { device = "/dev/disk/by-label/nixos";
9 | fsType = "ext4";
10 | };
11 |
12 | fileSystems."/boot" =
13 | { device = "/dev/disk/by-label/boot";
14 | fsType = "vfat";
15 | };
16 |
17 | swapDevices =
18 | [ { device = "/dev/disk/by-label/swap"; }
19 | ];
20 | }
21 |
--------------------------------------------------------------------------------
/hosts/notbad/hardware/fs.nix:
--------------------------------------------------------------------------------
1 | # Mount points are created automatically if they don’t already exist.
2 | # For device, it’s best to use the topology-independent device aliases in
3 | # /dev/disk/by-label and /dev/disk/by-uuid, as these don’t change if the
4 | # topology changes (e.g. if a disk is moved to another IDE controller).
5 |
6 | {
7 | fileSystems."/" =
8 | { device = "/dev/disk/by-label/nixos";
9 | fsType = "ext4";
10 | };
11 |
12 | fileSystems."/boot" = {
13 | device = "/dev/disk/by-label/boot";
14 | fsType = "vfat";
15 | };
16 |
17 | swapDevices =
18 | [ { device = "/dev/disk/by-label/swap"; }
19 | ];
20 | }
21 |
--------------------------------------------------------------------------------
/modules/hardware/opengl.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | hardware.opengl = {
5 | # Enable OpenGL support in X11 systems, as well as for
6 | # Wayland compositors like sway and Weston
7 | enable = true;
8 |
9 | # Enable accelerated OpenGL rendering through the Direct
10 | # Rendering Interface (DRI)
11 | driSupport = true;
12 |
13 | # Support Direct Rendering for 32-bit applications (such
14 | # as Wine). This is currently only supported for the
15 | # nvidia and ati_unfree drivers, as well as Mesa
16 | driSupport32Bit = true;
17 |
18 | # Use Mesa OpenGL drivers
19 | package = pkgs.mesa_drivers;
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/modules/security.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | security = {
5 | # Whether users of the wheel group must provide a
6 | # password to run commands as super user via sudo
7 | sudo = {
8 | wheelNeedsPassword = false;
9 | };
10 |
11 | # Enable the AppArmor Mandatory Access Control system
12 | apparmor.enable = true;
13 | };
14 |
15 | programs = {
16 | # Enable the Firejail namespaces and seccomp-bpf sandbox.
17 | # See: https://github.com/netblue30/firejail
18 | firejail.enable = true;
19 | };
20 |
21 | home-manager.users.vyorkin.home.packages = with pkgs; [
22 | _1password
23 | _1password-gui
24 | ];
25 | }
26 |
--------------------------------------------------------------------------------
/modules/workspace/sway/mako.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | wayland.windowManager.sway.config.startup = [{ command = "mako"; }];
6 | programs.mako = {
7 | enable = true;
8 | layer = "overlay";
9 | font = "IBM Plex 13";
10 | width = 500;
11 | height = 80;
12 | defaultTimeout = 10000;
13 | maxVisible = 10;
14 | backgroundColor = "#000000AA";
15 | textColor = "#FFFFFF";
16 | borderColor = "#444444AA";
17 | progressColor = "over #11AA11";
18 | iconPath = "${pkgs.papirus-icon-theme}/share/icons/Papirus-Dark";
19 | maxIconSize = 24;
20 | };
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/modules/apps/pentest/sniffing.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # The Swiss Army knife for 802.11, BLE and Ethernet networks
6 | # reconnaissance and MITM attacks
7 | bettercap
8 |
9 | # Collection of tools for network auditing and penetration testing.
10 | dsniff
11 |
12 | # An interactive TLS-capable intercepting HTTP proxy for
13 | # penetration testers and software developers
14 | mitmproxy
15 |
16 | # TCP connection hijacker
17 | rshijack
18 |
19 | # Protocol testing tool
20 | sipp
21 |
22 | # Secure multithreaded packet sniffer
23 | sniffglue
24 | ];
25 | }
26 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/blocks/sound:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | case $BLOCK_BUTTON in
4 | 2) pamixer -t;;
5 | 4) pamixer -i 5;;
6 | 5) pamixer -d 5;;
7 | esac
8 | code=0
9 | if [[ `pamixer --get-mute` = "true" ]]
10 | then
11 | volume=""
12 | end=""
13 | icon="婢"
14 | else
15 | volume=`pamixer --get-volume`
16 | end="%"
17 | if [[ $volume -lt 33 ]]
18 | then
19 | icon="奄"
20 | else
21 | if [[ $volume -lt 66 ]]
22 | then
23 | icon="奔"
24 | else
25 | icon="墳"
26 | code=33
27 | fi
28 | fi
29 | fi
30 | [[ -n $BLOCK_BUTTON ]] && text=" $volume$end"
31 | echo "$icon$text"
32 | exit $code
33 |
--------------------------------------------------------------------------------
/modules/dev/ruby/aprc:
--------------------------------------------------------------------------------
1 | AwesomePrint.defaults = {
2 | :indent => 2,
3 | :sort_keys => true,
4 | :color => {
5 | :args => :greenish,
6 | :array => :pale,
7 | :bigdecimal => :blue,
8 | :class => :yellow,
9 | :date => :greenish,
10 | :falseclass => :red,
11 | :fixnum => :blue,
12 | :float => :blue,
13 | :hash => :pale,
14 | :keyword => :cyan,
15 | :method => :purpleish,
16 | :nilclass => :red,
17 | :string => :yellowish,
18 | :struct => :pale,
19 | :symbol => :cyanish,
20 | :time => :greenish,
21 | :trueclass => :green,
22 | :variable => :cyanish
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/modules/network.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, config, ... }:
2 |
3 | {
4 | networking = {
5 | # The global useDHCP flag is deprecated, therefore
6 | # explicitly set to false here. Per-interface useDHCP will
7 | # be mandatory in the future
8 | useDHCP = false;
9 |
10 | interfaces = {
11 | enp4s0.useDHCP = true;
12 | };
13 |
14 | firewall = {
15 | enable = true;
16 | allowedTCPPorts = [ 13748 13722 5000 22 80 8080 3000 3001 3002 3003 443 51820 ];
17 |
18 | # Samba discovery of machines and shares may need the firewall to be tuned
19 | extraCommands = ''iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns'';
20 | };
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/modules/apps/reading/zathura/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | home-manager.users.vyorkin = {
3 | programs.zathura = {
4 | enable = true;
5 |
6 | options = {
7 | selection-clipboard = "clipboard";
8 | statusbar-h-padding = 0;
9 | statusbar-v-padding = 0;
10 | smooth-scroll = true;
11 | statusbar-home-tilde = true;
12 | page-padding = 1;
13 | };
14 |
15 | extraConfig = ''
16 | map u scroll half-up
17 | map d scroll half-down
18 | map D toggle_page_mode
19 | map r reload
20 | map R rotate
21 | map K zoom in
22 | map J zoom out
23 | map i recolor
24 | map p print
25 | '';
26 | };
27 | };
28 | }
29 |
--------------------------------------------------------------------------------
/modules/home.nix:
--------------------------------------------------------------------------------
1 | { config, ... }:
2 |
3 | {
4 | environment.sessionVariables =
5 | config.home-manager.users.vyorkin.home.sessionVariables // {
6 | NIX_AUTO_RUN = "1";
7 | };
8 |
9 | home-manager = {
10 | useGlobalPkgs = true;
11 | useUserPackages = true;
12 |
13 | users.vyorkin = {
14 | news.display = "silent";
15 |
16 | # Start new or changed services automatically.
17 | # Stop obsolte services from the previous generation
18 | systemd.user = {
19 | startServices = true;
20 | };
21 |
22 | programs.direnv = {
23 | enable = true;
24 | nix-direnv.enable = true;
25 | };
26 |
27 | home.stateVersion = "22.05";
28 | };
29 | };
30 | }
31 |
--------------------------------------------------------------------------------
/modules/users/vyorkin.nix:
--------------------------------------------------------------------------------
1 | { authorizedKeys, ... }:
2 |
3 | {
4 | isNormalUser = true;
5 | uid = 1000;
6 | description = "Vasiliy Yorkin";
7 | home = "/home/vyorkin";
8 | extraGroups = [
9 | "wheel"
10 | "video"
11 | "audio"
12 | "jackaudio"
13 | "networkmanager"
14 | "input"
15 | "scanner"
16 | "lp"
17 |
18 | # access to the serial and USB ports
19 | "dialout"
20 |
21 | # grant access to Android Debug Bridge (ADB)
22 | "adbusers"
23 |
24 | "vboxusers"
25 | "wireshark"
26 | "docker"
27 | "render"
28 | ];
29 |
30 | createHome = true;
31 | initialPassword = "whatever";
32 | useDefaultShell = true;
33 | openssh.authorizedKeys.keys = authorizedKeys;
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/modules/virtualisation.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | virtualisation = {
5 | docker = {
6 | # Enable docker daemon
7 | enable = true;
8 |
9 | # Periodically prune docker resources
10 | autoPrune = {
11 | enable = true;
12 | dates = "weekly";
13 | };
14 | };
15 |
16 | # Enable a daemon that manages virtual machines.
17 | # Docs: https://wiki.archlinux.org/index.php/libvirt
18 | libvirtd.enable = true;
19 |
20 | # Allow unprivileged user to pass USB devices connected to
21 | # this machine to libvirt VMs, both local and remote
22 | # spiceUSBRedirection.enable = true;
23 | };
24 |
25 | home-manager.users.vyorkin.home.packages = with pkgs; [ docker-compose ];
26 | }
27 |
--------------------------------------------------------------------------------
/modules/dev/haskell/stack/config.yaml:
--------------------------------------------------------------------------------
1 | # This file contains default non-project-specific settings for 'stack', used
2 | # in all projects. For more information about stack's configuration, see
3 | # http://docs.haskellstack.org/en/stable/yaml_configuration/
4 |
5 | # The following parameters are used by "stack new" to automatically fill fields
6 | # in the cabal config. We recommend uncommenting them and filling them out if
7 | # you intend to use 'stack new'.
8 | # See https://docs.haskellstack.org/en/stable/yaml_configuration/#templates
9 | templates:
10 | params:
11 | author-name: Vasiliy Yorkin
12 | author-email: vasiliy.yorkin@gmail.com
13 | copyright: Vasiliy Yorkin aka vyorkin
14 | github-username: vyorkin
15 |
16 | nix:
17 | enable: true
18 |
--------------------------------------------------------------------------------
/modules/dev/ocaml/utoprc:
--------------------------------------------------------------------------------
1 | ! -*- conf-xdefaults -*-
2 |
3 | ! Copy this file to ~/.utoprc
4 |
5 | ! Common resources
6 |
7 | profile: dark
8 | identifier.foreground: none
9 | module.foreground: x-palegreen
10 | comment.foreground: x-chocolate1
11 | doc.foreground: x-light-salmon
12 | constant.foreground: x-aquamarine
13 | keyword.foreground: x-cyan1
14 | symbol.foreground: x-cyan1
15 | string.foreground: x-light-salmon
16 | char.foreground: x-light-salmon
17 | quotation.foreground: x-purple
18 | error.foreground: red
19 | directive.foreground: x-lightsteelblue
20 | parenthesis.background: blue
21 |
22 | ! uncomment the next line to disable autoload files
23 | ! autoload: false
24 |
--------------------------------------------------------------------------------
/modules/dev/ruby/default.nix:
--------------------------------------------------------------------------------
1 | { inputs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | home.file = {
6 | ".aprc" = { source = ./aprc; };
7 | ".erdconfig" = { source = ./erdconfig; };
8 | ".gemrc" = { source = ./gemrc; };
9 | ".guardrc" = { source = ./guardrc; };
10 | ".irbrc" = { source = ./irbrc; };
11 | ".pryrc" = { source = ./pryrc; };
12 | ".rdebugrc" = { source = ./rdebugrc; };
13 | ".rspec" = { source = ./rspec; };
14 |
15 | ".dotpryrc" = { source = "${inputs.dotpryrc}/dotpryrc"; };
16 |
17 | ".gas" = {
18 | source = ./gas;
19 | recursive = true;
20 | };
21 |
22 | ".bundle" = {
23 | source = ./bundle;
24 | recursive = true;
25 | };
26 | };
27 | };
28 | }
29 |
--------------------------------------------------------------------------------
/modules/apps/tools/nix.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | let
4 | psc-package2nix = import (pkgs.fetchFromGitHub {
5 | owner = "justinwoo";
6 | repo = "psc-package2nix";
7 | rev = "f271b3ad7a8e2931a50b03dafd906262679d527f";
8 | sha256 = "1D4Nxny/XPBuM8bopxSRbMhLdG0JwFzjwVKEVEoCHzc=";
9 | }) { inherit pkgs; };
10 | in {
11 | environment.systemPackages = with pkgs; [
12 | cachix
13 |
14 | nix-prefetch-scripts
15 | nix-prefetch-github
16 | nixfmt
17 | nix-du
18 | nix-index
19 | nix-serve
20 | nix-review
21 | nix-top
22 | any-nix-shell
23 | niv
24 | appimage-run
25 |
26 | # Generators
27 |
28 | nodePackages.node2nix
29 | nodePackages.bower2nix
30 | cabal2nix
31 | psc-package2nix
32 | # stack2nix
33 | ];
34 | }
35 |
--------------------------------------------------------------------------------
/modules/locale.nix:
--------------------------------------------------------------------------------
1 | { lib, ... }:
2 |
3 | {
4 | # Set the time zone
5 | time.timeZone = "Europe/Moscow";
6 |
7 | console = {
8 | # Set terminal font
9 | font = "cyr-sun16";
10 | # Use Ctrl+Shift to switch between layouts
11 | keyMap = "ruwin_ct_sh-UTF-8";
12 | };
13 |
14 | environment.sessionVariables = {
15 | XKB_DEFAULT_LAYOUT = "us,ru";
16 | XKB_DEFAULT_OPTIONS = "grp:alt_shift_toggle,caps:ctrl_modifier,grp_led:caps";
17 | LANG = lib.mkForce "en_US.UTF-8";
18 | };
19 |
20 | home-manager.users.vyorkin = {
21 | home.language = let
22 | en = "en_US.UTF-8";
23 | ru = "ru_RU.UTF-8";
24 | in {
25 | address = ru;
26 | monetary = ru;
27 | paper = ru;
28 | time = en;
29 | base = en;
30 | };
31 | };
32 | }
33 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/i3blocks.conf:
--------------------------------------------------------------------------------
1 | command=$CONTRIB_BLOCKS_DIR/$BLOCK_NAME/$BLOCK_NAME
2 | separator_block_width=20
3 | markup=pango
4 | interval=60
5 |
6 | [wifi]
7 | INTERFACE=wlp2s0
8 | label=WIFI:
9 | interval=10
10 |
11 | [battery]
12 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME
13 | interval=30
14 |
15 | [bluetooth]
16 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME
17 | interval=10
18 |
19 | [brightness]
20 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME
21 | interval=1
22 |
23 | [sound]
24 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME
25 | interval=5
26 |
27 | [time]
28 | command=date '+%Y-%m-%d %H:%M:%S'
29 | interval=5
30 |
31 | [memory]
32 | label=MEM:
33 | interval=30
34 |
35 | [memory]
36 | label=SWAP:
37 | instance=swap
38 | interval=30
39 |
40 | [disk]
41 | label=DISK:
42 | interval=30
43 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/tv/setup:
--------------------------------------------------------------------------------
1 | HDMI-1 00ffffffffffff00410c00000101010103140103808048780ae692a3544a99260f4a4c2108008bc08180a94001010101010101010101023a801871382d40582c450000d05200001e023a80d072382d40102c458000d05200001e000000fc005068696c697073204654560a20000000fd00303e0f4611000a20202020202001c9020331f152101f2022210514041312031102160715060126091f07150750830100006a030c005000382d806565e3050301011d803e73382d407e2c458000d05200001e011d80d0721c1620102c258000d05200009e011d00bc52d01e20b828554000d05200001e011d8018711c1620582c250000d05200009e00000000000074
2 | eDP-1 00ffffffffffff0006af3d3100000000001a0104a51f1178028d15a156529d280a505400000001010101010101010101010101010101143780b87038244010103e0035ae100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe004231343048414e30332e31200a003b
3 |
--------------------------------------------------------------------------------
/modules/apps/pentest/database.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Java tool for automatic database injection
6 | # jsql-injection
7 |
8 | # Oracle assessment framework
9 | # oscanner
10 |
11 | # A tool to talk to the Oracle TNS listener on port 1521/tcp
12 | # on a simple level, such as sending ping commands or
13 | # requesting version
14 | # tnscmd10g
15 |
16 | # Guesses sids against an Oracle database
17 | # sidguesser
18 |
19 | # Dictionary attack tool for SQL Server
20 | # sqldict
21 |
22 | # Automatic SQL injection tool
23 | sqlmap
24 |
25 | # SQL server injection and takeover tool
26 | # sqlninja
27 |
28 | # MySQL injection tool
29 | # sqlsus
30 | ];
31 | }
32 |
--------------------------------------------------------------------------------
/modules/apps/editor/vim.nix:
--------------------------------------------------------------------------------
1 | { inputs, pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin = {
5 | programs.neovim = {
6 | enable = true;
7 | vimAlias = true;
8 | viAlias = true;
9 | vimdiffAlias = true;
10 | withNodeJs = true;
11 | };
12 |
13 | home.packages = with pkgs; [
14 | python39Packages.pynvim
15 | ];
16 |
17 | xdg.configFile = {
18 | "nvim/init.vim".source = "${inputs.vim-config}/init.vim";
19 | "nvim/ginit.vim".source = "${inputs.vim-config}/ginit.vim";
20 | "nvim/init".source = "${inputs.vim-config}/init";
21 | "nvim/after".source = "${inputs.vim-config}/after";
22 | "nvim/autoload".source = "${inputs.vim-config}/autoload";
23 | "nvim/plugin".source = "${inputs.vim-config}/plugin";
24 | };
25 | };
26 | }
27 |
--------------------------------------------------------------------------------
/modules/system.nix:
--------------------------------------------------------------------------------
1 | {
2 | system = {
3 | # Periodically upgrade NixOS to the latest version.
4 | # systemd timer will run nixos-rebuild switch --upgrade once a day
5 | autoUpgrade = {
6 | enable = true;
7 | allowReboot = false;
8 | dates = "8:00";
9 | };
10 |
11 | # This value determines the NixOS release from which the default
12 | # settings for stateful data, like file locations and database versions
13 | # on your system were taken. It‘s perfectly fine and recommended to leave
14 | # this value at the release version of the first install of this system.
15 | # Before changing this value read the documentation for this option
16 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
17 | stateVersion = "22.05";
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/modules/workspace/i3/packages/bumblebee-status.nix:
--------------------------------------------------------------------------------
1 | { stdenv, fetchgit, python3 }:
2 |
3 | let version = "1.7.2";
4 | in stdenv.mkDerivation {
5 | name = "bumblebee-status-${version}";
6 | inherit version;
7 | src = fetchgit {
8 | rev = "4db9c714bb2db466cce8c514183473b2e9dabfb8";
9 | url = "https://github.com/tobi-wan-kenobi/bumblebee-status.git";
10 | sha256 = "10y6kgg7azdwcxsv5l1blzdi5sfh1vk2mrz65l6jm2723m15704p";
11 | };
12 | buildInputs = [(python3.withPackages
13 | (ps: with ps; [ i3ipc requests taskw netifaces psutil ]))];
14 | unpackPhase = ":";
15 | installPhase = ''
16 | install -d $out/opt/bumblebee-status
17 | cp -rp $src/* $out/opt/bumblebee-status
18 | install -d $out/bin
19 | ln -s $out/opt/bumblebee-status/bumblebee-status $out/bin/bumblebee-status
20 | '';
21 | meta = { };
22 | }
23 |
--------------------------------------------------------------------------------
/modules/users/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | let
4 | authorizedKeys = import ./authorized-keys.nix;
5 | vyorkin = import ./vyorkin.nix { inherit authorizedKeys; };
6 | in {
7 | users = {
8 | # Enable adding new user and groups to the system
9 | # with the ordinary useradd and groupadd commands
10 | mutableUsers = true;
11 |
12 | # defaultUserShell = pkgs.zsh;
13 | users = {
14 | root.openssh.authorizedKeys.keys = authorizedKeys;
15 | vyorkin = vyorkin;
16 | };
17 | };
18 |
19 | # A list of names of users that have additional rights when
20 | # connecting to the Nix daemon
21 | nix.settings.trusted-users = [ "root" "vyorkin" ];
22 |
23 | # Whether users of the wheel group must provide a
24 | # password to run commands as super user via sudo
25 | security.sudo.wheelNeedsPassword = false;
26 | }
27 |
--------------------------------------------------------------------------------
/modules/x11/xserver/base.nix:
--------------------------------------------------------------------------------
1 | {
2 | services.xserver = {
3 | enable = true;
4 |
5 | # Symlink the X server configuration under /etc/X11/xorg.conf
6 | exportConfiguration = true;
7 |
8 | # Length of time in milliseconds that a key must be
9 | # depressed before autorepeat starts
10 | autoRepeatDelay = 200;
11 |
12 | # Length of time in milliseconds that should elapse between
13 | # autorepeat-generated keystrokes
14 | autoRepeatInterval = 40;
15 |
16 | # Setup keyboard layout
17 | layout = "us,ru";
18 | xkbModel = "pc105";
19 | xkbVariant = "qwerty";
20 |
21 | # - Use Ctrl+Shift to switch between layouts
22 | # - Toggle led indicator on a CapsLock when current locale is RU
23 | # - Maps Ctrl to CapsLock
24 | xkbOptions = "grp:ctrl_shift_toggle, grp_led:caps, caps:ctrl_modifier";
25 | };
26 | }
27 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/sound.nix:
--------------------------------------------------------------------------------
1 | { pamixer, lxqt, iconfont, config, lib, ... }: ''
2 | case $BLOCK_BUTTON in
3 | 2) ${pamixer}/bin/pamixer -t;;
4 | 4) ${pamixer}/bin/pamixer -i 5;;
5 | 5) ${pamixer}/bin/pamixer -d 5;;
6 | esac
7 | code=0
8 | if [[ `${pamixer}/bin/pamixer --get-mute` = "true" ]]
9 | then
10 | volume=""
11 | end=""
12 | icon="婢"
13 | else
14 | volume=`${pamixer}/bin/pamixer --get-volume`
15 | end="%"
16 | if [[ $volume -lt 33 ]]
17 | then
18 | icon="奄"
19 | else
20 | if [[ $volume -lt 66 ]]
21 | then
22 | icon="奔"
23 | else
24 | icon="墳"
25 | code=33
26 | fi
27 | fi
28 | fi
29 | ${lib.optionalString (! config.deviceSpecific.bigScreen) "[[ -n $BLOCK_BUTTON ]] &&"} text=" $volume$end"
30 | echo "$icon$text"
31 | exit $code
32 | ''
33 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/dmenu.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * ROFI Color theme
3 | * User: Qball
4 | * Copyright: Dave Davenport
5 | */
6 | * {
7 | background-color: Black;
8 | border-color: White;
9 | text-color: White;
10 | font: "Times New Roman 12";
11 | }
12 |
13 | configuration {
14 | }
15 |
16 | #window {
17 | anchor: north;
18 | location: north;
19 | width: 100%;
20 | padding: 4px;
21 | children: [ horibox ];
22 | }
23 |
24 | #horibox {
25 | orientation: horizontal;
26 | children: [ prompt, entry, listview ];
27 | }
28 |
29 | #listview {
30 | layout: horizontal;
31 | spacing: 5px;
32 | lines: 100;
33 | }
34 |
35 | #entry {
36 | expand: false;
37 | width: 10em;
38 | }
39 |
40 | #element {
41 | padding: 0px 2px;
42 | }
43 | #element selected {
44 | background-color: SteelBlue;
45 | }
46 |
--------------------------------------------------------------------------------
/modules/dev/js/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, inputs, ... }:
2 |
3 | let
4 | genPkgs = pkgs.callPackage ./packages { inherit inputs; };
5 | extPkgs = with genPkgs; [
6 | colorguard
7 | git-issues
8 | # git-labelmaker
9 | madge
10 | psi
11 | now
12 | json-package
13 | localtunnel
14 | manpm
15 | available-versions
16 | git-recall
17 | jsinspect
18 | tmi
19 | commitizen
20 | ];
21 | nixPkgs = with pkgs.nodePackages; [
22 | bower
23 | yo
24 | http-server
25 | eslint_d
26 | rollup
27 | svgo
28 | prettier
29 | sloc
30 | js-beautify
31 | tern
32 | typescript
33 | typescript-language-server
34 | ];
35 | in {
36 | home-manager.users.vyorkin = {
37 | home = {
38 | file = { ".npmrc" = { source = ./npmrc; }; };
39 |
40 | packages = with pkgs;
41 | [ nodejs_latest yarn flow deno ] ++ nixPkgs ++ extPkgs;
42 | };
43 | };
44 | }
45 |
--------------------------------------------------------------------------------
/modules/x11/xserver/lightdm.nix:
--------------------------------------------------------------------------------
1 | {
2 | services.xserver.displayManager.lightdm = {
3 | greeters.mini = {
4 | enable = true;
5 | user = "vyorkin";
6 |
7 | extraConfig = ''
8 | [greeter]
9 | show-password-label = true
10 | password-label-text = Welcome, Great Hacker
11 | invalid-password-text = Are you sure?
12 | show-input-cursor = false
13 | password-alignment = right
14 |
15 | [greeter-theme]
16 | font = "IBM Plex Mono"
17 | font-size = 14pt
18 | text-color = "#666666"
19 | error-color = "#FF0000"
20 | background-image = ""
21 | background-color = "#000000"
22 | window-color = "#000000"
23 | border-color = "#333333"
24 | border-width = 1px
25 | layout-space = 14
26 | password-color = "#666666"
27 | password-background-color = "#222222"
28 | '';
29 | };
30 | };
31 | }
32 |
--------------------------------------------------------------------------------
/modules/apps/db/postgresql/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | environment.systemPackages = with pkgs; [
5 | sqitchPg
6 |
7 | pgcli
8 | pgcenter
9 | ];
10 |
11 | services.postgresql = {
12 | enable = true;
13 | enableTCPIP = true;
14 |
15 | authentication = pkgs.lib.mkForce ''
16 | # TYPE DATABASE USER ADDRESS METHOD
17 | local all all trust
18 | host all all 127.0.0.1/32 trust
19 | host all all ::1/128 trust
20 | host all all 0.0.0.0/0 md5
21 | '';
22 | };
23 |
24 | home-manager.users.vyorkin = {
25 | home.file = {
26 | ".psqlrc" = { source = ./psqlrc; };
27 |
28 | "pgcli" = {
29 | source = ./pgcli;
30 | target = ".config/pgcli/config";
31 | };
32 | };
33 | };
34 | }
35 |
--------------------------------------------------------------------------------
/modules/dev/haskell/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | imports = [
5 | ./hoogle.nix
6 | ];
7 |
8 | home-manager.users.vyorkin = {
9 | home.packages = with pkgs; [
10 | # haskell.compiler.ghc901
11 | cabal-install
12 | ];
13 | home.file = {
14 | "ghci.conf" = {
15 | source = ./ghci;
16 | target = ".ghc/ghci.conf";
17 | };
18 |
19 | ".hindent.yaml" = { source = ./hindent.yaml; };
20 | ".stylish-haskell.yaml" = {
21 | source = ./stylish-haskell.yaml;
22 | };
23 | ".hspec" = { source = ./hspec; };
24 | ".summoner.toml" = { source = ./summoner.toml; };
25 | ".hlint.yaml" = { source = ./hlint.yaml; };
26 | ".haskeline" = { source = ./haskeline; };
27 |
28 | ".cabal" = {
29 | source = ./cabal;
30 | recursive = true;
31 | };
32 |
33 | ".stack" = {
34 | source = ./stack;
35 | recursive = true;
36 | };
37 | };
38 | };
39 | }
40 |
--------------------------------------------------------------------------------
/modules/apps/db/postgresql/psqlrc:
--------------------------------------------------------------------------------
1 | -- Don't display the "helpful" message on startup.
2 | \set QUIET 1
3 | \pset null '[NULL]'
4 |
5 | -- By default, NULL displays as an empty space. Is it actually an empty
6 | -- string, or is it null? This makes that distinction visible.
7 | \pset null '[NULL]'
8 |
9 | -- Use table format (with headers across the top) by default, but switch to
10 | -- expanded table format when there's a lot of data, which makes it much
11 | -- easier to read.
12 | \x auto
13 |
14 | \set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# '
15 | \set PROMPT2 '[more] %R > '
16 |
17 | -- Verbose error reports.
18 | \set VERBOSITY verbose
19 |
20 | -- Use a separate history file per-database.
21 | \set HISTFILE ~/.psql_history- :DBNAME
22 |
23 | -- If a command is run more than once in a row, only store it once in the
24 | -- history.
25 | \set HISTCONTROL ignoredups
26 |
27 | -- Autocomplete keywords (like SELECT) in upper-case, even if you started
28 | -- typing them in lower case.
29 | \set COMP_KEYWORD_CASE upper
30 | \unset QUIET
31 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/work/setup:
--------------------------------------------------------------------------------
1 | HDMI-1 00ffffffffffff001e6d085b026e06000b1b0103803c2278ea3035a7554ea3260f50542108007140818081c0a9c0d1c081000101010104740030f2705a80b0588a0058542100001e565e00a0a0a029503020350058542100001a000000fd00383d1e871e000a202020202020000000fc004c4720556c7472612048440a20010b02031d7146902205040301230907076d030c001000b83c200060010203023a801871382d40582c450058542100001e000000ff003731314e54585243443337380a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073
2 | HDMI-2 00ffffffffffff001e6d085bce6d06000b1b0103803c2278ea3035a7554ea3260f50542108007140818081c0a9c0d1c081000101010104740030f2705a80b0588a0058542100001e565e00a0a0a029503020350058542100001a000000fd00383d1e871e000a202020202020000000fc004c4720556c7472612048440a20014002031d7146902205040301230907076d030c001000b83c200060010203023a801871382d40582c450058542100001e000000ff003731314e54555743443332360a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078
3 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/connections.nix:
--------------------------------------------------------------------------------
1 | { bash, networkmanager, iconfont, config, modemmanager, ... }: ''
2 | #!${bash}/bin/bash
3 | CONNECTIONS=$(${networkmanager}/bin/nmcli con show --active | tail +2 | tr -s ' ' | rev | cut -d' ' -f3 | rev)
4 | text=""
5 | for connection in $CONNECTIONS
6 | do
7 | grep wifi <<< $connection > /dev/null && {
8 | # SIGNAL=$(${networkmanager}/bin/nmcli d w | grep '^\*' | tr -s ' ' | cut -d' ' -f7)
9 | # if [[ $SIGNAL -lt 20 ]]
10 | # then
11 | # text+=冷
12 | # elif [[ $SIGNAL -lt 40 ]]
13 | # then
14 | # text+=爛
15 | # elif [[ $SIGNAL -lt 60 ]]
16 | # then
17 | # text+=嵐
18 | # elif [[ $SIGNAL -lt 80 ]]
19 | # then
20 | # text+=襤
21 | # else
22 | # text+=蠟
23 | # fi
24 | text=
25 | }
26 | grep ethernet <<< $connection > /dev/null && text+=""
27 | done
28 | code=0
29 | [[ $text == "" ]] && {
30 | text=
31 | code=33
32 | }
33 | echo "$text"
34 | exit $code
35 | ''
36 |
--------------------------------------------------------------------------------
/modules/apps/pentest/sdr.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Configuration tool for amateur radios
6 | # chirp
7 |
8 | # GNU Radio Software Radio Toolkit
9 | # gnuradio
10 |
11 | # Software defined radio receiver
12 | gqrx
13 |
14 | # Gnuradio Mode-S/ADS-B radio
15 | # gr-air-modes
16 |
17 | # GNU Radio Blind IQ imbalance estimator and correction
18 | # gr-iqbal
19 |
20 | # Gnuradio blocks from the OsmoSDR project
21 | # gr-osmosdr
22 |
23 | # Software defined radio peripheral
24 | hackrf
25 |
26 | # Tool for visualising captured radio signals
27 | inspectrum
28 |
29 | # Calculate local oscillator frequency offset using GSM base stations
30 | kalibrate-rtl
31 |
32 | # Digital radio transmission decoder
33 | multimon-ng
34 |
35 | # Simple spectrum analyser for scanning with a RTL-SDR compatible USB device
36 | # rtlsdr-scanner
37 |
38 | # Universal hardware driver for Ettus Research products - host apps
39 | # uhd-host
40 |
41 | # Various UHD Images
42 | # uhd-images
43 | ];
44 | }
45 |
--------------------------------------------------------------------------------
/modules/boot/plymouth/angular.nix:
--------------------------------------------------------------------------------
1 | { stdenv, fetchgit, writeTextFile }:
2 |
3 | let
4 | config_file = writeTextFile {
5 | name = "angular.plymouth";
6 | text = ''
7 | [Plymouth Theme]
8 | Name=angular
9 | Description=display kinda fireworks
10 | Comment=created By Aditya Shakya (@adi1090x)
11 | ModuleName=script
12 |
13 | [script]
14 | ImageDir=etc/plymouth/themes/angular
15 | ScriptFile=etc/plymouth/themes/angular/angular.script
16 | '';
17 | };
18 | in stdenv.mkDerivation rec {
19 | name = "angular";
20 |
21 | src = fetchGit {
22 | url = "https://github.com/adi1090x/plymouth-themes";
23 | rev = "c2a068e44f476d79fcc87372ad0436d11cf65b14";
24 | };
25 |
26 | buildInputs = [ stdenv ];
27 |
28 | configurePhase = ''
29 | install_path=$out/share/plymouth/themes/
30 | mkdir -p $install_path
31 | '';
32 |
33 | buildPhase = ''
34 | substitute ${config_file} "pack_1/angular/angular.plymouth"
35 | '';
36 |
37 | installPhase = ''
38 | cd pack_1 && cp -r angular $install_path
39 | '';
40 |
41 | meta = with stdenv.lib; { platfotms = platforms.linux; };
42 | }
43 |
--------------------------------------------------------------------------------
/modules/dev/clojure/lein/profiles.clj:
--------------------------------------------------------------------------------
1 | {:repl {:dependencies [[alembic "0.3.2"]
2 | [org.clojure/tools.namespace "0.2.11"]
3 | [org.clojure/tools.nrepl "0.2.13"]]}}
4 |
5 | {:user {:plugins [[cider/cider-nrepl "0.16.0"]
6 | [lein-dotenv "RELEASE"]
7 | [lein-exec "0.3.7"]
8 | [lein-pprint "1.2.0"]
9 | [lein-kibit "0.1.6"]
10 | [lein-try "0.4.3"]
11 | [jonase/eastwood "0.2.7"]
12 | [lein-ancient "0.6.0-SNAPSHOT"]
13 | [lein-annotations "0.1.0"]
14 | [lein-autoreload "0.1.0"]
15 | [lein-bikeshed "0.2.0"]
16 | [lein-cprint "1.2.0"]
17 | [lein-ns-dep-graph "0.2.0-SNAPSHOT"]
18 | [lein-vanity "0.2.0"]
19 | [lein-ring "0.9.7"]
20 | [lein-cloudbees "1.0.5"]
21 | [org.clojure/tools.trace "0.7.9"]
22 | [venantius/ultra "0.4.0"]]
23 | :dependencies [[slamhound "1.5.5"]]
24 | :aliases {"slamhound" ["run" "-m" "slam.hound"]}}}
25 |
--------------------------------------------------------------------------------
/modules/workspace/base.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, config, inputs, ... }:
2 |
3 | {
4 | # Whether core dumps should be processed by systemd-coredump.
5 | # If disabled, core dumps appear in the current directory of the crashing process
6 | systemd.coredump.enable = true;
7 |
8 | environment.systemPackages = [
9 | (pkgs.writeShellScriptBin "lock" ''
10 | set -euo pipefail
11 | if [[ "$1" == this ]]
12 | then args="-s"
13 | else args="-san"
14 | fi
15 | '')
16 | ];
17 |
18 | environment.loginShellInit = lib.mkBefore ''
19 | [[ "$(tty)" == /dev/tty? ]] && sudo /run/current-system/sw/bin/lock this
20 | '';
21 |
22 | home-manager.users.vyorkin = {
23 | xdg = {
24 | enable = true;
25 | userDirs.enable = true;
26 | };
27 |
28 | # Use services.flameshot.enable = true instead
29 | # See: https://github.com/nix-community/home-manager/issues/2064
30 | home.packages = with pkgs; [ flameshot ];
31 |
32 | home.activation."mimeapps-remove" = {
33 | before = [ "linkGeneration" ];
34 | after = [ ];
35 | data = "rm -f /home/vyorkin/.config/mimeapps.list";
36 | };
37 | };
38 | }
39 |
--------------------------------------------------------------------------------
/modules/apps/terminal/alacritty.nix:
--------------------------------------------------------------------------------
1 | { config, pkgs, lib, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.programs.alacritty = {
5 | enable = true;
6 | settings = {
7 |
8 | font = rec {
9 | normal.family = config.themes.fonts.mono.family;
10 | size = 10;
11 | bold = { style = "Bold"; };
12 | };
13 |
14 | window = {
15 | opacity = 0.9;
16 | padding = {
17 | x = 4;
18 | y = 4;
19 | };
20 | decorations = "none";
21 | };
22 |
23 | shell.program = "${pkgs.zsh}/bin/zsh";
24 |
25 | cursor.style = "Underline";
26 |
27 | live_config_reload = true;
28 |
29 | colors = with pkgs.my.thmHash; {
30 | primary = {
31 | background = base00;
32 | foreground = base05;
33 | };
34 | cursor = {
35 | text = base00;
36 | cursor = base0E;
37 | };
38 | normal = {
39 | black = base00;
40 | red = base08;
41 | green = base0B;
42 | yellow = base0A;
43 | blue = base0D;
44 | magenta = base0E;
45 | white = base07;
46 | };
47 | };
48 | };
49 | };
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/sidebar-dark.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | background-color: rgba (0, 0, 0, 0%);
6 | text-color: rgba (220, 220, 220, 100%);
7 | }
8 | #window {
9 | padding: 20;
10 | fullscreen: true;
11 | anchor: east;
12 | location: east;
13 | orientation: horizontal;
14 | children: [dummy, mainbox];
15 | }
16 | #dummy { expand: true; }
17 | #mainbox {
18 | padding: 10;
19 | expand: false;
20 | background-color: rgba (20, 20, 25, 100%);
21 | }
22 | #message { padding: 10 10 10; }
23 | #listview { spacing: 2; padding: 1em 0.4em 1em 1em; }
24 | #element { padding: 5 10 5; }
25 | #element.selected {
26 | border: 0 0 2;
27 | text-color: rgb (95, 215, 255);
28 | border-color: rgba (0, 0, 0, 100%);
29 | }
30 | #sidebar { padding: 5 8 8; }
31 | #button { padding: 8 0 8; }
32 | #button.selected {
33 | border: 0 0 2;
34 | padding: 8 0 8;
35 | text-color: rgb (95, 215, 255);
36 | border-color: rgba (0, 0, 0, 100%);
37 | }
38 | #inputbar {
39 | border: 0 0 2;
40 | padding: 0% 1.8% 0% 0.2%;
41 | border-color: rgba (0, 0, 0, 100%);
42 | }
43 | #entry { width: 18em; padding: 8 8 1; }
44 | #prompt { padding: 8 8 8 8; }
45 |
--------------------------------------------------------------------------------
/modules/dev/haskell/summoner.toml:
--------------------------------------------------------------------------------
1 | owner = "vyorkin"
2 | fullName = "Vasiliy Yorkin"
3 | email = "vasiliy.yorkin@gmail.com"
4 | license = "MIT"
5 | cabal = true
6 | stack = true
7 | github = true
8 | noUpload = true
9 | private = false
10 | travis = true
11 | appveyor = false
12 | ghcVersions = ["8.4.4", "8.6.5"]
13 | lib = true
14 | exe = true
15 | test = true
16 | bench = true
17 | extensions = [ "ConstraintKinds"
18 | , "DeriveGeneric"
19 | , "GeneralizedNewtypeDeriving"
20 | , "InstanceSigs"
21 | , "KindSignatures"
22 | , "LambdaCase"
23 | , "OverloadedStrings"
24 | , "RecordWildCards"
25 | , "ScopedTypeVariables"
26 | , "StandaloneDeriving"
27 | , "TupleSections"
28 | , "TypeApplications"
29 | , "ViewPatterns"
30 | ]
31 |
32 | files =
33 | [ { path = ".stylish-haskell.yaml"
34 | , url = "https://raw.githubusercontent.com/vyorkin/nixos-config/master/home/dotfiles/haskell/stylish-haskell.yaml"
35 | }
36 | ]
37 |
38 | [prelude]
39 | package = "relude"
40 | module = "Relude"
41 |
--------------------------------------------------------------------------------
/modules/workspace/gtk.nix:
--------------------------------------------------------------------------------
1 | { pkgs, old, config, lib, inputs, ... }:
2 |
3 | let
4 | thm = config.themes.colors;
5 | thm' = builtins.mapAttrs (name: value: { hex.rgb = value; }) thm;
6 | in {
7 | nixpkgs.overlays = [
8 | (self: super: {
9 | generated-gtk-theme =
10 | pkgs.callPackage "${inputs.rycee}/pkgs/materia-theme" {
11 | configBase16 = {
12 | name = "Generated";
13 | kind = "dark";
14 | colors = thm' // {
15 | base01 = thm'.base00;
16 | base02 = thm'.base00;
17 | };
18 | };
19 | };
20 | })
21 | ];
22 |
23 | home-manager.users.vyorkin = {
24 | gtk = {
25 | enable = true;
26 | iconTheme = {
27 | name = "Papirus-Dark";
28 | package = pkgs.papirus-icon-theme;
29 | };
30 |
31 | theme = {
32 | name = "Generated";
33 | package = pkgs.generated-gtk-theme;
34 | };
35 | font = {
36 | name = with config.themes.fonts; "${main.family} ${toString main.size}";
37 | };
38 |
39 | gtk3 = {
40 | bookmarks = [
41 | "file:///home/vyorkin/projects Projects"
42 | ];
43 | };
44 | };
45 |
46 | home.sessionVariables.GTK_THEME = "Generated";
47 | };
48 | }
49 |
--------------------------------------------------------------------------------
/modules/workspace/sway/wofi/default.nix:
--------------------------------------------------------------------------------
1 | { config, lib, pkgs, ... }:
2 |
3 | let
4 | wofiConfig = {
5 | key_left = "Control_L-h";
6 | key_down = "Control_L-j";
7 | key_up = "Control_L-k";
8 | key_right = "Control_L-l";
9 | term = "${config.defaultApps.term.cmd}";
10 | insensitive = true;
11 | };
12 |
13 | wofiTheme = ''
14 | window {
15 | margin: 0px;
16 | border: 1px solid #222222;
17 | background-color: #000000;
18 | }
19 | #input {
20 | margin: 5px;
21 | border: none;
22 | color: #FFFFFF;
23 | background-color: #222222;
24 | }
25 | #inner-box {
26 | margin: 5px;
27 | border: none;
28 | background-color: #222222;
29 | }
30 | #outer-box {
31 | margin: 5px;
32 | border: none;
33 | background-color: #222222;
34 | }
35 | #scroll {
36 | margin: 0px;
37 | border: none;
38 | }
39 | #text {
40 | margin: 5px;
41 | border: none;
42 | color: #FFFFFF;
43 | }
44 | #text:selected {
45 | color: #FFFFFF;
46 | }
47 | #entry:selected {
48 | background-color: #000000;
49 | color: #FFFFFF;
50 | }
51 | '';
52 | in {
53 | home-manager.users.vyorkin = {
54 | xdg.configFile."wofi/style.css".text = wofiTheme;
55 | xdg.configFile."wofi/config".text =
56 | lib.generators.toKeyValue { } wofiConfig;
57 | };
58 | }
59 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/white.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | spacing: 1;
6 | }
7 | #window {
8 | border: 0;
9 | padding: 20;
10 | }
11 | #mainbox {
12 | border: 0;
13 | padding: 10;
14 | }
15 | #message {
16 | border: 1;
17 | padding: 10 2% 10;
18 | }
19 | #listview {
20 | padding: 10 2% 10;
21 | spacing: 2;
22 | }
23 | #element {
24 | padding: 5 5 5;
25 | }
26 | #element.selected {
27 | text-color: rgba (23, 147, 209, 100%);
28 | border: 0 0 1;
29 | border-radius: 0;
30 | border-color: rgba (23, 147, 209, 100%);
31 | }
32 | #scrollbar {
33 | width: 4;
34 | handle-width: 8;
35 | }
36 | #sidebar {
37 | padding: 1% 2% 2%;
38 | }
39 | #button {
40 | padding: 8 0 8;
41 | }
42 | #button.selected {
43 | padding: 8 0 8;
44 | border: 0 0 1;
45 | border-radius: 0;
46 | border-color: rgba (23, 147, 209, 100%);
47 | text-color: rgba (23, 147, 209, 100%);
48 | }
49 | #inputbar {
50 | border: 0;
51 | padding: 0% 1.8% 0% 0.2%;
52 | }
53 | #entry {
54 | spacing: 5;
55 | border: 0;
56 | padding: 5 5 5;
57 | border-radius: 4;
58 | border-color: rgba (0, 0, 0, 100%);
59 | }
60 | #prompt {
61 | spacing: 0;
62 | border: 0;
63 | border-radius: 4;
64 | padding: 0;
65 | text-color: rgba (255, 255, 255, 100%);
66 | border-color: rgba (0, 0, 0, 100%);
67 | }
68 |
--------------------------------------------------------------------------------
/modules/apps/pentest/passwords.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Brute-Forcing from Nmap output.
6 | # Automatically attempts default creds on found services
7 | brutespray
8 |
9 | # Utility for resetting or blanking local passwords used by
10 | # Windows NT, 2000, XP, Vista, 7, 8, 8.1 and 10
11 | chntpw
12 |
13 | # Crowbar is brute forcing tool that can be used during
14 | # penetration tests. It is developed to support protocols
15 | # that are not currently supported by thc-hydra and other
16 | # popular brute forcing tools
17 | crowbar
18 |
19 | # Wordlist generator
20 | crunch
21 |
22 | # World’s fastest and most advanced password recovery tool
23 | hashcat
24 |
25 | # Small set of tools convert packets from captures.
26 | # For the use with latest hashcat or John the Ripper
27 | hcxtools
28 |
29 | # John the Ripper jumbo - advanced offline password cracker,
30 | # which supports hundreds of hash and cipher types, and runs
31 | # on many operating systems, CPUs, GPUs, and even some FPGAs
32 | john
33 |
34 | # Multi-purpose brute-forcer, with a modular design and a flexible usage
35 | # python36Packages.patator
36 |
37 | # Modular and multi processing pass phrase cracking tool
38 | phrasendrescher
39 |
40 | # Login hacker tool
41 | thc-hydra
42 | ];
43 | }
44 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/ribbon.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * ROFI Color theme
3 | * User: Rokit
4 | */
5 |
6 | * {
7 | base-bg: #000000ff;
8 | selected-bg: #222222ff;
9 | base-color: #eeeeeeaa;
10 | selected-color: #ffffffff;
11 | border-color: #33333366;
12 | transparent: #00000000;
13 | text-color: @base-color;
14 | font: "FiraCode 14";
15 | }
16 | #window {
17 | width: 100%;
18 | background-color: @base-bg;
19 | margin: 0px 0px 0px 0px;
20 | children: [ horibox ];
21 | }
22 | #horibox {
23 | background-color: @transparent;
24 | orientation: horizontal;
25 | children: [ prompt, textbox-prompt-colon, entry, listview ];
26 | }
27 | #prompt {
28 | text-color: @selected-color;
29 | padding: 0.7em 0px 0.7em 10px;
30 | background-color: @transparent;
31 | }
32 | #textbox-prompt-colon {
33 | expand: false;
34 | str: ":";
35 | padding: 0.7em 10px 0.7em 0px;
36 | text-color: @selected-color;
37 | background-color: @transparent;
38 | }
39 | #entry {
40 | padding: 0.7em;
41 | text-color: @selected-color;
42 | background-color: #000;
43 | expand: false;
44 | width: 10em;
45 | }
46 | #listview {
47 | background-color: @transparent;
48 | layout: horizontal;
49 | spacing: 5px;
50 | lines: 100;
51 | }
52 | #element {
53 | background-color: @transparent;
54 | padding: 0.7em;
55 | }
56 | #element selected {
57 | border: 0px 1px;
58 | text-color: @selected-color;
59 | background-color: @selected-bg;
60 | }
61 |
--------------------------------------------------------------------------------
/modules/apps/pentest/reversing.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Reverse Engineering Framework
6 | radare2
7 |
8 | # Free and Open Source Reverse Engineering Platform powered by rizin
9 | radare2-cutter
10 |
11 | # Fork of radare2
12 | # See: https://github.com/NixOS/nixpkgs/pull/109305
13 | # rizin
14 |
15 | # Retargetable machine-code decompiler based on LLVM
16 | retdec
17 |
18 | # Native code to C/C++ decompiler
19 | snowman
20 |
21 | # Instrumentation framework for building dynamic analysis
22 | # tools. There are Valgrind tools that can automatically
23 | # detect many memory management and threading bugs, and
24 | # profile your programs in detail
25 | valgrind
26 |
27 | # 32-bit assembler level analysing debugger
28 | # ollydbg
29 |
30 | # Helps to identify and classify malware samples
31 | # See: https://github.com/Yara-Rules/rules
32 | yara
33 |
34 | # Tools to work with android .dex and java .class files
35 | dex2jar
36 |
37 | # Dex to Java decompiler
38 | # jadx
39 |
40 | # Intercept Java applications locally
41 | # javasnoop
42 |
43 | # Tool for reverse engineering Android apk files
44 | apktool
45 |
46 | # Java 8+ Jar & Android APK Reverse Engineering Suite
47 | # bytecode-viewer
48 |
49 | # Cross platform x86/x86-64 debugger
50 | # edb-debugger
51 |
52 | # Assembler and disassembler for Flash (SWF) bytecode
53 | # flasm
54 | ];
55 | }
56 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/network.hs:
--------------------------------------------------------------------------------
1 | {-# LANGUAGE BangPatterns, TemplateHaskell #-}
2 |
3 | import Control.Concurrent (threadDelay)
4 | import Control.Monad (mapM, join)
5 | import System.Directory (listDirectory)
6 | import Data.Bool (bool)
7 | import Language.Haskell.TH.Syntax (liftString, runIO)
8 | import System.Environment (getEnv)
9 | import Control.Monad.IO.Class (liftIO)
10 |
11 | path :: String
12 | path = "/sys/class/net/"
13 |
14 | data Statistics = Statistics !Float !Float
15 |
16 | instance Semigroup Statistics where
17 | Statistics a b <> Statistics c d = Statistics (a + c) (b + d)
18 |
19 | instance Monoid Statistics where
20 | mempty = Statistics 0 0
21 |
22 | icon :: String -> String
23 | icon i = "" ++ i ++ ""
24 |
25 | readInterface :: FilePath -> IO Statistics
26 | readInterface interface = do
27 | rx <- read <$> readFile (path ++ interface ++ "/statistics/rx_bytes")
28 | tx <- read <$> readFile (path ++ interface ++ "/statistics/tx_bytes")
29 | return $ Statistics rx tx
30 |
31 | readInterfaces :: [FilePath] -> IO Statistics
32 | readInterfaces interfaces = mconcat <$> (mapM readInterface interfaces)
33 |
34 | main :: IO ()
35 | main = do
36 | interfaces <- listDirectory path
37 | Statistics rx tx <- readInterfaces interfaces
38 | threadDelay 1000000
39 | Statistics rx' tx' <- readInterfaces interfaces
40 | putStrLn $ (icon "\58052") ++ (show $ round $ (rx' - rx) / 10^3)
41 | ++ (icon "\58054") ++ (show $ round $ (tx' - tx) / 10^3)
42 |
--------------------------------------------------------------------------------
/modules/hardware/sound.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | # PulseAudio is a popular sound server for Linux.
4 | # It is now required by a number of applications, and should be
5 | # enabled if audio support is desired on NixOS.
6 | # Enabling PulseAudio is sufficient to enable audio support on NixOS in most cases.
7 |
8 | # You may need to add users to the audio group for them to be able to use audio devices:
9 | # users.extraUsers.alice.extraGroups = [ "audio" ... ];
10 |
11 | # More info: https://nixos.wiki/wiki/PulseAudio
12 |
13 | {
14 | # sound.enable = true;
15 |
16 | security.rtkit.enable = true;
17 | services.pipewire = {
18 | enable = true;
19 | alsa.enable = true;
20 | alsa.support32Bit = true;
21 | pulse.enable = true;
22 | };
23 |
24 | hardware.pulseaudio = {
25 | enable = false;
26 |
27 | # 1. Only the full build has Bluetooth support
28 | # 2. Enable JACK support
29 | package = pkgs.pulseaudioFull; # .override { jackaudioSupport = true; };
30 |
31 | # For compatibility with 32-bit applications
32 | support32Bit = true;
33 |
34 | # While pulseaudio itself only has support for the
35 | # SBC bluetooth codec there is out-of-tree support for AAC, APTX, APTX-HD and LDAC.
36 | # extraModules = [pkgs.pulseaudio-modules-bt];
37 | };
38 |
39 | home-manager.users.vyorkin.home.packages = with pkgs; [
40 | pamixer
41 | # A Pulseaudio mixer in Qt (port of pavucontrol).
42 | # Can be used to adjust all controls provided by PulseAudio.
43 | # See: https://github.com/lxqt/pavucontrol-qt
44 | lxqt.pavucontrol-qt
45 | ];
46 | }
47 |
--------------------------------------------------------------------------------
/modules/apps/monitoring/ksysguard/monitoring.sgrd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/modules/default.nix:
--------------------------------------------------------------------------------
1 | builtins.listToAttrs (builtins.map (path: {
2 | name = builtins.head (let
3 | b = builtins.baseNameOf path;
4 | m = builtins.match "(.*)\\.nix" b;
5 | in if isNull m then [ b ] else m);
6 | value = import path;
7 | }) [
8 | ./hardware
9 | ./boot
10 | ./system.nix
11 | ./network.nix
12 | ./nix.nix
13 | ./overlay.nix
14 | ./nixpkgs.nix
15 | ./services.nix
16 | ./locale.nix
17 | ./security.nix
18 | ./virtualisation.nix
19 | ./home.nix
20 | ./users
21 | ./themes.nix
22 |
23 | ./x11
24 | ./x11/xserver/sddm.nix
25 | ./x11/xserver/lightdm.nix
26 | ./x11/xserver/libinput.nix
27 |
28 | ./workspace
29 | ./workspace/ssh.nix
30 | ./workspace/cursor.nix
31 | ./workspace/gtk.nix
32 | ./workspace/qt.nix
33 | ./workspace/gnome
34 | ./workspace/sway
35 | ./workspace/i3
36 |
37 | ./workspace/laptop-x11
38 |
39 | ./apps
40 | ./apps/tools
41 | ./apps/terminal
42 | ./apps/terminal/alacritty.nix
43 | ./apps/terminal/kitty.nix
44 | ./apps/terminal/tmux.nix
45 | ./apps/fm
46 | ./apps/scm/git.nix
47 | ./apps/shell/zsh.nix
48 | ./apps/shell/fish.nix
49 | ./apps/editor
50 | ./apps/editor/emacs.nix
51 | ./apps/editor/vim.nix
52 | ./apps/editor/vscode.nix
53 | ./apps/reading
54 | ./apps/reading/zathura
55 | ./apps/messaging
56 | ./apps/web
57 | ./apps/web/firefox.nix
58 | ./apps/web/google-chrome.nix
59 | ./apps/web/brave.nix
60 | ./apps/torrent.nix
61 | ./apps/db
62 | ./apps/devops
63 | ./apps/monitoring
64 | ./apps/media
65 | ./apps/streaming
66 | ./apps/pentest
67 | ./apps/gaming
68 |
69 | ./dev
70 | ])
71 |
--------------------------------------------------------------------------------
/modules/apps/pentest/wireless.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Framework for ZigBee exploitation
6 | # killerbee
7 |
8 | # Swiss army knife of sub-GHz radio
9 | # rfcat
10 |
11 | # Tool for establishing 3G connections
12 | # sakis3g
13 |
14 | # Utilities for using the Wi-Spy USB spectrum analyzer hardware
15 | # spectools
16 |
17 | # Wireless WEP/WPA cracking utilities
18 | aircrack-ng
19 |
20 | # A tool for exploiting Cisco LEAP networks
21 | # asleap
22 |
23 | # Implementation of the WPS brute force attack, written in C
24 | bully
25 |
26 | # Brute-force WPA dictionary attack
27 | cowpatty
28 |
29 | # Tool for extracting and cracking EAP-MD5
30 | # eapmd5pass
31 |
32 | # Automated Wi-Fi cracker
33 | # fern-wifi-cracker
34 |
35 | # FreeRadius Wireless Pawn Edition
36 | # freeradius-wpe
37 |
38 | # Modified hostapd to facilitate AP impersonation attacks
39 | # hostapd-wpe
40 |
41 | # Tool for configuring Linux wireless devices
42 | iw
43 |
44 | # Wireless network and device detector (metapackage)
45 | kismet
46 |
47 | # Utility for manipulating the MAC address of network interfaces
48 | macchanger
49 |
50 | # Wireless attack tool for IEEE 802.11 networks
51 | # mdk3 mdk4
52 |
53 | # Offline WPS bruteforce tool
54 | # pixiewps
55 |
56 | # Brute force attack tool against Wifi Protected Setup PIN number
57 | reaverwps
58 |
59 | # Wi-Fi honeypot
60 | # wifi-honey
61 |
62 | # Python script to automate wireless auditing using aircrack-ng tools
63 | wifite2
64 | ];
65 | }
66 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/black.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: vyorkin
3 | // vim:ft=css
4 | * {
5 | spacing: 1;
6 | background: rgba (10, 10, 10, 60%);
7 | border: rgba (30, 30, 30, 100%);
8 | foreground: rgba (200, 200, 200, 100%);
9 | }
10 | #window {
11 | background-color: @background;
12 | border: 0;
13 | padding: 20;
14 | }
15 | #mainbox {
16 | background-color: @background;
17 | border: 0;
18 | padding: 10;
19 | }
20 | #message {
21 | background-color: @background;
22 | border: 1;
23 | padding: 10 2% 10;
24 | }
25 | #listview {
26 | background-color: @background;
27 | padding: 10 2% 10;
28 | spacing: 2;
29 | }
30 | #element {
31 | padding: 5 5 5;
32 | background-color: @background;
33 | }
34 | #element.selected {
35 | border: 0 0 1;
36 | border-radius: 0;
37 | border-color: @border;
38 | background-color: @background;
39 | text-color: @foreground;
40 | }
41 | #scrollbar {
42 | width: 4;
43 | handle-width: 8;
44 | }
45 | #sidebar {
46 | padding: 1% 2% 2%;
47 | }
48 | #button {
49 | padding: 8 0 8;
50 | }
51 | #button.selected {
52 | padding: 8 0 8;
53 | border: 0 0 1;
54 | border-radius: 0;
55 | border-color: @border;
56 | text-color: @foreground;
57 | }
58 | #inputbar {
59 | border: 0;
60 | padding: 0% 1.8% 0% 0.2%;
61 | }
62 | #entry {
63 | spacing: 5;
64 | border: 0;
65 | padding: 5 5 5;
66 | border-radius: 4;
67 | border-color: rgba (0, 0, 0, 100%);
68 | }
69 | #prompt {
70 | spacing: 0;
71 | border: 0;
72 | border-radius: 4;
73 | padding: 0;
74 | text-color: @foreground;
75 | border-color: @border;
76 | }
77 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/white-border.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | spacing: 1;
6 | background-color: rgba (248, 248, 248, 100%);
7 | }
8 | #window {
9 | border: 0;
10 | padding: 20;
11 | }
12 | #mainbox {
13 | border: 0;
14 | padding: 10;
15 | }
16 | #message {
17 | border: 1;
18 | padding: 10 2% 10;
19 | }
20 | #listview {
21 | padding: 10 2% 10;
22 | spacing: 2;
23 | }
24 | #element {
25 | padding: 5 5 9;
26 | }
27 | #element.selected {
28 | text-color: rgba (10, 80, 130, 100%);
29 | background-color: rgba (240, 240, 240, 100%);
30 | border: 1 3 3 1;
31 | border-radius: 3;
32 | border-color: rgba (10, 10, 10, 100%);
33 | }
34 | #scrollbar {
35 | width: 4;
36 | handle-width: 8;
37 | }
38 | #sidebar {
39 | padding: 1% 2% 2%;
40 | }
41 | #button {
42 | padding: 8 0 8;
43 | }
44 | #button.selected {
45 | padding: 8 0 8;
46 | border: 1 3 3 1;
47 | border-radius: 3;
48 | border-color: rgba (10, 10, 10, 100%);
49 | background-color: rgba (240, 240, 240, 100%);
50 | text-color: rgba (10, 80, 130, 100%);
51 | }
52 | #inputbar {
53 | border: 0 0 2;
54 | border-radius: 3;
55 | border-color: rgba (10, 10, 10, 100%);
56 | padding: 0% 1.8% 0% 0.2%;
57 | background-color: rgba (248, 248, 248, 100%);
58 | }
59 | #entry {
60 | spacing: 5;
61 | border: 0;
62 | padding: 5 5 5;
63 | border-radius: 4;
64 | border-color: rgba (0, 0, 0, 100%);
65 | }
66 | #prompt {
67 | spacing: 0;
68 | border: 0;
69 | border-radius: 4;
70 | padding: 5 5 5;
71 | text-color: rgba (0, 0, 0, 100%);
72 | border-color: rgba (0, 0, 0, 100%);
73 | }
74 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/white-no-border.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | spacing: 1;
6 | }
7 | #window {
8 | border: 0;
9 | padding: 20;
10 | }
11 | #mainbox {
12 | border: 0;
13 | padding: 10;
14 | }
15 | #message {
16 | border: 1;
17 | padding: 10 2% 10;
18 | }
19 | #listview {
20 | padding: 10 2% 10;
21 | spacing: 2;
22 | border: 0;
23 | border-radius: 4;
24 | border-color: rgba (0, 0, 0, 100%);
25 | }
26 | #element {
27 | border: 0;
28 | border-color: rgba (0, 0, 0, 100%);
29 | border-radius: 4;
30 | padding: 5 5 5;
31 | }
32 | #element.selected {
33 | text-color: rgba (23, 147, 209, 100%);
34 | }
35 | #scrollbar {
36 | width: 4;
37 | border: 0;
38 | handle-width: 8;
39 | padding: 0;
40 | }
41 | #sidebar {
42 | padding: 1% 2% 2%;
43 | border: 0;
44 | border-radius: 4;
45 | border-color: rgba (0, 0, 0, 100%);
46 | }
47 | #button {
48 | padding: 8 0 8;
49 | border: 0;
50 | border-radius: 4;
51 | border-color: rgba (0, 0, 0, 100%);
52 | }
53 | #button.selected {
54 | border: 0;
55 | padding: 8 0 8;
56 | border-radius: 4;
57 | text-color: rgba (23, 147, 209, 100%);
58 | }
59 | #inputbar {
60 | border: 0;
61 | padding: 2% 1.8% 2% 2%;
62 | border-radius: 4;
63 | border-color: rgba (0, 0, 0, 100%);
64 | }
65 | #entry {
66 | spacing: 5;
67 | border: 0;
68 | padding: 5 5 5;
69 | border-radius: 4;
70 | border-color: rgba (0, 0, 0, 100%);
71 | }
72 | #prompt {
73 | spacing: 0;
74 | border: 0;
75 | border-radius: 4;
76 | padding: 4 4 4;
77 | text-color: rgba (0, 0, 0, 100%);
78 | border-color: rgba (0, 0, 0, 100%);
79 | }
80 |
--------------------------------------------------------------------------------
/modules/workspace/fonts.nix:
--------------------------------------------------------------------------------
1 | { pkgs, config, lib, ... }:
2 |
3 | {
4 | fonts = {
5 | fontconfig =
6 | let fonts = config.themes.fonts;
7 | in {
8 | enable = lib.mkForce true;
9 |
10 | # System-wide default fonts
11 | defaultFonts = {
12 | monospace = [ "${fonts.mono.family} ${toString fonts.mono.size}" ];
13 | sansSerif = [ "${fonts.main.family} ${toString fonts.main.size}" ];
14 | serif = [ "${fonts.serif.family} ${toString fonts.serif.size}" ];
15 | };
16 | };
17 |
18 | # Enable a basic set of fonts providing font styles and
19 | # families and reasonable coverage of Unicode
20 | enableDefaultFonts = true;
21 |
22 | # Create a directory with links to all fonts in
23 | # /run/current-system/sw/share/X11/fonts
24 | fontDir.enable = true;
25 |
26 | # List of primary font paths
27 | fonts = with pkgs; [
28 | ibm-plex
29 | jetbrains-mono
30 | hasklig
31 | hack-font
32 | nerdfonts
33 |
34 | material-design-icons
35 | material-icons
36 |
37 | powerline-fonts
38 | emacs-all-the-icons-fonts
39 |
40 | fira
41 | fira-mono
42 | fira-code
43 | fira-code-symbols
44 |
45 | noto-fonts
46 | noto-fonts-emoji
47 |
48 | roboto
49 | roboto-mono
50 | roboto-slab
51 |
52 | anonymousPro
53 | corefonts
54 | source-code-pro
55 | symbola
56 | ];
57 | };
58 |
59 | themes.fonts = {
60 | main = {
61 | family = "IBM Plex Sans";
62 | size = 12;
63 | };
64 | serif = {
65 | family = "IBM Plex Serif";
66 | size = 12;
67 | };
68 | mono = {
69 | family = "IBM Plex Mono";
70 | size = 12;
71 | };
72 | };
73 | }
74 |
--------------------------------------------------------------------------------
/modules/x11/autorandr/home/setup:
--------------------------------------------------------------------------------
1 | DP-2 00ffffffffffff0061a9443400000000281d0104b55021783b64f5ad5049a322135054adcf00714f81c0814081809500a9c0b300d1c0226870a0d0a02950302035001d4e3100001a20fd70a0d0a03c50302035001d4e3100001e000000fd003090a0a03c010a202020202020000000fc004d69204d6f6e69746f720a20200295020322f44e010203040590111213141f3f5f612309070783010000e6060701605d29023a801871382d40582c96001d4e3100001e20ac00a0a0382d40302035001d4e3100001ef0d270a0d0a03c50302035001d4e3100001ea348b86861a03250304035001d4e3100001ef57c70a0d0a02950302035001d4e3100001e000000a77012790000030014bf2f01046f0d9f002f001f009f053b000280040007000a0881000804000402100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e190
2 | HDMI-1 00ffffffffffff0022f05428000000802413010380301e78eedc55a359489e24115054a56b80814081809500a900b300a9400101010121399030621a274068b03600d9281100001c000000fd00304c185311000a202020202020000000fc0048502032323239680a20202020000000ff00334351393336344e46330a20200112020329f1230907074f84020301060715161112101f131405830100006c030c001000b82dc0010101018c0ad08a20e02d10103e9600d90a110000188c0ad090204031200c405500d90a11000018011d8018711c1620582c2500d90a1100009e011d80d0721c1620102c2580d90a1100009e000000000000000000000000000096
3 | HDMI-2 00ffffffffffff0026cd0c56550200003412010380341d782a6041a6564a9c25125054bfef00714f814081809500950fb30001010101023a801871382d40582c450009252100001e000000fd00384c1e5311000a202020202020000000fc00504c3234303948440a20202020000000ff0031313030354d3843303035393701f102031ff14c010203040510111213141e1f230907018301000065030c0010008c0ad08a20e02d10103e9600092521000018011d007251d01e206e28550009252100001e8c0ad090204031200c4055000925210000180000000000000000000000000000000000000000000000000000000000000000000000000000000000004f
4 |
--------------------------------------------------------------------------------
/modules/apps/shell/zsh.nix:
--------------------------------------------------------------------------------
1 | { pkgs, inputs, ... }:
2 |
3 | let
4 | initExtra = builtins.readFile "${inputs.zsh-config}/zshrc";
5 | in {
6 | environment.sessionVariables.SHELL = "zsh";
7 | # Symlink /share/zsh
8 | environment.pathsToLink = [ "/share/zsh" ];
9 |
10 | home-manager.users.vyorkin = {
11 | home.file = {
12 | ".zshenv" = { source = "${inputs.zsh-config}/zshenv"; };
13 | ".zprofile" = { source = "${inputs.zsh-config}/zprofile"; };
14 | ".zlogin" = { source = "${inputs.zsh-config}/zlogin"; };
15 | ".zlogout" = { source = "${inputs.zsh-config}/zlogout"; };
16 | ".zconfig" = { source = "${inputs.zsh-config}/zconfig"; };
17 | };
18 |
19 | programs.zsh = {
20 | enable = true;
21 | enableCompletion = true;
22 |
23 | history = rec {
24 | expireDuplicatesFirst = true;
25 | size = 1000000;
26 | save = size;
27 | };
28 |
29 | sessionVariables = {
30 | FZF_MARKS_JUMP = "^x^j";
31 | ZSH_PLUGINS_ALIAS_TIPS_TEXT = "> ";
32 |
33 | GEOMETRY_PROMPT_SUFFIX="$(if [ ! -z $IN_NIX_SHELL ]; then echo ' [nix]'; fi)";
34 | GEOMETRY_GIT_SYMBOL_STASHES="x"; # change the git stash indicator to `x`
35 | GEOMETRY_GIT_GREP="rg"; # define which grep-like tool to use (By default it looks for rg, ag and finally grep)
36 | GEOMETRY_GIT_NO_COMMITS_MESSAGE=""; # hide the 'no commits' message in new repositories
37 | GEOMETRY_GIT_TIME_DETAILED=true; # show full time (e.g. `12h 30m 53s`) instead of the coarsest interval (e.g. `12h`)
38 | };
39 |
40 | inherit initExtra;
41 | };
42 |
43 | # Enable zsh integration for broot.
44 | # See: https://github.com/Canop/broot
45 | programs.broot.enableZshIntegration = true;
46 | };
47 | }
48 |
--------------------------------------------------------------------------------
/modules/boot/default.nix:
--------------------------------------------------------------------------------
1 | { lib, pkgs, ... }:
2 |
3 | let angular_plymouth_theme = pkgs.callPackage ./plymouth/angular.nix { };
4 | in {
5 | boot = {
6 | loader = {
7 | # Use the systemd-boot EFI boot loader
8 | systemd-boot.enable = pkgs.system == "x86_64-linux";
9 |
10 | efi.canTouchEfiVariables = true;
11 |
12 | grub = {
13 | # Disable the GNU GRUB boot loader.
14 | enable = lib.mkForce false;
15 | # Automatically add other operating system to the grub menu
16 | useOSProber = true;
17 | };
18 | };
19 |
20 | # Enable plymouth boot splash screen
21 | plymouth = {
22 | enable = true;
23 | theme = "angular";
24 | themePackages = [ angular_plymouth_theme ];
25 | };
26 |
27 | # Delete all files in /tmp during boot
28 | cleanTmpDir = true;
29 |
30 | # Use the latest Linux kernel packages
31 | kernelPackages = pkgs.linuxPackages_latest;
32 |
33 | # quite - Don't show terminal output unless an error occurs
34 | # splash - Show splash screen theme (if available)
35 | # pti on/off - Enable/disable Page Table Isolation (PTI).
36 | # Protects from attacks on the shared user/kernel address space,
37 | # but with a cost of a little perfomance overhead
38 | kernelParams = [ "quiet" "splash" ];
39 |
40 | # All Kernel Messages with a log level smaller
41 | # than this setting will be printed to the console
42 | consoleLogLevel = 3;
43 |
44 | kernel = {
45 | # Enable all functions of sysrq. It is a magical key combo
46 | # you can hit which the kernel will respond to regardless of
47 | # whatever else it is doing, unless it is completely locked up.
48 | # On x86: ALT+PSc/SRq+
49 | sysctl."kernel/sysrq" = 1;
50 | };
51 | };
52 | }
53 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/shadow.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | spacing: 1;
6 | background-color: rgba (43, 48, 59, 100%);
7 | text-color: rgba (255, 255, 255, 100%);
8 | }
9 | #window {
10 | border: 0;
11 | padding: 20;
12 | }
13 | #mainbox {
14 | border: 0;
15 | padding: 10;
16 | }
17 | #message {
18 | border: 1;
19 | padding: 10 2% 10;
20 | }
21 | #listview {
22 | padding: 10 2% 10;
23 | spacing: 2;
24 | }
25 | #element {
26 | padding: 5 5 9;
27 | radius: 4;
28 | }
29 | #element.selected {
30 | text-color: rgba (23, 147, 209, 100%);
31 | background-color: rgba (42, 46, 58, 100%);
32 | border: 0 1 3;
33 | border-radius: 2;
34 | border-color: rgba (10, 10, 10, 100%);
35 | }
36 | #scrollbar {
37 | width: 4;
38 | handle-width: 8;
39 | }
40 | #sidebar {
41 | padding: 1% 2% 2%;
42 | }
43 | #button {
44 | padding: 8 0 8;
45 | }
46 | #button.selected {
47 | padding: 8 0 8;
48 | text-color: rgba (23, 147, 209, 100%);
49 | background-color: rgba (42, 46, 58, 100%);
50 | border: 0 1 3;
51 | border-radius: 2;
52 | border-color: rgba (10, 10, 10, 100%);
53 | }
54 | #inputbar {
55 | border: 0 1 3;
56 | border-radius: 2;
57 | border-color: rgba (10, 10, 10, 100%);
58 | background-color: rgba (42, 46, 58, 100%);
59 | padding: 0% 1.8% 0% 0.2%;
60 | }
61 | #entry {
62 | spacing: 5;
63 | border: 0;
64 | padding: 5 5 5;
65 | border-radius: 4;
66 | background-color: rgba (42, 46, 58, 100%);
67 | border-color: rgba (0, 0, 0, 100%);
68 | }
69 | #prompt {
70 | spacing: 0;
71 | border: 0;
72 | border-radius: 4;
73 | padding: 5 5 5;
74 | background-color: rgba (42, 46, 58, 100%);
75 | text-color: rgba (255, 255, 255, 100%);
76 | border-color: rgba (0, 0, 0, 100%);
77 | }
78 |
--------------------------------------------------------------------------------
/modules/apps/pentest/backdoor.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.home.packages = with pkgs; [
5 | # Bidirectional data stream tunnelled in HTTP requests
6 | httptunnel
7 |
8 | # Patch 32/64 bits ELF & win32/64 binaries with shellcode
9 | # backdoor-factory
10 |
11 | # Stealth backdooring tool
12 | # cymothoa
13 |
14 | # Netcat clone with encryption
15 | # dbd
16 |
17 | # TCP over DNS tunnel client and server
18 | # dns2tcp
19 |
20 | # Convert EXE to bat
21 | # exe2hexbat
22 |
23 | # Tool for tunneling IPv4 data through a DNS server
24 | iodine
25 |
26 | # Collection of injectable web files
27 | # laudanum
28 |
29 | # Uses admin rights on Windows to display passwords in plaintext
30 | # mimikatz
31 |
32 | # Teredo IPv6 tunneling through NATs
33 | miredo
34 |
35 | # Collection of PowerShell scripts and payloads
36 | # nishang
37 |
38 | # PowerShell Post-Exploitation Framework
39 | # powersploit
40 |
41 | # Redirects connections through proxy servers
42 | proxychains
43 |
44 | # Tunnel TCP connections over ICMP packets
45 | # ptunnel
46 |
47 | # Secure backdoor for linux and windows
48 | # sbd
49 |
50 | # shellter
51 |
52 | # Universal SSL tunnel for network daemons
53 | # stunnel4
54 |
55 | # Tunnel UDP packets over a TCP connection
56 | udptunnel
57 |
58 | # Generates payloads to bypass anti-virus solutions
59 | # veil
60 |
61 | # Web backdoor cookie script kit
62 | # webacoo
63 |
64 | # Stealth tiny web shell
65 | # weevely
66 |
67 | # Tool that allows any client behind a NAT to communicate
68 | # with a server behind a separate NAT with *no* port
69 | # forwarding and *no* DMZ setup on any routers in order to
70 | # directly communicate with each other
71 | pwnat
72 | ];
73 | }
74 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/default.nix:
--------------------------------------------------------------------------------
1 |
2 | p: c:
3 | with p;
4 | let
5 | iconfont = "Material Icons";
6 | buildHaskellScript = name: script:
7 | stdenv.mkDerivation {
8 | inherit name;
9 | src = script;
10 | unpackPhase = "true";
11 | buildInputs = [ghc];
12 | buildPhase = "ghc -o $out $src";
13 | installPhase = "true";
14 | ICONFONT = iconfont;
15 | };
16 | writeScript = name: script:
17 | writeTextFile {
18 | inherit name;
19 | text = callPackage script {
20 | inherit iconfont;
21 | config = c;
22 | };
23 | executable = true;
24 | checkPhase =
25 | "${bash}/bin/bash -n $src || ${python3}/bin/python3 -m compileall $src";
26 | };
27 | in
28 | builtins.mapAttrs buildHaskellScript {
29 | free = ./free.hs;
30 | temperature = ./temperature.hs;
31 | network = ./network.hs;
32 | } // builtins.mapAttrs writeScript {
33 | battery = ./battery.nix;
34 | brightness = ./brightness.nix;
35 | emacs = ./emacs.nix;
36 | bluetooth = ./bluetooth.nix;
37 | connections = ./connections.nix;
38 | weather = ./weather.nix;
39 | sound = ./sound.nix;
40 | cpu = {...}: ''top -b -n1 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }' '';
41 | freq = {...}: ''echo $(${pkgs.bc}/bin/bc -l <<< "scale=2; `cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq|sort|tail -1`/1000000") GHz'';
42 | df = {...}: ''echo '' `df / | tail -1 | grep -o '..%'`'';
43 | date = {...}: "${pkgs.coreutils}/bin/date +' %a %y-%m-%d'";
44 | time = {...}: "${pkgs.coreutils}/bin/date +' %T'";
45 | nixos = {...}: "echo -n ''; cat /run/current-system/nixos-version | cut -d. -f3";
46 | #temperature = ./temperature.nix;
47 | #free = ./free.nix;
48 | }
49 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/blocks/battery:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | readarray -t DEVICES <<< "$(upower -e | grep -v "DisplayDevice$")"
4 |
5 | DELIM=""
6 | STATUS=0
7 |
8 | for dev in "''${DEVICES[@]}"; do
9 | INFO="$(upower -i "$dev")"
10 | PERCENTAGE="$(echo "$INFO" | grep 'percentage:' | grep -o '[[:digit:]]*')"
11 | if [ -n "$PERCENTAGE" ]; then
12 | TIME="$(echo "$INFO" | grep 'time to' | tr -s ' ' | cut -d' ' -f5-6)"
13 | STATE="$(echo "$INFO" | grep 'state:' | tr -s ' ' | cut -d' ' -f3)"
14 | if [[ "x$STATE" == "xfully-charged" ]] || [[ "x$STATE" == "xcharging" ]]; then
15 | case $PERCENTAGE in
16 | [2-3]*) icon=;;
17 | [4-5]*) icon=;;
18 | [6-7]*) icon=;;
19 | [8-9]*) icon=;;
20 | 100) icon=;;
21 | *) icon=;;
22 | esac
23 | else
24 | if [[ "$PERCENTAGE" -lt 10 ]]; then
25 | STATUS=33
26 | fi
27 | case $PERCENTAGE in
28 | 1?) icon=;;
29 | 2?) icon=;;
30 | 3?) icon=;;
31 | 4?) icon=;;
32 | 5?) icon=;;
33 | 6?) icon=;;
34 | 7?) icon=;;
35 | 8?) icon=;;
36 | 9?) icon=;;
37 | 100) icon=;;
38 | *) icon=;;
39 | esac
40 | fi
41 | if [ -n "$DELIM" ]; then
42 | echo -n "| "
43 | else
44 | DELIM="yes"
45 | fi
46 | echo -n ""
47 | if echo "$INFO" | grep 'native-path:' | grep bluez > /dev/null; then
48 | echo -n ""
49 | fi
50 | echo -n "$icon"
51 | if [ -n "$BLOCK_BUTTON" ]; then
52 | echo -n " $PERCENTAGE% "
53 | if [ -n "$TIME" ]; then echo -n "($TIME) "; fi
54 | fi
55 | fi
56 | done
57 |
58 | echo
59 | exit "$STATUS"
60 |
--------------------------------------------------------------------------------
/modules/dev/haskell/hlint.yaml:
--------------------------------------------------------------------------------
1 | # HLint configuration file
2 | # https://github.com/ndmitchell/hlint
3 | ##########################
4 |
5 | # This file contains a template configuration file, which is typically
6 | # placed as .hlint.yaml in the root of your project
7 |
8 |
9 | # Specify additional command line arguments
10 | #
11 | # - arguments: [--color, --cpp-simple, -XQuasiQuotes]
12 |
13 |
14 | # Control which extensions/flags/modules/functions can be used
15 | #
16 | # - extensions:
17 | # - default: false # all extension are banned by default
18 | # - name: [PatternGuards, ViewPatterns] # only these listed extensions can be used
19 | # - {name: CPP, within: CrossPlatform} # CPP can only be used in a given module
20 | #
21 | # - flags:
22 | # - {name: -w, within: []} # -w is allowed nowhere
23 | #
24 | # - modules:
25 | # - {name: [Data.Set, Data.HashSet], as: Set} # if you import Data.Set qualified, it must be as 'Set'
26 | # - {name: Control.Arrow, within: []} # Certain modules are banned entirely
27 | #
28 | # - functions:
29 | # - {name: unsafePerformIO, within: []} # unsafePerformIO can only appear in no modules
30 |
31 |
32 | # Add custom hints for this project
33 | #
34 | # Will suggest replacing "wibbleMany [myvar]" with "wibbleOne myvar"
35 | # - error: {lhs: "wibbleMany [x]", rhs: wibbleOne x}
36 |
37 |
38 | # Turn on hints that are off by default
39 | #
40 | # Ban "module X(module X) where", to require a real export list
41 | # - warn: {name: Use explicit module export list}
42 | #
43 | # Replace a $ b $ c with a . b $ c
44 | # - group: {name: dollar, enabled: true}
45 | #
46 | # Generalise map to fmap, ++ to <>
47 | # - group: {name: generalise, enabled: true}
48 |
49 |
50 | # Ignore some builtin hints
51 | # - ignore: {name: Use let}
52 | # - ignore: {name: Use const, within: SpecialModule} # Only within certain modules
53 |
54 |
55 | # Define some custom infix operators
56 | # - fixity: infixr 3 ~^#^~
57 |
58 |
59 | # To generate a suitable file for HLint do:
60 | # $ hlint --default > .hlint.yaml
61 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/onedark.rasi:
--------------------------------------------------------------------------------
1 | /*
2 | * ROFI One Dark
3 | *
4 | * Based on OneDark.vim (https://github.com/joshdick/onedark.vim)
5 | *
6 | * Author: Benjamin Stauss
7 | * User: me-benni
8 | *
9 | */
10 |
11 |
12 | * {
13 | black: #000000;
14 | red: #eb6e67;
15 | green: #95ee8f;
16 | yellow: #f8c456;
17 | blue: #6eaafb;
18 | mangenta: #d886f3;
19 | cyan: #6cdcf7;
20 | emphasis: #50536b;
21 | text: #dfdfdf;
22 | text-alt: #b2b2b2;
23 | fg: #abb2bf;
24 | bg: #282c34;
25 |
26 | spacing: 0;
27 | background-color: transparent;
28 |
29 | font: "Knack Nerd Font 14";
30 | text-color: @text;
31 | }
32 |
33 | window {
34 | transparency: "real";
35 | fullscreen: true;
36 | background-color: #282c34dd;
37 | }
38 |
39 | mainbox {
40 | padding: 30% 30%;
41 | }
42 |
43 | inputbar {
44 | margin: 0px 0px 20px 0px;
45 | children: [prompt, textbox-prompt-colon, entry, case-indicator];
46 | }
47 |
48 | prompt {
49 | text-color: @blue;
50 | }
51 |
52 | textbox-prompt-colon {
53 | expand: false;
54 | str: ":";
55 | text-color: @text-alt;
56 | }
57 |
58 | entry {
59 | margin: 0px 10px;
60 | }
61 |
62 | listview {
63 | spacing: 5px;
64 | dynamic: true;
65 | scrollbar: false;
66 | }
67 |
68 | element {
69 | padding: 5px;
70 | text-color: @text-alt;
71 | highlight: bold #95ee8f; /* green */
72 | border-radius: 3px;
73 | }
74 |
75 | element selected {
76 | background-color: @emphasis;
77 | text-color: @text;
78 | }
79 |
80 | element urgent, element selected urgent {
81 | text-color: @red;
82 | }
83 |
84 | element active, element selected active {
85 | text-color: @purple;
86 | }
87 |
88 | message {
89 | padding: 5px;
90 | border-radius: 3px;
91 | background-color: @emphasis;
92 | border: 1px;
93 | border-color: @cyan;
94 | }
95 |
96 | button selected {
97 | padding: 5px;
98 | border-radius: 3px;
99 | background-color: @emphasis;
100 | }
101 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/temperature.hs:
--------------------------------------------------------------------------------
1 | {-# LANGUAGE TemplateHaskell, OverloadedStrings #-}
2 |
3 | import Prelude hiding (readFile)
4 | import System.Directory
5 | import System.FilePath
6 | import Control.Monad (forM, join)
7 | import System.Posix.Files
8 | import Data.List (isPrefixOf, isInfixOf)
9 | import System.Exit
10 | import Language.Haskell.TH.Syntax (liftString, runIO)
11 | import System.Environment (getEnv)
12 | import Control.Monad.IO.Class (liftIO)
13 | import Data.Maybe (catMaybes)
14 | import Control.Exception
15 | import Data.Text (unpack)
16 | import Data.Text.IO (readFile)
17 |
18 | -- | Traverse from 'top' directory and return all the files by
19 | -- filtering with 'include' predicate.
20 | traverseDir :: FilePath -> (FilePath -> Bool) -> IO [FilePath]
21 | traverseDir top include = do
22 | ds <- getDirectoryContents top
23 | paths <- forM (filter include ds) $ \d -> do
24 | let path = top > d
25 | s <- getFileStatus path
26 | if isDirectory s
27 | then traverseDir path include
28 | else return [path]
29 | return $ concat paths
30 |
31 |
32 |
33 | -- | Get temperatures from hardware sensors in
34 | getTemps :: IO [Int]
35 | getTemps = do
36 | hwmons <- traverseDir "/sys/class/hwmon"
37 | (
38 | \name
39 | -> ("hwmon" `isPrefixOf` name)
40 | || ("temp" `isInfixOf` name) && ("input" `isInfixOf` name)
41 | )
42 | fmap (round . (/1000) . read . unpack) <$> traverse (handle (\e -> do pure (e :: IOException); pure "0") . readFile) hwmons
43 |
44 | -- | Get a symbol corresponding to the temperature
45 | getSymbol :: Integral n => n -> String
46 | getSymbol t
47 | | t < 50 = "\57868" --
48 | | t < 80 = "\57866" --
49 | | otherwise = "\57867" --
50 |
51 | icon :: String -> String
52 | icon s = "" ++ s ++ ""
53 |
54 | main :: IO ()
55 | main = do
56 | maxTemp <- maximum <$> getTemps
57 | putStrLn $ (getSymbol <> show) maxTemp <> "°"
58 | exitWith $ if maxTemp < 80 then ExitSuccess else ExitFailure 33
59 |
--------------------------------------------------------------------------------
/modules/themes.nix:
--------------------------------------------------------------------------------
1 | { config, lib, pkgs, inputs, ... }:
2 | with lib;
3 | let
4 | colorType =
5 | types.addCheck types.str (x: !isNull (builtins.match "[0-9a-fA-F]{6}" x));
6 | color = mkOption { type = colorType; };
7 |
8 | font = {
9 | family = mkOption { type = types.str; };
10 | size = mkOption { type = types.int; };
11 | };
12 |
13 | fromYAML = yaml:
14 | builtins.fromJSON (builtins.readFile (pkgs.stdenv.mkDerivation {
15 | name = "fromYAML";
16 | phases = [ "buildPhase" ];
17 | buildPhase = "echo '${yaml}' | ${pkgs.yaml2json}/bin/yaml2json > $out";
18 | }));
19 | in {
20 | options = {
21 | themes = {
22 | colors = builtins.listToAttrs (map (name: {
23 | inherit name;
24 | value = color;
25 | }) [
26 | "base00"
27 | "base01"
28 | "base02"
29 | "base03"
30 | "base04"
31 | "base05"
32 | "base06"
33 | "base07"
34 | "base08"
35 | "base09"
36 | "base0A"
37 | "base0B"
38 | "base0C"
39 | "base0D"
40 | "base0E"
41 | "base0F"
42 | ]);
43 | fonts = {
44 | main = font;
45 | serif = font;
46 | mono = font;
47 | };
48 | };
49 | };
50 |
51 | config = {
52 | themes.colors = {
53 | # H = 0, S = 0%
54 | base00 = "000000"; # L = 0%
55 | base01 = "333333"; # L = 20%
56 | base02 = "666666"; # L = 40%
57 | base03 = "999999"; # L = 60%
58 | base04 = "cccccc"; # L = 80%
59 | base05 = "ffffff"; # L = 100%
60 | base06 = "e6e6e6"; # L = 90%
61 | base07 = "e6e6e6"; # L = 90%
62 | # L = 50%, S = 50%
63 | base08 = "bf4040"; # H = 0 RED
64 | base09 = "bf8040"; # H = 30 ORANGE
65 | base0A = "bfbf40"; # H = 60 YELLOW-ish
66 | base0B = "80bf40"; # H = 90 GREEN
67 | # Whoa, a lot of hues are green!
68 | base0C = "40bfbf"; # H = 180 TEAL
69 | base0D = "407fbf"; # H = 210 BLUE
70 | base0E = "7f40bf"; # H = 270 PURPLE
71 | base0F = "bf40bf"; # H = 300 MAGENTA
72 | };
73 | };
74 | }
75 |
--------------------------------------------------------------------------------
/modules/dev/haskell/ghci:
--------------------------------------------------------------------------------
1 | -- :set prompt "∀x. x ⊢ "
2 | -- :set prompt "ΠΣ: "
3 |
4 | :set prompt "\ESC[38;5;208m\STXλ>\ESC[m\STX "
5 | :set prompt-cont " | "
6 |
7 | :set stop :list
8 | :set +c
9 | -- :set +t
10 |
11 | -- better errors
12 | :set -ferror-spans -freverse-errors -fprint-expanded-synonyms
13 |
14 | -- work with local .ghci
15 | :def r. const(return ":cmd readFile \".ghci\"")
16 | :def rr \m -> return (":reload " ++ m ++ "\n:r.")
17 | :def >> \x -> return (":! echo \"" ++ x ++ "\" >> .ghci")
18 |
19 | -- Hoogle (cabal install hoogle && hoogle data)
20 | :def hoogle \str -> return $ ":! hoogle search --color --count=10 " ++ show str
21 | :def hoogle-all \str -> return $ ":! hoogle search --color " ++ show str
22 | :def doc \str -> return $ ":! hoogle search --color --info " ++ show str
23 |
24 | -- Pointfree and Pointful (cabal install pointfree pointful)
25 | :def pointfree \str -> return $ ":! pointfree " ++ show str
26 | :def pf \str -> return $ ":! pointfree " ++ show str
27 | :def pointful \str -> return $ ":! pointful " ++ show str
28 |
29 | :def pp1 \_ -> return (":set -package pretty-show\nimport Text.Show.Pretty (pPrint, ppShow)\n:set -interactive-print pPrint")
30 | :def pp2 \_ -> return (":set -package pretty-simple\nimport Text.Pretty.Simple (pPrint)\n:set -interactive-print pPrint")
31 | :def nopp \_ -> return (":set -interactive-print System.IO.print")
32 |
33 | :def x \_ -> return ":set -XOverloadedStrings -XOverloadedLists"
34 |
35 | :def nip const(return ":set -XNoImplicitPrelude\nimport qualified Prelude")
36 |
37 | -- switch to Universum
38 | :def uni const(return ":set -XNoImplicitPrelude\nimport Universum as U\nimport qualified Prelude")
39 |
40 | -- switch to Relude
41 | :def rel const(return ":set -XNoImplicitPrelude\nimport Relude as U\nimport qualified Prelude")
42 |
43 | -- do some Turtle
44 | :def turt const(return ":set -XOverloadedStrings\nimport Turtle\nimport qualified Data.Text as T")
45 |
46 | -- source commands from file
47 | :def source \fn -> return (":cmd readFile " ++ fn)
48 |
49 | -- Some default imports
50 | import Control.Monad
51 | import Control.Applicative
52 | import Control.Arrow
53 |
--------------------------------------------------------------------------------
/modules/workspace/i3/config/scripts/battery.nix:
--------------------------------------------------------------------------------
1 | { upower, bash, iconfont, low_threshold ? 10, ... }: ''
2 | #!${bash}/bin/bash
3 | readarray -t DEVICES <<< "$(${upower}/bin/upower -e | grep -v "DisplayDevice$")"
4 |
5 | DELIM=""
6 | STATUS=0
7 |
8 | for dev in "''${DEVICES[@]}"; do
9 | INFO="$(${upower}/bin/upower -i "$dev")"
10 | PERCENTAGE="$(echo "$INFO" | grep 'percentage:' | grep -o '[[:digit:]]*')"
11 | if [ -n "$PERCENTAGE" ]; then
12 | TIME="$(echo "$INFO" | grep 'time to' | tr -s ' ' | cut -d' ' -f5-6)"
13 | STATE="$(echo "$INFO" | grep 'state:' | tr -s ' ' | cut -d' ' -f3)"
14 | if [[ "x$STATE" == "xfully-charged" ]] || [[ "x$STATE" == "xcharging" ]]; then
15 | case $PERCENTAGE in
16 | [2-3]*) icon=;;
17 | [4-5]*) icon=;;
18 | [6-7]*) icon=;;
19 | [8-9]*) icon=;;
20 | 100) icon=;;
21 | *) icon=;;
22 | esac
23 | else
24 | if [[ "$PERCENTAGE" -lt ${toString low_threshold} ]]; then
25 | STATUS=33
26 | fi
27 | case $PERCENTAGE in
28 | 1?) icon=;;
29 | 2?) icon=;;
30 | 3?) icon=;;
31 | 4?) icon=;;
32 | 5?) icon=;;
33 | 6?) icon=;;
34 | 7?) icon=;;
35 | 8?) icon=;;
36 | 9?) icon=;;
37 | 100) icon=;;
38 | *) icon=;;
39 | esac
40 | fi
41 | if [ -n "$DELIM" ]; then
42 | echo -n "| "
43 | else
44 | DELIM="yes"
45 | fi
46 | echo -n ""
47 | if echo "$INFO" | grep 'native-path:' | grep bluez > /dev/null; then
48 | echo -n ""
49 | fi
50 | echo -n "$icon"
51 | if [ -n "$BLOCK_BUTTON" ]; then
52 | echo -n " $PERCENTAGE% "
53 | if [ -n "$TIME" ]; then echo -n "($TIME) "; fi
54 | fi
55 | fi
56 | done
57 |
58 | echo
59 | exit "$STATUS"
60 | ''
61 |
--------------------------------------------------------------------------------
/modules/apps/terminal/kitty.nix:
--------------------------------------------------------------------------------
1 | { inputs, pkgs, lib, ... }:
2 |
3 | {
4 | home-manager.users.vyorkin.programs.kitty = {
5 | enable = false;
6 |
7 | font = {
8 | package = pkgs.jetbrains-mono;
9 | name = "JetBrains Mono";
10 | };
11 |
12 | extraConfig = ''
13 | include ${inputs.kitty-themes}/themes/Ayu.conf
14 |
15 | font_size 12.0
16 | cursor #EEEEEE
17 | cursor_text_color #DDDDDD
18 | cursor_blink_interval 0.5
19 | scrollback_lines -1
20 | url_color #FFFF00
21 | url_style curly
22 | mouse_hide_wait 3.0
23 | enable_audio_bell no
24 | window_alert_on_bell yes
25 | bell_on_tab yes
26 | clipboard_control write-primary write-clipboard no-append
27 | window_margin_width 5.0
28 | window_padding_width 5.0
29 | inactive_text_alpha 0.9
30 | tab_bar_min_tabs 1
31 | background_opacity 1
32 | dynamic_background_opacity yes
33 | dim_opacity 0.75
34 | '';
35 |
36 | keybindings = {
37 | "kitty_mod+c" = "copy_to_clipboard";
38 | "ctrl+c" = "copy_or_interrupt";
39 |
40 | "kitty_mod+v" = "paste_from_clipboard";
41 | "kitty_mod+s" = "paste_from_selection";
42 | "shift+insert" = "paste_from_selection";
43 | "kitty_mod+o" = "pass_selection_to_program firefox";
44 |
45 | "kitty_mod+k" = "scroll_line_up";
46 | "kitty_mod+j" = "scroll_line_down";
47 |
48 | "kitty_mod+enter" = "new_window";
49 |
50 | "kitty_mod+right" = "next_tab";
51 | "kitty_mod+alt+l" = "next_tab";
52 |
53 | "kitty_mod+left" = "previous_tab";
54 | "kitty_mod+alt+h" = "previous_tab";
55 |
56 | "kitty_mod+t" = "new_tab";
57 | "kitty_mod+q" = "close_tab";
58 |
59 | "kitty_mod+." = "move_tab_forward";
60 | "kitty_mod+," = "move_tab_backward";
61 |
62 | "kitty_mod+alt+t" = "set_tab_title";
63 |
64 | "ctrl+equal" = "change_font_size all +1.0";
65 | "ctrl+minus" = "change_font_size all -1.0";
66 | "ctrl+0" = "change_font_size all 0";
67 |
68 | "kitty_mod+e" = "kitten hints";
69 |
70 | "ctrl+alt+equal" = "set_background_opacity +0.1";
71 | "ctrl+alt+minus" = "set_background_opacity -0.1";
72 | };
73 | };
74 | }
75 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/dark-sidebar.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | background-color: rgba (20, 20, 25, 0%);
6 | text-color: rgba (255, 255, 255, 100%);
7 | }
8 | #window {
9 | fullscreen: true;
10 | location: east;
11 | anchor: east;
12 | orientation: horizontal;
13 | border: 0;
14 | padding: 20;
15 | children: [dummy, mainbox];
16 | }
17 | #dummy {
18 | expand: true;
19 | }
20 | #mainbox {
21 | border: 0;
22 | expand: false;
23 | padding: 10;
24 | background-color: rgba (20, 20, 25, 100%);
25 | }
26 | #message {
27 | border: 1;
28 | padding: 10 2% 10;
29 | background-color: rgba (20, 20, 25, 100%);
30 | }
31 | #listview {
32 | spacing: 2;
33 | padding: 0em 0.4em 0em 1em;
34 | dynamic: false;
35 | lines: 0;
36 | background-color: rgba (20, 20, 25, 100%);
37 | }
38 | #element {
39 | padding: 5 5 9;
40 | radius: 4;
41 | background-color: rgba (20, 20, 25, 100%);
42 | }
43 | #element.selected {
44 | text-color: rgba (23, 147, 209, 100%);
45 | background-color: rgba (15, 15, 20, 100%);
46 | border: 0 2 4;
47 | border-radius: 2;
48 | border-color: rgba (10, 10, 10, 100%);
49 | }
50 | #scrollbar {
51 | width: 4;
52 | handle-width: 8;
53 | }
54 | #sidebar {
55 | padding: 1% 2% 2%;
56 | background-color: rgba (20, 20, 25, 100%);
57 | }
58 | #button {
59 | padding: 8 0 8;
60 | }
61 | #button.selected {
62 | padding: 8 0 8;
63 | text-color: rgba (23, 147, 209, 100%);
64 | background-color: rgba (15, 15, 20, 100%);
65 | border: 0 2 4;
66 | border-radius: 2;
67 | border-color: rgba (10, 10, 10, 100%);
68 | }
69 | #inputbar {
70 | border: 0 1 3;
71 | border-radius: 2;
72 | border-color: rgba (10, 10, 10, 100%);
73 | background-color: rgba (20, 20, 25, 100%);
74 | padding: 0% 1.8% 0% 0.2%;
75 | }
76 | #entry {
77 | spacing: 5;
78 | border: 0;
79 | width: 20em;
80 | padding: 5 5 5;
81 | border-radius: 4;
82 | border-color: rgba (0, 0, 0, 100%);
83 | background-color: rgba (20, 20, 25, 100%);
84 | }
85 | #prompt {
86 | spacing: 0;
87 | border: 0;
88 | border-radius: 4;
89 | padding: 5 5 5;
90 | text-color: rgba (255, 255, 255, 100%);
91 | border-color: rgba (0, 0, 0, 100%);
92 | background-color: rgba (20, 20, 25, 100%);
93 | }
94 |
--------------------------------------------------------------------------------
/modules/apps/web/firefox.nix:
--------------------------------------------------------------------------------
1 | { config, pkgs, lib, ... }:
2 |
3 | let
4 | thm = pkgs.my.thmHash;
5 | fonts = config.themes.fonts;
6 | in {
7 | environment.sessionVariables = {
8 | MOZ_USE_XINPUT2 = "1";
9 | MOZ_DBUS_REMOTE = "1";
10 | };
11 |
12 | home-manager.users.vyorkin = {
13 | programs.browserpass = {
14 | enable = true;
15 | browsers = [ "firefox" ];
16 | };
17 |
18 | programs.firefox = {
19 | enable = true;
20 |
21 | profiles.default = {
22 | id = 0;
23 |
24 | userChrome = ''
25 | toolbar#nav-bar, nav-bar-customization-target {
26 | background: ${thm.base00} !important;
27 | }
28 | '';
29 |
30 | settings = {
31 | "extensions.autoDisableScopes" = 0;
32 |
33 | "browser.search.defaultenginename" = "Google";
34 | "browser.search.selectedEngine" = "Google";
35 | "browser.urlbar.placeholderName" = "Google";
36 | "browser.search.region" = "US";
37 |
38 | "browser.uidensity" = 1;
39 | "browser.search.openintab" = true;
40 | "xpinstall.signatures.required" = false;
41 |
42 | "font.name.monospace.x-western" = "${fonts.mono.family}";
43 | "font.name.sans-serif.x-western" = "${fonts.main.family}";
44 | "font.name.serif.x-western" = "${fonts.serif.family}";
45 |
46 | "browser.newtabpage.activity-stream.feeds.telemetry" = false;
47 | "browser.newtabpage.activity-stream.telemetry" = false;
48 | "browser.ping-centre.telemetry" = false;
49 | "toolkit.telemetry.archive.enabled" = false;
50 | "toolkit.telemetry.bhrPing.enabled" = false;
51 | "toolkit.telemetry.enabled" = false;
52 | "toolkit.telemetry.firstShutdownPing.enabled" = false;
53 | "toolkit.telemetry.hybridContent.enabled" = false;
54 | "toolkit.telemetry.newProfilePing.enabled" = false;
55 | "toolkit.telemetry.reportingpolicy.firstRun" = false;
56 | "toolkit.telemetry.shutdownPingSender.enabled" = false;
57 | "toolkit.telemetry.unified" = false;
58 | "toolkit.telemetry.updatePing.enabled" = false;
59 |
60 | "experiments.activeExperiment" = false;
61 | "experiments.enabled" = false;
62 | "experiments.supported" = false;
63 | "network.allow-experiments" = false;
64 | };
65 | };
66 | };
67 | };
68 | }
69 |
--------------------------------------------------------------------------------
/modules/workspace/laptop-x11/xbindkeysrc:
--------------------------------------------------------------------------------
1 | # For the benefit of emacs users: -*- shell-script -*-
2 | ###########################
3 | # xbindkeys configuration #
4 | ###########################
5 | #
6 | # Version: 1.8.6
7 | #
8 | # If you edit this file, do not forget to uncomment any lines
9 | # that you change.
10 | # The pound(#) symbol may be used anywhere for comments.
11 | #
12 | # To specify a key, you can use 'xbindkeys --key' or
13 | # 'xbindkeys --multikey' and put one of the two lines in this file.
14 | #
15 | # The format of a command line is:
16 | # "command to start"
17 | # associated key
18 | #
19 | #
20 | # A list of keys is in /usr/include/X11/keysym.h and in
21 | # /usr/include/X11/keysymdef.h
22 | # The XK_ is not needed.
23 | #
24 | # List of modifier:
25 | # Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
26 | # Mod3 (CapsLock), Mod4, Mod5 (Scroll).
27 | #
28 |
29 | # The release modifier is not a standard X modifier, but you can
30 | # use it if you want to catch release events instead of press events
31 |
32 | # By defaults, xbindkeys does not pay attention with the modifiers
33 | # NumLock, CapsLock and ScrollLock.
34 | # Uncomment the lines above if you want to pay attention to them.
35 |
36 | #keystate_numlock = enable
37 | #keystate_capslock = enable
38 | #keystate_scrolllock= enable
39 |
40 | #"xterm -geom 50x20+20+20"
41 | # Shift+Mod2+alt + s
42 | #
43 | ## set directly keycode (here control+alt+mod2 + f with my keyboard)
44 | #"xterm"
45 | # alt + c:0x29 + m:4 + mod2
46 | #
47 | ## Control+Shift+a release event starts rxvt
48 | #"rxvt"
49 | # release+control+shift + a
50 | #
51 | ## Control + mouse button 2 release event starts rxvt
52 | #"rxvt"
53 | # Control + b:2 + Release
54 |
55 | "light -U 5"
56 | XF86MonBrightnessDown
57 |
58 | "light -A 5"
59 | XF86MonBrightnessUp
60 |
61 | "amixer -q set Master 2%+ unmute"
62 | XF86AudioRaiseVolume
63 |
64 | "amixer -q set Master 2%- unmute"
65 | XF86AudioLowerVolume
66 |
67 | "amixer -q set Master toggle"
68 | XF86AudioMute
69 |
70 | "amixer set Capture 1%+"
71 | shift + XF86AudioRaiseVolume
72 |
73 | "amixer set Capture 1%-"
74 | shift + XF86AudioLowerVolume
75 |
76 | "amixer set Capture 1+ toggle"
77 | shift + XF86AudioMute
78 |
79 | "synclient TouchpadOff=0"
80 | XF86TouchpadOn
81 |
82 | "synclient TouchpadOff=1"
83 | XF86TouchpadOff
84 |
85 | ##################################
86 | # End of xbindkeys configuration #
87 | ##################################
88 |
--------------------------------------------------------------------------------
/modules/nix.nix:
--------------------------------------------------------------------------------
1 | { lib, pkgs, inputs, ... }:
2 |
3 | {
4 | environment.etc.nixpkgs.source = inputs.nixpkgs;
5 |
6 | nix = {
7 | # Needed for nix-shell to work without channels
8 | nixPath = lib.mkForce [ "nixpkgs=/etc/nixpkgs" ];
9 |
10 | # Enable nix-flakes
11 | registry = {
12 | self.flake = inputs.self;
13 | emacs.flake = inputs.emacs;
14 | };
15 | package = inputs.nix.packages.x86_64-linux.nix;
16 |
17 | extraOptions = ''
18 | experimental-features = nix-command flakes
19 |
20 | keep-outputs = true
21 | keep-derivations = true
22 | cores = 4
23 | connect-timeout = 3
24 | max-jobs = 6
25 | min-free = ${toString (500 * 1024 * 1024)}
26 | max-free = ${toString (5 * 1024 * 1024 * 1024)}
27 | '';
28 |
29 | # Enable automatic garbage collection
30 | gc = {
31 | automatic = true;
32 | dates = "weekly";
33 | options = "--delete-older-than 30d";
34 | };
35 |
36 | optimise = {
37 | # Automatically run the nix optimiser at a specific time
38 | automatic = true;
39 | dates = [ "07:00" ];
40 | };
41 |
42 | # Number of nixbld user accounts created to perform secure
43 | # concurrent builds. If you receive an error message saying that
44 | # "all build users are currently in use", you should increase this value
45 | nrBuildUsers = 16;
46 |
47 | settings = {
48 | # Detect files in the store that have identical contents,
49 | # and replace them with hard links to a single copy.
50 | auto-optimise-store = true;
51 |
52 | trusted-substituters = [
53 | "http://hydra.nixos.org"
54 | "http://cache.nixos.org"
55 |
56 | "https://nix-community.cachix.org"
57 | "https://nixpkgs-wayland.cachix.org"
58 | "https://nixcache.reflex-frp.org"
59 | "https://nixfmt.cachix.org"
60 | "https://all-hies.cachix.org"
61 | "https://iohk.cachix.org"
62 | "https://ghcide-nix.cachix.org"
63 | "https://cache.dhall-lang.org"
64 | "https://dhall.cachix.org"
65 | "https://bs-platform.cachix.org"
66 | ];
67 |
68 | trusted-public-keys = [
69 | "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
70 | "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
71 | "cache.dhall-lang.org:I9/H18WHd60olG5GsIjolp7CtepSgJmM2CsO813VTmM="
72 | "dhall.cachix.org-1:8laGciue2JBwD49ICFtg+cIF8ddDaW7OFBjDb/dHEAo="
73 | ];
74 | };
75 | };
76 | }
77 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/gruvbox-dark.rasi:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Rofi color theme
3 |
4 | Based on the Gruvbox color scheme for Vim by morhetz
5 | https://github.com/morhetz/gruvbox
6 |
7 | File: gruvbox-dark.rasi
8 | Desc: Gruvbox dark color theme for Rofi
9 | Author: bardisty
10 | Source: https://github.com/bardisty/gruvbox-rofi
11 | Modified: Mon Feb 12 2018 04:08:43 PST -0800
12 | ========================================================================== */
13 |
14 | * {
15 | /* Theme settings */
16 | highlight: bold italic;
17 | scrollbar: true;
18 |
19 | /* Gruvbox dark colors */
20 | gruvbox-dark-bg0: #282828;
21 | gruvbox-dark-bg0-soft: #32302f;
22 | gruvbox-dark-bg3: #665c54;
23 | gruvbox-dark-fg0: #fbf1c7;
24 | gruvbox-dark-fg1: #ebdbb2;
25 | gruvbox-dark-red-dark: #cc241d;
26 | gruvbox-dark-red-light: #fb4934;
27 | gruvbox-dark-yellow-dark: #d79921;
28 | gruvbox-dark-yellow-light: #fabd2f;
29 | gruvbox-dark-gray: #a89984;
30 |
31 | /* Theme colors */
32 | background: @gruvbox-dark-bg0;
33 | background-color: @background;
34 | foreground: @gruvbox-dark-fg1;
35 | border-color: @gruvbox-dark-gray;
36 | separatorcolor: @border-color;
37 | scrollbar-handle: @border-color;
38 |
39 | normal-background: @background;
40 | normal-foreground: @foreground;
41 | alternate-normal-background: @gruvbox-dark-bg0-soft;
42 | alternate-normal-foreground: @foreground;
43 | selected-normal-background: @gruvbox-dark-bg3;
44 | selected-normal-foreground: @gruvbox-dark-fg0;
45 |
46 | active-background: @gruvbox-dark-yellow-dark;
47 | active-foreground: @background;
48 | alternate-active-background: @active-background;
49 | alternate-active-foreground: @active-foreground;
50 | selected-active-background: @gruvbox-dark-yellow-light;
51 | selected-active-foreground: @active-foreground;
52 |
53 | urgent-background: @gruvbox-dark-red-dark;
54 | urgent-foreground: @background;
55 | alternate-urgent-background: @urgent-background;
56 | alternate-urgent-foreground: @urgent-foreground;
57 | selected-urgent-background: @gruvbox-dark-red-light;
58 | selected-urgent-foreground: @urgent-foreground;
59 | }
60 |
61 | @import "gruvbox-common.inc"
62 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/gruvbox-dark-soft.rasi:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Rofi color theme
3 |
4 | Based on the Gruvbox color scheme for Vim by morhetz
5 | https://github.com/morhetz/gruvbox
6 |
7 | File: gruvbox-dark-soft.rasi
8 | Desc: Gruvbox dark (soft contrast) color theme for Rofi
9 | Author: bardisty
10 | Source: https://github.com/bardisty/gruvbox-rofi
11 | Modified: Mon Feb 12 2018 06:04:37 PST -0800
12 | ========================================================================== */
13 |
14 | * {
15 | /* Theme settings */
16 | highlight: bold italic;
17 | scrollbar: true;
18 |
19 | /* Gruvbox dark colors */
20 | gruvbox-dark-bg0-soft: #32302f;
21 | gruvbox-dark-bg1: #3c3836;
22 | gruvbox-dark-bg3: #665c54;
23 | gruvbox-dark-fg0: #fbf1c7;
24 | gruvbox-dark-fg1: #ebdbb2;
25 | gruvbox-dark-red-dark: #cc241d;
26 | gruvbox-dark-red-light: #fb4934;
27 | gruvbox-dark-yellow-dark: #d79921;
28 | gruvbox-dark-yellow-light: #fabd2f;
29 | gruvbox-dark-gray: #a89984;
30 |
31 | /* Theme colors */
32 | background: @gruvbox-dark-bg0-soft;
33 | background-color: @background;
34 | foreground: @gruvbox-dark-fg1;
35 | border-color: @gruvbox-dark-gray;
36 | separatorcolor: @border-color;
37 | scrollbar-handle: @border-color;
38 |
39 | normal-background: @background;
40 | normal-foreground: @foreground;
41 | alternate-normal-background: @gruvbox-dark-bg1;
42 | alternate-normal-foreground: @foreground;
43 | selected-normal-background: @gruvbox-dark-bg3;
44 | selected-normal-foreground: @gruvbox-dark-fg0;
45 |
46 | active-background: @gruvbox-dark-yellow-dark;
47 | active-foreground: @background;
48 | alternate-active-background: @active-background;
49 | alternate-active-foreground: @active-foreground;
50 | selected-active-background: @gruvbox-dark-yellow-light;
51 | selected-active-foreground: @active-foreground;
52 |
53 | urgent-background: @gruvbox-dark-red-dark;
54 | urgent-foreground: @background;
55 | alternate-urgent-background: @urgent-background;
56 | alternate-urgent-foreground: @urgent-foreground;
57 | selected-urgent-background: @gruvbox-dark-red-light;
58 | selected-urgent-foreground: @urgent-foreground;
59 | }
60 |
61 | @import "gruvbox-common.inc"
62 |
63 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/gruvbox-light.rasi:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Rofi color theme
3 |
4 | Based on the Gruvbox color scheme for Vim by morhetz
5 | https://github.com/morhetz/gruvbox
6 |
7 | File: gruvbox-light.rasi
8 | Desc: Gruvbox light color theme for rofi
9 | Author: bardisty
10 | Source: https://github.com/bardisty/gruvbox-rofi
11 | Modified: Mon Feb 12 2018 06:06:06 PST -0800
12 | ========================================================================== */
13 |
14 | * {
15 | /* Theme settings */
16 | highlight: bold italic;
17 | scrollbar: true;
18 |
19 | /* Gruvbox light colors */
20 | gruvbox-light-bg0: #fbf1c7;
21 | gruvbox-light-bg0-soft: #f2e5bc;
22 | gruvbox-light-bg2: #d5c4a1;
23 | gruvbox-light-fg0: #282828;
24 | gruvbox-light-fg1: #3c3836;
25 | gruvbox-light-gray: #7c6f64;
26 | gruvbox-light-red-dark: #9d0006;
27 | gruvbox-light-red-light: #cc241d;
28 | gruvbox-light-yellow-dark: #b57614;
29 | gruvbox-light-yellow-light: #d79921;
30 |
31 | /* Theme colors */
32 | background: @gruvbox-light-bg0;
33 | background-color: @background;
34 | foreground: @gruvbox-light-fg1;
35 | border-color: @gruvbox-light-gray;
36 | separatorcolor: @border-color;
37 | scrollbar-handle: @border-color;
38 |
39 | normal-background: @background;
40 | normal-foreground: @foreground;
41 | alternate-normal-background: @gruvbox-light-bg0-soft;
42 | alternate-normal-foreground: @foreground;
43 | selected-normal-background: @gruvbox-light-bg2;
44 | selected-normal-foreground: @gruvbox-light-fg0;
45 |
46 | active-background: @gruvbox-light-yellow-dark;
47 | active-foreground: @background;
48 | alternate-active-background: @active-background;
49 | alternate-active-foreground: @active-foreground;
50 | selected-active-background: @gruvbox-light-yellow-light;
51 | selected-active-foreground: @active-foreground;
52 |
53 | urgent-background: @gruvbox-light-red-dark;
54 | urgent-foreground: @background;
55 | alternate-urgent-background: @urgent-background;
56 | alternate-urgent-foreground: @urgent-foreground;
57 | selected-urgent-background: @gruvbox-light-red-light;
58 | selected-urgent-foreground: @urgent-foreground;
59 | }
60 |
61 | @import "gruvbox-common.inc"
62 |
63 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/gruvbox-light-hard.rasi:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Rofi color theme
3 |
4 | Based on the Gruvbox color scheme for Vim by morhetz
5 | https://github.com/morhetz/gruvbox
6 |
7 | File: gruvbox-light-hard.rasi
8 | Desc: Gruvbox light (hard contrast) color theme for Rofi
9 | Author: bardisty
10 | Source: https://github.com/bardisty/gruvbox-rofi
11 | Modified: Mon Feb 12 2018 06:04:48 PST -0800
12 | ========================================================================== */
13 |
14 | * {
15 | /* Theme settings */
16 | highlight: bold italic;
17 | scrollbar: true;
18 |
19 | /* Gruvbox light colors */
20 | gruvbox-light-bg0-hard: #f9f5d7;
21 | gruvbox-light-bg0: #fbf1c7;
22 | gruvbox-light-bg1: #ebdbb2;
23 | gruvbox-light-fg0: #282828;
24 | gruvbox-light-fg1: #3c3836;
25 | gruvbox-light-red-dark: #9d0006;
26 | gruvbox-light-red-light: #cc241d;
27 | gruvbox-light-yellow-dark: #b57614;
28 | gruvbox-light-yellow-light: #d79921;
29 | gruvbox-light-gray: #7c6f64;
30 |
31 | /* Theme colors */
32 | background: @gruvbox-light-bg0-hard;
33 | background-color: @background;
34 | foreground: @gruvbox-light-fg1;
35 | border-color: @gruvbox-light-gray;
36 | separatorcolor: @border-color;
37 | scrollbar-handle: @border-color;
38 |
39 | normal-background: @background;
40 | normal-foreground: @foreground;
41 | alternate-normal-background: @gruvbox-light-bg0;
42 | alternate-normal-foreground: @foreground;
43 | selected-normal-background: @gruvbox-light-bg1;
44 | selected-normal-foreground: @gruvbox-light-fg0;
45 |
46 | active-background: @gruvbox-light-yellow-dark;
47 | active-foreground: @background;
48 | alternate-active-background: @active-background;
49 | alternate-active-foreground: @active-foreground;
50 | selected-active-background: @gruvbox-light-yellow-light;
51 | selected-active-foreground: @active-foreground;
52 |
53 | urgent-background: @gruvbox-light-red-dark;
54 | urgent-foreground: @background;
55 | alternate-urgent-background: @urgent-background;
56 | alternate-urgent-foreground: @urgent-foreground;
57 | selected-urgent-background: @gruvbox-light-red-light;
58 | selected-urgent-foreground: @urgent-foreground;
59 | }
60 |
61 | @import "gruvbox-common.inc"
62 |
63 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/gruvbox-light-soft.rasi:
--------------------------------------------------------------------------------
1 | /* ==========================================================================
2 | Rofi color theme
3 |
4 | Based on the Gruvbox color scheme for Vim by morhetz
5 | https://github.com/morhetz/gruvbox
6 |
7 | File: gruvbox-light-soft.rasi
8 | Desc: Gruvbox light (soft contrast) color theme for Rofi
9 | Author: bardisty
10 | Source: https://github.com/bardisty/gruvbox-rofi
11 | Modified: Mon Feb 12 2018 06:05:38 PST -0800
12 | ========================================================================== */
13 |
14 | * {
15 | /* Theme settings */
16 | highlight: bold italic;
17 | scrollbar: true;
18 |
19 | /* Gruvbox light colors */
20 | gruvbox-light-bg0-soft: #f2e5bc;
21 | gruvbox-light-bg1: #ebdbb2;
22 | gruvbox-light-bg2: #d5c4a1;
23 | gruvbox-light-fg0: #282828;
24 | gruvbox-light-fg1: #3c3836;
25 | gruvbox-light-red-dark: #9d0006;
26 | gruvbox-light-red-light: #cc241d;
27 | gruvbox-light-yellow-dark: #b57614;
28 | gruvbox-light-yellow-light: #d79921;
29 | gruvbox-light-gray: #7c6f64;
30 |
31 | /* Theme colors */
32 | background: @gruvbox-light-bg0-soft;
33 | background-color: @background;
34 | foreground: @gruvbox-light-fg1;
35 | border-color: @gruvbox-light-gray;
36 | separatorcolor: @border-color;
37 | scrollbar-handle: @border-color;
38 |
39 | normal-background: @background;
40 | normal-foreground: @foreground;
41 | alternate-normal-background: @gruvbox-light-bg1;
42 | alternate-normal-foreground: @foreground;
43 | selected-normal-background: @gruvbox-light-bg2;
44 | selected-normal-foreground: @gruvbox-light-fg0;
45 |
46 | active-background: @gruvbox-light-yellow-dark;
47 | active-foreground: @background;
48 | alternate-active-background: @active-background;
49 | alternate-active-foreground: @active-foreground;
50 | selected-active-background: @gruvbox-light-yellow-light;
51 | selected-active-foreground: @active-foreground;
52 |
53 | urgent-background: @gruvbox-light-red-dark;
54 | urgent-foreground: @background;
55 | alternate-urgent-background: @urgent-background;
56 | alternate-urgent-foreground: @urgent-foreground;
57 | selected-urgent-background: @gruvbox-light-red-light;
58 | selected-urgent-foreground: @urgent-foreground;
59 | }
60 |
61 | @import "gruvbox-common.inc"
62 |
63 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/material.rasi:
--------------------------------------------------------------------------------
1 | /*
2 | * ROFI color theme
3 | *
4 | * Based on Base16 Material Color Scheme (https://github.com/ntpeters/base16-materialtheme-scheme)
5 | *
6 | * User: Tomaszal
7 | * Copyright: Tomas Zaluckij
8 | */
9 |
10 | * {
11 | base00: #263238;
12 | base01: #2E3C43;
13 | base02: #314549;
14 | base03: #546E7A;
15 | base04: #B2CCD6;
16 | base05: #EEFFFF;
17 | base06: #EEFFFF;
18 | base07: #FFFFFF;
19 | base08: #F07178;
20 | base09: #F78C6C;
21 | base0A: #FFCB6B;
22 | base0B: #C3E88D;
23 | base0C: #89DDFF;
24 | base0D: #82AAFF;
25 | base0E: #C792EA;
26 | base0F: #FF5370;
27 |
28 | /*base0D: #00BCD4;*/
29 |
30 | spacing: 0;
31 | background-color: transparent;
32 |
33 | font: "Roboto Mono 13";
34 | }
35 |
36 | window {
37 | transparency: "real";
38 | /*fullscreen: true;*/
39 | background-color: #263238CC; /*base00 + CC (80% opacity)*/
40 | }
41 |
42 | mainbox {
43 | children: [inputbar, message, sidebar, listview];
44 | spacing: 30px;
45 | /*margin: 20%;*/
46 | padding: 30px 0;
47 | border: 1px;
48 | border-color: @base0D;
49 | }
50 |
51 | inputbar {
52 | padding: 0 30px;
53 | children: [prompt, textbox-prompt-colon, entry, case-indicator];
54 | }
55 |
56 | prompt {
57 | text-color: @base0D;
58 | }
59 |
60 | textbox-prompt-colon {
61 | expand: false;
62 | str: ":";
63 | margin: 0 1ch 0 0;
64 | text-color: @base0D;
65 | }
66 |
67 | entry {
68 | text-color: @base07;
69 | }
70 |
71 | case-indicator {
72 | text-color: @base0F;
73 | }
74 |
75 | sidebar, message {
76 | border: 1px 0;
77 | border-color: @base0D;
78 | }
79 |
80 | button, textbox {
81 | background-color: @base03;
82 | text-color: @base07;
83 | padding: 5px;
84 | }
85 |
86 | button selected {
87 | background-color: @base0D;
88 | }
89 |
90 | listview {
91 | scrollbar: true;
92 | margin: 0 10px 0 30px;
93 | }
94 |
95 | scrollbar {
96 | background-color: @base03;
97 | handle-color: @base0D;
98 | handle-width: 10px;
99 | border: 0 1px;
100 | border-color: @base0D;
101 | margin: 0 0 0 20px;
102 | }
103 |
104 | element {
105 | padding: 5px;
106 | highlight: bold underline;
107 | }
108 |
109 | element normal {
110 | background-color: transparent;
111 | }
112 |
113 | element selected {
114 | background-color: @base0D;
115 | }
116 |
117 | element alternate {
118 | /*background-color: @base03;*/
119 | }
120 |
121 | element normal normal, element selected normal, element alternate normal {
122 | text-color: @base07;
123 | }
124 |
125 | element normal urgent, element selected urgent, element alternate urgent {
126 | text-color: @base0F;
127 | }
128 |
129 | element normal active, element selected active, element alternate active {
130 | text-color: @base0B;
131 | }
132 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/sidebar.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * User: qball
3 | * Copyright: Dave Davenport
4 | */
5 | * {
6 | text-color: #ffeedd;
7 | background-color: rgba(0,0,0,0);
8 | dark: #1c1c1c;
9 | // Black
10 | black: #3d352a;
11 | lightblack: #554444;
12 | //
13 | // Red
14 | red: #cd5c5c;
15 | lightred: #cc5533;
16 | //
17 | // Green
18 | green: #86af80;
19 | lightgreen: #88cc22;
20 | //
21 | // Yellow
22 | yellow: #e8ae5b;
23 | lightyellow: #ffa75d;
24 | //
25 | // Blue
26 | blue: #6495ed;
27 | lightblue: #87ceeb;
28 | //
29 | // Magenta
30 | magenta: #deb887;
31 | lightmagenta: #996600;
32 | //
33 | // Cyan
34 | cyan: #b0c4de;
35 | lightcyan: #b0c4de;
36 | //
37 | // White
38 | white: #bbaa99;
39 | lightwhite: #ddccbb;
40 | //
41 | // Bold, Italic, Underline
42 | highlight: bold #ffffff;
43 | }
44 | #window {
45 | fullscreen: true;
46 | location: west;
47 | anchor: west;
48 | border: 0px 2px 0px 0px;
49 | text-color: @lightwhite;
50 |
51 | orientation: horizontal;
52 | children: [mainbox, dummy];
53 | }
54 |
55 | #dummy {
56 | expand: true;
57 | }
58 |
59 | #sidebar {
60 | border: 2px 0px 0px 0px;
61 | background-color: @lightblack;
62 | padding: 10px;
63 | }
64 | #button selected {
65 | border-color: @lightgreen;
66 | text-color: @lightgreen;
67 | }
68 | #entry {
69 | width: 20em;
70 | }
71 | #inputbar {
72 | background-color: @lightblack;
73 | text-color: @lightgreen;
74 | padding: 4px;
75 | border: 0px 0px 2px 0px;
76 | }
77 | #mainbox {
78 | expand: false;
79 | background-color: #1c1c1cee;
80 | spacing: 1em;
81 | }
82 | #listview {
83 | padding: 0em 0.4em 0em 1em;
84 | dynamic: false;
85 | lines: 0;
86 | }
87 | #element selected normal {
88 | background-color: @blue;
89 | }
90 | #element normal active {
91 | text-color: @lightblue;
92 | }
93 | #element normal urgent {
94 | text-color: @lightred;
95 | }
96 | #element alternate normal {
97 | }
98 | #element alternate active {
99 | text-color: @lightblue;
100 | }
101 | #element alternate urgent {
102 | text-color: @lightred;
103 | }
104 | #element selected active {
105 | background-color: @lightblue;
106 | text-color: @dark;
107 | }
108 | #element selected urgent {
109 | background-color: @lightred;
110 | text-color: @dark;
111 | }
112 | #inputbar {
113 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
114 | }
115 | #textbox-prompt-colon {
116 | expand: false;
117 | str: ":";
118 | margin: 0px 0.3em 0em 0em ;
119 | text-color: @normal-foreground;
120 | }
121 |
--------------------------------------------------------------------------------
/modules/workspace/gnome/base.nix:
--------------------------------------------------------------------------------
1 | { pkgs, ... }:
2 |
3 | {
4 | # Enable a low-level configuration system and settings
5 | # management tool. Its main purpose is to provide a back end
6 | # to GSettings on platforms that don't already have
7 | # configuration storage systems. It is part of GNOME 3 and is
8 | # a replacement for GConf
9 | programs.dconf.enable = true;
10 |
11 | services = {
12 | # Packages whose D-Bus configuration files should be included
13 | # in the configuration of the D-Bus system-wide or
14 | # session-wide message bus
15 | dbus.packages = with pkgs; [ dconf ];
16 |
17 | # Provides geolocation services, that is, it lets
18 | # applications find the user's geographical position.
19 | # A mapping application could use this to present a
20 | # "where am # I" view, for example
21 | geoclue2.enable = true;
22 |
23 | gnome = {
24 | core-os-services.enable = true;
25 | core-utilities.enable = true;
26 | evolution-data-server.enable = true;
27 | sushi.enable = true;
28 | tracker.enable = true;
29 | tracker-miners.enable = true;
30 | gnome-settings-daemon.enable = true;
31 | glib-networking.enable = true;
32 | gnome-keyring.enable = true;
33 | gnome-online-accounts.enable = true;
34 | gnome-online-miners.enable = true;
35 | };
36 | };
37 |
38 | environment.sessionVariables.XDG_CURRENT_DESKTOP = "X-Generic";
39 |
40 | home-manager.users.vyorkin = {
41 | home.activation.gnome = ''
42 | $DRY_RUN_CMD mkdir -p "$XDG_DATA_HOME/.npm-packages"
43 | '';
44 |
45 | dconf.settings = {
46 | "org/gnome/nautilus/icon-view" = {
47 | captions = [ "size" "date_modified" "none" ];
48 | };
49 |
50 | "org/gnome/nautilus/list-view" = {
51 | default-column-order = [
52 | "name"
53 | "size"
54 | "type"
55 | "owner"
56 | "group"
57 | "permissions"
58 | "where"
59 | "date_modified"
60 | "date_modified_with_time"
61 | "date_accessed"
62 | "recency"
63 | "starred"
64 | "detailed_type"
65 | ];
66 | default-visible-columns = [ "name" "size" "date_modified" "starred" ];
67 | };
68 |
69 | "org/gnome/nautilus/preferences" = {
70 | default-folder-viewer = "list-view";
71 | executable-text-activation = "display";
72 | search-filter-time-type = "last_modified";
73 | search-view = "list-view";
74 | show-image-thumbnails = "always";
75 | thumbnail-limit = 10;
76 | };
77 |
78 | "org/gnome/desktop/interface" = { cursor-theme = "default"; };
79 |
80 | "org/gnome/evince/default" = { inverted-colors = true; };
81 |
82 | "org/gnome/maps" = {
83 | night-mode = true;
84 | transportation-type = "car";
85 | };
86 | };
87 | };
88 | }
89 |
--------------------------------------------------------------------------------
/modules/apps/default.nix:
--------------------------------------------------------------------------------
1 | { pkgs, config, lib, ... }: {
2 | options.defaultApps = lib.mkOption {
3 | type = lib.types.attrs;
4 | description = "Preferred applications";
5 | };
6 |
7 | config = rec {
8 | defaultApps = {
9 | term = {
10 | cmd = "${pkgs.kitty}/bin/kitty";
11 | desktop = "kitty";
12 | };
13 | editor = {
14 | cmd = toString (pkgs.writeShellScript "emacsclient-newwindow" ''
15 | ${config.home-manager.users.vyorkin.programs.emacs.finalPackage}/bin/emacsclient -c "$@"
16 | '');
17 | desktop = "emacsclient";
18 | };
19 | browser = {
20 | cmd = "${pkgs.firefox}/bin/firefox";
21 | desktop = "firefox";
22 | };
23 | fm = {
24 | cmd = "${pkgs.gnome3.nautilus}/bin/nautilus";
25 | desktop = "org.gnome.Nautilus";
26 | };
27 | monitor = {
28 | cmd = "${pkgs.gnome3.gnome-system-monitor}/bin/gnome-system-monitor";
29 | desktop = "gnome-system-monitor";
30 | };
31 | archive = {
32 | cmd = "${pkgs.gnome3.file-roller}/bin/file-roller";
33 | desktop = "org.gnome.FileRoller";
34 | };
35 | reader = {
36 | cmd = "${pkgs.zathura}/bin/zathura";
37 | desktop = "zathura";
38 | };
39 | messenger = {
40 | cmd = "${pkgs.tdesktop}/bin/telegram-desktop";
41 | desktop = "telegram";
42 | };
43 | # matrix = {
44 | # cmd = "${pkgs.nheko}/bin/nheko";
45 | # desktop = "nheko";
46 | # };
47 | text_processor = {
48 | cmd = "${pkgs.abiword}/bin/abiword";
49 | desktop = "abiword";
50 | };
51 | spreadsheet = {
52 | cmd = "${pkgs.gnumeric}/bin/gnumeric";
53 | desktop = "gnumeric";
54 | };
55 | };
56 |
57 | environment.sessionVariables = {
58 | EDITOR = config.defaultApps.editor.cmd;
59 | VISUAL = config.defaultApps.editor.cmd;
60 | };
61 |
62 | home-manager.users.vyorkin.xdg.mimeApps = {
63 | enable = true;
64 | defaultApplications = with config.defaultApps;
65 | builtins.mapAttrs (name: value:
66 | if value ? desktop then [ "${value.desktop}.desktop" ] else value) {
67 | "text/html" = browser;
68 | "image/*" = { desktop = "org.gnome.eog"; };
69 | "application/zip" = archive;
70 | "application/rar" = archive;
71 | "application/7z" = archive;
72 | "application/*tar" = archive;
73 |
74 | "application/pdf" = reader;
75 |
76 | "x-scheme-handler/http" = browser;
77 | "x-scheme-handler/https" = browser;
78 | "x-scheme-handler/about" = browser;
79 | "x-scheme-handler/unknown" = browser;
80 |
81 | # This actually makes Emacs an editor for everything... XDG is wierd
82 | "text/plain" = editor;
83 | };
84 | };
85 | };
86 | }
87 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/paper-float.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * A floating box version of the paper theme.
3 | *
4 | * User: Qball
5 | * Copyright: Dave Davenport
6 | */
7 | * {
8 | blue: #0000FF;
9 | white: #FFFFFF;
10 | black: #000000;
11 | grey: #eeeeee;
12 |
13 | spacing: 2;
14 | background-color: #00000000;
15 | border-color: #444444FF;
16 | anchor: north;
17 | location: center;
18 | }
19 | #window {
20 | transparency: "screenshot";
21 | background-color: #00000000;
22 | border: 0;
23 | padding: 0% 0% 1em 0%;
24 | x-offset: 0;
25 | y-offset: -10%;
26 | }
27 | #mainbox {
28 | padding: 0px;
29 | border: 0;
30 | spacing: 1%;
31 | }
32 | #message {
33 | border: 2px;
34 | padding: 1em;
35 | background-color: @white;
36 | text-color: @back;
37 | }
38 | #textbox normal {
39 | text-color: #002B36FF;
40 | padding: 0;
41 | border: 0;
42 | }
43 | #listview {
44 | fixed-height: 1;
45 | border: 2px;
46 | padding: 1em;
47 | reverse: false;
48 |
49 | columns: 1;
50 | background-color: @white;
51 | }
52 | #element {
53 | border: 0;
54 | padding: 2px;
55 | highlight: bold ;
56 | }
57 | #element normal.normal {
58 | text-color: #002B36FF;
59 | background-color: #F5F5F500;
60 | }
61 | #element normal.urgent {
62 | text-color: #D75F00FF;
63 | background-color: #F5F5F5FF;
64 | }
65 | #element normal.active {
66 | text-color: #005F87FF;
67 | background-color: #F5F5F5FF;
68 | }
69 | #element selected.normal {
70 | text-color: #F5F5F5FF;
71 | background-color: #4271AEFF;
72 | }
73 | #element selected.urgent {
74 | text-color: #F5F5F5FF;
75 | background-color: #D75F00FF;
76 | }
77 | #element selected.active {
78 | text-color: #F5F5F5FF;
79 | background-color: #005F87FF;
80 | }
81 | #element alternate.normal {
82 | text-color: #002B36FF;
83 | background-color: #D0D0D0FF;
84 | }
85 | #element alternate.urgent {
86 | text-color: #D75F00FF;
87 | background-color: #D0D0D0FF;
88 | }
89 | #element alternate.active {
90 | text-color: #005F87FF;
91 | background-color: #D0D0D0FF;
92 | }
93 | #scrollbar {
94 | border: 0;
95 | padding: 0;
96 | }
97 | #inputbar {
98 | spacing: 0;
99 | border: 2px;
100 | padding: 0.5em 1em;
101 | background-color: @grey;
102 | index: 0;
103 | }
104 | #inputbar normal {
105 | foreground-color: #002B36FF;
106 | background-color: #F5F5F500;
107 | }
108 |
109 | #sidebar {
110 | border: 2px;
111 | padding: 0.5em 1em;
112 | background-color: @grey;
113 | index: 10;
114 | }
115 | #button selected {
116 | text-color: #4271AEFF;
117 | }
118 | #inputbar {
119 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
120 | }
121 | #textbox-prompt-colon {
122 | expand: false;
123 | str: ":";
124 | margin: 0px 0.3em 0em 0em ;
125 | text-color: @normal-foreground;
126 | }
127 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/shadow-sidebar.rasi:
--------------------------------------------------------------------------------
1 | // ROFI Color theme
2 | // User: SmokeKing
3 | // vim:ft=css
4 | * {
5 | background-color: rgba ( 20, 20, 25, 0 % );
6 | text-color: rgba ( 255, 255, 255, 100 % );
7 | }
8 | #window {
9 | fullscreen: true;
10 | location: east;
11 | anchor: east;
12 | orientation: horizontal;
13 | border: 0;
14 | padding: 20;
15 | children: [dummy, mainbox];
16 | }
17 | #dummy {
18 | expand: true;
19 | }
20 | #mainbox {
21 | border: 0;
22 | expand: false;
23 | padding: 10;
24 | background-color: rgba ( 20, 20, 25, 100 % );
25 | }
26 | #message {
27 | border: 1;
28 | padding: 10 2% 10;
29 | background-color: rgba ( 20, 20, 25, 100 % );
30 | }
31 | #listview {
32 | spacing: 2;
33 | padding: 0em 0.4em 0em 1em;
34 | dynamic: false;
35 | lines: 0;
36 | background-color: rgba ( 20, 20, 25, 100 % );
37 | }
38 | #element {
39 | padding: 5 5 9;
40 | radius: 4;
41 | background-color: rgba ( 20, 20, 25, 100 % );
42 | }
43 | #element.selected.normal {
44 | text-color: rgba ( 23, 147, 209, 100 % );
45 | background-color: rgba ( 15, 15, 20, 100 % );
46 | border: 0 2 4;
47 | border-radius: 2;
48 | border-color: rgba ( 10, 10, 10, 100 % );
49 | }
50 | #element.selected.urgent {
51 | text-color: rgba ( 23, 147, 209, 100 % );
52 | background-color: rgba ( 15, 15, 20, 100 % );
53 | border: 0 2 4;
54 | border-radius: 2;
55 | border-color: rgba ( 10, 10, 10, 100 % );
56 | }
57 | #element.selected.active {
58 | text-color: rgba ( 23, 147, 209, 100 % );
59 | background-color: rgba ( 15, 15, 20, 100 % );
60 | border: 0 2 4;
61 | border-radius: 2;
62 | border-color: rgba ( 10, 10, 10, 100 % );
63 | }
64 | #scrollbar {
65 | width: 4;
66 | handle-width: 8;
67 | }
68 | #sidebar {
69 | padding: 1% 2% 2%;
70 | background-color: rgba ( 20, 20, 25, 100 % );
71 | }
72 | #button {
73 | padding: 8 0 8;
74 | }
75 | #button.selected {
76 | padding: 8 0 8;
77 | text-color: rgba ( 23, 147, 209, 100 % );
78 | background-color: rgba ( 15, 15, 20, 100 % );
79 | border: 0 2 4;
80 | border-radius: 2;
81 | border-color: rgba ( 10, 10, 10, 100 % );
82 | }
83 | #inputbar {
84 | border: 0 1 3;
85 | border-radius: 2;
86 | border-color: rgba ( 10, 10, 10, 100 % );
87 | background-color: rgba ( 20, 20, 25, 100 % );
88 | padding: 0% 1.8% 0% 0.2%;
89 | }
90 | #entry {
91 | spacing: 5;
92 | border: 0;
93 | width: 20em;
94 | padding: 5 5 5;
95 | border-radius: 4;
96 | border-color: rgba ( 0, 0, 0, 100 % );
97 | background-color: rgba ( 20, 20, 25, 100 % );
98 | }
99 | #prompt {
100 | spacing: 0;
101 | border: 0;
102 | border-radius: 4;
103 | padding: 5 5 5;
104 | text-color: rgba ( 255, 255, 255, 100 % );
105 | border-color: rgba ( 0, 0, 0, 100 % );
106 | background-color: rgba ( 20, 20, 25, 100 % );
107 | }
108 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/flat-orange.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * ROFI Color theme
3 | * User: mbfraga
4 | * Copyright: Martin B. Fraga
5 | */
6 |
7 | /* global settings and color variables */
8 | * {
9 | maincolor: #ed8712;
10 | highlight: bold #ed8712;
11 | urgentcolor: #e53714;
12 |
13 | fgwhite: #cfcfcf;
14 | blackdarkest: #1d1d1d;
15 | blackwidget: #262626;
16 | blackentry: #292929;
17 | blackselect: #303030;
18 | darkgray: #848484;
19 | scrollbarcolor: #505050;
20 | font: "DejaVu Sans Mono Regular 14";
21 | background-color: @blackdarkest;
22 | }
23 |
24 | window {
25 | background-color: @blackdarkest;
26 | anchor: north;
27 | location: north;
28 | y-offset: 20%;
29 | }
30 |
31 | mainbox {
32 | background-color: @blackdarkest;
33 | spacing:0px;
34 | children: [inputbar, message, sidebar, listview];
35 | }
36 |
37 | message {
38 | padding: 6px 10px;
39 | background-color:@blackwidget;
40 | }
41 |
42 | textbox {
43 | text-color:@darkgray;
44 | background-color:@blackwidget;
45 | }
46 |
47 | listview {
48 | fixed-height: false;
49 | dynamic: true;
50 | scrollbar: true;
51 | spacing: 0px;
52 | padding: 1px 0px 0px 0px;
53 | margin: 0px 0px 1px 0px;
54 | background: @blackdarkest;
55 | }
56 |
57 | element {
58 | padding: 2px 15px;
59 | }
60 |
61 | element normal.normal {
62 | padding: 0px 15px;
63 | background-color: @blackentry;
64 | text-color: @fgwhite;
65 | }
66 |
67 | element normal.urgent {
68 | background-color: @blackentry;
69 | text-color: @urgentcolor;
70 | }
71 |
72 | element normal.active {
73 | background-color: @blackentry;
74 | text-color: @maincolor;
75 | }
76 |
77 | element selected.normal {
78 | background-color: @blackselect;
79 | text-color: @fgwhite;
80 | }
81 |
82 | element selected.urgent {
83 | background-color: @urgentcolor;
84 | text-color: @blackdarkest;
85 | }
86 |
87 | element selected.active {
88 | background-color: @maincolor;
89 | text-color: @blackdarkest;
90 | }
91 |
92 | element alternate.normal {
93 | background-color: @blackentry;
94 | text-color: @fgwhite;
95 | }
96 |
97 | element alternate.urgent {
98 | background-color: @blackentry;
99 | text-color: @urgentcolor;
100 | }
101 |
102 | element alternate.active {
103 | background-color: @blackentry;
104 | text-color: @maincolor;
105 | }
106 |
107 | scrollbar {
108 | background-color: @blackwidget;
109 | handle-color: @darkgray;
110 | handle-width: 15px;
111 | }
112 |
113 | sidebar {
114 | background-color: @blackwidget;
115 | }
116 |
117 | button {
118 | background-color: @blackwidget;
119 | text-color: @darkgray;
120 | }
121 |
122 | button selected {
123 | text-color: @maincolor;
124 | }
125 |
126 | inputbar {
127 | background-color: @blackdarkest;
128 | spacing: 0px;
129 | }
130 |
131 | prompt {
132 | padding:6px 9px;
133 | background-color: @maincolor;
134 | text-color:@blackwidget;
135 | }
136 |
137 | entry {
138 | padding:6px 10px;
139 | background-color:@blackwidget;
140 | text-color:@fgwhite;
141 | }
142 |
143 | case-indicator {
144 | padding:6px 10px;
145 | text-color:@maincolor;
146 | background-color:@blackwidget;
147 | }
148 |
--------------------------------------------------------------------------------
/modules/services.nix:
--------------------------------------------------------------------------------
1 | { pkgs, inputs, ... }:
2 |
3 | {
4 | services = {
5 | # Enable ACPI deamon. When an event occurs, it executes
6 | # programs to handle the event. These events are triggered
7 | # by certain actions, such as:
8 | # - Pressing special keys, including the Power/Sleep/Suspend button
9 | # - Closing a notebook lid
10 | # - (Un)Plugging an AC power adapter from a notebook
11 | # - (Un)Plugging phone jack etc
12 | acpid.enable = true;
13 |
14 | # Enable a deamon that allows updating some devices
15 | # firmware, including UEFI for several machines
16 | fwupd.enable = true;
17 |
18 | # Enable programs to publish and discover services and
19 | # hosts running on a local network. For example, a user can
20 | # plug a computer into a network and have Avahi
21 | # automatically advertise the network services running on
22 | # its machine, facilitating user access to those services
23 | avahi.enable = true;
24 |
25 | # Many GTK-based file managers like Nautilus, Thunar, and PCManFM can browse samba
26 | # shares thanks to GVFS. GVFS is a dbus daemon which must be running for this to work.
27 | # If you use Gnome, you have nothing to do as the module already enables it for you,
28 | # but in less full-featured desktop environments, some further configuration options are needed.
29 | gvfs.enable = true;
30 |
31 | # Basically EarlyOOM prevents freezes due to running out of memory.
32 | # Checks the amount of available memory and free swap up to
33 | # 10 times a second (less often if there is a lot of free memory).
34 | # By default if both are below min values, it will
35 | # kill the largest process (highest oom_score)
36 | earlyoom = {
37 | enable = true;
38 | # Minimum of availabe memory (in percent). If the free
39 | # memory falls below this threshold and the analog is true
40 | # for freeSwapThreshold the killing begins
41 | freeMemThreshold = 5;
42 | # Minimum of availabe swap space (in percent). If the
43 | # available swap space falls below this threshold and the
44 | # analog is true for freeMemThreshold the killing begins
45 | freeSwapThreshold = 100;
46 | };
47 |
48 | # Enable printer support
49 | printing = {
50 | enable = true;
51 | drivers = [ pkgs.gutenprint ];
52 | };
53 |
54 | # Enable scanner support
55 | # Docs: https://nixos.wiki/wiki/Scanners
56 | saned.enable = true;
57 |
58 | # systemd-logind settings
59 | logind = {
60 | # What to be done when the laptop lid is closed
61 | lidSwitch = "hibernate";
62 | # What to be done when the laptop lid is closed and
63 | # the system is on external power
64 | lidSwitchExternalPower = "ignore";
65 | # Pressing power button means hibernate
66 | extraConfig = "HandlePowerKey=hibernate";
67 | };
68 |
69 | interception-tools = { enable = true; };
70 | };
71 |
72 | home-manager.users.vyorkin = {
73 | home.packages = with pkgs; [ acpi ];
74 | };
75 |
76 | services.openvpn = {
77 | servers = {
78 | home = {
79 | config = "config ${inputs.secrets}/vpn/home.ovpn";
80 | autoStart = false;
81 | updateResolvConf = true;
82 | };
83 |
84 | work = {
85 | config = "config ${inputs.secrets}/vpn/work.ovpn";
86 | autoStart = false;
87 | updateResolvConf = true;
88 | };
89 | };
90 | };
91 | }
92 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/sidetab.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * User: deadguy
3 | * Copyright: deadguy
4 | */
5 |
6 | configuration {
7 | display-drun: "Activate";
8 | display-run: "Execute";
9 | display-window: "Window";
10 | show-icons: true;
11 | sidebar-mode: true;
12 | }
13 |
14 | * {
15 | background-color: #080808;
16 | text-color: #d3d7cf;
17 | selbg: #215d9c;
18 | actbg: #262626;
19 | urgbg: #e53935;
20 | winbg: #26c6da;
21 |
22 | selected-normal-foreground: @winbg;
23 | normal-foreground: @text-color;
24 | selected-normal-background: @actbg;
25 | normal-background: @background-color;
26 |
27 | selected-urgent-foreground: @background-color;
28 | urgent-foreground: @text-color;
29 | selected-urgent-background: @urgbg;
30 | urgent-background: @background-color;
31 |
32 | selected-active-foreground: @winbg;
33 | active-foreground: @text-color;
34 | selected-active-background: @actbg;
35 | active-background: @selbg;
36 |
37 | line-margin: 2;
38 | line-padding: 2;
39 | separator-style: "none";
40 | hide-scrollbar: "true";
41 | margin: 0;
42 | padding: 0;
43 | }
44 |
45 | window {
46 | location: west;
47 | anchor: west;
48 | height: 100%;
49 | width: 22%;
50 | orientation: horizontal;
51 | children: [mainbox];
52 | }
53 |
54 | mainbox {
55 | spacing: 0.8em;
56 | children: [ entry,listview,sidebar ];
57 | }
58 |
59 | button { padding: 5px 2px; }
60 |
61 | button selected {
62 | background-color: @active-background;
63 | text-color: @background-color;
64 | }
65 |
66 | inputbar {
67 | padding: 5px;
68 | spacing: 5px;
69 | }
70 |
71 | listview {
72 | spacing: 0.5em;
73 | dynamic: false;
74 | cycle: true;
75 | }
76 |
77 | element { padding: 10px; }
78 |
79 | entry {
80 | expand: false;
81 | text-color: @normal-foreground;
82 | vertical-align: 1;
83 | padding: 5px;
84 | }
85 |
86 | element normal.normal {
87 | background-color: @normal-background;
88 | text-color: @normal-foreground;
89 | }
90 |
91 | element normal.urgent {
92 | background-color: @urgent-background;
93 | text-color: @urgent-foreground;
94 | }
95 |
96 | element normal.active {
97 | background-color: @active-background;
98 | text-color: @active-foreground;
99 | }
100 |
101 | element selected.normal {
102 | background-color: @selected-normal-background;
103 | text-color: @selected-normal-foreground;
104 | border: 0 5px solid 0 0;
105 | border-color: @active-background;
106 | }
107 |
108 | element selected.urgent {
109 | background-color: @selected-urgent-background;
110 | text-color: @selected-urgent-foreground;
111 | }
112 |
113 | element selected.active {
114 | background-color: @selected-active-background;
115 | text-color: @selected-active-foreground;
116 | }
117 |
118 | element alternate.normal {
119 | background-color: @normal-background;
120 | text-color: @normal-foreground;
121 | }
122 |
123 | element alternate.urgent {
124 | background-color: @urgent-background;
125 | text-color: @urgent-foreground;
126 | }
127 |
128 | element alternate.active {
129 | background-color: @active-background;
130 | text-color: @active-foreground;
131 | }
132 |
--------------------------------------------------------------------------------
/modules/overlay.nix:
--------------------------------------------------------------------------------
1 | { pkgs, config, lib, inputs, ... }:
2 |
3 | let
4 | filterGit =
5 | builtins.filterSource (type: name: name != ".git" || type != "directory");
6 |
7 | system = "x86_64-linux";
8 | old = import inputs.nixpkgs-21-11 ({
9 | config = config.nixpkgs.config;
10 | localSystem = { inherit system; };
11 | });
12 |
13 | mkKeyValue = key: value:
14 | let
15 | mvalue = if builtins.isBool value then
16 | (if value then "true" else "false")
17 | else if builtins.isString value then
18 | value
19 | else
20 | builtins.toString value;
21 | in ''${key}=${mvalue}'';
22 | attrsToList = with builtins;
23 | x:
24 | (map (key: {
25 | name = key;
26 | value = getAttr key x;
27 | }) (attrNames x));
28 | in {
29 | nixpkgs.overlays = [
30 | inputs.emacs.overlay
31 | # inputs.nixpkgs-wayland.overlay
32 |
33 | (self: super: rec {
34 | nix = super.nix // {
35 | meta = super.nix.meta // { platforms = lib.platforms.unix; };
36 | };
37 |
38 | my = rec {
39 | genIni = lib.generators.toINI { inherit mkKeyValue; };
40 | genIniOrdered = lst:
41 | (builtins.concatStringsSep "\n" (map ({ name ? "widget", ... }@attrs:
42 | builtins.concatStringsSep "\n" ([ "[${name}]" ]
43 | ++ (map ({ name, value }: mkKeyValue name value)
44 | (attrsToList (builtins.removeAttrs attrs [ "name" ]))))) lst))
45 | + "\n";
46 | thm = config.themes.colors;
47 | splitHex = hexStr:
48 | map (x: builtins.elemAt x 0) (builtins.filter (a: a != "" && a != [ ])
49 | (builtins.split "(.{2})" hexStr));
50 | hex2decDigits = rec {
51 | "0" = 0;
52 | "1" = 1;
53 | "2" = 2;
54 | "3" = 3;
55 | "4" = 4;
56 | "5" = 5;
57 | "6" = 6;
58 | "7" = 7;
59 | "8" = 8;
60 | "9" = 9;
61 | "a" = 10;
62 | "b" = 11;
63 | "c" = 12;
64 | "d" = 13;
65 | "e" = 14;
66 | "f" = 15;
67 | A = a;
68 | B = b;
69 | C = c;
70 | D = d;
71 | E = e;
72 | F = f;
73 | };
74 |
75 | doubleDigitHexToDec = hex:
76 | 16 * hex2decDigits."${builtins.substring 0 1 hex}"
77 | + hex2decDigits."${builtins.substring 1 2 hex}";
78 | thmDec = builtins.mapAttrs (name: color: colorHex2Dec color) thm;
79 | thmHash = builtins.mapAttrs (name: color: "#${color}") thm;
80 | colorHex2Dec = color:
81 | builtins.concatStringsSep ","
82 | (map (x: toString (doubleDigitHexToDec x)) (splitHex color));
83 | };
84 |
85 | nur = (import inputs.NUR {
86 | pkgs = old;
87 | nurpkgs = pkgs;
88 | }).repos;
89 |
90 | inherit old;
91 |
92 | nerdfonts = nur.balsoft.pkgs.roboto-mono-nerd;
93 |
94 | mtxclient = super.mtxclient.overrideAttrs (_: {
95 | src = inputs.mtxclient;
96 | });
97 |
98 | nheko = (super.nheko.overrideAttrs (oa: {
99 | src = inputs.nheko;
100 | })).override { mtxclient = self.mtxclient; };
101 |
102 | weechatScripts.wee-slack = super.weechatScripts.wee-slack.overrideAttrs (oa: {
103 | src = inputs.wee-slack;
104 | patches = [(builtins.elemAt oa.patches 0)];
105 | });
106 |
107 | nix-zsh-completions = super.nix-zsh-completions.overrideAttrs (_: {
108 | src = inputs.nix-zsh-completions;
109 | });
110 | })
111 | ];
112 | }
113 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/fancy.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * User: Rasi
3 | * Copyright: Rasmus Steinke
4 | */
5 |
6 | /* global settings and color variables */
7 | * {
8 | blue: #A7c6E2;
9 | blue-trans: #A7c6e2aa;
10 | darkblue: #005F87;
11 | white: #FFFFFF;
12 | green: #00330088;
13 | black: #000000;
14 | grey: #444444;
15 | orange: #FFD391;
16 | dark-orange: #FFA664;
17 | light-grey: #F5F5F5;
18 | medium-grey: #D0D0D0;
19 | dark-grey: #002B36;
20 | urgent: #D75F00;
21 | active: #005F87;
22 | transparent: #000000aa;
23 | spacing: 0em;
24 | font: "Iosevka Term Regular 14";
25 | padding: 0px;
26 | background-color: @white;
27 | line-style: "none";
28 | }
29 |
30 | prompt-box {
31 | background-color: transparent;
32 | }
33 |
34 | prompt {
35 | background-color: transparent;
36 | text-color: @white;
37 | }
38 |
39 | window {
40 | border-radius: 10px;
41 | background-color: @transparent;
42 | border: 2;
43 | color: @grey;
44 | }
45 | mainbox {
46 | padding: 0px;
47 | background-color: @blue-trans;
48 | color: @grey;
49 | border: 2px;
50 | spacing: 0%;
51 | }
52 |
53 | listview {
54 | // Looks.
55 | border-radius: 10px;
56 | border: 5px 5px 5px 5px;
57 | padding: 20px 20px 20px 20px;
58 | margin: 20px 30px 30px 30px;
59 | background-color: @orange;
60 | // Enable scrollbar
61 | scrollbar: false;
62 | scrollbar-width: 5px;
63 | fixed-height: true;
64 | reverse: false;
65 | color: #000000;
66 | spacing: 0.3em;
67 | }
68 | scrollbar {
69 | color: @black;
70 | background-color: @blue;
71 | padding: 1px;
72 | }
73 | element {
74 | border: 0px;
75 | padding: 0px;
76 | margin: 0px;
77 | color: @black;
78 | background-color: @blue;
79 | }
80 | element normal.normal {
81 | color: @black;
82 | background-color: @orange;
83 | }
84 | element normal.urgent {
85 | color: @urgent;
86 | background-color: @light-grey;
87 | }
88 | element normal.active {
89 | color: @active;
90 | background-color: @light-grey;
91 | }
92 | element selected.normal {
93 | border-radius: 0px;
94 | color: @black;
95 | background-color: @dark-orange;
96 | }
97 | element selected.urgent {
98 | color: @light-grey;
99 | background-color: @urgent;
100 | }
101 | element selected.active {
102 | color: @light-grey;
103 | background-color: @active;
104 | }
105 | element alternate.normal {
106 | color: @black;
107 | background-color: @orange;
108 | }
109 | element alternate.urgent {
110 | color: @urgent;
111 | background-color: @medium-grey;
112 | }
113 | element alternate.active {
114 | color: @active;
115 | background-color: @medium-grey;
116 | }
117 | inputbar {
118 | spacing: 0;
119 | background-color: #88003300;
120 | border: 0px 0px 2px 0px;
121 | border-radius: 0px;
122 | padding: 5px 10px 5px 35px;
123 | background-color: #00330088;
124 | color: @black;
125 | end: false;
126 | }
127 |
128 | separator {
129 | background-color: @blue;
130 | color: #00000000;
131 | }
132 | prompt normal.normal {
133 | background-color: #00000000;
134 | color: #ffffff;
135 | padding: 0px;
136 | }
137 | entry normal.normal {
138 | background-color: #00000000;
139 | color: #ffffff;
140 | padding: 0px;
141 | }
142 | case-indicator normal.normal {
143 | background-color: #00000000;
144 | color: #ffffff;
145 | padding: 0px;
146 | }
147 |
148 | message {
149 | margin: 30px 30px 30px 30px;
150 | padding: 20px 30px 20px 20px;
151 | padding: 1px ;
152 | border-radius: 10px;
153 | border: 5px 5px 5px 5px;
154 | }
155 |
156 | prompt-colon {
157 | spacing: 0;
158 | enabled: false;
159 | }
160 |
161 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/Pop-Dark.rasi:
--------------------------------------------------------------------------------
1 | /**
2 | * Author: Primetoxinz
3 | */
4 | * {
5 | text-color: #f2f2f2;
6 | background-color: #4e4743;
7 | lightbg: #534c48;
8 | red: #f15d22;
9 | orange: #faa41a;
10 | blue: #48b9c7;
11 |
12 | selected-normal-foreground: @foreground;
13 | normal-foreground: @foreground;
14 | alternate-normal-background: @background;
15 | selected-urgent-foreground: @foreground;
16 | urgent-foreground: @foreground;
17 | alternate-urgent-background: @background;
18 | active-foreground: @foreground;
19 | selected-active-foreground: @foreground;
20 | alternate-normal-foreground: @foreground;
21 | alternate-active-background: @blue;
22 | bordercolor: @foreground;
23 | normal-background: @background;
24 | selected-normal-background: @blue;
25 | separatorcolor: @orange;
26 | spacing: 2;
27 | urgent-background: @red;
28 | alternate-urgent-foreground: @foreground;
29 | selected-urgent-background: @red;
30 | alternate-active-foreground: @foreground;
31 | selected-active-background: @blue;
32 | active-background: @orange;
33 | }
34 | #window {
35 | border: 0;
36 | text-color: @foreground;
37 | background-color: rgba ( 0, 0, 0, 0 % );
38 | padding: 5;
39 | text-color: @bordercolor;
40 | background-color: @background;
41 | }
42 | #mainbox {
43 | border: 0;
44 | padding: 0;
45 | }
46 | #message {
47 | border: 1px dash 0px 0px ;
48 | text-color: @separatorcolor;
49 | padding: 2px 0px 0px ;
50 | }
51 | #textbox {
52 | text-color: @foreground;
53 | }
54 | #listview {
55 | fixed-height: 0;
56 | border: 2px 0px 0px ;
57 | padding: 2px 0px 0px ;
58 | text-color: @separatorcolor;
59 | }
60 | #element {
61 | border: 0;
62 | }
63 | #element.normal.normal {
64 | text-color: @normal-foreground;
65 | background-color: @normal-background;
66 | }
67 | #element.normal.urgent {
68 | text-color: @urgent-foreground;
69 | background-color: @urgent-background;
70 | }
71 | #element.normal.active {
72 | text-color: @active-foreground;
73 | background-color: @active-background;
74 | }
75 | #element.selected.normal {
76 | text-color: @selected-normal-foreground;
77 | background-color: @selected-normal-background;
78 | }
79 | #element.selected.urgent {
80 | text-color: @selected-urgent-foreground;
81 | background-color: @selected-urgent-background;
82 | }
83 | #element.selected.active {
84 | text-color: @selected-active-foreground;
85 | background-color: @selected-active-background;
86 | }
87 | #element.alternate.normal {
88 | text-color: @alternate-normal-foreground;
89 | background-color: @alternate-normal-background;
90 | }
91 | #element.alternate.urgent {
92 | text-color: @alternate-urgent-foreground;
93 | background-color: @alternate-urgent-background;
94 | }
95 | #element.alternate.active {
96 | text-color: @alternate-active-foreground;
97 | background-color: @alternate-active-background;
98 | }
99 | #sidebar {
100 | border: 1px dash 0px 0px ;
101 | }
102 | #button selected {
103 | text-color: @selected-normal-foreground;
104 | background-color: @selected-normal-background;
105 | }
106 | #inputbar {
107 | spacing: 0;
108 | border: 0px ;
109 | }
110 | #button normal {
111 | text-color: @foreground;
112 | }
113 |
114 | #inputbar {
115 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
116 | }
117 | #textbox-prompt-colon {
118 | expand: false;
119 | str: ":";
120 | margin: 0px 0.3em 0em 0em ;
121 | text-color: @normal-foreground;
122 | }
123 |
--------------------------------------------------------------------------------
/modules/workspace/i3/base.nix:
--------------------------------------------------------------------------------
1 | { pkgs, inputs, lib, config, ... }:
2 |
3 | let
4 | cfg = import ./config/base.nix { inherit pkgs lib config; };
5 | env = import ./config/env.nix { };
6 | scripts = import ./scripts pkgs config;
7 | in {
8 | services.xserver = {
9 | windowManager.i3 = {
10 | enable = true;
11 | package = pkgs.i3-gaps;
12 | configFile = ./config/native;
13 | extraPackages = with pkgs; [
14 | i3status
15 | i3blocks
16 | xrandr-invert-colors
17 | dmenu
18 | nitrogen
19 | rofi
20 | dunst
21 | betterlockscreen
22 | i3lock-pixeled
23 | ];
24 | };
25 | };
26 |
27 | # It seems that i3blocks read it's contents from a hardcoded path in /etc by default.
28 | # Since in nixos, this path look something like:
29 | # /nix/store/k78nc1bplhy4yjblqwlc14h6rdisix3w-i3blocks-1.4/libexec/i3blocks/[BLOCKS]
30 | # So we have to create a link to this path by adding this line:
31 | environment.pathsToLink = [ "/libexec" ];
32 |
33 | home-manager.users.vyorkin = {
34 | services.picom = {
35 | # Enable Picom X11 compositor.
36 | enable = true;
37 |
38 | # Opacity of active windows.
39 | activeOpacity = 1.0;
40 |
41 | # Backend to use: glx or xrender.
42 | backend = "xrender";
43 |
44 | # Don't fade windows in and out.
45 | fade = true;
46 |
47 | # Time between fade animation step (in ms).
48 | fadeDelta = 7;
49 |
50 | # List of conditions of windows that should not be faded.
51 | # See the picom(1) man page for more examples.
52 | fadeExclude = [];
53 |
54 | # Opacity change between fade steps (in and out).
55 | fadeSteps = [ 0.05 0.05 ];
56 |
57 | # Dim inactive windows.
58 | # inactiveDim = "0.2";
59 |
60 | # Opacity of inactive windows.
61 | inactiveOpacity = 1;
62 |
63 | # Opacity of dropdown and popup mune.
64 | menuOpacity = 1;
65 |
66 | # Draw window shadows.
67 | shadow = true;
68 |
69 | # List of conditions of windows that should have no shadow.
70 | # See the picom(1) man page for more examples.
71 | shadowExclude = [
72 | "name = 'Notification'"
73 | "_GTK_FRAME_EXTENTS@:c"
74 | "class_g = 'i3-frame'"
75 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
76 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'"
77 | "!I3_FLOATING_WINDOW@:c"
78 | "! name~=''"
79 | "n:e:Notification"
80 | "n:e:Plank"
81 | "n:e:Docky"
82 | "g:e:Synapse"
83 | "g:e:Kupfer"
84 | "g:e:Conky"
85 | "n:w:*Firefox*"
86 | "n:w:*Chrome*"
87 | "n:w:*Chromium*"
88 | "class_g ?= 'Notify-osd'"
89 | "class_g ?= 'Cairo-dock'"
90 | "class_g ?= 'Xfce4-notifyd'"
91 | "class_g ?= 'Xfce4-power-manager'"
92 | ];
93 |
94 | # Horizontal and vertical offsets for shadows (in pixels).
95 | shadowOffsets = [ (-5) 0 ];
96 |
97 | # Window shadows opacity (number in range 0 - 1).
98 | shadowOpacity = 0.8;
99 |
100 | # Disable vertical synchronization.
101 | vSync = false;
102 | };
103 |
104 | home.file = {
105 | "i3blocks-contrib" = {
106 | source = inputs.i3blocks-contrib;
107 | target = ".config/i3blocks-contrib";
108 | };
109 | "i3blocks-custom" = {
110 | source = ./config/blocks;
111 | target = ".config/i3blocks-custom";
112 | };
113 | "i3blocks" = {
114 | source = ./config/i3blocks.conf;
115 | target = ".i3blocks.conf";
116 | };
117 | "dunst" = {
118 | source = ./dunst;
119 | target = ".config/dunst";
120 | recursive = true;
121 | };
122 | "rofi" = {
123 | source = ./rofi;
124 | target = ".config/rofi";
125 | };
126 | };
127 | };
128 | }
129 |
--------------------------------------------------------------------------------
/modules/workspace/i3/rofi/themes/hack.rasi:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * Author : Aditya Shakya
4 | * Mail : adi1090x@gmail.com
5 | * Github : @adi1090x
6 | * Twitter : @adi1090x
7 | *
8 | */
9 |
10 | configuration {
11 | font: "IBM Plex Sans 18";
12 | fixed-num-lines: true;
13 | show-icons: false;
14 | sidebar-mode: true;
15 | scroll-method: 0;
16 | window-format: "[{w}] ··· {c} ··· {t}";
17 | click-to-exit: true;
18 | combi-hide-mode-prefix: false;
19 | display-window: "";
20 | display-windowcd: "";
21 | display-run: "";
22 | display-ssh: "";
23 | display-drun: "";
24 | display-combi: "";
25 | }
26 |
27 | @import "styles/colors.rasi"
28 |
29 | * {
30 | background-color: @bg;
31 | }
32 |
33 | window {
34 | border: 0px;
35 | border-color: @ac;
36 | border-radius: 6px;
37 | padding: 30;
38 | width: 20%;
39 | }
40 |
41 | prompt {
42 | spacing: 0;
43 | border: 0;
44 | text-color: @fg;
45 | }
46 |
47 | textbox-prompt-colon {
48 | expand: false;
49 | str: " ";
50 | margin: 0px 4px 0px 0px;
51 | text-color: inherit;
52 | }
53 |
54 | entry {
55 | spacing: 0;
56 | text-color: @fg;
57 | }
58 |
59 | case-indicator {
60 | spacing: 0;
61 | text-color: @fg;
62 | }
63 |
64 | inputbar {
65 | spacing: 0px;
66 | text-color: @fg;
67 | padding: 1px;
68 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
69 | }
70 |
71 | mainbox {
72 | border: 0px;
73 | border-color: @ac;
74 | padding: 6;
75 | }
76 |
77 | listview {
78 | lines: 10;
79 | columns: 1;
80 | fixed-height: 0;
81 | border: 0px;
82 | border-color: @ac;
83 | spacing: 4px;
84 | scrollbar: false;
85 | padding: 5px 5px 0px 5px;
86 | }
87 |
88 | element-text, element-icon {
89 | background-color: #00000000;
90 | text-color: inherit;
91 | }
92 |
93 | element {
94 | border: 0px;
95 | border-radius: 4px;
96 | padding: 5px;
97 | }
98 | element normal.normal {
99 | background-color: @bg;
100 | text-color: @fg;
101 | }
102 | element normal.urgent {
103 | background-color: @bg;
104 | text-color: @red;
105 | }
106 | element normal.active {
107 | background-color: @green;
108 | text-color: @bg;
109 | }
110 | element selected.normal {
111 | background-color: @fg;
112 | text-color: @bg;
113 | }
114 | element selected.urgent {
115 | background-color: @bg;
116 | text-color: @red;
117 | }
118 | element selected.active {
119 | background-color: @fg;
120 | text-color: @bg;
121 | }
122 | element alternate.normal {
123 | background-color: @bg;
124 | text-color: @fg;
125 | }
126 | element alternate.urgent {
127 | background-color: @bg;
128 | text-color: @fg;
129 | }
130 | element alternate.active {
131 | background-color: @bg;
132 | text-color: @fg;
133 | }
134 |
135 | sidebar {
136 | border: 0px;
137 | border-color: @ac;
138 | border-radius: 0px;
139 | }
140 |
141 | button {
142 | horizontal-align: 0.5;
143 | vertical-align: 0.5;
144 | background-color: @fg;
145 | margin: 5px;
146 | padding: 5px;
147 | text-color: @bg;
148 | border: 0px;
149 | border-radius: 4px;
150 | border-color: @fg;
151 | }
152 |
153 | button selected {
154 | background-color: @ac;
155 | text-color: @fg;
156 | border: 0px;
157 | border-radius: 4px;
158 | border-color: @fg;
159 | }
160 |
161 | scrollbar {
162 | width: 4px;
163 | border: 0px;
164 | handle-color: @fg;
165 | handle-width: 8px;
166 | padding: 0;
167 | }
168 |
169 | message {
170 | border: 0px;
171 | border-color: @ac;
172 | padding: 1px;
173 | }
174 |
175 | textbox {
176 | text-color: @fg;
177 | }
178 |
--------------------------------------------------------------------------------