├── .gitignore ├── README.md ├── art ├── the-technomancer.jpg └── the-technomancer.png ├── colors.nix ├── configuration.nix ├── conky ├── conky-conf.nix └── conky.nix ├── i3config-extra-example.nix ├── i3wm ├── i3config.nix ├── i3status.nix └── result ├── paper-gtk2-theme.nix ├── rice.nix ├── rofi ├── rofi-conf.nix └── rofi.nix ├── scrot1.png ├── scrot2.png ├── urxvt ├── urxvt-conf.nix └── urxvt.nix └── utils └── gtk2Theme.nix /.gitignore: -------------------------------------------------------------------------------- 1 | .*.swp 2 | result 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Immutable Rice 2 | 3 | A configuration of i3, urxvt, conky and rofi using the NixOS configuration manager 4 | 5 | 6 | 7 | ## Usage 8 | Clone the repo, change the values in `configuration.nix` to your own, import rice.nix into your configuration and then simply build and apply. 9 | 10 | ## Scrots 11 | ![scrot1](/scrot1.png) 12 | 13 | 14 | ![scrot2](scrot2.png) 15 | 16 | ## Note 17 | This particular conky configration displays 8 cores, so it won't work on systems that have less than that. 18 | -------------------------------------------------------------------------------- /art/the-technomancer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stanipintjuk/immutable-rice/5c387b482e4069e0b5d9e5d305e9f953f9858118/art/the-technomancer.jpg -------------------------------------------------------------------------------- /art/the-technomancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stanipintjuk/immutable-rice/5c387b482e4069e0b5d9e5d305e9f953f9858118/art/the-technomancer.png -------------------------------------------------------------------------------- /colors.nix: -------------------------------------------------------------------------------- 1 | { 2 | accent = "#E47023"; 3 | light = "#DEE9DB"; 4 | mlight = "#B3C0B2"; 5 | mdark = "#5C6D69"; 6 | mdark2 = "#222827"; 7 | mdark3 = "#001621"; 8 | dark = "#000F16"; 9 | 10 | red = "#e23822"; 11 | dred = "#a22718"; 12 | 13 | green = "#22e258"; 14 | dgreen = "#18a33f"; 15 | 16 | yellow = "#e2e222"; 17 | dyellow = "#a2a218"; 18 | 19 | blue = "#2288e2"; 20 | dblue = "#1861a3"; 21 | 22 | magenta = "#e22265"; 23 | dmagenta = "#a21749"; 24 | 25 | cyan = "#22d9e2"; 26 | dcyan = "#189ba3"; 27 | } 28 | -------------------------------------------------------------------------------- /configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | # for autologin in wm 3 | username = "stani"; 4 | 5 | # for your own i3 keybindings and other preferences (see i3config-extra-example.nix for an example) 6 | i3-config-extra = ./i3config-extra-example.nix; 7 | } 8 | -------------------------------------------------------------------------------- /conky/conky-conf.nix: -------------------------------------------------------------------------------- 1 | { textcolor }: 2 | '' 3 | conky.config = { 4 | double_buffer = true, 5 | alignment = 'top_middle', 6 | background = false, 7 | border_width = 1, 8 | cpu_avg_samples = 2, 9 | default_color = "${textcolor}", 10 | draw_borders = false, 11 | draw_graph_borders = false, 12 | draw_outline = false, 13 | draw_shades = false, 14 | use_xft = true, 15 | font = 'Ubuntu:size=10', 16 | gap_y = 50, 17 | gap_x = 0, 18 | border_inner_margin = 20, 19 | net_avg_samples = 2, 20 | no_buffers = true, 21 | out_to_console = false, 22 | out_to_stderr = false, 23 | extra_newline = false, 24 | own_window = true, 25 | own_window_class = 'conky', 26 | own_window_type = 'override', 27 | --own_window_argb_value = 0, 28 | own_window_transparent = true, 29 | own_window_argb_visual = true, 30 | own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', 31 | stippled_borders = 0, 32 | update_interval = 1.0, 33 | uppercase = false, 34 | use_spacer = 'none', 35 | show_graph_scale = false, 36 | show_graph_range = false, 37 | text_buffer_size = 1024, 38 | }; 39 | 40 | conky.text = [[ 41 | ''${alignc}CPU 42 | $alignc''${cpubar cpu1 6, 95} 43 | $alignc''${cpubar cpu2 6, 127} 44 | $alignc''${cpubar cpu3 6, 146} 45 | $alignc''${cpubar cpu4 6, 156} 46 | $alignc''${cpubar cpu5 6, 159} 47 | $alignc''${cpubar cpu6 6, 156} 48 | $alignc''${cpubar cpu7 6, 146} 49 | $alignc''${cpubar cpu8 6, 127} 50 | $alignc''${membar 6, 95} 51 | ''${alignc}RAM 52 | ]]; 53 | '' 54 | -------------------------------------------------------------------------------- /conky/conky.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | let 3 | colors = import ../colors.nix; 4 | textcolor = builtins.replaceStrings [ "#" ] [ "" ] colors.dark; 5 | 6 | conky-config = 7 | import ./conky-conf.nix { inherit textcolor; }; 8 | 9 | conky-config-file = 10 | pkgs.writeTextFile { 11 | name = "technomancer-conky.conf"; 12 | text = conky-config; 13 | }; 14 | in 15 | pkgs.writeScript 16 | "svarog-conky" 17 | "${pkgs.conky}/bin/conky -c ${conky-config-file}" 18 | -------------------------------------------------------------------------------- /i3config-extra-example.nix: -------------------------------------------------------------------------------- 1 | { pkgs, rofi, terminal, ...}: 2 | '' 3 | set $mod Mod1 4 | 5 | floating_modifier $mod 6 | 7 | bindsym $mod+o exec ${rofi} -show run 8 | bindsym $mod+p exec ${rofi} -show ssh 9 | bindsym $mod+t exec ${terminal} 10 | bindsym $mod+Shift+q kill 11 | 12 | # change focus 13 | bindsym $mod+h focus left 14 | bindsym $mod+j focus down 15 | bindsym $mod+k focus up 16 | bindsym $mod+l focus right 17 | 18 | # alternatively, you can use the cursor keys: 19 | bindsym $mod+Left focus left 20 | bindsym $mod+Down focus down 21 | bindsym $mod+Up focus up 22 | bindsym $mod+Right focus right 23 | 24 | # move focused window 25 | bindsym $mod+Shift+h move left 26 | bindsym $mod+Shift+j move down 27 | bindsym $mod+Shift+k move up 28 | bindsym $mod+Shift+l move right 29 | 30 | # alternatively, you can use the cursor keys: 31 | bindsym $mod+Shift+Left move left 32 | bindsym $mod+Shift+Down move down 33 | bindsym $mod+Shift+Up move up 34 | bindsym $mod+Shift+Right move right 35 | 36 | # split in vertical orientation 37 | bindsym $mod+v split v 38 | 39 | # enter fullscreen mode for the focused container 40 | bindsym $mod+f fullscreen toggle 41 | 42 | # change container layout (stacked, tabbed, toggle split) 43 | bindsym $mod+s layout stacking 44 | bindsym $mod+w layout tabbed 45 | bindsym $mod+e layout toggle split 46 | 47 | # toggle tiling / floating 48 | bindsym $mod+Shift+space floating toggle 49 | 50 | # change focus between tiling / floating windows 51 | bindsym $mod+space focus mode_toggle 52 | 53 | # focus the parent container 54 | bindsym $mod+a focus parent 55 | 56 | # switch to workspace 57 | bindsym $mod+1 workspace $workspace1 58 | bindsym $mod+2 workspace $workspace2 59 | bindsym $mod+3 workspace $workspace3 60 | bindsym $mod+4 workspace $workspace4 61 | bindsym $mod+5 workspace $workspace5 62 | bindsym $mod+6 workspace $workspace6 63 | bindsym $mod+7 workspace $workspace7 64 | bindsym $mod+8 workspace $workspace8 65 | bindsym $mod+9 workspace $workspace9 66 | bindsym $mod+0 workspace $workspace10 67 | 68 | # move focused container to workspace 69 | bindsym $mod+Shift+1 move container to workspace $workspace1 70 | bindsym $mod+Shift+2 move container to workspace $workspace2 71 | bindsym $mod+Shift+3 move container to workspace $workspace3 72 | bindsym $mod+Shift+4 move container to workspace $workspace4 73 | bindsym $mod+Shift+5 move container to workspace $workspace5 74 | bindsym $mod+Shift+6 move container to workspace $workspace6 75 | bindsym $mod+Shift+7 move container to workspace $workspace7 76 | bindsym $mod+Shift+8 move container to workspace $workspace8 77 | bindsym $mod+Shift+9 move container to workspace $workspace9 78 | bindsym $mod+Shift+0 move container to workspace $workspace10 79 | 80 | # volume control 81 | bindsym XF86AudioLowerVolume exec amixer -q sset Master 3%- 82 | bindsym XF86AudioRaiseVolume exec amixer -q sset Master 3%+ 83 | 84 | # connect to my bt headset 85 | bindsym $mod+Shift+F12 exec echo "connect 00:16:94:1B:01:D8" | bluetoothctl 86 | bindsym $mod+F12 exec echo "disconnect 00:16:94:1B:01:D8" | bluetoothctl 87 | 88 | # resize window (you can also use the mouse for that) 89 | mode "resize" { 90 | # These bindings trigger as soon as you enter the resize mode 91 | 92 | # Pressing left will shrink the window’s width. 93 | # Pressing right will grow the window’s width. 94 | # Pressing up will shrink the window’s height. 95 | # Pressing down will grow the window’s height. 96 | bindsym h resize shrink width 10 px or 10 ppt 97 | bindsym j resize grow height 10 px or 10 ppt 98 | bindsym k resize shrink height 10 px or 10 ppt 99 | bindsym l resize grow width 10 px or 10 ppt 100 | 101 | # same bindings, but for the arrow keys 102 | bindsym Left resize shrink width 10 px or 10 ppt 103 | bindsym Down resize grow height 10 px or 10 ppt 104 | bindsym Up resize shrink height 10 px or 10 ppt 105 | bindsym Right resize grow width 10 px or 10 ppt 106 | 107 | # back to normal: Enter or Escape 108 | bindsym Return mode "default" 109 | bindsym Escape mode "default" 110 | } 111 | 112 | bindsym $mod+r mode "resize" 113 | bindsym $mod+Shift+c reload 114 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 115 | bindsym $mod+Shift+r restart 116 | # exit i3 (logs you out of your X session) 117 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" 118 | 119 | bindsym $mod+Control+l exec ${pkgs.i3lock-fancy}/bin/i3lock-fancy 120 | focus_follows_mouse no 121 | 122 | exec --no-startup-id ${pkgs.tdesktop}/bin/telegram-desktop 123 | exec --no-startup-id ${pkgs.pidgin}/bin/pidgin 124 | '' 125 | -------------------------------------------------------------------------------- /i3wm/i3config.nix: -------------------------------------------------------------------------------- 1 | { config-extra, terminal, rofi, conky, pkgs, config, wallpaper }: 2 | let colors = import ../colors.nix; in 3 | with colors; 4 | '' 5 | set $workspace1 1 6 | set $workspace2 2 7 | set $workspace3 3 8 | set $workspace4 4 9 | set $workspace5 5 10 | set $workspace6 6 11 | set $workspace7 7 12 | set $workspace8 8 13 | set $workspace9 9 14 | set $workspace10 10 15 | 16 | font pango:Ubuntu 8 17 | 18 | # class container-border container-backgr text indicator window-border 19 | client.focused ${mlight} ${mlight} ${dark} ${accent} ${mlight} 20 | client.focused_inactive ${mdark} ${mdark} ${light} ${accent} ${mdark} 21 | client.unfocused ${dark} ${mdark2} ${mlight} ${accent} ${mdark2} 22 | client.urgent ${accent} ${dark} ${light} ${dark} ${accent} 23 | client.placeholder ${mdark} ${mdark} ${light} ${accent} ${mdark} 24 | 25 | client.background ${light} 26 | 27 | bar { 28 | position top 29 | status_command i3status --config ${pkgs.writeTextFile { 30 | name = "i3status.conf"; 31 | text = import ./i3status.nix { inherit colors; }; 32 | } 33 | } 34 | separator_symbol " · " 35 | 36 | colors { 37 | background ${dark} 38 | statusline ${light} 39 | separator ${accent} 40 | 41 | # border background text 42 | focused_workspace ${dark} ${dark} ${mlight} 43 | active_workspace ${dark} ${dark} ${mlight} 44 | inactive_workspace ${dark} ${dark} ${mdark} 45 | urgent_workspace ${accent} ${dark} ${accent} 46 | binding_mode ${dark} ${dark} ${accent} 47 | } 48 | } 49 | 50 | for_window [class="URxvt"] border pixel 5 51 | for_window [class="vlc"] border pixel 5 52 | for_window [class="Firefox"] border pixel 5 53 | 54 | #TODO: remove these 55 | ${ 56 | if config.system.build ? vm 57 | then "exec --no-startup-id xrandr --output Virtual-1 --mode 1920x1080" 58 | else "" 59 | } 60 | 61 | exec --no-startup-id ${pkgs.feh}/bin/feh --bg-fill ${wallpaper} 62 | exec --no-startup-id ${conky} 63 | 64 | ${import config-extra {inherit pkgs terminal rofi config wallpaper;}} 65 | 66 | '' 67 | -------------------------------------------------------------------------------- /i3wm/i3status.nix: -------------------------------------------------------------------------------- 1 | { colors }: 2 | with colors; 3 | '' 4 | # i3status configuration file. 5 | # see "man i3status" for documentation. 6 | 7 | # It is important that this file is edited as UTF-8. 8 | # The following line should contain a sharp s: 9 | # ß 10 | # If the above line is not correctly displayed, fix your editor first! 11 | 12 | general { 13 | colors = true 14 | interval = 5 15 | color_good = "${accent}" 16 | color_bad = "${mdark}" 17 | color_degraded = "${accent}" 18 | } 19 | 20 | order += "ipv6" 21 | order += "disk /" 22 | order += "wireless _first_" 23 | order += "ethernet _first_" 24 | order += "battery all" 25 | order += "load" 26 | order += "tztime local" 27 | 28 | wireless _first_ { 29 | format_up = "W: (%quality at %essid) %ip" 30 | format_down = "W: down" 31 | } 32 | 33 | ethernet _first_ { 34 | # if you use %speed, i3status requires root privileges 35 | format_up = "E: %ip (%speed)" 36 | format_down = "E: down" 37 | } 38 | 39 | battery all { 40 | format = "%status %percentage %remaining" 41 | } 42 | 43 | tztime local { 44 | format = "%Y-%m-%d %H:%M:%S" 45 | } 46 | 47 | load { 48 | format = "%1min" 49 | } 50 | 51 | disk "/" { 52 | format = "%avail" 53 | } 54 | '' 55 | -------------------------------------------------------------------------------- /i3wm/result: -------------------------------------------------------------------------------- 1 | /nix/store/il97wywvgvc85wvdsr95fs3fv8c2s6jr-nixos-vm -------------------------------------------------------------------------------- /paper-gtk2-theme.nix: -------------------------------------------------------------------------------- 1 | pkgs: 2 | let 3 | gtk2theme = { 4 | package = pkgs.paper-gtk-theme; 5 | name = "Paper"; 6 | }; 7 | 8 | iconTheme = { 9 | package = pkgs.paper-icon-theme; 10 | name = "Paper"; 11 | }; 12 | 13 | in 14 | import ./utils/gtk2Theme.nix { 15 | theme = gtk2theme; 16 | icons = iconTheme; 17 | } 18 | -------------------------------------------------------------------------------- /rice.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config, ... }: 2 | 3 | # NOTE: Change the configuration.nix file to match your system 4 | # ANOTHER NOTE: Conky configuration will not work if you don't have 8 cpus 5 | with import ./configuration.nix; 6 | let 7 | # Change this variable to a configurations file with your prefered i3 keymaps. 8 | # That file must only contain your keymaps and nothing else. 9 | i3-keys = 10 | builtins.readFile i3-keys-path; 11 | 12 | urxvt = import ./urxvt/urxvt.nix { inherit pkgs; }; 13 | rofi = import ./rofi/rofi.nix { inherit pkgs; terminal = urxvt; }; 14 | conky = import ./conky/conky.nix { inherit pkgs; }; 15 | wallpaper = pkgs.copyPathToStore ./art/the-technomancer.png; 16 | 17 | i3-config = 18 | import ./i3wm/i3config.nix { 19 | config-extra = i3-config-extra; 20 | terminal = urxvt; 21 | inherit rofi pkgs conky config wallpaper; 22 | }; 23 | 24 | i3-config-file = 25 | pkgs.writeTextFile { 26 | name = "technomancer-i3.conf"; 27 | text = i3-config; 28 | }; 29 | 30 | gtk2-theme = import ./paper-gtk2-theme.nix pkgs; 31 | 32 | isVm = config.system.build ? vm; 33 | in 34 | { 35 | 36 | imports = [ 37 | gtk2-theme 38 | ]; 39 | 40 | fonts.fonts = [ 41 | pkgs.ubuntu_font_family 42 | pkgs.powerline-fonts 43 | ]; 44 | 45 | # Desktop environment 46 | services = { 47 | compton = { 48 | enable = true; 49 | fade = true; 50 | }; 51 | 52 | xserver = { 53 | 54 | # Setting up the display manager 55 | displayManager.lightdm = { 56 | enable = true; 57 | background = wallpaper; 58 | }; 59 | 60 | # Setup i3 61 | windowManager.i3 = { 62 | enable = true; 63 | configFile = i3-config-file; 64 | }; 65 | }; 66 | }; 67 | 68 | #TODO: remove these 69 | services.xserver.displayManager.lightdm.autoLogin 70 | = if isVm 71 | then { 72 | user = username; 73 | enable = true; 74 | } 75 | else 76 | {}; 77 | 78 | services.xserver.windowManager.default = "i3"; 79 | 80 | environment.systemPackages = [ pkgs.dunst pkgs.ubuntu_font_family ]; 81 | } 82 | -------------------------------------------------------------------------------- /rofi/rofi-conf.nix: -------------------------------------------------------------------------------- 1 | { colors, terminal }: 2 | with colors; 3 | '' 4 | ! "Enabled modi" Set from: Default 5 | ! rofi.modi: window,run,ssh 6 | ! "Window width" Set from: Default 7 | rofi.width: 500 8 | ! "Number of lines" Set from: Default 9 | rofi.lines: 5 10 | ! "Number of columns" Set from: Default 11 | ! rofi.columns: 1 12 | ! "Font to use" Set from: Default 13 | rofi.font: Ubuntu Mono 12 14 | ! "Color scheme for normal row" Set from: Default 15 | rofi.color-normal: ${dark}, ${light}, ${dark}, ${dark}, ${accent} 16 | ! "Color scheme for urgent row" Set from: Default 17 | ! rofi.color-urgent: #fdf6e3,#dc322f,#eee8d5,#dc322f,#fdf6e3 18 | ! "Color scheme for active row" Set from: Default 19 | ! rofi.color-active: #fdf6e3,#268bd2,#eee8d5,#268bd2,#fdf6e3 20 | ! "Color scheme window" Set from: Default 21 | rofi.color-window: ${dark}, ${dark}, ${mlight} 22 | ! "Border width" Set from: Default 23 | rofi.bw: 20 24 | ! "Location on screen" Set from: Default 25 | rofi.location: 6 26 | !rofi.padding: 20 27 | ! "Y-offset relative to location" Set from: Default 28 | !rofi.yoffset: 20 29 | ! "X-offset relative to location" Set from: Default 30 | ! rofi.xoffset: 0 31 | ! "Always show number of lines" Set from: Default 32 | ! rofi.fixed-num-lines: true 33 | ! "Terminal to use" Set from: Default 34 | rofi.terminal: "${terminal}" 35 | ! "Ssh client to use" Set from: Default 36 | ! rofi.ssh-client: ssh 37 | ! "Ssh command to execute" Set from: Default 38 | ! rofi.ssh-command: {terminal} -e {ssh-client} {host} 39 | ! "Run command to execute" Set from: Default 40 | ! rofi.run-command: {cmd} 41 | ! "Command to get extra run targets" Set from: Default 42 | ! rofi.run-list-command: 43 | ! "Run command to execute that runs in shell" Set from: Default 44 | ! rofi.run-shell-command: {terminal} -e {cmd} 45 | ! "Command executed on accep-entry-custom for window modus" Set from: Default 46 | ! rofi.window-command: xkill -id {window} 47 | ! "Disable history in run/ssh" Set from: Default 48 | ! rofi.disable-history: false 49 | ! "Use levenshtein sorting" Set from: Default 50 | ! rofi.levenshtein-sort: false 51 | ! "Set case-sensitivity" Set from: Default 52 | ! rofi.case-sensitive: false 53 | ! "Cycle through the results list" Set from: Default 54 | ! rofi.cycle: true 55 | ! "Enable sidebar-mode" Set from: Default 56 | ! rofi.sidebar-mode: false 57 | ! "Row height (in chars)" Set from: Default 58 | ! rofi.eh: 1 59 | ! "Enable auto select mode" Set from: Default 60 | ! rofi.auto-select: false 61 | ! "Parse hosts file for ssh mode" Set from: Default 62 | ! rofi.parse-hosts: false 63 | ! "Parse known_hosts file for ssh mode" Set from: Default 64 | ! rofi.parse-known-hosts: true 65 | ! "Set the modi to combine in combi mode" Set from: Default 66 | ! rofi.combi-modi: window,run 67 | ! "Set the matching algorithm. (normal, regex, glob, fuzzy)" Set from: Default 68 | ! rofi.matching: normal 69 | ! "Tokenize input string" Set from: Default 70 | ! rofi.tokenize: true 71 | ! "Monitor id to show on" Set from: Default 72 | ! rofi.m: -5 73 | ! "Margin between rows" Set from: Default 74 | ! rofi.line-margin: 2 75 | ! "Padding within rows" Set from: Default 76 | ! rofi.line-padding: 1 77 | ! "Pre-set filter" Set from: Default 78 | ! rofi.filter: 79 | ! "Separator style (none, dash, solid)" Set from: Default 80 | rofi.separator-style: solid 81 | ! "Hide scroll-bar" Set from: Default 82 | rofi.hide-scrollbar: true 83 | ! "Fullscreen" Set from: Default 84 | rofi.fullscreen: false 85 | ! "Fake transparency" Set from: Default 86 | ! rofi.fake-transparency: false 87 | ! "DPI" Set from: Default 88 | ! rofi.dpi: -1 89 | ! "Threads to use for string matching" Set from: Default 90 | ! rofi.threads: 0 91 | ! "Scrollbar width" Set from: Default 92 | ! rofi.scrollbar-width: 8 93 | ! "Scrolling method. (0: Page, 1: Centered)" Set from: Default 94 | ! rofi.scroll-method: 0 95 | ! "Background to use for fake transparency. (background or screenshot)" Set from: Default 96 | ! rofi.fake-background: screenshot 97 | ! "Window Format. w (desktop name), t (title), n (name), r (role), c (class)" Set from: Default 98 | ! rofi.window-format: {w} {c} {t} 99 | ! "Click outside the window to exit" Set from: Default 100 | ! rofi.click-to-exit: true 101 | ! "Indicate how it match by underlining it." Set from: Default 102 | ! rofi.show-match: true 103 | ! "Pidfile location" Set from: Default 104 | ! rofi.pid: /run/user/1001/rofi.pid 105 | ! "Paste primary selection" Set from: Default 106 | ! rofi.kb-primary-paste: Control+V,Shift+Insert 107 | ! "Paste clipboard" Set from: Default 108 | ! rofi.kb-secondary-paste: Control+v,Insert 109 | ! "Clear input line" Set from: Default 110 | ! rofi.kb-clear-line: Control+w 111 | ! "Beginning of line" Set from: Default 112 | ! rofi.kb-move-front: Control+a 113 | ! "End of line" Set from: Default 114 | ! rofi.kb-move-end: Control+e 115 | ! "Move back one word" Set from: Default 116 | ! rofi.kb-move-word-back: Alt+b 117 | ! "Move forward one word" Set from: Default 118 | ! rofi.kb-move-word-forward: Alt+f 119 | ! "Move back one char" Set from: Default 120 | ! rofi.kb-move-char-back: Left,Control+b 121 | ! "Move forward one char" Set from: Default 122 | ! rofi.kb-move-char-forward: Right,Control+f 123 | ! "Delete previous word" Set from: Default 124 | ! rofi.kb-remove-word-back: Control+Alt+h,Control+BackSpace 125 | ! "Delete next word" Set from: Default 126 | ! rofi.kb-remove-word-forward: Control+Alt+d 127 | ! "Delete next char" Set from: Default 128 | ! rofi.kb-remove-char-forward: Delete,Control+d 129 | ! "Delete previous char" Set from: Default 130 | ! rofi.kb-remove-char-back: BackSpace,Control+h 131 | ! "Delete till the end of line" Set from: Default 132 | ! rofi.kb-remove-to-eol: Control+k 133 | ! "Delete till the start of line" Set from: Default 134 | ! rofi.kb-remove-to-sol: Control+u 135 | ! "Accept entry" Set from: Default 136 | ! rofi.kb-accept-entry: Control+j,Control+m,Return,KP_Enter 137 | ! "Use entered text as command (in ssh/run modi)" Set from: Default 138 | ! rofi.kb-accept-custom: Control+Return 139 | ! "Use alternate accept command." Set from: Default 140 | ! rofi.kb-accept-alt: Shift+Return 141 | ! "Delete entry from history" Set from: Default 142 | ! rofi.kb-delete-entry: Shift+Delete 143 | ! "Switch to the next mode." Set from: Default 144 | ! rofi.kb-mode-next: Shift+Right,Control+Tab 145 | ! "Switch to the previous mode." Set from: Default 146 | ! rofi.kb-mode-previous: Shift+Left,Control+Shift+Tab 147 | ! "Go to the previous column" Set from: Default 148 | ! rofi.kb-row-left: Control+Page_Up 149 | ! "Go to the next column" Set from: Default 150 | ! rofi.kb-row-right: Control+Page_Down 151 | ! "Select previous entry" Set from: Default 152 | ! rofi.kb-row-up: Up,Control+p,Shift+Tab,Shift+ISO_Left_Tab 153 | ! "Select next entry" Set from: Default 154 | ! rofi.kb-row-down: Down,Control+n 155 | ! "Go to next row, if one left, accept it, if no left next mode." Set from: Default 156 | ! rofi.kb-row-tab: Tab 157 | ! "Go to the previous page" Set from: Default 158 | ! rofi.kb-page-prev: Page_Up 159 | ! "Go to the next page" Set from: Default 160 | ! rofi.kb-page-next: Page_Down 161 | ! "Go to the first entry" Set from: Default 162 | ! rofi.kb-row-first: Home,KP_Home 163 | ! "Go to the last entry" Set from: Default 164 | ! rofi.kb-row-last: End,KP_End 165 | ! "Set selected item as input text" Set from: Default 166 | ! rofi.kb-row-select: Control+space 167 | ! "Take a screenshot of the rofi window" Set from: Default 168 | ! rofi.kb-screenshot: Alt+S 169 | ! "Toggle case sensitivity" Set from: Default 170 | ! rofi.kb-toggle-case-sensitivity: grave,dead_grave 171 | ! "Toggle sort" Set from: Default 172 | ! rofi.kb-toggle-sort: Alt+grave 173 | ! "Quit rofi" Set from: Default 174 | ! rofi.kb-cancel: Escape,Control+g,Control+bracketleft 175 | ! "Custom keybinding 1" Set from: Default 176 | ! rofi.kb-custom-1: Alt+1 177 | ! "Custom keybinding 2" Set from: Default 178 | ! rofi.kb-custom-2: Alt+2 179 | ! "Custom keybinding 3" Set from: Default 180 | ! rofi.kb-custom-3: Alt+3 181 | ! "Custom keybinding 4" Set from: Default 182 | ! rofi.kb-custom-4: Alt+4 183 | ! "Custom Keybinding 5" Set from: Default 184 | ! rofi.kb-custom-5: Alt+5 185 | ! "Custom keybinding 6" Set from: Default 186 | ! rofi.kb-custom-6: Alt+6 187 | ! "Custom Keybinding 7" Set from: Default 188 | ! rofi.kb-custom-7: Alt+7 189 | ! "Custom keybinding 8" Set from: Default 190 | ! rofi.kb-custom-8: Alt+8 191 | ! "Custom keybinding 9" Set from: Default 192 | ! rofi.kb-custom-9: Alt+9 193 | ! "Custom keybinding 10" Set from: Default 194 | ! rofi.kb-custom-10: Alt+0 195 | ! "Custom keybinding 11" Set from: Default 196 | ! rofi.kb-custom-11: Alt+exclam 197 | ! "Custom keybinding 12" Set from: Default 198 | ! rofi.kb-custom-12: Alt+at 199 | ! "Csutom keybinding 13" Set from: Default 200 | ! rofi.kb-custom-13: Alt+numbersign 201 | ! "Custom keybinding 14" Set from: Default 202 | ! rofi.kb-custom-14: Alt+dollar 203 | ! "Custom keybinding 15" Set from: Default 204 | ! rofi.kb-custom-15: Alt+percent 205 | ! "Custom keybinding 16" Set from: Default 206 | ! rofi.kb-custom-16: Alt+dead_circumflex 207 | ! "Custom keybinding 17" Set from: Default 208 | ! rofi.kb-custom-17: Alt+ampersand 209 | ! "Custom keybinding 18" Set from: Default 210 | ! rofi.kb-custom-18: Alt+asterisk 211 | ! "Custom Keybinding 19" Set from: Default 212 | ! rofi.kb-custom-19: Alt+parenleft 213 | ! "The display name of this browser" Set from: Default 214 | ! rofi.display-ssh: 215 | ! "The display name of this browser" Set from: Default 216 | ! rofi.display-run: λ 217 | ! "The display name of this browser" Set from: Default 218 | ! rofi.display-drun: 219 | ! "The display name of this browser" Set from: Default 220 | ! rofi.display-window: 221 | ! "The display name of this browser" Set from: Default 222 | ! rofi.display-windowcd: 223 | ! "The display name of this browser" Set from: Default 224 | ! rofi.display-combi: 225 | '' 226 | -------------------------------------------------------------------------------- /rofi/rofi.nix: -------------------------------------------------------------------------------- 1 | { pkgs, terminal}: 2 | let 3 | colors = import ../colors.nix; 4 | 5 | rofi-config = import ./rofi-conf.nix { 6 | inherit colors terminal; 7 | }; 8 | 9 | rofi-config-file = pkgs.writeTextFile { 10 | name = "technomancer-rofi.config"; 11 | text = rofi-config; 12 | }; 13 | 14 | roficmd = 15 | '' 16 | ${pkgs.coreutils}/bin/env XENVIRONMENT=${rofi-config-file} ${pkgs.rofi}/bin/rofi -display-run λ $@ 17 | ''; 18 | 19 | in 20 | pkgs.writeScript "svarog-rofi" roficmd 21 | -------------------------------------------------------------------------------- /scrot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stanipintjuk/immutable-rice/5c387b482e4069e0b5d9e5d305e9f953f9858118/scrot1.png -------------------------------------------------------------------------------- /scrot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stanipintjuk/immutable-rice/5c387b482e4069e0b5d9e5d305e9f953f9858118/scrot2.png -------------------------------------------------------------------------------- /urxvt/urxvt-conf.nix: -------------------------------------------------------------------------------- 1 | { colors }: 2 | with colors; 3 | '' 4 | URxvt.depth: 32 5 | URxvt.geometry: 90x30 6 | URxvt.transparent: false 7 | URxvt.fading: 0 8 | ! URxvt.urgentOnBell: true 9 | ! URxvt.visualBell: true 10 | URxvt.loginShell: true 11 | URxvt.saveLines: 5000 12 | URxvt.internalBorder: 7 13 | URxvt.borderColor: ${mdark3} 14 | URxvt.lineSpace: 0 15 | 16 | ! Fonts 17 | URxvt.allow_bold: true 18 | /* URxvt.font: -*-terminus-medium-r-normal-*-12-120-72-72-c-60-iso8859-1 */ 19 | !!URxvt.font: xft:Droid Sans Mono for Powerline:size=10:antialias=true 20 | URxvt.font: xft:Literation Mono Powerline:size=10:antialias=true 21 | !!URxvt*font: xft:Monospace:pixelsize=14 22 | !!URxvt*boldFont: xft:Monospace:pixelsize=14 23 | 24 | ! Fix font space 25 | URxvt*letterSpace: 0 26 | 27 | ! Scrollbar 28 | URxvt.scrollStyle: rxvt 29 | URxvt.scrollBar: false 30 | 31 | ! Perl extensions 32 | URxvt.perl-ext-common: default,matcher 33 | URxvt.matcher.button: 1 34 | URxvt.urlLauncher: firefox 35 | 36 | ! Cursor 37 | URxvt.cursorBlink: false 38 | URxvt.cursorColor: ${accent} 39 | URxvt.cursorUnderline: false 40 | 41 | ! Pointer 42 | URxvt.pointerBlank: true 43 | 44 | *background: ${dark} 45 | *foreground: ${light} 46 | !*foreground: #657b83 47 | !!*fading: 40 48 | !!*fadeColor: #002b36 49 | !!*cursorColor: #93a1a1 50 | !!*pointerColorBackground: #586e75 51 | !!*pointerColorForeground: #93a1a1 52 | 53 | !! black dark/light 54 | *color0: ${dark} 55 | *color8: ${mdark} 56 | 57 | !! red dark/light 58 | *color1: ${dred} 59 | *color9: ${red} 60 | 61 | !! green dark/light 62 | *color2: ${dgreen} 63 | *color10: ${green} 64 | 65 | !! yellow dark/light 66 | *color3: ${dyellow} 67 | *color11: ${yellow} 68 | 69 | !! blue dark/light 70 | *color4: ${dblue} 71 | *color12: ${blue} 72 | 73 | !! magenta dark/light 74 | *color5: ${dmagenta} 75 | *color13: ${magenta} 76 | 77 | !! cyan dark/light 78 | *color6: ${dcyan} 79 | *color14: ${cyan} 80 | 81 | !! white dark/light 82 | *color7: ${light} 83 | *color15: ${mlight} 84 | 85 | !! bold color 86 | !!URxvt.colorDB: #A85C28 87 | !!URxvt.colorIT: #A85C28 88 | !!URxvt.underlineColor: #A85C28 89 | !!URxvt.highlightColor: #A85C28 90 | !!URxvt.highlightTextColor: #B5AF87 91 | '' 92 | -------------------------------------------------------------------------------- /urxvt/urxvt.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: 2 | let 3 | colors = import ../colors.nix; 4 | 5 | urxvt-config = 6 | import ./urxvt-conf.nix{ inherit colors; }; 7 | 8 | urxvt-config-file = 9 | pkgs.writeTextFile { 10 | name="urxvt-xresources"; 11 | text=urxvt-config; 12 | }; 13 | 14 | in 15 | 16 | pkgs.writeScript 17 | "svarog-urxvt" 18 | ''${pkgs.coreutils}/bin/env XENVIRONMENT=${urxvt-config-file} ${pkgs.rxvt_unicode}/bin/urxvt $@'' 19 | -------------------------------------------------------------------------------- /utils/gtk2Theme.nix: -------------------------------------------------------------------------------- 1 | # Paramaters 2 | # theme = { 3 | # package = the package name of the theme 4 | # name = The location of the theme in .../share/themes/ 5 | # } 6 | # 7 | # icons = { 8 | # package = the package name of the icon theme 9 | # name = The locaion of the icon pack in .../share/icons/ 10 | # } 11 | # 12 | # returns a nix configuration function, so it 13 | # should be placed inside the imports configuration option. 14 | # 15 | # usage example: 16 | # in yout configuration.nix: 17 | # 18 | # imports = [ ... 19 | # import .../.../gtk2Theme.nix { 20 | # theme = { 21 | # package = pkgs.arc-theme; 22 | # name = "Arc"; 23 | # }; 24 | # icons = { 25 | # package = pkgs.breeze-icons; 26 | # name = "Breeze"; 27 | # }; 28 | # } 29 | # 30 | # ... ] 31 | 32 | { theme, icons }: 33 | 34 | { pkgs, ...}: 35 | let themeEnv = 36 | '' 37 | export GTK2_RC_FILES=${pkgs.writeText "iconrc" ''gtk-icon-theme-name="${icons.name}"''}:${theme.package}/share/themes/${theme.name}/gtk-2.0/gtkrc:$GTK2_RC_FILES 38 | export GDK_PIXBUF_MODULE_FILE=$(echo ${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache) 39 | ''; 40 | in 41 | { 42 | environment.extraInit = themeEnv; 43 | environment.systemPackages = [ 44 | theme.package 45 | icons.package 46 | ]; 47 | } 48 | --------------------------------------------------------------------------------