Compare commits
No commits in common. "master" and "aurora" have entirely different histories.
48
.dotter/global.toml
Normal file
48
.dotter/global.toml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
[helpers]
|
||||||
|
|
||||||
|
[default]
|
||||||
|
depends = []
|
||||||
|
|
||||||
|
[manjaro.files]
|
||||||
|
manjaro = "~"
|
||||||
|
|
||||||
|
[mc.files]
|
||||||
|
mc = "~/.config/mc"
|
||||||
|
|
||||||
|
[vim.files]
|
||||||
|
# type symbolic prevents interpreting '{{' as template
|
||||||
|
"vim/.vimrc" = { target = "~/.vimrc", type = "symbolic" }
|
||||||
|
|
||||||
|
[nvim.files]
|
||||||
|
"vim/init.vim" = { target = "~/.config/nvim/init.vim", type = "symbolic" }
|
||||||
|
|
||||||
|
[i3.files]
|
||||||
|
"i3/dunst" = "~/.config/dunst"
|
||||||
|
"i3/i3" = "~/.config/i3"
|
||||||
|
"i3/i3blocks" = { target = "~/.config/i3blocks", type = "symbolic" }
|
||||||
|
"i3/rofi" = "~/.config/rofi"
|
||||||
|
"i3/i3-scrot.conf" = "~/.config/i3-scrot.conf"
|
||||||
|
|
||||||
|
[emacs.files]
|
||||||
|
"emacs/doom" = "~/.config/doom"
|
||||||
|
"emacs/spacemacs/.spacemacs" = "~/.spacemacs"
|
||||||
|
"emacs/chemacs/.emacs-profiles.el" = "~/.emacs-profiles.el"
|
||||||
|
|
||||||
|
[alacritty.files]
|
||||||
|
alacritty = "~/.config/alacritty"
|
||||||
|
|
||||||
|
[starship.files]
|
||||||
|
starship = "~/.config/"
|
||||||
|
|
||||||
|
[zsh.files]
|
||||||
|
"zsh/.zshrc" = "~/.zshrc"
|
||||||
|
"zsh/custom-plugins" = "~/.oh-my-zsh/custom"
|
||||||
|
|
||||||
|
[polybar.files]
|
||||||
|
polybar = "~/.config/polybar"
|
||||||
|
|
||||||
|
[leftwm.files]
|
||||||
|
leftwm = "~/.config/leftwm"
|
||||||
|
|
||||||
|
[xmonad.files]
|
||||||
|
xmonad = "~/.xmonad"
|
2
.dotter/local.toml
Normal file
2
.dotter/local.toml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# includes = []
|
||||||
|
packages = ["mc", "nvim", "emacs", "i3", "alacritty", "starship", "zsh", "polybar"]
|
@ -1,58 +0,0 @@
|
|||||||
name: Update Nix Flake
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "30 0 * * *" # daily run
|
|
||||||
workflow_dispatch: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-flake:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
token: "${{ gitea.token }}"
|
|
||||||
fetch-depth: 0
|
|
||||||
ref: flake-updates
|
|
||||||
|
|
||||||
- name: Git config
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git config user.name "Gitea Actions"
|
|
||||||
git config user.email "actions@gitea.local"
|
|
||||||
|
|
||||||
- name: Rebase from master branch
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git fetch origin master
|
|
||||||
commits_ahead=$(git rev-list --count HEAD..origin/master)
|
|
||||||
echo "Commits ahead: $commits_ahead"
|
|
||||||
git log --oneline -5
|
|
||||||
echo "----------"
|
|
||||||
git log --oneline -5 origin/master
|
|
||||||
echo .
|
|
||||||
|
|
||||||
if [ $commits_ahead -ne 0 ]
|
|
||||||
then
|
|
||||||
git rebase -X theirs origin/master
|
|
||||||
git push --force-with-lease origin flake-updates
|
|
||||||
else
|
|
||||||
echo "Rebase not necessary"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Set up Nix
|
|
||||||
uses: cachix/install-nix-action@v31
|
|
||||||
|
|
||||||
- name: Update Flake
|
|
||||||
run: nix flake update
|
|
||||||
|
|
||||||
- name: Commit and push changes
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git add flake.lock
|
|
||||||
git status
|
|
||||||
git diff --cached --quiet && echo "No changes to commit." && exit 0
|
|
||||||
|
|
||||||
git commit -m "Update flake.lock $(date -I)"
|
|
||||||
git push --force-with-lease origin flake-updates
|
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,3 +1,2 @@
|
|||||||
.direnv
|
.dotter/cache.toml
|
||||||
result*
|
.dotter/cache
|
||||||
*.qcow2
|
|
||||||
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "current"]
|
||||||
|
path = leftwm/themes/current
|
||||||
|
url = https://github.com/lex148/forest
|
27
.sops.yaml
27
.sops.yaml
@ -1,27 +0,0 @@
|
|||||||
keys:
|
|
||||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
|
||||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
|
||||||
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
|
||||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
|
||||||
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
|
|
||||||
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: hosts/common/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- *aspi-ssh
|
|
||||||
- *pianonix-ssh
|
|
||||||
- *kardorf-ssh
|
|
||||||
|
|
||||||
- path_regex: hosts/builder/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- *builder-ssh
|
|
||||||
|
|
||||||
- path_regex: hosts/pianonix/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- *pianonix-ssh
|
|
17
README.md
Normal file
17
README.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# My dotfiles
|
||||||
|
Welcome!
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
All neccessary dependencies I could think of are listed in the *dependencies* file.
|
||||||
|
|
||||||
|
## Link configs
|
||||||
|
```sh
|
||||||
|
cd .dotfiles
|
||||||
|
stow i3 mc emacs vim
|
||||||
|
```
|
||||||
|
|
||||||
|
## Alternative with [dotter](https://github.com/SuperCuber/dotter):
|
||||||
|
``` sh
|
||||||
|
cd .dotfiles
|
||||||
|
dotter deploy
|
||||||
|
```
|
33
Readme.org
33
Readme.org
@ -1,33 +0,0 @@
|
|||||||
#+title: My dotfiles
|
|
||||||
|
|
||||||
My dotfiles for which I am using =nix=.
|
|
||||||
The structure is managed by [[https://snowfall.org/guides/lib/quickstart/][Snowfall lib]]
|
|
||||||
|
|
||||||
* Machine selection
|
|
||||||
=home-manager= automatically searches for =user= or =user@hostname= config in the flake, so specify one of those or you will have to manually specify them:
|
|
||||||
=home-manager switch --flake .#user@hostname=
|
|
||||||
|
|
||||||
* Manual symlinks
|
|
||||||
[[file:laptop-nix.conf]] was manually symlinked to file:/etc/nix/nix.conf
|
|
||||||
and [[file:flake.nix]] was symlinked to file:~/.config/home-manager/flake.nix
|
|
||||||
|
|
||||||
For deployment!!
|
|
||||||
|
|
||||||
* Secrets management with sops
|
|
||||||
Full documentation here: https://github.com/Mic92/sops-nix
|
|
||||||
|
|
||||||
** Edit secrets
|
|
||||||
#+begin_src sh
|
|
||||||
sops edit secrets/secrets.yaml
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Authorize new device
|
|
||||||
- Generate public key from ssh -> Private age key generation not needed
|
|
||||||
#+begin_src sh
|
|
||||||
ssh-to-age < /etc/ssh/ssh_host_ed25519_key
|
|
||||||
#+end_src
|
|
||||||
- Add age public key to file:.sops.yaml
|
|
||||||
- Update keys
|
|
||||||
#+begin_src sh
|
|
||||||
sops updatekeys secrets/*
|
|
||||||
#+end_src
|
|
862
alacritty/alacritty.yml
Normal file
862
alacritty/alacritty.yml
Normal file
@ -0,0 +1,862 @@
|
|||||||
|
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
||||||
|
|
||||||
|
items:
|
||||||
|
- colors:
|
||||||
|
name: 3024 (dark)
|
||||||
|
author: Chris Kempson
|
||||||
|
primary:
|
||||||
|
background: "#090300"
|
||||||
|
foreground: "#a5a2a2"
|
||||||
|
cursor:
|
||||||
|
text: "#090300"
|
||||||
|
cursor: "#a5a2a2"
|
||||||
|
normal:
|
||||||
|
black: "#090300"
|
||||||
|
red: "#db2d20"
|
||||||
|
green: "#01a252"
|
||||||
|
yellow: "#fded02"
|
||||||
|
blue: "#01a0e4"
|
||||||
|
magenta: "#a16a94"
|
||||||
|
cyan: "#b5e4f4"
|
||||||
|
white: "#a5a2a2"
|
||||||
|
bright:
|
||||||
|
black: "#5c5855"
|
||||||
|
red: "#db2d20"
|
||||||
|
green: "#01a252"
|
||||||
|
yellow: "#fded02"
|
||||||
|
blue: "#01a0e4"
|
||||||
|
magenta: "#a16a94"
|
||||||
|
cyan: "#b5e4f4"
|
||||||
|
white: "#f7f7f7"
|
||||||
|
- theme: 3024.dark
|
||||||
|
colors:
|
||||||
|
name: vscode (dark)
|
||||||
|
author: senpai-10
|
||||||
|
primary:
|
||||||
|
background: "#1E1E1E"
|
||||||
|
foreground: "#D4D4D4"
|
||||||
|
cursor:
|
||||||
|
text: "#1d1f21"
|
||||||
|
cursor: "#cccccc"
|
||||||
|
normal:
|
||||||
|
black: "#000000"
|
||||||
|
red: "#cd3131"
|
||||||
|
green: "#0dbc79"
|
||||||
|
yellow: "#e5e510"
|
||||||
|
blue: "#2472c8"
|
||||||
|
magenta: "#bc3fbc"
|
||||||
|
cyan: "#11a8cd"
|
||||||
|
white: "#e5e5e5"
|
||||||
|
bright:
|
||||||
|
black: "#666666"
|
||||||
|
red: "#f14c4c"
|
||||||
|
green: "#23d18b"
|
||||||
|
yellow: "#f5f543"
|
||||||
|
blue: "#3b8eea"
|
||||||
|
magenta: "#d670d6"
|
||||||
|
cyan: "#29b8db"
|
||||||
|
white: "#e5e5e5"
|
||||||
|
theme: vscode.dark
|
||||||
|
|
||||||
|
# Import additional configuration files
|
||||||
|
#
|
||||||
|
# Imports are loaded in order, skipping all missing files, with the importing
|
||||||
|
# file being loaded last. If a field is already present in a previous import, it
|
||||||
|
# will be replaced.
|
||||||
|
#
|
||||||
|
# All imports must either be absolute paths starting with `/`, or paths relative
|
||||||
|
# to the user's home directory starting with `~/`.
|
||||||
|
#import:
|
||||||
|
# - /path/to/alacritty.yml
|
||||||
|
# Any items in the `env` entry below will be added as
|
||||||
|
# environment variables. Some entries may override variables
|
||||||
|
# set by alacritty itself.
|
||||||
|
#env:
|
||||||
|
# TERM variable
|
||||||
|
#
|
||||||
|
# This value is used to set the `$TERM` environment variable for
|
||||||
|
# each instance of Alacritty. If it is not present, alacritty will
|
||||||
|
# check the local terminfo database and use `alacritty` if it is
|
||||||
|
# available, otherwise `xterm-256color` is used.
|
||||||
|
#TERM: alacritty
|
||||||
|
#window:
|
||||||
|
# Window dimensions (changes require restart)
|
||||||
|
#
|
||||||
|
# Number of lines/columns (not pixels) in the terminal. The number of columns
|
||||||
|
# must be at least `2`, while using a value of `0` for columns and lines will
|
||||||
|
# fall back to the window manager's recommended size.
|
||||||
|
#dimensions:
|
||||||
|
# columns: 0
|
||||||
|
# lines: 0
|
||||||
|
# Window position (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of pixels.
|
||||||
|
# If the position is not set, the window manager will handle the placement.
|
||||||
|
#position:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
# Window padding (changes require restart)
|
||||||
|
#
|
||||||
|
# Blank space added around the window in pixels. This padding is scaled
|
||||||
|
# by DPI and the specified value is always added at both opposing sides.
|
||||||
|
#padding:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
# Spread additional padding evenly around the terminal content.
|
||||||
|
#dynamic_padding: false
|
||||||
|
# Window decorations
|
||||||
|
#
|
||||||
|
# Values for `decorations`:
|
||||||
|
# - full: Borders and title bar
|
||||||
|
# - none: Neither borders nor title bar
|
||||||
|
#
|
||||||
|
# Values for `decorations` (macOS only):
|
||||||
|
# - transparent: Title bar, transparent background and title bar buttons
|
||||||
|
# - buttonless: Title bar, transparent background and no title bar buttons
|
||||||
|
#decorations: full
|
||||||
|
# Background opacity
|
||||||
|
#
|
||||||
|
# Window opacity as a floating point number from `0.0` to `1.0`.
|
||||||
|
# The value `0.0` is completely transparent and `1.0` is opaque.
|
||||||
|
#opacity: 1.0
|
||||||
|
# Startup Mode (changes require restart)
|
||||||
|
#
|
||||||
|
# Values for `startup_mode`:
|
||||||
|
# - Windowed
|
||||||
|
# - Maximized
|
||||||
|
# - Fullscreen
|
||||||
|
#
|
||||||
|
# Values for `startup_mode` (macOS only):
|
||||||
|
# - SimpleFullscreen
|
||||||
|
#startup_mode: Windowed
|
||||||
|
# Window title
|
||||||
|
#title: Alacritty
|
||||||
|
# Allow terminal applications to change Alacritty's window title.
|
||||||
|
#dynamic_title: true
|
||||||
|
# Window class (Linux/BSD only):
|
||||||
|
#class:
|
||||||
|
# Application instance name
|
||||||
|
#instance: Alacritty
|
||||||
|
# General application class
|
||||||
|
#general: Alacritty
|
||||||
|
# GTK theme variant (Linux/BSD only)
|
||||||
|
#
|
||||||
|
# Override the variant of the GTK theme. Commonly supported values are `dark`
|
||||||
|
# and `light`. Set this to `None` to use the default theme variant.
|
||||||
|
#gtk_theme_variant: None
|
||||||
|
#scrolling:
|
||||||
|
# Maximum number of lines in the scrollback buffer.
|
||||||
|
# Specifying '0' will disable scrolling.
|
||||||
|
#history: 10000
|
||||||
|
# Scrolling distance multiplier.
|
||||||
|
#multiplier: 3
|
||||||
|
# Font configuration
|
||||||
|
#font:
|
||||||
|
# Normal (roman) font face
|
||||||
|
#normal:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) Menlo
|
||||||
|
# - (Linux/BSD) monospace
|
||||||
|
# - (Windows) Consolas
|
||||||
|
#family: monospace
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
#style: Regular
|
||||||
|
# Bold font face
|
||||||
|
#bold:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
#family: monospace
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
#style: Bold
|
||||||
|
# Italic font face
|
||||||
|
#italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
#family: monospace
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
#style: Italic
|
||||||
|
# Bold italic font face
|
||||||
|
#bold_italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
#family: monospace
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
#style: Bold Italic
|
||||||
|
# Point size
|
||||||
|
#size: 11.0
|
||||||
|
# Offset is the extra space around each character. `offset.y` can be thought
|
||||||
|
# of as modifying the line spacing, and `offset.x` as modifying the letter
|
||||||
|
# spacing.
|
||||||
|
#offset:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
# Glyph offset determines the locations of the glyphs within their cells with
|
||||||
|
# the default being at the bottom. Increasing `x` moves the glyph to the
|
||||||
|
# right, increasing `y` moves the glyph upward.
|
||||||
|
#glyph_offset:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
# Thin stroke font rendering (macOS only)
|
||||||
|
#
|
||||||
|
# Thin strokes are suitable for retina displays, but for non-retina screens
|
||||||
|
# it is recommended to set `use_thin_strokes` to `false`.
|
||||||
|
#use_thin_strokes: true
|
||||||
|
# Use built-in font for box drawing characters.
|
||||||
|
#
|
||||||
|
# If `true`, Alacritty will use a custom built-in font for box drawing
|
||||||
|
# characters (Unicode points 2500 - 259f).
|
||||||
|
#
|
||||||
|
#builtin_box_drawing: true
|
||||||
|
# If `true`, bold text is drawn using the bright color variants.
|
||||||
|
#draw_bold_text_with_bright_colors: false
|
||||||
|
# Colors (Tomorrow Night)
|
||||||
|
#colors:
|
||||||
|
# Default colors
|
||||||
|
#primary:
|
||||||
|
# background: '#1d1f21'
|
||||||
|
# foreground: '#c5c8c6'
|
||||||
|
# Bright and dim foreground colors
|
||||||
|
#
|
||||||
|
# The dimmed foreground color is calculated automatically if it is not
|
||||||
|
# present. If the bright foreground color is not set, or
|
||||||
|
# `draw_bold_text_with_bright_colors` is `false`, the normal foreground
|
||||||
|
# color will be used.
|
||||||
|
#dim_foreground: '#828482'
|
||||||
|
#bright_foreground: '#eaeaea'
|
||||||
|
# Cursor colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the terminal cursor.
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#cursor:
|
||||||
|
# text: CellBackground
|
||||||
|
# cursor: CellForeground
|
||||||
|
# Vi mode cursor colors
|
||||||
|
#
|
||||||
|
# Colors for the cursor when the vi mode is active.
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#vi_mode_cursor:
|
||||||
|
# text: CellBackground
|
||||||
|
# cursor: CellForeground
|
||||||
|
# Search colors
|
||||||
|
#
|
||||||
|
# Colors used for the search bar and match highlighting.
|
||||||
|
#search:
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#matches:
|
||||||
|
# foreground: '#000000'
|
||||||
|
# background: '#ffffff'
|
||||||
|
#focused_match:
|
||||||
|
# foreground: '#ffffff'
|
||||||
|
# background: '#000000'
|
||||||
|
#bar:
|
||||||
|
# background: '#c5c8c6'
|
||||||
|
# foreground: '#1d1f21'
|
||||||
|
# Keyboard regex hints
|
||||||
|
#hints:
|
||||||
|
# First character in the hint label
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#start:
|
||||||
|
# foreground: '#1d1f21'
|
||||||
|
# background: '#e9ff5e'
|
||||||
|
# All characters after the first one in the hint label
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#end:
|
||||||
|
# foreground: '#e9ff5e'
|
||||||
|
# background: '#1d1f21'
|
||||||
|
# Line indicator
|
||||||
|
#
|
||||||
|
# Color used for the indicator displaying the position in history during
|
||||||
|
# search and vi mode.
|
||||||
|
#
|
||||||
|
# By default, these will use the opposing primary color.
|
||||||
|
#line_indicator:
|
||||||
|
# foreground: None
|
||||||
|
# background: None
|
||||||
|
# Selection colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the selection area.
|
||||||
|
#
|
||||||
|
# Allowed values are CellForeground/CellBackground, which reference the
|
||||||
|
# affected cell, or hexadecimal colors like #ff00ff.
|
||||||
|
#selection:
|
||||||
|
# text: CellBackground
|
||||||
|
# background: CellForeground
|
||||||
|
# Normal colors
|
||||||
|
#normal:
|
||||||
|
# black: '#1d1f21'
|
||||||
|
# red: '#cc6666'
|
||||||
|
# green: '#b5bd68'
|
||||||
|
# yellow: '#f0c674'
|
||||||
|
# blue: '#81a2be'
|
||||||
|
# magenta: '#b294bb'
|
||||||
|
# cyan: '#8abeb7'
|
||||||
|
# white: '#c5c8c6'
|
||||||
|
# Bright colors
|
||||||
|
#bright:
|
||||||
|
# black: '#666666'
|
||||||
|
# red: '#d54e53'
|
||||||
|
# green: '#b9ca4a'
|
||||||
|
# yellow: '#e7c547'
|
||||||
|
# blue: '#7aa6da'
|
||||||
|
# magenta: '#c397d8'
|
||||||
|
# cyan: '#70c0b1'
|
||||||
|
# white: '#eaeaea'
|
||||||
|
# Dim colors
|
||||||
|
#
|
||||||
|
# If the dim colors are not set, they will be calculated automatically based
|
||||||
|
# on the `normal` colors.
|
||||||
|
#dim:
|
||||||
|
# black: '#131415'
|
||||||
|
# red: '#864343'
|
||||||
|
# green: '#777c44'
|
||||||
|
# yellow: '#9e824c'
|
||||||
|
# blue: '#556a7d'
|
||||||
|
# magenta: '#75617b'
|
||||||
|
# cyan: '#5b7d78'
|
||||||
|
# white: '#828482'
|
||||||
|
# Indexed Colors
|
||||||
|
#
|
||||||
|
# The indexed colors include all colors from 16 to 256.
|
||||||
|
# When these are not set, they're filled with sensible defaults.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { index: 16, color: '#ff00ff' }`
|
||||||
|
#
|
||||||
|
#indexed_colors: []
|
||||||
|
# Transparent cell backgrounds
|
||||||
|
#
|
||||||
|
# Whether or not `window.opacity` applies to all cell backgrounds or only to
|
||||||
|
# the default background. When set to `true` all cells will be transparent
|
||||||
|
# regardless of their background color.
|
||||||
|
#transparent_background_colors: false
|
||||||
|
# Bell
|
||||||
|
#
|
||||||
|
# The bell is rung every time the BEL control character is received.
|
||||||
|
#bell:
|
||||||
|
# Visual Bell Animation
|
||||||
|
#
|
||||||
|
# Animation effect for flashing the screen when the visual bell is rung.
|
||||||
|
#
|
||||||
|
# Values for `animation`:
|
||||||
|
# - Ease
|
||||||
|
# - EaseOut
|
||||||
|
# - EaseOutSine
|
||||||
|
# - EaseOutQuad
|
||||||
|
# - EaseOutCubic
|
||||||
|
# - EaseOutQuart
|
||||||
|
# - EaseOutQuint
|
||||||
|
# - EaseOutExpo
|
||||||
|
# - EaseOutCirc
|
||||||
|
# - Linear
|
||||||
|
#animation: EaseOutExpo
|
||||||
|
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
|
||||||
|
# disable the visual bell animation.
|
||||||
|
#duration: 0
|
||||||
|
# Visual bell animation color.
|
||||||
|
#color: '#ffffff'
|
||||||
|
# Bell Command
|
||||||
|
#
|
||||||
|
# This program is executed whenever the bell is rung.
|
||||||
|
#
|
||||||
|
# When set to `command: None`, no command will be executed.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# command:
|
||||||
|
# program: notify-send
|
||||||
|
# args: ["Hello, World!"]
|
||||||
|
#
|
||||||
|
#command: None
|
||||||
|
#selection:
|
||||||
|
# This string contains all characters that are used as separators for
|
||||||
|
# "semantic words" in Alacritty.
|
||||||
|
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
|
||||||
|
# When set to `true`, selected text will be copied to the primary clipboard.
|
||||||
|
#save_to_clipboard: false
|
||||||
|
#cursor:
|
||||||
|
# Cursor style
|
||||||
|
#style:
|
||||||
|
# Cursor shape
|
||||||
|
#
|
||||||
|
# Values for `shape`:
|
||||||
|
# - ▇ Block
|
||||||
|
# - _ Underline
|
||||||
|
# - | Beam
|
||||||
|
#shape: Block
|
||||||
|
# Cursor blinking state
|
||||||
|
#
|
||||||
|
# Values for `blinking`:
|
||||||
|
# - Never: Prevent the cursor from ever blinking
|
||||||
|
# - Off: Disable blinking by default
|
||||||
|
# - On: Enable blinking by default
|
||||||
|
# - Always: Force the cursor to always blink
|
||||||
|
#blinking: Off
|
||||||
|
# Vi mode cursor style
|
||||||
|
#
|
||||||
|
# If the vi mode cursor style is `None` or not specified, it will fall back to
|
||||||
|
# the style of the active value of the normal cursor.
|
||||||
|
#
|
||||||
|
# See `cursor.style` for available options.
|
||||||
|
#vi_mode_style: None
|
||||||
|
# Cursor blinking interval in milliseconds.
|
||||||
|
#blink_interval: 750
|
||||||
|
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||||
|
# window is not focused.
|
||||||
|
#unfocused_hollow: true
|
||||||
|
# Thickness of the cursor relative to the cell width as floating point number
|
||||||
|
# from `0.0` to `1.0`.
|
||||||
|
#thickness: 0.15
|
||||||
|
# Live config reload (changes require restart)
|
||||||
|
#live_config_reload: true
|
||||||
|
# Shell
|
||||||
|
#
|
||||||
|
# You can set `shell.program` to the path of your favorite shell, e.g.
|
||||||
|
# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
|
||||||
|
# shell.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) /bin/bash --login
|
||||||
|
# - (Linux/BSD) user login shell
|
||||||
|
# - (Windows) powershell
|
||||||
|
#shell:
|
||||||
|
# program: /bin/bash
|
||||||
|
# args:
|
||||||
|
# - --login
|
||||||
|
# Startup directory
|
||||||
|
#
|
||||||
|
# Directory the shell is started in. If this is unset, or `None`, the working
|
||||||
|
# directory of the parent process will be used.
|
||||||
|
#working_directory: None
|
||||||
|
# Send ESC (\x1b) before characters when alt is pressed.
|
||||||
|
#alt_send_esc: true
|
||||||
|
# Offer IPC using `alacritty msg` (unix only)
|
||||||
|
#ipc_socket: true
|
||||||
|
#mouse:
|
||||||
|
# Click settings
|
||||||
|
#
|
||||||
|
# The `double_click` and `triple_click` settings control the time
|
||||||
|
# alacritty should wait for accepting multiple clicks as one double
|
||||||
|
# or triple click.
|
||||||
|
#double_click: { threshold: 300 }
|
||||||
|
#triple_click: { threshold: 300 }
|
||||||
|
# If this is `true`, the cursor is temporarily hidden when typing.
|
||||||
|
#hide_when_typing: false
|
||||||
|
# Regex hints
|
||||||
|
#
|
||||||
|
# Terminal hints can be used to find text in the visible part of the terminal
|
||||||
|
# and pipe it to other applications.
|
||||||
|
#hints:
|
||||||
|
# Keys used for the hint labels.
|
||||||
|
#alphabet: "jfkdls;ahgurieowpq"
|
||||||
|
# List with all available hints
|
||||||
|
#
|
||||||
|
# Each hint must have a `regex` and either an `action` or a `command` field.
|
||||||
|
# The fields `mouse`, `binding` and `post_processing` are optional.
|
||||||
|
#
|
||||||
|
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
|
||||||
|
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
|
||||||
|
#
|
||||||
|
# The `mouse.enabled` field controls if the hint should be underlined while
|
||||||
|
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
|
||||||
|
#
|
||||||
|
# If the `post_processing` field is set to `true`, heuristics will be used to
|
||||||
|
# shorten the match if there are characters likely not to be part of the hint
|
||||||
|
# (e.g. a trailing `.`). This is most useful for URIs.
|
||||||
|
#
|
||||||
|
# Values for `action`:
|
||||||
|
# - Copy
|
||||||
|
# Copy the hint's text to the clipboard.
|
||||||
|
# - Paste
|
||||||
|
# Paste the hint's text to the terminal or search.
|
||||||
|
# - Select
|
||||||
|
# Select the hint's text.
|
||||||
|
# - MoveViModeCursor
|
||||||
|
# Move the vi mode cursor to the beginning of the hint.
|
||||||
|
#enabled:
|
||||||
|
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
|
||||||
|
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
|
||||||
|
# command: xdg-open
|
||||||
|
# post_processing: true
|
||||||
|
# mouse:
|
||||||
|
# enabled: true
|
||||||
|
# mods: None
|
||||||
|
# binding:
|
||||||
|
# key: U
|
||||||
|
# mods: Control|Shift
|
||||||
|
# Mouse bindings
|
||||||
|
#
|
||||||
|
# Mouse bindings are specified as a list of objects, much like the key
|
||||||
|
# bindings further below.
|
||||||
|
#
|
||||||
|
# To trigger mouse bindings when an application running within Alacritty
|
||||||
|
# captures the mouse, the `Shift` modifier is automatically added as a
|
||||||
|
# requirement.
|
||||||
|
#
|
||||||
|
# Each mouse binding will specify a:
|
||||||
|
#
|
||||||
|
# - `mouse`:
|
||||||
|
#
|
||||||
|
# - Middle
|
||||||
|
# - Left
|
||||||
|
# - Right
|
||||||
|
# - Numeric identifier such as `5`
|
||||||
|
#
|
||||||
|
# - `action` (see key bindings for actions not exclusive to mouse mode)
|
||||||
|
#
|
||||||
|
# - Mouse exclusive actions:
|
||||||
|
#
|
||||||
|
# - ExpandSelection
|
||||||
|
# Expand the selection to the current mouse cursor location.
|
||||||
|
#
|
||||||
|
# And optionally:
|
||||||
|
#
|
||||||
|
# - `mods` (see key bindings)
|
||||||
|
#mouse_bindings:
|
||||||
|
# - { mouse: Right, action: ExpandSelection }
|
||||||
|
# - { mouse: Right, mods: Control, action: ExpandSelection }
|
||||||
|
# - { mouse: Middle, mode: ~Vi, action: PasteSelection }
|
||||||
|
# Key bindings
|
||||||
|
#
|
||||||
|
# Key bindings are specified as a list of objects. For example, this is the
|
||||||
|
# default paste binding:
|
||||||
|
#
|
||||||
|
# `- { key: V, mods: Control|Shift, action: Paste }`
|
||||||
|
#
|
||||||
|
# Each key binding will specify a:
|
||||||
|
#
|
||||||
|
# - `key`: Identifier of the key pressed
|
||||||
|
#
|
||||||
|
# - A-Z
|
||||||
|
# - F1-F24
|
||||||
|
# - Key0-Key9
|
||||||
|
#
|
||||||
|
# A full list with available key codes can be found here:
|
||||||
|
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
|
||||||
|
#
|
||||||
|
# Instead of using the name of the keys, the `key` field also supports using
|
||||||
|
# the scancode of the desired key. Scancodes have to be specified as a
|
||||||
|
# decimal number. This command will allow you to display the hex scancodes
|
||||||
|
# for certain keys:
|
||||||
|
#
|
||||||
|
# `showkey --scancodes`.
|
||||||
|
#
|
||||||
|
# Then exactly one of:
|
||||||
|
#
|
||||||
|
# - `chars`: Send a byte sequence to the running application
|
||||||
|
#
|
||||||
|
# The `chars` field writes the specified string to the terminal. This makes
|
||||||
|
# it possible to pass escape sequences. To find escape codes for bindings
|
||||||
|
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
|
||||||
|
# of tmux. Note that applications use terminfo to map escape sequences back
|
||||||
|
# to keys. It is therefore required to update the terminfo when changing an
|
||||||
|
# escape sequence.
|
||||||
|
#
|
||||||
|
# - `action`: Execute a predefined action
|
||||||
|
#
|
||||||
|
# - ToggleViMode
|
||||||
|
# - SearchForward
|
||||||
|
# Start searching toward the right of the search origin.
|
||||||
|
# - SearchBackward
|
||||||
|
# Start searching toward the left of the search origin.
|
||||||
|
# - Copy
|
||||||
|
# - Paste
|
||||||
|
# - IncreaseFontSize
|
||||||
|
# - DecreaseFontSize
|
||||||
|
# - ResetFontSize
|
||||||
|
# - ScrollPageUp
|
||||||
|
# - ScrollPageDown
|
||||||
|
# - ScrollHalfPageUp
|
||||||
|
# - ScrollHalfPageDown
|
||||||
|
# - ScrollLineUp
|
||||||
|
# - ScrollLineDown
|
||||||
|
# - ScrollToTop
|
||||||
|
# - ScrollToBottom
|
||||||
|
# - ClearHistory
|
||||||
|
# Remove the terminal's scrollback history.
|
||||||
|
# - Hide
|
||||||
|
# Hide the Alacritty window.
|
||||||
|
# - Minimize
|
||||||
|
# Minimize the Alacritty window.
|
||||||
|
# - Quit
|
||||||
|
# Quit Alacritty.
|
||||||
|
# - ToggleFullscreen
|
||||||
|
# - SpawnNewInstance
|
||||||
|
# Spawn a new instance of Alacritty.
|
||||||
|
# - CreateNewWindow
|
||||||
|
# Create a new Alacritty window from the current process.
|
||||||
|
# - ClearLogNotice
|
||||||
|
# Clear Alacritty's UI warning and error notice.
|
||||||
|
# - ClearSelection
|
||||||
|
# Remove the active selection.
|
||||||
|
# - ReceiveChar
|
||||||
|
# - None
|
||||||
|
#
|
||||||
|
# - Vi mode exclusive actions:
|
||||||
|
#
|
||||||
|
# - Open
|
||||||
|
# Perform the action of the first matching hint under the vi mode cursor
|
||||||
|
# with `mouse.enabled` set to `true`.
|
||||||
|
# - ToggleNormalSelection
|
||||||
|
# - ToggleLineSelection
|
||||||
|
# - ToggleBlockSelection
|
||||||
|
# - ToggleSemanticSelection
|
||||||
|
# Toggle semantic selection based on `selection.semantic_escape_chars`.
|
||||||
|
#
|
||||||
|
# - Vi mode exclusive cursor motion actions:
|
||||||
|
#
|
||||||
|
# - Up
|
||||||
|
# One line up.
|
||||||
|
# - Down
|
||||||
|
# One line down.
|
||||||
|
# - Left
|
||||||
|
# One character left.
|
||||||
|
# - Right
|
||||||
|
# One character right.
|
||||||
|
# - First
|
||||||
|
# First column, or beginning of the line when already at the first column.
|
||||||
|
# - Last
|
||||||
|
# Last column, or beginning of the line when already at the last column.
|
||||||
|
# - FirstOccupied
|
||||||
|
# First non-empty cell in this terminal row, or first non-empty cell of
|
||||||
|
# the line when already at the first cell of the row.
|
||||||
|
# - High
|
||||||
|
# Top of the screen.
|
||||||
|
# - Middle
|
||||||
|
# Center of the screen.
|
||||||
|
# - Low
|
||||||
|
# Bottom of the screen.
|
||||||
|
# - SemanticLeft
|
||||||
|
# Start of the previous semantically separated word.
|
||||||
|
# - SemanticRight
|
||||||
|
# Start of the next semantically separated word.
|
||||||
|
# - SemanticLeftEnd
|
||||||
|
# End of the previous semantically separated word.
|
||||||
|
# - SemanticRightEnd
|
||||||
|
# End of the next semantically separated word.
|
||||||
|
# - WordLeft
|
||||||
|
# Start of the previous whitespace separated word.
|
||||||
|
# - WordRight
|
||||||
|
# Start of the next whitespace separated word.
|
||||||
|
# - WordLeftEnd
|
||||||
|
# End of the previous whitespace separated word.
|
||||||
|
# - WordRightEnd
|
||||||
|
# End of the next whitespace separated word.
|
||||||
|
# - Bracket
|
||||||
|
# Character matching the bracket at the cursor's location.
|
||||||
|
# - SearchNext
|
||||||
|
# Beginning of the next match.
|
||||||
|
# - SearchPrevious
|
||||||
|
# Beginning of the previous match.
|
||||||
|
# - SearchStart
|
||||||
|
# Start of the match to the left of the vi mode cursor.
|
||||||
|
# - SearchEnd
|
||||||
|
# End of the match to the right of the vi mode cursor.
|
||||||
|
#
|
||||||
|
# - Search mode exclusive actions:
|
||||||
|
# - SearchFocusNext
|
||||||
|
# Move the focus to the next search match.
|
||||||
|
# - SearchFocusPrevious
|
||||||
|
# Move the focus to the previous search match.
|
||||||
|
# - SearchConfirm
|
||||||
|
# - SearchCancel
|
||||||
|
# - SearchClear
|
||||||
|
# Reset the search regex.
|
||||||
|
# - SearchDeleteWord
|
||||||
|
# Delete the last word in the search regex.
|
||||||
|
# - SearchHistoryPrevious
|
||||||
|
# Go to the previous regex in the search history.
|
||||||
|
# - SearchHistoryNext
|
||||||
|
# Go to the next regex in the search history.
|
||||||
|
#
|
||||||
|
# - macOS exclusive actions:
|
||||||
|
# - ToggleSimpleFullscreen
|
||||||
|
# Enter fullscreen without occupying another space.
|
||||||
|
#
|
||||||
|
# - Linux/BSD exclusive actions:
|
||||||
|
#
|
||||||
|
# - CopySelection
|
||||||
|
# Copy from the selection buffer.
|
||||||
|
# - PasteSelection
|
||||||
|
# Paste from the selection buffer.
|
||||||
|
#
|
||||||
|
# - `command`: Fork and execute a specified command plus arguments
|
||||||
|
#
|
||||||
|
# The `command` field must be a map containing a `program` string and an
|
||||||
|
# `args` array of command line parameter strings. For example:
|
||||||
|
# `{ program: "alacritty", args: ["-e", "vttest"] }`
|
||||||
|
#
|
||||||
|
# And optionally:
|
||||||
|
#
|
||||||
|
# - `mods`: Key modifiers to filter binding actions
|
||||||
|
#
|
||||||
|
# - Command
|
||||||
|
# - Control
|
||||||
|
# - Option
|
||||||
|
# - Super
|
||||||
|
# - Shift
|
||||||
|
# - Alt
|
||||||
|
#
|
||||||
|
# Multiple `mods` can be combined using `|` like this:
|
||||||
|
# `mods: Control|Shift`.
|
||||||
|
# Whitespace and capitalization are relevant and must match the example.
|
||||||
|
#
|
||||||
|
# - `mode`: Indicate a binding for only specific terminal reported modes
|
||||||
|
#
|
||||||
|
# This is mainly used to send applications the correct escape sequences
|
||||||
|
# when in different modes.
|
||||||
|
#
|
||||||
|
# - AppCursor
|
||||||
|
# - AppKeypad
|
||||||
|
# - Search
|
||||||
|
# - Alt
|
||||||
|
# - Vi
|
||||||
|
#
|
||||||
|
# A `~` operator can be used before a mode to apply the binding whenever
|
||||||
|
# the mode is *not* active, e.g. `~Alt`.
|
||||||
|
#
|
||||||
|
# Bindings are always filled by default, but will be replaced when a new
|
||||||
|
# binding with the same triggers is defined. To unset a default binding, it can
|
||||||
|
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
|
||||||
|
# a no-op if you do not wish to receive input characters for that binding.
|
||||||
|
#
|
||||||
|
# If the same trigger is assigned to multiple actions, all of them are executed
|
||||||
|
# in the order they were defined in.
|
||||||
|
key_bindings:
|
||||||
|
- { key: Z, mods: Control, chars: "fzf-z \x0D" }
|
||||||
|
#- { key: Paste, action: Paste }
|
||||||
|
#- { key: Copy, action: Copy }
|
||||||
|
#- { key: L, mods: Control, action: ClearLogNotice }
|
||||||
|
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
|
||||||
|
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, }
|
||||||
|
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
|
||||||
|
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, }
|
||||||
|
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
|
||||||
|
# Vi Mode
|
||||||
|
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
|
||||||
|
#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
|
||||||
|
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
|
||||||
|
#- { key: I, mode: Vi|~Search, action: ScrollToBottom }
|
||||||
|
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
|
||||||
|
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
|
||||||
|
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
|
||||||
|
#- { key: G, mode: Vi|~Search, action: ScrollToTop }
|
||||||
|
#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
|
||||||
|
#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
|
||||||
|
#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
|
||||||
|
#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
|
||||||
|
#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
|
||||||
|
#- { key: Y, mode: Vi|~Search, action: Copy }
|
||||||
|
#- { key: Y, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: Copy, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
|
||||||
|
#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
|
||||||
|
#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
|
||||||
|
#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
|
||||||
|
#- { key: Return, mode: Vi|~Search, action: Open }
|
||||||
|
#- { key: K, mode: Vi|~Search, action: Up }
|
||||||
|
#- { key: J, mode: Vi|~Search, action: Down }
|
||||||
|
#- { key: H, mode: Vi|~Search, action: Left }
|
||||||
|
#- { key: L, mode: Vi|~Search, action: Right }
|
||||||
|
#- { key: Up, mode: Vi|~Search, action: Up }
|
||||||
|
#- { key: Down, mode: Vi|~Search, action: Down }
|
||||||
|
#- { key: Left, mode: Vi|~Search, action: Left }
|
||||||
|
#- { key: Right, mode: Vi|~Search, action: Right }
|
||||||
|
#- { key: Key0, mode: Vi|~Search, action: First }
|
||||||
|
#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
|
||||||
|
#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
|
||||||
|
#- { key: H, mods: Shift, mode: Vi|~Search, action: High }
|
||||||
|
#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
|
||||||
|
#- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
|
||||||
|
#- { key: B, mode: Vi|~Search, action: SemanticLeft }
|
||||||
|
#- { key: W, mode: Vi|~Search, action: SemanticRight }
|
||||||
|
#- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
|
||||||
|
#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
|
||||||
|
#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
|
||||||
|
#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
|
||||||
|
#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
|
||||||
|
#- { key: Slash, mode: Vi|~Search, action: SearchForward }
|
||||||
|
#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
|
||||||
|
#- { key: N, mode: Vi|~Search, action: SearchNext }
|
||||||
|
#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
|
||||||
|
# Search Mode
|
||||||
|
#- { key: Return, mode: Search|Vi, action: SearchConfirm }
|
||||||
|
#- { key: Escape, mode: Search, action: SearchCancel }
|
||||||
|
#- { key: C, mods: Control, mode: Search, action: SearchCancel }
|
||||||
|
#- { key: U, mods: Control, mode: Search, action: SearchClear }
|
||||||
|
#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
|
||||||
|
#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
|
||||||
|
#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
|
||||||
|
#- { key: Up, mode: Search, action: SearchHistoryPrevious }
|
||||||
|
#- { key: Down, mode: Search, action: SearchHistoryNext }
|
||||||
|
#- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
|
||||||
|
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
|
||||||
|
# (Windows, Linux, and BSD only)
|
||||||
|
#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
|
||||||
|
#- { key: C, mods: Control|Shift, action: Copy }
|
||||||
|
#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
|
||||||
|
#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
|
||||||
|
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: Insert, mods: Shift, action: PasteSelection }
|
||||||
|
#- { key: Key0, mods: Control, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Plus, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
|
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
|
||||||
|
# (Windows only)
|
||||||
|
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
||||||
|
# (macOS only)
|
||||||
|
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
|
||||||
|
#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
|
||||||
|
#- { key: Key0, mods: Command, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Plus, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||||
|
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
|
||||||
|
#- { key: V, mods: Command, action: Paste }
|
||||||
|
#- { key: C, mods: Command, action: Copy }
|
||||||
|
#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
|
||||||
|
#- { key: H, mods: Command, action: Hide }
|
||||||
|
#- { key: H, mods: Command|Alt, action: HideOtherApplications }
|
||||||
|
#- { key: M, mods: Command, action: Minimize }
|
||||||
|
#- { key: Q, mods: Command, action: Quit }
|
||||||
|
#- { key: W, mods: Command, action: Quit }
|
||||||
|
#- { key: N, mods: Command, action: SpawnNewInstance }
|
||||||
|
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
||||||
|
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
|
||||||
|
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
|
||||||
|
#debug:
|
||||||
|
# Display the time it takes to redraw each frame.
|
||||||
|
#render_timer: false
|
||||||
|
# Keep the log file after quitting Alacritty.
|
||||||
|
#persistent_logging: false
|
||||||
|
# Log level
|
||||||
|
#
|
||||||
|
# Values for `log_level`:
|
||||||
|
# - Off
|
||||||
|
# - Error
|
||||||
|
# - Warn
|
||||||
|
# - Info
|
||||||
|
# - Debug
|
||||||
|
# - Trace
|
||||||
|
#log_level: Warn
|
||||||
|
# Print all received window events.
|
||||||
|
#print_events: false
|
17
dependencies
Normal file
17
dependencies
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
dunst
|
||||||
|
element-desktop
|
||||||
|
feh
|
||||||
|
firefox
|
||||||
|
i3exit
|
||||||
|
i3-scrot
|
||||||
|
i3-wm
|
||||||
|
i3blocks
|
||||||
|
libqalculate
|
||||||
|
nextcloud
|
||||||
|
pavucontrol
|
||||||
|
rofi
|
||||||
|
stow
|
||||||
|
telegram-desktop
|
||||||
|
thunderbird
|
||||||
|
xclip
|
||||||
|
xwacomcalibrate
|
8
emacs/chemacs/.emacs-profiles.el
Normal file
8
emacs/chemacs/.emacs-profiles.el
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
(("default" . ((user-emacs-directory . "~/emacs/doom-emacs")))
|
||||||
|
("vanilla" . ((user-emacs-directory . "~/emacs/vanilla")))
|
||||||
|
("spacemacs" . ((user-emacs-directory . "~/emacs/spacemacs")))
|
||||||
|
)
|
||||||
|
;(env . (("DOOMDIR" . "~/emacs/doom-config"))))))
|
||||||
|
;("doom" . ((user-emacs-directory . "~/emacs/doom")))
|
||||||
|
;(doom-private-dir . "~/emacs/doom-config"))))
|
||||||
|
;)
|
243
emacs/doom/config.org
Normal file
243
emacs/doom/config.org
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
#+title: Doom Emacs Config
|
||||||
|
|
||||||
|
* Main
|
||||||
|
#+PROPERTY: header-args :results silent
|
||||||
|
** Help
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Here are some additional functions/macros that could help you configure Doom:
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Overall config
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets.
|
||||||
|
(setq user-full-name "Julian Mutter"
|
||||||
|
user-mail-address "julian.mutter@comumail.de")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
|
||||||
|
;; are the three important ones:
|
||||||
|
;;
|
||||||
|
;; + `doom-font'
|
||||||
|
;; + `doom-variable-pitch-font'
|
||||||
|
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;;
|
||||||
|
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
|
||||||
|
;; font string. You generally only need these two:
|
||||||
|
;; (setq doom-font (font-spec :family "monospace" :size 13 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
|
||||||
|
(setq doom-font (font-spec :family "Source Code Pro" :size 14))
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
(setq doom-theme 'doom-one)
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
(setq display-line-numbers-type 'relative)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Open external terminal
|
||||||
|
(map! :leader :desc "Open external terminal" "o t" (cmd! (call-process-shell-command "xfce4-terminal &" nil 0)))
|
||||||
|
|
||||||
|
;; Remap font scaling keybindings to make more sense
|
||||||
|
(map! :desc "Increase font size" :n "C-+" #'text-scale-increase)
|
||||||
|
(map! :desc "Decrease font size" :n "C--" #'text-scale-decrease)
|
||||||
|
(map! :desc "Reset font size" :n "C-=" #'doom/reset-font-size)
|
||||||
|
|
||||||
|
(map! :desc "Flycheck next error" :nv "g n" #'flycheck-next-error)
|
||||||
|
(map! :desc "Flycheck previous error" :nv "g N" #'flycheck-previous-error)
|
||||||
|
|
||||||
|
(map! :desc "Format and save" :nvi "C-s" #'fd-format-and-save)
|
||||||
|
(map! :leader "w 1" #'delete-other-windows)
|
||||||
|
|
||||||
|
(setq-default evil-escape-key-sequence "kj")
|
||||||
|
|
||||||
|
(defun fd-format-and-save()
|
||||||
|
(interactive)
|
||||||
|
(company-abort)
|
||||||
|
(evil-force-normal-state)
|
||||||
|
(+format/buffer)
|
||||||
|
(save-buffer))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Org
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
(setq org-directory "~/Nextcloud/org"
|
||||||
|
org-roam-directory "~/Nextcloud/org-roam")
|
||||||
|
|
||||||
|
;; (setq org-agenda-files (list "~/org"))
|
||||||
|
;; (custom-set-variables
|
||||||
|
;; '(org-directory "~/org")
|
||||||
|
;; '(org-agenda-files (list org-directory)))
|
||||||
|
|
||||||
|
;; (add-to-list 'org-agenda-files "~/org/anothertest.org" 'append)
|
||||||
|
|
||||||
|
;; Adding my org-agenda files
|
||||||
|
(after! org
|
||||||
|
(setq org-agenda-files (expand-file-name "org-agenda-files" doom-private-dir)))
|
||||||
|
|
||||||
|
(setq org-export-allow-bind-keywords t)
|
||||||
|
|
||||||
|
;; (map! :nv "SPC r" "SPC n r")
|
||||||
|
|
||||||
|
(map! :map org-mode-map :nvi "C-k" #'org-backward-element)
|
||||||
|
(map! :map org-mode-map :nvi "C-j" #'org-forward-element)
|
||||||
|
(map! :map org-mode-map :nvi "C-h" #'org-up-element)
|
||||||
|
(map! :map org-mode-map :nvi "C-l" #'org-down-element)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Spell Checking
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Spell checking settings
|
||||||
|
;; TODO make toggling of spell checking ('SPC t s') use flyspell-mode in text modesm and flyspell-prog-mode in programming modes (see hooks below)
|
||||||
|
;; Removing hooks for automatic spell checking set here: https://github.com/hlissner/doom-emacs/blob/develop/modules/checkers/spell/config.el
|
||||||
|
(remove-hook! '(org-mode-hook
|
||||||
|
markdown-mode-hook
|
||||||
|
TeX-mode-hook
|
||||||
|
rst-mode-hook
|
||||||
|
mu4e-compose-mode-hook
|
||||||
|
message-mode-hook
|
||||||
|
git-commit-mode-hook)
|
||||||
|
#'flyspell-mode)
|
||||||
|
|
||||||
|
(remove-hook! '(yaml-mode-hook
|
||||||
|
conf-mode-hook
|
||||||
|
prog-mode-hook)
|
||||||
|
#'flyspell-prog-mode)
|
||||||
|
|
||||||
|
(setq ispell-dictionary "english")
|
||||||
|
|
||||||
|
(map! :map doom-leader-toggle-map :desc "Toggle dictionary" "d" #'fd-switch-dictionary)
|
||||||
|
|
||||||
|
(defun fd-switch-dictionary()
|
||||||
|
(interactive)
|
||||||
|
(let* ((dic ispell-current-dictionary)
|
||||||
|
(change (if (string= dic "german") "english" "german")))
|
||||||
|
(ispell-change-dictionary change)
|
||||||
|
(message "Dictionary switched from %s to %s" dic change)
|
||||||
|
))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Flutter
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
(setq lsp-dart-flutter-sdk-dir "/home/julian/snap/flutter/common/flutter")
|
||||||
|
#+end_src
|
||||||
|
** Evil snipe
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Make sniping simpler for german keyboard
|
||||||
|
(setq evil-snipe-scope 'visible)
|
||||||
|
(map! :map evil-snipe-override-mode-map :m "," #'evil-snipe-repeat)
|
||||||
|
(map! :map evil-snipe-override-mode-map :m ";" #'evil-snipe-repeat-reverse)
|
||||||
|
(map! :map evil-snipe-parent-transient-map "," #'evil-snipe-repeat)
|
||||||
|
(map! :map evil-snipe-parent-transient-map ";" #'evil-snipe-repeat-reverse)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Matlab
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; (autoload 'matlab-mode "matlab" "Matlab Editing Mode" t)
|
||||||
|
;; (add-to-list
|
||||||
|
;; 'auto-mode-alist
|
||||||
|
;; '("\\.m$" . matlab-mode))
|
||||||
|
;; (setq matlab-indent-function t)
|
||||||
|
;; (setq matlab-shell-command "/urs/local/bin/matlab")
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Features
|
||||||
|
*** Toggle word case
|
||||||
|
#+begin_src elisp :tangle yes
|
||||||
|
|
||||||
|
(map! :desc "Toggle case of word" :nv "g C" #'toggle-word-case)
|
||||||
|
|
||||||
|
(defun toggle-word-case ()
|
||||||
|
"Toggle the case of current word or text selection."
|
||||||
|
|
||||||
|
(interactive)
|
||||||
|
(let (
|
||||||
|
(deactivate-mark nil)
|
||||||
|
$p1 $p2)
|
||||||
|
(if (use-region-p)
|
||||||
|
(setq $p1 (region-beginning) $p2 (region-end))
|
||||||
|
(save-excursion
|
||||||
|
(skip-chars-backward "[:alpha:]")
|
||||||
|
(setq $p1 (point))
|
||||||
|
(skip-chars-forward "[:alpha:]")
|
||||||
|
(setq $p2 (point))))
|
||||||
|
(let ((first-char-prop (get-char-code-property (char-after $p1) 'general-category)))
|
||||||
|
(cond ((string= "Ll" first-char-prop) ; Lower case
|
||||||
|
(upcase-region $p1 (+ $p1 1)))
|
||||||
|
((string= "Lu" first-char-prop) ; Upper case
|
||||||
|
(downcase-region $p1 (+ $p1 1)))
|
||||||
|
(t (message "Word does not start with a alphabetic character"))))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Tetris
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
(add-hook 'tetris-mode-hook #'turn-off-evil-mode)
|
||||||
|
#+end_src
|
||||||
|
** Company
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Add company-quickhelp
|
||||||
|
(company-quickhelp-mode)
|
||||||
|
|
||||||
|
(map! :map company-active-map "TAB" nil)
|
||||||
|
(map! :map company-active-map "<tab>" nil)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** More
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
(defun fd-pretty-print-dirty-json()
|
||||||
|
(interactive)
|
||||||
|
(let ((new-buffer-contents (shell-command-to-string (format "echo '%s' | newliner" (buffer-string)))))
|
||||||
|
(erase-buffer)
|
||||||
|
(insert new-buffer-contents)
|
||||||
|
(evil-indent (buffer-end -1) (buffer-end +1)))
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
** Python
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
|
||||||
|
;; Python settings
|
||||||
|
;; (add-hook 'python-mode-hook (lambda ()
|
||||||
|
;; (setq flycheck-checker 'python-pylint)))
|
||||||
|
|
||||||
|
;; (add-hook 'pyhon-mode-local-vars-hook
|
||||||
|
;; (lambda ()
|
||||||
|
;; (when (flycheck-may-enable-checker 'lsp)
|
||||||
|
;; (flycheck-select-checker 'python-pylint))))
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
** Haskell
|
||||||
|
#+begin_src emacs-lisp :tangle yes
|
||||||
|
(set-docsets! 'haskell-mode "Haskell")
|
||||||
|
#+end_src
|
193
emacs/doom/init.el
Normal file
193
emacs/doom/init.el
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||||
|
;; of our modules are listed, including what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
company ; the ultimate code completion backend
|
||||||
|
;;helm ; the *other* search engine for love and life
|
||||||
|
;;ido ; the other *other* search engine...
|
||||||
|
;;ivy ; a search engine for love and life
|
||||||
|
vertico ; the search engine of the future
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
;;(emoji +unicode) ; 🙂
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
;;hydra
|
||||||
|
;;indent-guides ; highlighted indent columns
|
||||||
|
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
;;neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
;;treemacs ; a project drawer, like neotree but cooler
|
||||||
|
;;unicode ; extended unicode support for various languages
|
||||||
|
vc-gutter ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
format ;; +onsave ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
;;term ; basic terminal emulator for Emacs
|
||||||
|
;;vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
(spell +flyspell +everywhere) ; tasing you for misspelling mispelling
|
||||||
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
;;ansible
|
||||||
|
;;biblio ; Writes a PhD for you (citation needed)
|
||||||
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
;;docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
;;gist ; interacting with github gists
|
||||||
|
(lookup +docsets) ; navigate your code and its documentation
|
||||||
|
lsp ; M-x vscode
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
;;pdf ; pdf enhancements
|
||||||
|
;;prodigy ; FIXME managing external services & code builders
|
||||||
|
;;rgb ; creating color strings
|
||||||
|
;;taskrunner ; taskrunner for all your projects
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||||
|
;;tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
(cc +lsp) ; C > C++ == 1
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;dhall
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
;;(graphql +lsp) ; Give queries a REST
|
||||||
|
(haskell +lsp) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
json ; At least it ain't XML
|
||||||
|
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||||
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;;julia ; a better, faster MATLAB
|
||||||
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
|
latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
;;ledger ; be audit you can be
|
||||||
|
;;lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
;;nix ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
(org +hugo +roam2) ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
(python +lsp +pyright) ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
;;rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
;;sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
;;web ; the tubes
|
||||||
|
yaml ; JSON, but readable
|
||||||
|
;;zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +org +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
;;twitter ; twitter client https://twitter.com/vnought
|
||||||
|
|
||||||
|
:config
|
||||||
|
literate
|
||||||
|
(default +bindings +smartparens))
|
1
emacs/doom/org-agenda-files
Normal file
1
emacs/doom/org-agenda-files
Normal file
@ -0,0 +1 @@
|
|||||||
|
/home/julian/Nextcloud/org
|
55
emacs/doom/packages.el
Normal file
55
emacs/doom/packages.el
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||||
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||||
|
;; use 'M-x doom/reload'.
|
||||||
|
|
||||||
|
|
||||||
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
|
;(package! some-package)
|
||||||
|
|
||||||
|
(package! company-quickhelp)
|
||||||
|
|
||||||
|
(unpin! org-roam)
|
||||||
|
(package! org-roam-ui)
|
||||||
|
|
||||||
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
|
;; https://github.com/raxod502/straight.el#the-recipe-format
|
||||||
|
;(package! another-package
|
||||||
|
; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
|
;; `:files' in the `:recipe':
|
||||||
|
;(package! this-package
|
||||||
|
; :recipe (:host github :repo "username/repo"
|
||||||
|
; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
|
;; with the `:disable' property:
|
||||||
|
;(package! builtin-package :disable t)
|
||||||
|
|
||||||
|
;; You can override the recipe of a built in package without having to specify
|
||||||
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
|
;(package! builtin-package :recipe (:nonrecursive t))
|
||||||
|
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
|
;; our package manager can't deal with; see raxod502/straight.el#279)
|
||||||
|
;(package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
|
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
|
;(unpin! pinned-package)
|
||||||
|
;; ...or multiple packages
|
||||||
|
;(unpin! pinned-package another-pinned-package)
|
||||||
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
|
;(unpin! t)
|
644
emacs/spacemacs/.spacemacs
Normal file
644
emacs/spacemacs/.spacemacs
Normal file
@ -0,0 +1,644 @@
|
|||||||
|
;; -*- mode: emacs-lisp; lexical-binding: t -*-
|
||||||
|
;; This file is loaded by Spacemacs at startup.
|
||||||
|
;; It must be stored in your home directory.
|
||||||
|
|
||||||
|
(defun dotspacemacs/layers ()
|
||||||
|
"Layer configuration:
|
||||||
|
This function should only modify configuration layer settings."
|
||||||
|
(setq-default
|
||||||
|
;; Base distribution to use. This is a layer contained in the directory
|
||||||
|
;; `+distribution'. For now available distributions are `spacemacs-base'
|
||||||
|
;; or `spacemacs'. (default 'spacemacs)
|
||||||
|
dotspacemacs-distribution 'spacemacs
|
||||||
|
|
||||||
|
;; Lazy installation of layers (i.e. layers are installed only when a file
|
||||||
|
;; with a supported type is opened). Possible values are `all', `unused'
|
||||||
|
;; and `nil'. `unused' will lazy install only unused layers (i.e. layers
|
||||||
|
;; not listed in variable `dotspacemacs-configuration-layers'), `all' will
|
||||||
|
;; lazy install any layer that support lazy installation even the layers
|
||||||
|
;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy
|
||||||
|
;; installation feature and you have to explicitly list a layer in the
|
||||||
|
;; variable `dotspacemacs-configuration-layers' to install it.
|
||||||
|
;; (default 'unused)
|
||||||
|
dotspacemacs-enable-lazy-installation 'unused
|
||||||
|
|
||||||
|
;; If non-nil then Spacemacs will ask for confirmation before installing
|
||||||
|
;; a layer lazily. (default t)
|
||||||
|
dotspacemacs-ask-for-lazy-installation t
|
||||||
|
|
||||||
|
;; List of additional paths where to look for configuration layers.
|
||||||
|
;; Paths must have a trailing slash (i.e. `~/.mycontribs/')
|
||||||
|
dotspacemacs-configuration-layer-path '()
|
||||||
|
|
||||||
|
;; List of configuration layers to load.
|
||||||
|
dotspacemacs-configuration-layers
|
||||||
|
'(csv
|
||||||
|
python
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; Example of useful layers you may want to use right away.
|
||||||
|
;; Uncomment some layer names and press `SPC f e R' (Vim style) or
|
||||||
|
;; `M-m f e R' (Emacs style) to install them.
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; (dart :variables dart-server-sdk-path "<flutter-path>/bin/cache/dart-sdk/")
|
||||||
|
(csharp :variables
|
||||||
|
csharp-backend nil)
|
||||||
|
rust
|
||||||
|
tabs
|
||||||
|
auto-completion
|
||||||
|
(auto-completion :variables
|
||||||
|
auto-completion-return-key-behavior 'complete
|
||||||
|
auto-completion-tab-key-behavior 'cycle
|
||||||
|
auto-completion-complete-with-key-sequence nil
|
||||||
|
auto-completion-complete-with-key-sequence-delay 0.1
|
||||||
|
auto-completion-minimum-prefix-length 2
|
||||||
|
auto-completion-idle-delay 0.2
|
||||||
|
auto-completion-private-snippets-directory nil
|
||||||
|
auto-completion-enable-snippets-in-popup nil
|
||||||
|
auto-completion-enable-help-tooltip 't
|
||||||
|
auto-completion-use-company-box nil
|
||||||
|
auto-completion-enable-sort-by-usage nil)
|
||||||
|
;; better-defaults
|
||||||
|
emacs-lisp
|
||||||
|
(git :variables
|
||||||
|
git-magit-status-fullscreen t)
|
||||||
|
helm
|
||||||
|
(lsp :variables
|
||||||
|
lsp-lens-enable t
|
||||||
|
lsp-ui-doc-enable t)
|
||||||
|
;; markdown
|
||||||
|
multiple-cursors
|
||||||
|
org
|
||||||
|
;; (shell :variables
|
||||||
|
;; shell-default-height 30
|
||||||
|
;; shell-default-position 'bottom)
|
||||||
|
(spell-checking :variables
|
||||||
|
spell-checking-enable-by-default nil)
|
||||||
|
syntax-checking
|
||||||
|
;; version-control
|
||||||
|
treemacs
|
||||||
|
json
|
||||||
|
(evil-snipe :variables evil-snipe-enable-alternate-f-and-t-behaviors t)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
;; List of additional packages that will be installed without being wrapped
|
||||||
|
;; in a layer (generally the packages are installed only and should still be
|
||||||
|
;; loaded using load/require/use-package in the user-config section below in
|
||||||
|
;; this file). If you need some configuration for these packages, then
|
||||||
|
;; consider creating a layer. You can also put the configuration in
|
||||||
|
;; `dotspacemacs/user-config'. To use a local version of a package, use the
|
||||||
|
;; `:location' property: '(your-package :location "~/path/to/your-package/")
|
||||||
|
;; Also include the dependencies as they will not be resolved automatically.
|
||||||
|
dotspacemacs-additional-packages '(format-all)
|
||||||
|
|
||||||
|
;; A list of packages that cannot be updated.
|
||||||
|
dotspacemacs-frozen-packages '()
|
||||||
|
|
||||||
|
;; A list of packages that will not be installed and loaded.
|
||||||
|
dotspacemacs-excluded-packages '()
|
||||||
|
|
||||||
|
;; Defines the behaviour of Spacemacs when installing packages.
|
||||||
|
;; Possible values are `used-only', `used-but-keep-unused' and `all'.
|
||||||
|
;; `used-only' installs only explicitly used packages and deletes any unused
|
||||||
|
;; packages as well as their unused dependencies. `used-but-keep-unused'
|
||||||
|
;; installs only the used packages but won't delete unused ones. `all'
|
||||||
|
;; installs *all* packages supported by Spacemacs and never uninstalls them.
|
||||||
|
;; (default is `used-only')
|
||||||
|
dotspacemacs-install-packages 'used-only))
|
||||||
|
|
||||||
|
(defun dotspacemacs/init ()
|
||||||
|
"Initialization:
|
||||||
|
This function is called at the very beginning of Spacemacs startup,
|
||||||
|
before layer configuration.
|
||||||
|
It should only modify the values of Spacemacs settings."
|
||||||
|
;; This setq-default sexp is an exhaustive list of all the supported
|
||||||
|
;; spacemacs settings.
|
||||||
|
(setq-default
|
||||||
|
;; If non-nil then enable support for the portable dumper. You'll need to
|
||||||
|
;; compile Emacs 27 from source following the instructions in file
|
||||||
|
;; EXPERIMENTAL.org at to root of the git repository.
|
||||||
|
;;
|
||||||
|
;; WARNING: pdumper does not work with Native Compilation, so it's disabled
|
||||||
|
;; regardless of the following setting when native compilation is in effect.
|
||||||
|
;;
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-enable-emacs-pdumper nil
|
||||||
|
|
||||||
|
;; Name of executable file pointing to emacs 27+. This executable must be
|
||||||
|
;; in your PATH.
|
||||||
|
;; (default "emacs")
|
||||||
|
dotspacemacs-emacs-pdumper-executable-file "emacs"
|
||||||
|
|
||||||
|
;; Name of the Spacemacs dump file. This is the file will be created by the
|
||||||
|
;; portable dumper in the cache directory under dumps sub-directory.
|
||||||
|
;; To load it when starting Emacs add the parameter `--dump-file'
|
||||||
|
;; when invoking Emacs 27.1 executable on the command line, for instance:
|
||||||
|
;; ./emacs --dump-file=$HOME/.emacs.d/.cache/dumps/spacemacs-27.1.pdmp
|
||||||
|
;; (default (format "spacemacs-%s.pdmp" emacs-version))
|
||||||
|
dotspacemacs-emacs-dumper-dump-file (format "spacemacs-%s.pdmp" emacs-version)
|
||||||
|
|
||||||
|
;; If non-nil ELPA repositories are contacted via HTTPS whenever it's
|
||||||
|
;; possible. Set it to nil if you have no way to use HTTPS in your
|
||||||
|
;; environment, otherwise it is strongly recommended to let it set to t.
|
||||||
|
;; This variable has no effect if Emacs is launched with the parameter
|
||||||
|
;; `--insecure' which forces the value of this variable to nil.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-elpa-https t
|
||||||
|
|
||||||
|
;; Maximum allowed time in seconds to contact an ELPA repository.
|
||||||
|
;; (default 5)
|
||||||
|
dotspacemacs-elpa-timeout 5
|
||||||
|
|
||||||
|
;; Set `gc-cons-threshold' and `gc-cons-percentage' when startup finishes.
|
||||||
|
;; This is an advanced option and should not be changed unless you suspect
|
||||||
|
;; performance issues due to garbage collection operations.
|
||||||
|
;; (default '(100000000 0.1))
|
||||||
|
dotspacemacs-gc-cons '(100000000 0.1)
|
||||||
|
|
||||||
|
;; Set `read-process-output-max' when startup finishes.
|
||||||
|
;; This defines how much data is read from a foreign process.
|
||||||
|
;; Setting this >= 1 MB should increase performance for lsp servers
|
||||||
|
;; in emacs 27.
|
||||||
|
;; (default (* 1024 1024))
|
||||||
|
dotspacemacs-read-process-output-max (* 1024 1024)
|
||||||
|
|
||||||
|
;; If non-nil then Spacelpa repository is the primary source to install
|
||||||
|
;; a locked version of packages. If nil then Spacemacs will install the
|
||||||
|
;; latest version of packages from MELPA. Spacelpa is currently in
|
||||||
|
;; experimental state please use only for testing purposes.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-use-spacelpa nil
|
||||||
|
|
||||||
|
;; If non-nil then verify the signature for downloaded Spacelpa archives.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-verify-spacelpa-archives t
|
||||||
|
|
||||||
|
;; If non-nil then spacemacs will check for updates at startup
|
||||||
|
;; when the current branch is not `develop'. Note that checking for
|
||||||
|
;; new versions works via git commands, thus it calls GitHub services
|
||||||
|
;; whenever you start Emacs. (default nil)
|
||||||
|
dotspacemacs-check-for-update nil
|
||||||
|
|
||||||
|
;; If non-nil, a form that evaluates to a package directory. For example, to
|
||||||
|
;; use different package directories for different Emacs versions, set this
|
||||||
|
;; to `emacs-version'. (default 'emacs-version)
|
||||||
|
dotspacemacs-elpa-subdirectory 'emacs-version
|
||||||
|
|
||||||
|
;; One of `vim', `emacs' or `hybrid'.
|
||||||
|
;; `hybrid' is like `vim' except that `insert state' is replaced by the
|
||||||
|
;; `hybrid state' with `emacs' key bindings. The value can also be a list
|
||||||
|
;; with `:variables' keyword (similar to layers). Check the editing styles
|
||||||
|
;; section of the documentation for details on available variables.
|
||||||
|
;; (default 'vim)
|
||||||
|
dotspacemacs-editing-style 'vim
|
||||||
|
|
||||||
|
;; If non-nil show the version string in the Spacemacs buffer. It will
|
||||||
|
;; appear as (spacemacs version)@(emacs version)
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-startup-buffer-show-version t
|
||||||
|
|
||||||
|
;; Specify the startup banner. Default value is `official', it displays
|
||||||
|
;; the official spacemacs logo. An integer value is the index of text
|
||||||
|
;; banner, `random' chooses a random text banner in `core/banners'
|
||||||
|
;; directory. A string value must be a path to an image format supported
|
||||||
|
;; by your Emacs build.
|
||||||
|
;; If the value is nil then no banner is displayed. (default 'official)
|
||||||
|
dotspacemacs-startup-banner 'official
|
||||||
|
|
||||||
|
;; List of items to show in startup buffer or an association list of
|
||||||
|
;; the form `(list-type . list-size)`. If nil then it is disabled.
|
||||||
|
;; Possible values for list-type are:
|
||||||
|
;; `recents' `recents-by-project' `bookmarks' `projects' `agenda' `todos'.
|
||||||
|
;; List sizes may be nil, in which case
|
||||||
|
;; `spacemacs-buffer-startup-lists-length' takes effect.
|
||||||
|
;; The exceptional case is `recents-by-project', where list-type must be a
|
||||||
|
;; pair of numbers, e.g. `(recents-by-project . (7 . 5))', where the first
|
||||||
|
;; number is the project limit and the second the limit on the recent files
|
||||||
|
;; within a project.
|
||||||
|
dotspacemacs-startup-lists '((recents . 5)
|
||||||
|
(projects . 7))
|
||||||
|
|
||||||
|
;; True if the home buffer should respond to resize events. (default t)
|
||||||
|
dotspacemacs-startup-buffer-responsive t
|
||||||
|
|
||||||
|
;; Show numbers before the startup list lines. (default t)
|
||||||
|
dotspacemacs-show-startup-list-numbers t
|
||||||
|
|
||||||
|
;; The minimum delay in seconds between number key presses. (default 0.4)
|
||||||
|
dotspacemacs-startup-buffer-multi-digit-delay 0.4
|
||||||
|
|
||||||
|
;; If non-nil, show file icons for entries and headings on Spacemacs home buffer.
|
||||||
|
;; This has no effect in terminal or if "all-the-icons" package or the font
|
||||||
|
;; is not installed. (default nil)
|
||||||
|
dotspacemacs-startup-buffer-show-icons nil
|
||||||
|
|
||||||
|
;; Default major mode for a new empty buffer. Possible values are mode
|
||||||
|
;; names such as `text-mode'; and `nil' to use Fundamental mode.
|
||||||
|
;; (default `text-mode')
|
||||||
|
dotspacemacs-new-empty-buffer-major-mode 'text-mode
|
||||||
|
|
||||||
|
;; Default major mode of the scratch buffer (default `text-mode')
|
||||||
|
dotspacemacs-scratch-mode 'text-mode
|
||||||
|
|
||||||
|
;; If non-nil, *scratch* buffer will be persistent. Things you write down in
|
||||||
|
;; *scratch* buffer will be saved and restored automatically.
|
||||||
|
dotspacemacs-scratch-buffer-persistent nil
|
||||||
|
|
||||||
|
;; If non-nil, `kill-buffer' on *scratch* buffer
|
||||||
|
;; will bury it instead of killing.
|
||||||
|
dotspacemacs-scratch-buffer-unkillable nil
|
||||||
|
|
||||||
|
;; Initial message in the scratch buffer, such as "Welcome to Spacemacs!"
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-initial-scratch-message nil
|
||||||
|
|
||||||
|
;; List of themes, the first of the list is loaded when spacemacs starts.
|
||||||
|
;; Press `SPC T n' to cycle to the next theme in the list (works great
|
||||||
|
;; with 2 themes variants, one dark and one light)
|
||||||
|
dotspacemacs-themes '(spacemacs-dark
|
||||||
|
spacemacs-light)
|
||||||
|
|
||||||
|
;; Set the theme for the Spaceline. Supported themes are `spacemacs',
|
||||||
|
;; `all-the-icons', `custom', `doom', `vim-powerline' and `vanilla'. The
|
||||||
|
;; first three are spaceline themes. `doom' is the doom-emacs mode-line.
|
||||||
|
;; `vanilla' is default Emacs mode-line. `custom' is a user defined themes,
|
||||||
|
;; refer to the DOCUMENTATION.org for more info on how to create your own
|
||||||
|
;; spaceline theme. Value can be a symbol or list with additional properties.
|
||||||
|
;; (default '(spacemacs :separator wave :separator-scale 1.5))
|
||||||
|
dotspacemacs-mode-line-theme '(spacemacs :separator wave :separator-scale 1.5)
|
||||||
|
|
||||||
|
;; If non-nil the cursor color matches the state color in GUI Emacs.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-colorize-cursor-according-to-state t
|
||||||
|
|
||||||
|
;; Default font or prioritized list of fonts. The `:size' can be specified as
|
||||||
|
;; a non-negative integer (pixel size), or a floating-point (point size).
|
||||||
|
;; Point size is recommended, because it's device independent. (default 10.0)
|
||||||
|
dotspacemacs-default-font '("Source Code Pro"
|
||||||
|
:size 11.0
|
||||||
|
:weight normal
|
||||||
|
:width normal)
|
||||||
|
|
||||||
|
;; The leader key (default "SPC")
|
||||||
|
dotspacemacs-leader-key "SPC"
|
||||||
|
|
||||||
|
;; The key used for Emacs commands `M-x' (after pressing on the leader key).
|
||||||
|
;; (default "SPC")
|
||||||
|
dotspacemacs-emacs-command-key "SPC"
|
||||||
|
|
||||||
|
;; The key used for Vim Ex commands (default ":")
|
||||||
|
dotspacemacs-ex-command-key ":"
|
||||||
|
|
||||||
|
;; The leader key accessible in `emacs state' and `insert state'
|
||||||
|
;; (default "M-m")
|
||||||
|
dotspacemacs-emacs-leader-key "M-m"
|
||||||
|
|
||||||
|
;; Major mode leader key is a shortcut key which is the equivalent of
|
||||||
|
;; pressing `<leader> m`. Set it to `nil` to disable it. (default ",")
|
||||||
|
dotspacemacs-major-mode-leader-key ","
|
||||||
|
|
||||||
|
;; Major mode leader key accessible in `emacs state' and `insert state'.
|
||||||
|
;; (default "C-M-m" for terminal mode, "<M-return>" for GUI mode).
|
||||||
|
;; Thus M-RET should work as leader key in both GUI and terminal modes.
|
||||||
|
;; C-M-m also should work in terminal mode, but not in GUI mode.
|
||||||
|
dotspacemacs-major-mode-emacs-leader-key (if window-system "<M-return>" "C-M-m")
|
||||||
|
|
||||||
|
;; These variables control whether separate commands are bound in the GUI to
|
||||||
|
;; the key pairs `C-i', `TAB' and `C-m', `RET'.
|
||||||
|
;; Setting it to a non-nil value, allows for separate commands under `C-i'
|
||||||
|
;; and TAB or `C-m' and `RET'.
|
||||||
|
;; In the terminal, these pairs are generally indistinguishable, so this only
|
||||||
|
;; works in the GUI. (default nil)
|
||||||
|
dotspacemacs-distinguish-gui-tab nil
|
||||||
|
|
||||||
|
;; Name of the default layout (default "Default")
|
||||||
|
dotspacemacs-default-layout-name "Default"
|
||||||
|
|
||||||
|
;; If non-nil the default layout name is displayed in the mode-line.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-display-default-layout nil
|
||||||
|
|
||||||
|
;; If non-nil then the last auto saved layouts are resumed automatically upon
|
||||||
|
;; start. (default nil)
|
||||||
|
dotspacemacs-auto-resume-layouts nil
|
||||||
|
|
||||||
|
;; If non-nil, auto-generate layout name when creating new layouts. Only has
|
||||||
|
;; effect when using the "jump to layout by number" commands. (default nil)
|
||||||
|
dotspacemacs-auto-generate-layout-names nil
|
||||||
|
|
||||||
|
;; Size (in MB) above which spacemacs will prompt to open the large file
|
||||||
|
;; literally to avoid performance issues. Opening a file literally means that
|
||||||
|
;; no major mode or minor modes are active. (default is 1)
|
||||||
|
dotspacemacs-large-file-size 1
|
||||||
|
|
||||||
|
;; Location where to auto-save files. Possible values are `original' to
|
||||||
|
;; auto-save the file in-place, `cache' to auto-save the file to another
|
||||||
|
;; file stored in the cache directory and `nil' to disable auto-saving.
|
||||||
|
;; (default 'cache)
|
||||||
|
dotspacemacs-auto-save-file-location 'cache
|
||||||
|
|
||||||
|
;; Maximum number of rollback slots to keep in the cache. (default 5)
|
||||||
|
dotspacemacs-max-rollback-slots 5
|
||||||
|
|
||||||
|
;; If non-nil, the paste transient-state is enabled. While enabled, after you
|
||||||
|
;; paste something, pressing `C-j' and `C-k' several times cycles through the
|
||||||
|
;; elements in the `kill-ring'. (default nil)
|
||||||
|
dotspacemacs-enable-paste-transient-state nil
|
||||||
|
|
||||||
|
;; Which-key delay in seconds. The which-key buffer is the popup listing
|
||||||
|
;; the commands bound to the current keystroke sequence. (default 0.4)
|
||||||
|
dotspacemacs-which-key-delay 0.4
|
||||||
|
|
||||||
|
;; Which-key frame position. Possible values are `right', `bottom' and
|
||||||
|
;; `right-then-bottom'. right-then-bottom tries to display the frame to the
|
||||||
|
;; right; if there is insufficient space it displays it at the bottom.
|
||||||
|
;; (default 'bottom)
|
||||||
|
dotspacemacs-which-key-position 'bottom
|
||||||
|
|
||||||
|
;; Control where `switch-to-buffer' displays the buffer. If nil,
|
||||||
|
;; `switch-to-buffer' displays the buffer in the current window even if
|
||||||
|
;; another same-purpose window is available. If non-nil, `switch-to-buffer'
|
||||||
|
;; displays the buffer in a same-purpose window even if the buffer can be
|
||||||
|
;; displayed in the current window. (default nil)
|
||||||
|
dotspacemacs-switch-to-buffer-prefers-purpose nil
|
||||||
|
|
||||||
|
;; If non-nil a progress bar is displayed when spacemacs is loading. This
|
||||||
|
;; may increase the boot time on some systems and emacs builds, set it to
|
||||||
|
;; nil to boost the loading time. (default t)
|
||||||
|
dotspacemacs-loading-progress-bar t
|
||||||
|
|
||||||
|
;; If non-nil the frame is fullscreen when Emacs starts up. (default nil)
|
||||||
|
;; (Emacs 24.4+ only)
|
||||||
|
dotspacemacs-fullscreen-at-startup nil
|
||||||
|
|
||||||
|
;; If non-nil `spacemacs/toggle-fullscreen' will not use native fullscreen.
|
||||||
|
;; Use to disable fullscreen animations in OSX. (default nil)
|
||||||
|
dotspacemacs-fullscreen-use-non-native nil
|
||||||
|
|
||||||
|
;; If non-nil the frame is maximized when Emacs starts up.
|
||||||
|
;; Takes effect only if `dotspacemacs-fullscreen-at-startup' is nil.
|
||||||
|
;; (default nil) (Emacs 24.4+ only)
|
||||||
|
dotspacemacs-maximized-at-startup nil
|
||||||
|
|
||||||
|
;; If non-nil the frame is undecorated when Emacs starts up. Combine this
|
||||||
|
;; variable with `dotspacemacs-maximized-at-startup' in OSX to obtain
|
||||||
|
;; borderless fullscreen. (default nil)
|
||||||
|
dotspacemacs-undecorated-at-startup nil
|
||||||
|
|
||||||
|
;; A value from the range (0..100), in increasing opacity, which describes
|
||||||
|
;; the transparency level of a frame when it's active or selected.
|
||||||
|
;; Transparency can be toggled through `toggle-transparency'. (default 90)
|
||||||
|
dotspacemacs-active-transparency 90
|
||||||
|
|
||||||
|
;; A value from the range (0..100), in increasing opacity, which describes
|
||||||
|
;; the transparency level of a frame when it's inactive or deselected.
|
||||||
|
;; Transparency can be toggled through `toggle-transparency'. (default 90)
|
||||||
|
dotspacemacs-inactive-transparency 90
|
||||||
|
|
||||||
|
;; If non-nil show the titles of transient states. (default t)
|
||||||
|
dotspacemacs-show-transient-state-title t
|
||||||
|
|
||||||
|
;; If non-nil show the color guide hint for transient state keys. (default t)
|
||||||
|
dotspacemacs-show-transient-state-color-guide t
|
||||||
|
|
||||||
|
;; If non-nil unicode symbols are displayed in the mode line.
|
||||||
|
;; If you use Emacs as a daemon and wants unicode characters only in GUI set
|
||||||
|
;; the value to quoted `display-graphic-p'. (default t)
|
||||||
|
dotspacemacs-mode-line-unicode-symbols t
|
||||||
|
|
||||||
|
;; If non-nil smooth scrolling (native-scrolling) is enabled. Smooth
|
||||||
|
;; scrolling overrides the default behavior of Emacs which recenters point
|
||||||
|
;; when it reaches the top or bottom of the screen. (default t)
|
||||||
|
dotspacemacs-smooth-scrolling t
|
||||||
|
|
||||||
|
;; Show the scroll bar while scrolling. The auto hide time can be configured
|
||||||
|
;; by setting this variable to a number. (default t)
|
||||||
|
dotspacemacs-scroll-bar-while-scrolling t
|
||||||
|
|
||||||
|
;; Control line numbers activation.
|
||||||
|
;; If set to `t', `relative' or `visual' then line numbers are enabled in all
|
||||||
|
;; `prog-mode' and `text-mode' derivatives. If set to `relative', line
|
||||||
|
;; numbers are relative. If set to `visual', line numbers are also relative,
|
||||||
|
;; but only visual lines are counted. For example, folded lines will not be
|
||||||
|
;; counted and wrapped lines are counted as multiple lines.
|
||||||
|
;; This variable can also be set to a property list for finer control:
|
||||||
|
;; '(:relative nil
|
||||||
|
;; :visual nil
|
||||||
|
;; :disabled-for-modes dired-mode
|
||||||
|
;; doc-view-mode
|
||||||
|
;; markdown-mode
|
||||||
|
;; org-mode
|
||||||
|
;; pdf-view-mode
|
||||||
|
;; text-mode
|
||||||
|
;; :size-limit-kb 1000)
|
||||||
|
;; When used in a plist, `visual' takes precedence over `relative'.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-line-numbers nil
|
||||||
|
|
||||||
|
;; Code folding method. Possible values are `evil', `origami' and `vimish'.
|
||||||
|
;; (default 'evil)
|
||||||
|
dotspacemacs-folding-method 'evil
|
||||||
|
|
||||||
|
;; If non-nil and `dotspacemacs-activate-smartparens-mode' is also non-nil,
|
||||||
|
;; `smartparens-strict-mode' will be enabled in programming modes.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-smartparens-strict-mode nil
|
||||||
|
|
||||||
|
;; If non-nil smartparens-mode will be enabled in programming modes.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-activate-smartparens-mode t
|
||||||
|
|
||||||
|
;; If non-nil pressing the closing parenthesis `)' key in insert mode passes
|
||||||
|
;; over any automatically added closing parenthesis, bracket, quote, etc...
|
||||||
|
;; This can be temporary disabled by pressing `C-q' before `)'. (default nil)
|
||||||
|
dotspacemacs-smart-closing-parenthesis nil
|
||||||
|
|
||||||
|
;; Select a scope to highlight delimiters. Possible values are `any',
|
||||||
|
;; `current', `all' or `nil'. Default is `all' (highlight any scope and
|
||||||
|
;; emphasis the current one). (default 'all)
|
||||||
|
dotspacemacs-highlight-delimiters 'all
|
||||||
|
|
||||||
|
;; If non-nil, start an Emacs server if one is not already running.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-enable-server nil
|
||||||
|
|
||||||
|
;; Set the emacs server socket location.
|
||||||
|
;; If nil, uses whatever the Emacs default is, otherwise a directory path
|
||||||
|
;; like \"~/.emacs.d/server\". It has no effect if
|
||||||
|
;; `dotspacemacs-enable-server' is nil.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-server-socket-dir nil
|
||||||
|
|
||||||
|
;; If non-nil, advise quit functions to keep server open when quitting.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-persistent-server nil
|
||||||
|
|
||||||
|
;; List of search tool executable names. Spacemacs uses the first installed
|
||||||
|
;; tool of the list. Supported tools are `rg', `ag', `pt', `ack' and `grep'.
|
||||||
|
;; (default '("rg" "ag" "pt" "ack" "grep"))
|
||||||
|
dotspacemacs-search-tools '("rg" "ag" "pt" "ack" "grep")
|
||||||
|
|
||||||
|
;; Format specification for setting the frame title.
|
||||||
|
;; %a - the `abbreviated-file-name', or `buffer-name'
|
||||||
|
;; %t - `projectile-project-name'
|
||||||
|
;; %I - `invocation-name'
|
||||||
|
;; %S - `system-name'
|
||||||
|
;; %U - contents of $USER
|
||||||
|
;; %b - buffer name
|
||||||
|
;; %f - visited file name
|
||||||
|
;; %F - frame name
|
||||||
|
;; %s - process status
|
||||||
|
;; %p - percent of buffer above top of window, or Top, Bot or All
|
||||||
|
;; %P - percent of buffer above bottom of window, perhaps plus Top, or Bot or All
|
||||||
|
;; %m - mode name
|
||||||
|
;; %n - Narrow if appropriate
|
||||||
|
;; %z - mnemonics of buffer, terminal, and keyboard coding systems
|
||||||
|
;; %Z - like %z, but including the end-of-line format
|
||||||
|
;; If nil then Spacemacs uses default `frame-title-format' to avoid
|
||||||
|
;; performance issues, instead of calculating the frame title by
|
||||||
|
;; `spacemacs/title-prepare' all the time.
|
||||||
|
;; (default "%I@%S")
|
||||||
|
dotspacemacs-frame-title-format "%I@%S"
|
||||||
|
|
||||||
|
;; Format specification for setting the icon title format
|
||||||
|
;; (default nil - same as frame-title-format)
|
||||||
|
dotspacemacs-icon-title-format nil
|
||||||
|
|
||||||
|
;; Show trailing whitespace (default t)
|
||||||
|
dotspacemacs-show-trailing-whitespace t
|
||||||
|
|
||||||
|
;; Delete whitespace while saving buffer. Possible values are `all'
|
||||||
|
;; to aggressively delete empty line and long sequences of whitespace,
|
||||||
|
;; `trailing' to delete only the whitespace at end of lines, `changed' to
|
||||||
|
;; delete only whitespace for changed lines or `nil' to disable cleanup.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-whitespace-cleanup nil
|
||||||
|
|
||||||
|
;; If non-nil activate `clean-aindent-mode' which tries to correct
|
||||||
|
;; virtual indentation of simple modes. This can interfere with mode specific
|
||||||
|
;; indent handling like has been reported for `go-mode'.
|
||||||
|
;; If it does deactivate it here.
|
||||||
|
;; (default t)
|
||||||
|
dotspacemacs-use-clean-aindent-mode t
|
||||||
|
|
||||||
|
;; Accept SPC as y for prompts if non-nil. (default nil)
|
||||||
|
dotspacemacs-use-SPC-as-y nil
|
||||||
|
|
||||||
|
;; If non-nil shift your number row to match the entered keyboard layout
|
||||||
|
;; (only in insert state). Currently supported keyboard layouts are:
|
||||||
|
;; `qwerty-us', `qwertz-de' and `querty-ca-fr'.
|
||||||
|
;; New layouts can be added in `spacemacs-editing' layer.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-swap-number-row nil
|
||||||
|
|
||||||
|
;; Either nil or a number of seconds. If non-nil zone out after the specified
|
||||||
|
;; number of seconds. (default nil)
|
||||||
|
dotspacemacs-zone-out-when-idle nil
|
||||||
|
|
||||||
|
;; Run `spacemacs/prettify-org-buffer' when
|
||||||
|
;; visiting README.org files of Spacemacs.
|
||||||
|
;; (default nil)
|
||||||
|
dotspacemacs-pretty-docs nil
|
||||||
|
|
||||||
|
;; If nil the home buffer shows the full path of agenda items
|
||||||
|
;; and todos. If non-nil only the file name is shown.
|
||||||
|
dotspacemacs-home-shorten-agenda-source nil
|
||||||
|
|
||||||
|
;; If non-nil then byte-compile some of Spacemacs files.
|
||||||
|
dotspacemacs-byte-compile nil))
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-env ()
|
||||||
|
"Environment variables setup.
|
||||||
|
This function defines the environment variables for your Emacs session. By
|
||||||
|
default it calls `spacemacs/load-spacemacs-env' which loads the environment
|
||||||
|
variables declared in `~/.spacemacs.env' or `~/.spacemacs.d/.spacemacs.env'.
|
||||||
|
See the header of this file for more information."
|
||||||
|
(spacemacs/load-spacemacs-env)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-init ()
|
||||||
|
"Initialization for user code:
|
||||||
|
This function is called immediately after `dotspacemacs/init', before layer
|
||||||
|
configuration.
|
||||||
|
It is mostly for variables that should be set before packages are loaded.
|
||||||
|
If you are unsure, try setting them in `dotspacemacs/user-config' first."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-load ()
|
||||||
|
"Library to load while dumping.
|
||||||
|
This function is called only while dumping Spacemacs configuration. You can
|
||||||
|
`require' or `load' the libraries of your choice that will be included in the
|
||||||
|
dump."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-config ()
|
||||||
|
"Configuration for user code:
|
||||||
|
This function is called at the very end of Spacemacs startup, after layer
|
||||||
|
configuration.
|
||||||
|
Put your configuration code here, except for variables that should be set
|
||||||
|
before packages are loaded."
|
||||||
|
(setq rust-format-on-save t)
|
||||||
|
;; (global-set-key (kbd "M-1") 'evil-jump-forward)
|
||||||
|
;; (setq centaur-tabs-show-count t)
|
||||||
|
(define-key winum-keymap (kbd "M-1") 'tab-bar-switch-to-tab)
|
||||||
|
;; (evil-define-key '(normal) nil (kbd "C-i") 'evil-jump-forward)
|
||||||
|
(define-key evil-motion-state-map (kbd "C-i") 'evil-jump-forward)
|
||||||
|
(evil-define-key* '(normal insert visual) 'global (kbd "C-s") 'escape-and-save)
|
||||||
|
(evil-define-key* '(normal visual) 'global (kbd "gD") 'lsp-find-references)
|
||||||
|
|
||||||
|
(global-set-key (kbd "C--") 'spacemacs/scale-down-font)
|
||||||
|
(global-set-key (kbd "C-+") 'spacemacs/scale-up-font)
|
||||||
|
(global-set-key (kbd "C-=") 'spacemacs/reset-font-size)
|
||||||
|
|
||||||
|
(spacemacs/set-leader-keys "." 'lazy-helm/spacemacs/helm-find-files)
|
||||||
|
(spacemacs/set-leader-keys ":" 'helm-projectile-find-file)
|
||||||
|
(spacemacs/declare-prefix "o" "open external")
|
||||||
|
(spacemacs/set-leader-keys "ot" 'open-external-terminal)
|
||||||
|
|
||||||
|
(spacemacs/set-leader-keys "gg" 'magit-status)
|
||||||
|
(spacemacs/set-leader-keys "ee" 'flycheck-explain-error-at-point)
|
||||||
|
;; (spacemacs/set-leader-keys "br" '(revert-buffer nil nil))
|
||||||
|
|
||||||
|
(setq evil-escape-key-sequence "kj")
|
||||||
|
|
||||||
|
(defun open-external-terminal ()
|
||||||
|
"Open external terminal"
|
||||||
|
(interactive)
|
||||||
|
(call-process-shell-command "alacritty&" nil 0))
|
||||||
|
|
||||||
|
(defun escape-and-save()
|
||||||
|
"Evil escape and then save buffer"
|
||||||
|
(interactive)
|
||||||
|
(evil-escape)
|
||||||
|
(condition-case nil
|
||||||
|
(format-all-buffer)
|
||||||
|
(error nil))
|
||||||
|
(save-buffer))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Do not write anything past this comment. This is where Emacs will
|
||||||
|
;; auto-generate custom variable definitions.
|
||||||
|
(defun dotspacemacs/emacs-custom-settings ()
|
||||||
|
"Emacs custom settings.
|
||||||
|
This is an auto-generated function, do not modify its content directly, use
|
||||||
|
Emacs customize menu instead.
|
||||||
|
This function is called at the very end of Spacemacs initialization."
|
||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(evil-want-Y-yank-to-eol nil)
|
||||||
|
'(org-babel-load-languages '((csharp . t) (emacs-lisp)))
|
||||||
|
'(package-selected-packages
|
||||||
|
'(csv-mode yapfify sphinx-doc pytest pyenv-mode pydoc py-isort poetry pippel pipenv pyvenv pip-requirements nose lsp-python-ms lsp-pyright live-py-mode importmagic epc ctable concurrent deferred helm-pydoc helm-cscope xcscope cython-mode company-anaconda blacken anaconda-mode pythonic evil-snipe omnisharp csharp-mode web-beautify prettier-js json-reformat json-navigator hierarchy json-mode json-snatcher format-all language-id inheritenv company-quickhelp stickyfunc-enhance srefactor yasnippet-snippets treemacs-magit smeargle orgit-forge orgit org-rich-yank org-projectile org-category-capture org-present org-pomodoro alert log4e gntp org-mime org-download org-contrib org-cliplink org lsp-ui lsp-origami origami htmlize helm-org-rifle helm-lsp helm-git-grep helm-company helm-c-yasnippet gnuplot gitignore-templates git-timemachine git-modes git-messenger git-link fuzzy forge yaml magit ghub closql emacsql-sqlite emacsql treepy magit-section git-commit with-editor transient flyspell-correct-helm flyspell-correct flycheck-pos-tip evil-org centaur-tabs auto-yasnippet yasnippet auto-dictionary ac-ispell auto-complete toml-mode ron-mode racer pos-tip rust-mode helm-gtags ggtags flycheck-rust dap-mode lsp-treemacs bui lsp-mode counsel-gtags counsel swiper ivy company cargo markdown-mode ws-butler writeroom-mode winum which-key volatile-highlights vi-tilde-fringe uuidgen use-package undo-tree treemacs-projectile treemacs-persp treemacs-icons-dired treemacs-evil toc-org symon symbol-overlay string-inflection string-edit spaceline-all-the-icons restart-emacs request rainbow-delimiters quickrun popwin pcre2el password-generator paradox overseer org-superstar open-junk-file nameless multi-line macrostep lorem-ipsum link-hint inspector info+ indent-guide hybrid-mode hungry-delete hl-todo highlight-parentheses highlight-numbers highlight-indentation hide-comnt helm-xref helm-themes helm-swoop helm-purpose helm-projectile helm-org helm-mode-manager helm-make helm-ls-git helm-flx helm-descbinds helm-ag google-translate golden-ratio font-lock+ flycheck-package flycheck-elsa flx-ido fancy-battery eyebrowse expand-region evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-textobj-line evil-terminal-cursor-changer evil-surround evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-lisp-state evil-lion evil-indent-plus evil-iedit-state evil-goggles evil-exchange evil-escape evil-ediff evil-easymotion evil-collection evil-cleverparens evil-args evil-anzu eval-sexp-fu emr elisp-slime-nav elisp-def editorconfig dumb-jump drag-stuff dotenv-mode dired-quick-sort diminish devdocs define-word column-enforce-mode clean-aindent-mode centered-cursor-mode auto-highlight-symbol auto-compile aggressive-indent ace-link ace-jump-helm-line)))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(highlight-parentheses-highlight ((nil (:weight ultra-bold))) t))
|
||||||
|
)
|
703
flake.lock
generated
703
flake.lock
generated
@ -1,703 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"alacritty-theme": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747350674,
|
|
||||||
"narHash": "sha256-1LRR4ciM/f1Fu9sLcq53b6eXK1qggvvkSY8iqF0Yw50=",
|
|
||||||
"owner": "alacritty",
|
|
||||||
"repo": "alacritty-theme",
|
|
||||||
"rev": "59a96ef4c734f97a1aadaa619b31cc1ca90a0fbc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "alacritty",
|
|
||||||
"repo": "alacritty-theme",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-schemes": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696158499,
|
|
||||||
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-schemes",
|
|
||||||
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-schemes",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crane": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736101677,
|
|
||||||
"narHash": "sha256-iKOPq86AOWCohuzxwFy/MtC8PcSVGnrxBOvxpjpzrAY=",
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"rev": "61ba163d85e5adeddc7b3a69bb174034965965b2",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"deploy-rs": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"utils": "utils"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1727447169,
|
|
||||||
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
|
|
||||||
"owner": "serokell",
|
|
||||||
"repo": "deploy-rs",
|
|
||||||
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "serokell",
|
|
||||||
"repo": "deploy-rs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"disko": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747742835,
|
|
||||||
"narHash": "sha256-kYL4GCwwznsypvsnA20oyvW8zB/Dvn6K5G/tgMjVMT4=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"rev": "df522e787fdffc4f32ed3e1fca9ed0968a384d62",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_2": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747046372,
|
|
||||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1743550720,
|
|
||||||
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1659877975,
|
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_3": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_4": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_5"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747763032,
|
|
||||||
"narHash": "sha256-9j3oCbemeH7bTVXJ3pDWxOptbxDx2SdK1jY2AHpjQiw=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "29dda415f5b2178278283856c6f9f7b48a2a4353",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"impermanence": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1737831083,
|
|
||||||
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ixx": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": [
|
|
||||||
"nixvim",
|
|
||||||
"nuschtosSearch",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nuschtosSearch",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1737371634,
|
|
||||||
"narHash": "sha256-fTVAWzT1UMm1lT+YxHuVPtH+DATrhYfea3B0MxG/cGw=",
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"repo": "ixx",
|
|
||||||
"rev": "a1176e2a10ce745ff8f63e4af124ece8fe0b1648",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"ref": "v0.0.7",
|
|
||||||
"repo": "ixx",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"music-reader": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"naersk": "naersk",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736544231,
|
|
||||||
"narHash": "sha256-U1wrjKPq+w9yKno8VRmIBV34/RXQEbpKQPnmdx+Jezk=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "a00eade3bbf6992dbb6c62443845073864cb0ae2",
|
|
||||||
"revCount": 65,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.julian-mutter.de/julian/music-reader"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.julian-mutter.de/julian/music-reader"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"naersk": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736429655,
|
|
||||||
"narHash": "sha256-BwMekRuVlSB9C0QgwKMICiJ5EVbLGjfe4qyueyNQyGI=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"rev": "0621e47bd95542b8e1ce2ee2d65d6a1f887a13ce",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "naersk",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-colors": {
|
|
||||||
"inputs": {
|
|
||||||
"base16-schemes": "base16-schemes",
|
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1707825078,
|
|
||||||
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
|
|
||||||
"owner": "misterio77",
|
|
||||||
"repo": "nix-colors",
|
|
||||||
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "misterio77",
|
|
||||||
"repo": "nix-colors",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-gl": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_2",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1713543440,
|
|
||||||
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixgl",
|
|
||||||
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixgl",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nix-matlab": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_2",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747753308,
|
|
||||||
"narHash": "sha256-5cRyA80iqGoOjvbAVlyz3zPiO4sCHOn3EgwnJjF36v8=",
|
|
||||||
"owner": "doronbehar",
|
|
||||||
"repo": "nix-matlab",
|
|
||||||
"rev": "cd3b767f8c6e92e33e730aadb247d7c083af3fb3",
|
|
||||||
"type": "gitlab"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "doronbehar",
|
|
||||||
"repo": "nix-matlab",
|
|
||||||
"type": "gitlab"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747723695,
|
|
||||||
"narHash": "sha256-lSXzv33yv1O9r9Ai1MtYFDX3OKhWsZMn/5FFb4Rni/k=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"rev": "6ac6ec6fcb410e15a60ef5ec94b8a2b35b5dd282",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1702272962,
|
|
||||||
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-lib": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1697935651,
|
|
||||||
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747676747,
|
|
||||||
"narHash": "sha256-LXkWBVqilgx7Pohwqu/ABxDVw+Cmi5/Mj2S2mpUH0Fw=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "72841a4a8761d1aed92ef6169a636872c986c76d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-24.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 0,
|
|
||||||
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
|
|
||||||
"path": "/nix/store/g3jyakqb3ipnr6gz5rw10fb17ckr2z00-source",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747542820,
|
|
||||||
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixvim": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"nuschtosSearch": "nuschtosSearch",
|
|
||||||
"systems": "systems_4"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747743401,
|
|
||||||
"narHash": "sha256-AXk6mf9ySe44faNUGhD1mZud/kB7X+Nipzo2YxHet4s=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixvim",
|
|
||||||
"rev": "47dba84e0d068a2b8c07faa0ec737ea98a226537",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixvim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nuschtosSearch": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_3",
|
|
||||||
"ixx": "ixx",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixvim",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1745046075,
|
|
||||||
"narHash": "sha256-8v4y6k16Ra/fiecb4DxhsoOGtzLKgKlS+9/XJ9z0T2I=",
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"repo": "search",
|
|
||||||
"rev": "066afe8643274470f4a294442aadd988356a478f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NuschtOS",
|
|
||||||
"repo": "search",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"alacritty-theme": "alacritty-theme",
|
|
||||||
"deploy-rs": "deploy-rs",
|
|
||||||
"disko": "disko",
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"impermanence": "impermanence",
|
|
||||||
"music-reader": "music-reader",
|
|
||||||
"nix-colors": "nix-colors",
|
|
||||||
"nix-gl": "nix-gl",
|
|
||||||
"nix-matlab": "nix-matlab",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
|
||||||
"nixpkgs": "nixpkgs_3",
|
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
|
||||||
"nixvim": "nixvim",
|
|
||||||
"sheet-organizer": "sheet-organizer",
|
|
||||||
"sops-nix": "sops-nix",
|
|
||||||
"systems": "systems_6",
|
|
||||||
"yazi-flavors": "yazi-flavors"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sheet-organizer": {
|
|
||||||
"inputs": {
|
|
||||||
"crane": "crane",
|
|
||||||
"flake-utils": "flake-utils_4",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1742577105,
|
|
||||||
"narHash": "sha256-1VFPRxydmDhq+CQogLeafh2zmNGKTMFYiV4y9NZXApo=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "94de09f4298233795996e17163ae6b987cdedbe9",
|
|
||||||
"revCount": 75,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1747603214,
|
|
||||||
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1689347949,
|
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default-linux",
|
|
||||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default-linux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1701680307,
|
|
||||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"yazi-flavors": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1746876067,
|
|
||||||
"narHash": "sha256-7facwGT4DoaMwdkBrMzPlqDbrbSjwW57qRD34iP48+0=",
|
|
||||||
"owner": "yazi-rs",
|
|
||||||
"repo": "flavors",
|
|
||||||
"rev": "02f3fc64b78223c1005672e105f6d0e97c0db79e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "yazi-rs",
|
|
||||||
"repo": "flavors",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
191
flake.nix
191
flake.nix
@ -1,191 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Home Manager configuration of julian";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
|
||||||
systems.url = "github:nix-systems/default-linux";
|
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
|
||||||
deploy-rs.url = "github:serokell/deploy-rs";
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
sops-nix = {
|
|
||||||
url = "github:Mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-gl = {
|
|
||||||
url = "github:nix-community/nixgl";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
disko = {
|
|
||||||
url = "github:nix-community/disko";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Various flakes
|
|
||||||
alacritty-theme = {
|
|
||||||
url = "github:alacritty/alacritty-theme";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
yazi-flavors = {
|
|
||||||
url = "github:yazi-rs/flavors";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
nixvim = {
|
|
||||||
url = "github:nix-community/nixvim";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-matlab = {
|
|
||||||
url = "gitlab:doronbehar/nix-matlab";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# My projects
|
|
||||||
sheet-organizer = {
|
|
||||||
url = "git+https://gitlab.julian-mutter.de/julian/sheet-organizer";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
music-reader = {
|
|
||||||
url = "git+https://gitlab.julian-mutter.de/julian/music-reader";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
home-manager,
|
|
||||||
systems,
|
|
||||||
...
|
|
||||||
} @ inputs: let
|
|
||||||
inherit (self) outputs;
|
|
||||||
lib = nixpkgs.lib // home-manager.lib;
|
|
||||||
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
|
||||||
pkgsFor = lib.genAttrs (import systems) (
|
|
||||||
system:
|
|
||||||
import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
config.permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
warn-dirty = false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in {
|
|
||||||
inherit lib;
|
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos;
|
|
||||||
homeManagerModules = import ./modules/home-manager;
|
|
||||||
|
|
||||||
overlays = import ./overlays {inherit inputs outputs;};
|
|
||||||
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
|
|
||||||
|
|
||||||
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
|
|
||||||
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
|
|
||||||
formatter = forEachSystem (pkgs: pkgs.alejandra);
|
|
||||||
|
|
||||||
nixosConfigurations = {
|
|
||||||
# Main laptop
|
|
||||||
aspi = lib.nixosSystem {
|
|
||||||
modules = [./hosts/aspi];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Piano raspberry pi
|
|
||||||
pianonix = lib.nixosSystem {
|
|
||||||
modules = [./hosts/pianonix];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
kardorf = lib.nixosSystem {
|
|
||||||
modules = [./hosts/kardorf];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
builder = lib.nixosSystem {
|
|
||||||
modules = [./hosts/builder];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Standalone HM
|
|
||||||
homeConfigurations = {
|
|
||||||
# Main laptop
|
|
||||||
"julian@aspi" = lib.homeManagerConfiguration {
|
|
||||||
modules = [
|
|
||||||
./homes/julian/aspi.nix
|
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Media server (RPi)
|
|
||||||
"julian@pianonix" = lib.homeManagerConfiguration {
|
|
||||||
modules = [
|
|
||||||
./homes/julian/pianonix.nix
|
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
|
||||||
pkgs = pkgsFor.aarch64-linux;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"julian@kardorf" = lib.homeManagerConfiguration {
|
|
||||||
modules = [
|
|
||||||
./homes/julian/kardorf.nix
|
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"julian@v3ms" = lib.homeManagerConfiguration {
|
|
||||||
modules = [
|
|
||||||
./homes/julian/v3ms
|
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# deploy-rs node configuration
|
|
||||||
deploy.nodes = {
|
|
||||||
pianonix = {
|
|
||||||
hostname = "pianonix.local";
|
|
||||||
profiles.system = {
|
|
||||||
sshUser = "root";
|
|
||||||
user = "root";
|
|
||||||
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
|
|
||||||
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
builder = {
|
|
||||||
hostname = "builder.julian-mutter.de";
|
|
||||||
profiles.system = {
|
|
||||||
sshUser = "root";
|
|
||||||
user = "root";
|
|
||||||
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
|
|
||||||
remoteBuild = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
|
|
||||||
./features/fish
|
|
||||||
./features/direnv
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/kitty
|
|
||||||
./features/wezterm
|
|
||||||
./features/yazi
|
|
||||||
./features/emacs
|
|
||||||
|
|
||||||
./features/hyprland
|
|
||||||
|
|
||||||
./features/suites/cli
|
|
||||||
./features/suites/desktop
|
|
||||||
./features/suites/development
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "aspi";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "kitty";
|
|
||||||
|
|
||||||
# ------- ----------
|
|
||||||
# | eDP-1 | | HDMI-A-1 |
|
|
||||||
# ------- ----------
|
|
||||||
monitors = [
|
|
||||||
{
|
|
||||||
name = "HDMI-A-1";
|
|
||||||
# width = 1680;
|
|
||||||
# height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"1"
|
|
||||||
"2"
|
|
||||||
"3"
|
|
||||||
"4"
|
|
||||||
"5"
|
|
||||||
];
|
|
||||||
primary = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "eDP-1";
|
|
||||||
# width = 1680;
|
|
||||||
# height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"6"
|
|
||||||
"7"
|
|
||||||
"8"
|
|
||||||
"9"
|
|
||||||
"10"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
import = [
|
|
||||||
"~/.config/alacritty/theme/themes/smoooooth.toml"
|
|
||||||
]
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [alacritty];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
|
|
||||||
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,73 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
|
||||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
|
||||||
in {
|
|
||||||
home.sessionPath = ["/home/julian/.config/emacs/bin"];
|
|
||||||
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
binutils # native-comp needs 'as', provided by this
|
|
||||||
|
|
||||||
## Doom dependencies
|
|
||||||
git
|
|
||||||
(ripgrep.override {withPCRE2 = true;})
|
|
||||||
|
|
||||||
## Optional dependencies
|
|
||||||
fd # faster projectile indexing
|
|
||||||
imagemagick # for image-dired
|
|
||||||
zstd # for undo-fu-session/undo-tree compression
|
|
||||||
|
|
||||||
## Module dependencies
|
|
||||||
(aspellWithDicts (
|
|
||||||
ds:
|
|
||||||
with ds; [
|
|
||||||
en
|
|
||||||
en-computers
|
|
||||||
en-science
|
|
||||||
de
|
|
||||||
]
|
|
||||||
))
|
|
||||||
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.de_DE
|
|
||||||
hunspellDicts.en_US
|
|
||||||
|
|
||||||
sqlite
|
|
||||||
|
|
||||||
# Code formatters for use with doom emacs
|
|
||||||
nixfmt-rfc-style # nix
|
|
||||||
alejandra # nix
|
|
||||||
|
|
||||||
nixd # nix lsp
|
|
||||||
dockfmt # docker
|
|
||||||
google-java-format # java
|
|
||||||
black # python
|
|
||||||
rustfmt # rust
|
|
||||||
shfmt
|
|
||||||
pyright
|
|
||||||
clang-tools # c++ lsp etc
|
|
||||||
ltex-ls # latex languagetool
|
|
||||||
|
|
||||||
graphviz
|
|
||||||
# Lsps for use with doom emacs
|
|
||||||
# neocmakelsp # cmake
|
|
||||||
|
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
]
|
|
||||||
++ lib.optional config.is-nixos emacs;
|
|
||||||
|
|
||||||
home.activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
|
||||||
if [ ! -d "/home/julian/.config/emacs" ]; then
|
|
||||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
|
|
||||||
fi
|
|
||||||
if [ ! -d "/home/julian/.config/doom" ]; then
|
|
||||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone "${configRepoUrl}" "/home/julian/.config/doom"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
home.file = {
|
|
||||||
".config/starship.toml".source = ./starship.toml;
|
|
||||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
starship
|
|
||||||
lazygit
|
|
||||||
];
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
g = "lazygit";
|
|
||||||
ls = "ls --color";
|
|
||||||
la = "ls -Alh --color";
|
|
||||||
grep = "grep --color";
|
|
||||||
conf = "edit-config";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
interactiveShellInit = "set fish_greeting"; # Disable default greeting
|
|
||||||
|
|
||||||
functions = {
|
|
||||||
mkcd = ''
|
|
||||||
mkdir $argv
|
|
||||||
cd $argv
|
|
||||||
'';
|
|
||||||
run = ''
|
|
||||||
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
|
|
||||||
'';
|
|
||||||
shell = ''
|
|
||||||
set args
|
|
||||||
for arg in $argv
|
|
||||||
set args $args nixpkgs#$arg
|
|
||||||
end
|
|
||||||
nix shell $args
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
function lwd
|
|
||||||
cd $LAST_WORKING_DIR
|
|
||||||
end
|
|
||||||
|
|
||||||
function __onpwd --on-variable PWD
|
|
||||||
set --universal LAST_WORKING_DIR $PWD
|
|
||||||
end
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
font-awesome
|
|
||||||
dejavu_fonts
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-emoji
|
|
||||||
liberation_ttf
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
source-code-pro
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
services.gammastep = {
|
|
||||||
enable = true;
|
|
||||||
provider = "geoclue2";
|
|
||||||
temperature = {
|
|
||||||
day = 6000;
|
|
||||||
night = 4600;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
general.adjustment-method = "wayland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
|
|
||||||
in {
|
|
||||||
# Do not make conditional, just toggle things on and off
|
|
||||||
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
|
|
||||||
|
|
||||||
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
theme = {
|
|
||||||
name = inputs.nix-colors.colorschemes.${config.colorscheme.name}.slug;
|
|
||||||
package = gtkThemeFromScheme {
|
|
||||||
scheme = inputs.nix-colors.colorschemes.${config.colorscheme.name};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
iconTheme = {
|
|
||||||
name = "Papirus-Dark";
|
|
||||||
package = pkgs.papirus-icon-theme;
|
|
||||||
};
|
|
||||||
cursorTheme = {
|
|
||||||
package = pkgs.apple-cursor;
|
|
||||||
name = "macOS";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
|
||||||
}
|
|
@ -1,404 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
# inputs.hyprland.homeManagerModules.default
|
|
||||||
./waybar
|
|
||||||
./wofi
|
|
||||||
./mako
|
|
||||||
# ./hyprlock
|
|
||||||
./wlogout
|
|
||||||
../gammastep
|
|
||||||
|
|
||||||
./swayidle.nix
|
|
||||||
./swaylock.nix
|
|
||||||
./zathura.nix
|
|
||||||
./waypipe.nix
|
|
||||||
|
|
||||||
./hyprbars.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
extraPortals = [pkgs.xdg-desktop-portal-wlr];
|
|
||||||
config.hyprland = {
|
|
||||||
default = [
|
|
||||||
"wlr"
|
|
||||||
"gtk"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.imv.enable = true; # TODO: what is that
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hyprpicker
|
|
||||||
brightnessctl
|
|
||||||
frajul.hyprshot-gui
|
|
||||||
frajul.wl-ocr
|
|
||||||
|
|
||||||
wf-recorder
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin
|
|
||||||
"toggle-screen-mirroring"
|
|
||||||
(builtins.readFile
|
|
||||||
./toggle-screen-mirroring.sh))
|
|
||||||
|
|
||||||
(
|
|
||||||
pkgs.writeShellScriptBin
|
|
||||||
"correct-workspace-locations"
|
|
||||||
(
|
|
||||||
lib.concatStringsSep "\n"
|
|
||||||
(
|
|
||||||
builtins.concatLists (
|
|
||||||
map (monitor: map (ws: "hyprctl dispatch moveworkspacetomonitor ${ws} ${monitor.name}") monitor.workspaces) config.monitors
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
services.cliphist = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
MOZ_ENABLE_WAYLAND = 1;
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
LIBSEAT_BACKEND = "logind";
|
|
||||||
};
|
|
||||||
|
|
||||||
# services.hypridle = {
|
|
||||||
# enable = true;
|
|
||||||
# settings = {
|
|
||||||
# general = {
|
|
||||||
# after_sleep_cmd = "hyprctl dispatch dpms on";
|
|
||||||
# ignore_dbus_inhibit = false;
|
|
||||||
# lock_cmd = "hyprlock";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# listener = [
|
|
||||||
# {
|
|
||||||
# timeout = 300; # 5min
|
|
||||||
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
|
||||||
# on-resume = "brightnessctl -r"; # monitor backlight restore.
|
|
||||||
# }
|
|
||||||
|
|
||||||
# {
|
|
||||||
# timeout = 360; # 6min
|
|
||||||
# on-timeout = "hyprlock"; # lock screen when timeout has passed
|
|
||||||
# }
|
|
||||||
|
|
||||||
# {
|
|
||||||
# timeout = 600; # 10min
|
|
||||||
# on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
|
||||||
# on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# services.hypridle.enable = true; # can be configured
|
|
||||||
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
# Whether to enable Hyprland wayland compositor
|
|
||||||
enable = true;
|
|
||||||
# package = config.lib.nixGL.wrap (
|
|
||||||
# pkgs.hyprland.override {
|
|
||||||
# # nixgl needed?
|
|
||||||
# wrapRuntimeDeps = false;
|
|
||||||
# }
|
|
||||||
# );
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
# Same as default, but stop graphical-session too
|
|
||||||
extraCommands = lib.mkBefore [
|
|
||||||
"systemctl --user stop graphical-session.target"
|
|
||||||
"systemctl --user start hyprland-session.target"
|
|
||||||
];
|
|
||||||
variables = [
|
|
||||||
"DISPLAY"
|
|
||||||
"HYPRLAND_INSTANCE_SIGNATURE"
|
|
||||||
"WAYLAND_DISPLAY"
|
|
||||||
"XDG_CURRENT_DESKTOP"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
|
|
||||||
|
|
||||||
# The hyprland package to use (simplifies use of plugins)
|
|
||||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
# Whether to enable XWayland
|
|
||||||
xwayland.enable = true;
|
|
||||||
|
|
||||||
# Optional
|
|
||||||
# Whether to enable hyprland-session.target on hyprland startup
|
|
||||||
# systemd.enable = true;
|
|
||||||
# Make PATH available to systemd services
|
|
||||||
# systemd.variables = [ "--all" ];
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
|
|
||||||
# hyprlandPlugins.hyprbars
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
# Monitors
|
|
||||||
monitor = ",preferred,auto,1";
|
|
||||||
|
|
||||||
# Autostart
|
|
||||||
exec-once = ["firefox"];
|
|
||||||
|
|
||||||
# Look and Feel
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 5;
|
|
||||||
|
|
||||||
layout = "dwindle";
|
|
||||||
|
|
||||||
# "col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
|
|
||||||
# "col.inactive_border" = "0xff${palette.base00}";
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
# power saving
|
|
||||||
blur.enabled = false;
|
|
||||||
# power saving
|
|
||||||
shadow.enabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Dwindle layout
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = true; # You probably want this
|
|
||||||
smart_split = false;
|
|
||||||
smart_resizing = false;
|
|
||||||
force_split = 2;
|
|
||||||
# no_gaps_when_only = 2; # with border
|
|
||||||
};
|
|
||||||
|
|
||||||
# Master layout
|
|
||||||
master = {
|
|
||||||
new_status = "slave";
|
|
||||||
# no_gaps_when_only = 2; # with border
|
|
||||||
mfact = 0.5; # Do not make master bigger
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows,1,3,default,slide"
|
|
||||||
"fade,1,3,default"
|
|
||||||
"layers,1,3,default,slide"
|
|
||||||
"border,1,3,default"
|
|
||||||
"workspaces,1,3,default,slide"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
exec = [
|
|
||||||
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
|
||||||
"correct-workspace-locations"
|
|
||||||
];
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
# disable auto polling for config file changes
|
|
||||||
disable_autoreload = true;
|
|
||||||
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
|
|
||||||
vfr = true; # power saving
|
|
||||||
};
|
|
||||||
|
|
||||||
render = {
|
|
||||||
# we do, in fact, want direct scanout
|
|
||||||
direct_scanout = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Input
|
|
||||||
input = {
|
|
||||||
kb_layout = "de";
|
|
||||||
natural_scroll = false;
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Window rules
|
|
||||||
windowrulev2 = [
|
|
||||||
"suppressevent maximize, class:.*"
|
|
||||||
"workspace 1, class:firefox"
|
|
||||||
"workspace 9, class:nheko"
|
|
||||||
"workspace 9, class:org.telegram.desktop"
|
|
||||||
"workspace 10, class:thunderbird"
|
|
||||||
"float, class:qalculate-gtk"
|
|
||||||
"tile, class:MATLAB, title:MATLAB"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Workspace rules
|
|
||||||
workspace =
|
|
||||||
[
|
|
||||||
# smart gaps (none when only one window in workspace)
|
|
||||||
"w[t1], gapsin:0, gapsout:0, border:1"
|
|
||||||
"w[tg1], gapsin:0, gapsout:0, border:1"
|
|
||||||
"f[1], gapsin:0, gapsout:0, border:1"
|
|
||||||
]
|
|
||||||
# builds like "1, e-DP1" "2, HDMI-1" etc.
|
|
||||||
++ builtins.concatLists (
|
|
||||||
map (monitor: map (ws: "${ws}, monitor:${monitor.name}") monitor.workspaces) config.monitors
|
|
||||||
);
|
|
||||||
|
|
||||||
# Mouse binds
|
|
||||||
bindm = [
|
|
||||||
"$mod, mouse:272, movewindow" # leftclick
|
|
||||||
"$mod, mouse:273, resizewindow" # rightclick
|
|
||||||
];
|
|
||||||
|
|
||||||
# binds
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
# compositor commands
|
|
||||||
"$mod, Space, focuswindow, floating"
|
|
||||||
"$mod SHIFT, Space, togglefloating,"
|
|
||||||
"$mod, F, fullscreen,"
|
|
||||||
"$mod, X, killactive,"
|
|
||||||
|
|
||||||
"$mod, O, togglesplit," # dwindle
|
|
||||||
|
|
||||||
# opening applications
|
|
||||||
"$mod, D, exec, wofi --show drun,run"
|
|
||||||
"$mod, E, exec, pcmanfm"
|
|
||||||
"$mod, Return, exec, kitty"
|
|
||||||
"$mod, B, exec, firefox"
|
|
||||||
"$mod, C, exec, qalculate-gtk"
|
|
||||||
|
|
||||||
# other commands
|
|
||||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
|
||||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
|
||||||
"$mod SHIFT, R, exec, hyprctl reload"
|
|
||||||
"$mod, Print, exec, hyprshot-gui"
|
|
||||||
", Print, exec, hyprshot-gui"
|
|
||||||
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
|
|
||||||
|
|
||||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
|
||||||
# "$mod, G, togglegroup,"
|
|
||||||
# "$mod SHIFT, N, changegroupactive, f"
|
|
||||||
# "$mod SHIFT, P, changegroupactive, b"
|
|
||||||
# "$mod ALT, ,resizeactive,"
|
|
||||||
|
|
||||||
# media keys
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPause, exec, playerctl pause"
|
|
||||||
", XF86AudioStop, exec, playerctl stop"
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
|
|
||||||
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
|
|
||||||
|
|
||||||
# move focus
|
|
||||||
"$mod, left, movefocus, l"
|
|
||||||
"$mod, H, movefocus, l"
|
|
||||||
"$mod, right, movefocus, r"
|
|
||||||
"$mod, L, movefocus, r"
|
|
||||||
"$mod, up, movefocus, u"
|
|
||||||
"$mod, K, movefocus, u"
|
|
||||||
"$mod, down, movefocus, d"
|
|
||||||
"$mod, J, movefocus, d"
|
|
||||||
|
|
||||||
# move window
|
|
||||||
"$mod SHIFT, left, movewindow, l"
|
|
||||||
"$mod SHIFT, H, movewindow, l"
|
|
||||||
"$mod SHIFT, right, movewindow, r"
|
|
||||||
"$mod SHIFT, L, movewindow, r"
|
|
||||||
"$mod SHIFT, up, movewindow, u"
|
|
||||||
"$mod SHIFT, K, movewindow, u"
|
|
||||||
"$mod SHIFT, down, movewindow, d"
|
|
||||||
"$mod SHIFT, J, movewindow, d"
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
"$mod, 1, workspace, 1"
|
|
||||||
"$mod, 2, workspace, 2"
|
|
||||||
"$mod, 3, workspace, 3"
|
|
||||||
"$mod, 4, workspace, 4"
|
|
||||||
"$mod, 5, workspace, 5"
|
|
||||||
"$mod, 6, workspace, 6"
|
|
||||||
"$mod, 7, workspace, 7"
|
|
||||||
"$mod, 8, workspace, 8"
|
|
||||||
"$mod, 9, workspace, 9"
|
|
||||||
"$mod, 0, workspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace without following with mainMod + CTRL + [0-9]
|
|
||||||
"$mod CTRL, 1, movetoworkspacesilent, 1"
|
|
||||||
"$mod CTRL, 2, movetoworkspacesilent, 2"
|
|
||||||
"$mod CTRL, 3, movetoworkspacesilent, 3"
|
|
||||||
"$mod CTRL, 4, movetoworkspacesilent, 4"
|
|
||||||
"$mod CTRL, 5, movetoworkspacesilent, 5"
|
|
||||||
"$mod CTRL, 6, movetoworkspacesilent, 6"
|
|
||||||
"$mod CTRL, 7, movetoworkspacesilent, 7"
|
|
||||||
"$mod CTRL, 8, movetoworkspacesilent, 8"
|
|
||||||
"$mod CTRL, 9, movetoworkspacesilent, 9"
|
|
||||||
"$mod CTRL, 0, movetoworkspacesilent, 10"
|
|
||||||
]
|
|
||||||
++
|
|
||||||
# Screen lock
|
|
||||||
(
|
|
||||||
let
|
|
||||||
swaylock = lib.getExe config.programs.swaylock.package;
|
|
||||||
in
|
|
||||||
lib.optionals config.programs.swaylock.enable [
|
|
||||||
"$mod,TAB,exec,${swaylock} --daemonize"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
++
|
|
||||||
# Notification manager
|
|
||||||
(
|
|
||||||
let
|
|
||||||
makoctl = lib.getExe' config.services.mako.package "makoctl";
|
|
||||||
in
|
|
||||||
lib.optionals config.services.mako.enable [
|
|
||||||
"$mod,w,exec,${makoctl} dismiss"
|
|
||||||
"$mod SHIFT,W,exec,${makoctl} restore"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
# plugin = {
|
|
||||||
# hyprbars = {
|
|
||||||
# bar_text_size = 10;
|
|
||||||
# bar_height = 16;
|
|
||||||
# bar_text_font = "Ubuntu Nerd Font";
|
|
||||||
# bar_precedence_over_border = true;
|
|
||||||
# bar_color = "rgb(${palette.base01})";
|
|
||||||
|
|
||||||
# hyprbars-button = [ "rgb(${palette.base03}), 14, , hyprctl dispatch killactive" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
getHostname = x: lib.last (lib.splitString "@" x);
|
|
||||||
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
|
||||||
# name = getHostname n;
|
|
||||||
# value = v.config.colorscheme.rawColorscheme.colors.${config.colorscheme.mode};
|
|
||||||
# }) outputs.homeConfigurations;
|
|
||||||
rgb = color: "rgb(${lib.removePrefix "#" color})";
|
|
||||||
rgba = color: alpha: "rgba(${lib.removePrefix "#" color}${alpha})";
|
|
||||||
|
|
||||||
hyprbars =
|
|
||||||
(pkgs.hyprlandPlugins.hyprbars.override {
|
|
||||||
# Make sure it's using the same hyprland package as we are
|
|
||||||
hyprland = config.wayland.windowManager.hyprland.package;
|
|
||||||
}).overrideAttrs
|
|
||||||
(old: {
|
|
||||||
# Yeet the initialization notification (I hate it)
|
|
||||||
postPatch =
|
|
||||||
(old.postPatch or "")
|
|
||||||
+ ''
|
|
||||||
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
in {
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
plugins = [hyprbars];
|
|
||||||
settings = {
|
|
||||||
"plugin:hyprbars" = {
|
|
||||||
bar_height = 25;
|
|
||||||
# bar_color = rgba config.colorscheme.colors.surface "dd";
|
|
||||||
# "col.text" = rgb config.colorscheme.colors.primary;
|
|
||||||
# bar_text_font = config.fontProfiles.regular.name;
|
|
||||||
# bar_text_size = config.fontProfiles.regular.size;
|
|
||||||
bar_part_of_window = true;
|
|
||||||
bar_precedence_over_border = true;
|
|
||||||
hyprbars-button = let
|
|
||||||
closeAction = "hyprctl dispatch killactive";
|
|
||||||
|
|
||||||
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
|
||||||
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
|
|
||||||
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
|
|
||||||
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
|
||||||
|
|
||||||
maximizeAction = "hyprctl dispatch fullscreen 1";
|
|
||||||
in [
|
|
||||||
# Red close button
|
|
||||||
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
|
||||||
# # Yellow "minimize" (send to special workspace) button
|
|
||||||
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
|
|
||||||
# # Green "maximize" (fullscreen) button
|
|
||||||
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# windowrulev2 =
|
|
||||||
# [
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba config.colorscheme.colors.primary "ee"}, focus:1"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb config.colorscheme.colors.on_primary}, focus:1"
|
|
||||||
# ]
|
|
||||||
# ++ (lib.flatten (
|
|
||||||
# lib.mapAttrsToList (name: colors: [
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba colors.primary_container "dd"}, title:\\[${name}\\].*"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary_container}, title:\\[${name}\\].*"
|
|
||||||
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba colors.primary "ee"}, title:\\[${name}\\].*, focus:1"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary}, title:\\[${name}\\].*, focus:1"
|
|
||||||
# ]) remoteColorschemes
|
|
||||||
# ));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
programs.hyprlock.enable = true;
|
|
||||||
programs.hyprlock.settings = {
|
|
||||||
general = {
|
|
||||||
disable_loading_bar = true;
|
|
||||||
hide_cursor = true;
|
|
||||||
ignore_empty_input = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
color = "#${palette.base00}";
|
|
||||||
# path = "screenshot";
|
|
||||||
# blur_passes = 3;
|
|
||||||
# blur_size = 8;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
size = "200, 50";
|
|
||||||
position = "0, -80";
|
|
||||||
monitor = "";
|
|
||||||
dots_center = true;
|
|
||||||
fade_on_empty = false;
|
|
||||||
font_color = "#${palette.base0B}";
|
|
||||||
inner_color = "#${palette.base01}";
|
|
||||||
outer_color = "#${palette.base05}";
|
|
||||||
outline_thickness = 5;
|
|
||||||
placeholder_text = "Password...";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [libnotify];
|
|
||||||
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
|
|
||||||
backgroundColor = "#${palette.base00}";
|
|
||||||
textColor = "#${palette.base05}";
|
|
||||||
borderColor = "#${palette.base0D}";
|
|
||||||
progressColor = "over #${palette.base02}";
|
|
||||||
extraConfig = ''
|
|
||||||
[urgency=high]
|
|
||||||
border-color=#${palette.base09}
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
||||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
|
||||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
|
||||||
|
|
||||||
isLocked = "${pgrep} -x ${swaylock}";
|
|
||||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
|
||||||
|
|
||||||
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
|
||||||
afterLockTimeout = {
|
|
||||||
timeout,
|
|
||||||
command,
|
|
||||||
resumeCommand ? null,
|
|
||||||
}: [
|
|
||||||
{
|
|
||||||
timeout = lockTime + timeout;
|
|
||||||
inherit command resumeCommand;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${isLocked} && ${command}";
|
|
||||||
inherit resumeCommand timeout;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
systemdTarget = "graphical-session.target";
|
|
||||||
timeouts =
|
|
||||||
# Lock screen
|
|
||||||
[
|
|
||||||
{
|
|
||||||
timeout = lockTime;
|
|
||||||
command = "${swaylock} --daemonize --grace 15";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
++
|
|
||||||
# Turn off displays (hyprland)
|
|
||||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
|
||||||
timeout = 300;
|
|
||||||
command = "${hyprctl} dispatch dpms off";
|
|
||||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
|
||||||
}))
|
|
||||||
++
|
|
||||||
# Turn off displays (sway)
|
|
||||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
|
||||||
timeout = 300;
|
|
||||||
command = "${swaymsg} 'output * dpms off'";
|
|
||||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
color = "000000";
|
|
||||||
ignore-empty-password = true;
|
|
||||||
indicator-idle-visible = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,67 +0,0 @@
|
|||||||
#! /usr/bin/env sh
|
|
||||||
|
|
||||||
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
|
|
||||||
|
|
||||||
# Launch at startup to make hyprland disable the internal monitor if an external monitor is detected and enabled
|
|
||||||
# Additionally it's called with a keybind to switch between a laptop monitor and an external display
|
|
||||||
# Ideally the conditional monitor behaviour was instead done directly in hyprland.conf, but I'm not sure whether that's possible
|
|
||||||
#
|
|
||||||
# Relevant info:
|
|
||||||
# - hyprctl monitors: identifies currently enabled monitors
|
|
||||||
# - hyprctl monitors all: identifies ALL connected monitors - including those not in use
|
|
||||||
#
|
|
||||||
# Suggested use:
|
|
||||||
# Add this line somewhere after the regular monitor configuration in hyprland.conf:
|
|
||||||
# exec = /path/to/hyprland-monitors-toggle.sh
|
|
||||||
# Add a keybind to run this script on demand:
|
|
||||||
# bind =,SomeKeyHere, exec, /path/to/hyprland-monitors-toggle.sh
|
|
||||||
|
|
||||||
#move_all_workspaces_to_monitor() {
|
|
||||||
# TARGET_MONITOR="$1"
|
|
||||||
|
|
||||||
# hyprctl workspaces | grep ^workspace | cut --delimiter ' ' --fields 3 | xargs -I '{}' hyprctl dispatch moveworkspacetomonitor '{}' "$TARGET_MONITOR"
|
|
||||||
|
|
||||||
# # Previous approach
|
|
||||||
# #hyprctl swapactiveworkspaces $EXTERNAL_MONITOR $INTERNAL_MONITOR
|
|
||||||
#}
|
|
||||||
|
|
||||||
# TODO: Detect these instead of hardcoding them
|
|
||||||
INTERNAL_MONITOR="eDP-1"
|
|
||||||
EXTERNAL_MONITOR="HDMI-A-1"
|
|
||||||
|
|
||||||
# NUM_MONITORS=$(hyprctl monitors all | grep --count Monitor)
|
|
||||||
# NUM_MONITORS_ACTIVE=$(hyprctl monitors | grep --count Monitor)
|
|
||||||
|
|
||||||
# Make sure all
|
|
||||||
# if [ "$NUM_MONITORS_ACTIVE" -eq 1 ]; then
|
|
||||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
|
||||||
# exit
|
|
||||||
# fi
|
|
||||||
|
|
||||||
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
|
|
||||||
|
|
||||||
# # For dynamically toggling which monitor is active later via a keybind
|
|
||||||
# if [ "$NUM_MONITORS" -gt 1 ]; then # Handling multiple monitors
|
|
||||||
# if hyprctl monitors | cut --delimiter ' ' --fields 2 | grep --quiet ^$EXTERNAL_MONITOR; then
|
|
||||||
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
|
||||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
|
||||||
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable"
|
|
||||||
# else
|
|
||||||
# hyprctl keyword monitor $EXTERNAL_MONITOR,preferred,0x0,1
|
|
||||||
# move_all_workspaces_to_monitor $EXTERNAL_MONITOR
|
|
||||||
# hyprctl keyword monitor "$INTERNAL_MONITOR, disable"
|
|
||||||
# fi
|
|
||||||
# else # If the external monitor is disconnected without running this script first, it might become the case that no monitor is on - therefore turn on the laptop monitor!
|
|
||||||
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
|
||||||
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
|
||||||
# fi
|
|
||||||
|
|
||||||
echo setting:
|
|
||||||
echo $MIRROR_SETTING
|
|
||||||
if [ "$MIRROR_SETTING" = "none" ]; then
|
|
||||||
echo "mirroring..."
|
|
||||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1, mirror, $INTERNAL_MONITOR"
|
|
||||||
else
|
|
||||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
|
|
||||||
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1"
|
|
||||||
fi
|
|
@ -1,96 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "bottom",
|
|
||||||
"mode": "dock",
|
|
||||||
"exclusive": true,
|
|
||||||
"passtrough": true,
|
|
||||||
"height": 16,
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
],
|
|
||||||
|
|
||||||
"modules-center": [],
|
|
||||||
|
|
||||||
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
|
||||||
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
|
||||||
"on-scroll-down": "hyprctl dispatch workspace m-1",
|
|
||||||
"all-outputs": false,
|
|
||||||
"on-click": "activate",
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"1": "1",
|
|
||||||
"2": "2",
|
|
||||||
"3": "3",
|
|
||||||
"4": "4",
|
|
||||||
"5": "5",
|
|
||||||
"6": "6",
|
|
||||||
"7": "7",
|
|
||||||
"8": "8",
|
|
||||||
"9": "9",
|
|
||||||
"10": "10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"idle_inhibitor": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activated": "",
|
|
||||||
"deactivated": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"disk": {
|
|
||||||
"interval": 30,
|
|
||||||
"format": "Free: {percentage_free}% ({free})",
|
|
||||||
"path": "/",
|
|
||||||
"unit": "GB"
|
|
||||||
},
|
|
||||||
|
|
||||||
"cpu": {
|
|
||||||
"format": " {usage}%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"memory": {
|
|
||||||
"format": " {}%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-muted": "<big></big>",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"default": ["", "", ""]
|
|
||||||
},
|
|
||||||
"scroll-step": 5.0,
|
|
||||||
"max-volume": 200,
|
|
||||||
"on-click": "pulseaudio-popup",
|
|
||||||
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
},
|
|
||||||
|
|
||||||
"battery": {
|
|
||||||
"states": {
|
|
||||||
"warning": 30,
|
|
||||||
"critical": 15
|
|
||||||
},
|
|
||||||
"format": "{icon} {capacity}%",
|
|
||||||
"format-charging": " {capacity}%",
|
|
||||||
"format-plugged": " {capacity}%",
|
|
||||||
"format-full": "{icon} ",
|
|
||||||
"format-icons": ["", "", "", "", ""]
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock": {
|
|
||||||
"tooltip-format": "{calendar}",
|
|
||||||
"format": "{:%a %d.%m %H:%M:%S}",
|
|
||||||
"interval": 1
|
|
||||||
},
|
|
||||||
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 20,
|
|
||||||
"tooltip": false,
|
|
||||||
"spacing": 10
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
|
||||||
in {
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."waybar/style.css".source = ./style.css;
|
|
||||||
xdg.configFile."waybar/theme.css".text = ''
|
|
||||||
/*
|
|
||||||
bg - background
|
|
||||||
fg - foreground
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Main Colors */
|
|
||||||
@define-color background #${palette.base00};
|
|
||||||
@define-color foreground #${palette.base05};
|
|
||||||
|
|
||||||
/* Workspace Button Colors */
|
|
||||||
@define-color hover-bg #${palette.base01};
|
|
||||||
@define-color hover-fg #${palette.base05};
|
|
||||||
@define-color active-bg #${palette.base02};
|
|
||||||
@define-color active-fg #${palette.base0A};
|
|
||||||
@define-color urgent-bg #${palette.base08};
|
|
||||||
@define-color urgent-fg #${palette.base00};
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,94 +0,0 @@
|
|||||||
* {
|
|
||||||
/* `otf-font-awesome` is required to be installed for icons */
|
|
||||||
font-family: JetBrainsMono Nerd Font;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This imports the base16 colors */
|
|
||||||
@import "theme.css";
|
|
||||||
|
|
||||||
/* Main Background */
|
|
||||||
window#waybar { background: @background; }
|
|
||||||
|
|
||||||
/* Tooltip Styling */
|
|
||||||
tooltip {
|
|
||||||
color: @foreground;
|
|
||||||
background: @background;
|
|
||||||
border: solid;
|
|
||||||
border-width: 1.5px;
|
|
||||||
border-radius: 7px;
|
|
||||||
border-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Workspace Button */
|
|
||||||
#workspaces button {
|
|
||||||
color: @foreground;
|
|
||||||
border-radius: 5px;
|
|
||||||
box-shadow: none;
|
|
||||||
margin-top: 2px;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
padding-right: 2px;
|
|
||||||
padding-left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Opened workspaces (also on other screen) */
|
|
||||||
#workspaces button.visible{
|
|
||||||
color: @active-fg;
|
|
||||||
background: @hover-bg;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Active Workspace Button */
|
|
||||||
#workspaces button.active {
|
|
||||||
color: @active-fg;
|
|
||||||
background: @active-bg;
|
|
||||||
box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 1);
|
|
||||||
margin-right: 2px;
|
|
||||||
margin-left: 2px;
|
|
||||||
padding-right: 6px;
|
|
||||||
padding-left: 6px;
|
|
||||||
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hover Effect for Workspace Buttons */
|
|
||||||
#workspaces button.inactive:hover {
|
|
||||||
color: @hover-fg;
|
|
||||||
background: @hover-bg;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Urgent Workspace Buttons */
|
|
||||||
#workspaces button.urgent {
|
|
||||||
color: @urgent-fg;
|
|
||||||
background: @urgent-bg;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* General Module Styling */
|
|
||||||
#idle_inhibitor,
|
|
||||||
#disk,
|
|
||||||
#cpu,
|
|
||||||
#memory,
|
|
||||||
#pulseaudio,
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#tray {
|
|
||||||
color: @foreground;
|
|
||||||
padding: 0 10px;
|
|
||||||
margin-top: 0px;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
margin-right: 2px;
|
|
||||||
margin-left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #battery.warning { */
|
|
||||||
/* color: #${palette.base08}; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
/* #pulseaudio.muted { */
|
|
||||||
/* color: #${palette.base08}; */
|
|
||||||
/* padding-right: 16px; */
|
|
||||||
/* } */
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = [pkgs.waypipe];
|
|
||||||
systemd.user.services = {
|
|
||||||
waypipe-client = {
|
|
||||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
|
||||||
Service = {
|
|
||||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
|
||||||
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client";
|
|
||||||
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
waypipe-server = {
|
|
||||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
|
||||||
Service = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
|
||||||
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity";
|
|
||||||
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [wlogout];
|
|
||||||
|
|
||||||
# xdg.configFile."wlogout/style.css".text = ''
|
|
||||||
# * {
|
|
||||||
# all: unset;
|
|
||||||
# font-family: JetBrains Mono Nerd Font;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# window {
|
|
||||||
# background-color: #${palette.base00};
|
|
||||||
# }
|
|
||||||
|
|
||||||
# button {
|
|
||||||
# color: #${palette.base01};
|
|
||||||
# font-size: 64px;
|
|
||||||
# background-color: rgba(0,0,0,0);
|
|
||||||
# outline-style: none;
|
|
||||||
# margin: 5px;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# button:focus, button:active, button:hover {
|
|
||||||
# color: #${palette.base0D};
|
|
||||||
# transition: ease 0.4s;
|
|
||||||
# }
|
|
||||||
# '';
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
width=900
|
|
||||||
height=600
|
|
||||||
location=center
|
|
||||||
show=drun,run
|
|
||||||
prompt=Search...
|
|
||||||
filter_rate=100
|
|
||||||
allow_markup=true
|
|
||||||
no_actions=true
|
|
||||||
halign=fill
|
|
||||||
orientation=vertical
|
|
||||||
content_halign=fill
|
|
||||||
insensitive=true
|
|
||||||
allow_images=true
|
|
||||||
image_size=35
|
|
||||||
gtk_dark=true
|
|
@ -1,86 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit
|
|
||||||
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [wofi];
|
|
||||||
|
|
||||||
xdg.configFile."wofi/config".source = ./config;
|
|
||||||
xdg.configFile."wofi/style.css".text = ''
|
|
||||||
window {
|
|
||||||
margin: 5px;
|
|
||||||
border: 5px solid #181926;
|
|
||||||
background-color: #${palette.base00};
|
|
||||||
border-radius: 15px;
|
|
||||||
font-family: "JetBrainsMono";
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
all: unset;
|
|
||||||
min-height: 36px;
|
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 4px;
|
|
||||||
border: none;
|
|
||||||
color: #${palette.base05};
|
|
||||||
font-weight: bold;
|
|
||||||
background-color: #${palette.base01};
|
|
||||||
outline: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin: 10px;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
margin: 4px;
|
|
||||||
padding: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 3px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
border: 5px solid #${palette.base01};
|
|
||||||
}
|
|
||||||
|
|
||||||
#scroll {
|
|
||||||
margin-top: 5px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text:selected {
|
|
||||||
color: #${palette.base01};
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry {
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
background: #${palette.base0D};
|
|
||||||
background-size: 400% 400%;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
{config, ...}: let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
programs.zathura = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
selection-clipboard = "clipboard";
|
|
||||||
# TODO fix
|
|
||||||
# font = "${config.fontProfiles.regular.name} ${toString config.fontProfiles.regular.size}";
|
|
||||||
# recolor = true;
|
|
||||||
# default-bg = "${colors.surface}";
|
|
||||||
# default-fg = "${colors.surface_bright}";
|
|
||||||
# statusbar-bg = "${colors.surface_container}";
|
|
||||||
# statusbar-fg = "${colors.on_surface_variant}";
|
|
||||||
# inputbar-bg = "${colors.surface}";
|
|
||||||
# inputbar-fg = "${colors.on_secondary}";
|
|
||||||
# notification-bg = "${colors.surface}";
|
|
||||||
# notification-fg = "${colors.on_secondary}";
|
|
||||||
# notification-error-bg = "${colors.error}";
|
|
||||||
# notification-error-fg = "${colors.on_error}";
|
|
||||||
# notification-warning-bg = "${colors.error}";
|
|
||||||
# notification-warning-fg = "${colors.on_error}";
|
|
||||||
# highlight-color = "${colors.tertiary}";
|
|
||||||
# highlight-active-color = "${colors.secondary}";
|
|
||||||
# completion-bg = "${colors.surface_bright}";
|
|
||||||
# completion-fg = "${colors.on_surface}";
|
|
||||||
# completions-highlight-bg = "${colors.secondary}";
|
|
||||||
# completions-highlight-fg = "${colors.on_secondary}";
|
|
||||||
# recolor-lightcolor = "${colors.surface}";
|
|
||||||
# recolor-darkcolor = "${colors.inverse_surface}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [../rofi];
|
|
||||||
|
|
||||||
services.dunst.enable = true;
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
i3status-rust = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nitrogen
|
|
||||||
xfce.xfce4-screenshooter
|
|
||||||
pulseaudio # For pactl commands
|
|
||||||
];
|
|
||||||
xsession.enable = true; # Give gui programs access to sessionVariables
|
|
||||||
# Prevent screen from going blank (check these settings with `xset q`)
|
|
||||||
# And disable bell sound (b)
|
|
||||||
xsession.initExtra = ''
|
|
||||||
${pkgs.xorg.xset}/bin/xset s off
|
|
||||||
${pkgs.xorg.xset}/bin/xset -dpms
|
|
||||||
${pkgs.xorg.xset}/bin/xset b off
|
|
||||||
'';
|
|
||||||
xsession.windowManager.i3 = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.i3-gaps;
|
|
||||||
};
|
|
||||||
|
|
||||||
xsession.importedVariables = [];
|
|
||||||
|
|
||||||
# Overwrite default home-manager config file
|
|
||||||
xdg.configFile."i3/config".source = lib.mkForce (
|
|
||||||
if config.hostName == "kardorf"
|
|
||||||
then ./i3/config-kardorf
|
|
||||||
else ./i3/config
|
|
||||||
);
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/i3/scripts" = {
|
|
||||||
source = ./i3/scripts;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
".config/i3/workspace-messaging.json".source = ./i3/workspace-chat-element-tele.json;
|
|
||||||
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionPath = ["/home/julian/.config/i3/scripts"];
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
scrot_dir=~/Pictures/screenshots
|
|
@ -1,314 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
set $scripts /home/julian/.config/i3/scripts
|
|
||||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
|
||||||
|
|
||||||
# Font for window titles
|
|
||||||
font pango:FuraCode Nerd Font 12
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
# exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
|
||||||
|
|
||||||
# Screen brightness controls
|
|
||||||
bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
|
|
||||||
bindsym XF86MonBrightnessDown exec "brightnessctl set 5%-"
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec $TERMINAL
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
bindsym $mod+x kill
|
|
||||||
|
|
||||||
# Simulates alt+f4
|
|
||||||
bindsym Mod1+F4 kill
|
|
||||||
|
|
||||||
# start program launcher
|
|
||||||
bindsym $mod+d exec rofi -show run
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+h focus left
|
|
||||||
bindsym $mod+j focus down
|
|
||||||
bindsym $mod+k focus up
|
|
||||||
bindsym $mod+l focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal / vertical orientation
|
|
||||||
bindsym $mod+Shift+v split h
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
# bindsym $mod+Shift+w layout stacking
|
|
||||||
# bindsym $mod+w layout tabbed
|
|
||||||
# bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# The middle button over a titlebar kills the window
|
|
||||||
bindsym --release button2 kill
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace and follow
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
|
||||||
|
|
||||||
# Monitor config
|
|
||||||
set $monitor_left "HDMI-1"
|
|
||||||
set $monitor_right "eDP-1"
|
|
||||||
|
|
||||||
workspace $ws1 output $monitor_left
|
|
||||||
workspace $ws2 output $monitor_left
|
|
||||||
workspace $ws3 output $monitor_left
|
|
||||||
workspace $ws4 output $monitor_left
|
|
||||||
workspace $ws5 output $monitor_left
|
|
||||||
workspace $ws6 output $monitor_right
|
|
||||||
workspace $ws7 output $monitor_right
|
|
||||||
workspace $ws8 output $monitor_right
|
|
||||||
workspace $ws9 output $monitor_right
|
|
||||||
workspace $ws10 output $monitor_right
|
|
||||||
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym h resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym j resize grow height 10 px or 10 ppt
|
|
||||||
bindsym k resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym l resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
bar {
|
|
||||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
|
||||||
status_command i3status-rs
|
|
||||||
position bottom
|
|
||||||
|
|
||||||
tray_output eDP-1
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
|
||||||
mode "$mode_system" {
|
|
||||||
bindsym l exec --no-startup-id $lock, mode "default"
|
|
||||||
# logout
|
|
||||||
bindsym e exec --no-startup-id i3-msg exit, mode "default"
|
|
||||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
|
||||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
|
||||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
|
||||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
}
|
|
||||||
bindsym $mod+Shift+e mode "$mode_system"
|
|
||||||
|
|
||||||
bindsym $mod+Tab exec --no-startup-id $lock
|
|
||||||
|
|
||||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
|
||||||
|
|
||||||
bindsym $mod+c exec qalculate-gtk
|
|
||||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
|
||||||
bindsym $mod+e exec pcmanfm
|
|
||||||
bindsym $mod+b exec firefox
|
|
||||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
|
||||||
|
|
||||||
workspace_auto_back_and_forth yes
|
|
||||||
|
|
||||||
# default_border pixel
|
|
||||||
default_border normal
|
|
||||||
default_floating_border normal
|
|
||||||
hide_edge_borders smart
|
|
||||||
|
|
||||||
show_marks no
|
|
||||||
|
|
||||||
# switch to workspace with urgent window automatically
|
|
||||||
for_window [urgent=latest] focus
|
|
||||||
|
|
||||||
focus_on_window_activation focus
|
|
||||||
|
|
||||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
|
||||||
assign [class="TelegramDesktop"] workspace $ws9
|
|
||||||
assign [class="Signal"] workspace $ws9
|
|
||||||
assign [class="Rocket.Chat"] workspace $ws9
|
|
||||||
assign [class="Element"] workspace $ws9
|
|
||||||
assign [class="SchildiChat"] workspace $ws9
|
|
||||||
assign [class="nheko"] workspace $ws9
|
|
||||||
assign [class="thunderbird"] workspace $ws10
|
|
||||||
# assign [class="zoom"] workspace $ws5
|
|
||||||
assign [class="Zotero"] workspace $ws8
|
|
||||||
|
|
||||||
for_window [class="firefox" urgent="latest"] focus
|
|
||||||
|
|
||||||
for_window [title="Manjaro Settings Manager"] floating enable
|
|
||||||
for_window [class="pamac-manager"] floating enable
|
|
||||||
for_window [class="Pamac-updater"] floating enable
|
|
||||||
for_window [class="Qalculate-gtk"] floating enable
|
|
||||||
for_window [class="Gcolor3"] floating enable
|
|
||||||
#for_window [class="zoom" title="Chat"] floating enable
|
|
||||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
|
||||||
#
|
|
||||||
for_window [window_role=floating] floating enable
|
|
||||||
|
|
||||||
for_window [class="Viewnior"] border normal
|
|
||||||
|
|
||||||
########## Autostart applications ##########
|
|
||||||
exec firefox
|
|
||||||
|
|
||||||
# exec --no-startup-id nm-applet
|
|
||||||
# exec --no-startup-id blueman-applet
|
|
||||||
# exec --no-startup-id nextcloud --background
|
|
||||||
# exec --no-startup-id xfce4-screensaver
|
|
||||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
|
||||||
|
|
||||||
# Authentication agent
|
|
||||||
# exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
# exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
|
||||||
|
|
||||||
# Notify about software updates
|
|
||||||
# exec --no-startup-id pamac-tray
|
|
||||||
# exec --no-startup-id clipit
|
|
||||||
# exec --no-startup-id xfce4-clipman
|
|
||||||
|
|
||||||
# Notify about kernel updates
|
|
||||||
# exec --no-startup-id msm_notifier
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
# exec --no-startup-id start-pulseaudio-x11
|
|
||||||
# exec --no-startup-id pa-applet
|
|
||||||
|
|
||||||
# Background
|
|
||||||
exec --no-startup-id nitrogen --restore
|
|
||||||
|
|
||||||
# Adjust display temperature
|
|
||||||
# exec --no-startup-id redshift
|
|
||||||
|
|
||||||
# Notifications
|
|
||||||
# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
|
||||||
|
|
||||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
|
||||||
# exec_always --no-startup-id ff-theme-util
|
|
||||||
# exec_always --no-startup-id fix_xcursor
|
|
||||||
|
|
||||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
|
||||||
|
|
||||||
|
|
||||||
#############################
|
|
||||||
### settings for i3-gaps: ###
|
|
||||||
#############################
|
|
||||||
|
|
||||||
# Set inner/outer gaps
|
|
||||||
gaps inner 8
|
|
||||||
gaps outer -2
|
|
||||||
|
|
||||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
|
||||||
smart_gaps on
|
|
||||||
|
|
||||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
|
||||||
smart_borders on
|
|
@ -1,314 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
set $scripts ~/.config/i3/scripts
|
|
||||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
|
||||||
|
|
||||||
# Font for window titles
|
|
||||||
font pango:FuraCode Nerd Font 12
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
|
||||||
|
|
||||||
# Screen brightness controls
|
|
||||||
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
|
|
||||||
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec kitty
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
bindsym $mod+x kill
|
|
||||||
|
|
||||||
# Simulates alt+f4
|
|
||||||
bindsym Mod1+F4 kill
|
|
||||||
|
|
||||||
# start program launcher
|
|
||||||
bindsym $mod+d exec rofi -show run
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+h focus left
|
|
||||||
bindsym $mod+j focus down
|
|
||||||
bindsym $mod+k focus up
|
|
||||||
bindsym $mod+l focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal / vertical orientation
|
|
||||||
bindsym $mod+Shift+v split h
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
# bindsym $mod+Shift+w layout stacking
|
|
||||||
# bindsym $mod+w layout tabbed
|
|
||||||
# bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# The middle button over a titlebar kills the window
|
|
||||||
bindsym --release button2 kill
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace and follow
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
|
||||||
|
|
||||||
# Monitor config
|
|
||||||
set $monitor_left "DVI-D-1"
|
|
||||||
set $monitor_right "DVI-D-2"
|
|
||||||
|
|
||||||
workspace $ws1 output $monitor_left
|
|
||||||
workspace $ws2 output $monitor_left
|
|
||||||
workspace $ws3 output $monitor_left
|
|
||||||
workspace $ws4 output $monitor_left
|
|
||||||
workspace $ws5 output $monitor_left
|
|
||||||
workspace $ws6 output $monitor_right
|
|
||||||
workspace $ws7 output $monitor_right
|
|
||||||
workspace $ws8 output $monitor_right
|
|
||||||
workspace $ws9 output $monitor_right
|
|
||||||
workspace $ws10 output $monitor_right
|
|
||||||
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym h resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym j resize grow height 10 px or 10 ppt
|
|
||||||
bindsym k resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym l resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
bar {
|
|
||||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
|
||||||
status_command i3status-rs
|
|
||||||
position bottom
|
|
||||||
|
|
||||||
tray_output DVI-D-0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
|
||||||
mode "$mode_system" {
|
|
||||||
bindsym l exec --no-startup-id $lock, mode "default"
|
|
||||||
bindsym e exec --no-startup-id i3-msg exit, mode "default" # logout
|
|
||||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
|
||||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
|
||||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
|
||||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
}
|
|
||||||
bindsym $mod+Shift+e mode "$mode_system"
|
|
||||||
|
|
||||||
bindsym $mod+Tab exec --no-startup-id $lock
|
|
||||||
|
|
||||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
|
||||||
|
|
||||||
bindsym $mod+c exec qalculate-gtk
|
|
||||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
|
||||||
bindsym $mod+e exec pcmanfm
|
|
||||||
bindsym $mod+Shift+c exec $scripts/jupyter-calculator
|
|
||||||
bindsym $mod+b exec firefox
|
|
||||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
|
||||||
|
|
||||||
workspace_auto_back_and_forth yes
|
|
||||||
|
|
||||||
# default_border pixel
|
|
||||||
default_border normal
|
|
||||||
default_floating_border normal
|
|
||||||
hide_edge_borders smart
|
|
||||||
|
|
||||||
show_marks no
|
|
||||||
|
|
||||||
# switch to workspace with urgent window automatically
|
|
||||||
for_window [urgent=latest] focus
|
|
||||||
|
|
||||||
focus_on_window_activation focus
|
|
||||||
|
|
||||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
|
||||||
assign [class="TelegramDesktop"] workspace $ws9
|
|
||||||
assign [class="Signal"] workspace $ws9
|
|
||||||
assign [class="Rocket.Chat"] workspace $ws9
|
|
||||||
assign [class="Element"] workspace $ws9
|
|
||||||
assign [class="SchildiChat"] workspace $ws9
|
|
||||||
assign [class="thunderbird"] workspace $ws10
|
|
||||||
# assign [class="zoom"] workspace $ws5
|
|
||||||
assign [class="Zotero"] workspace $ws8
|
|
||||||
|
|
||||||
for_window [class="firefox" urgent="latest"] focus
|
|
||||||
|
|
||||||
for_window [title="Manjaro Settings Manager"] floating enable
|
|
||||||
for_window [class="pamac-manager"] floating enable
|
|
||||||
for_window [class="Pamac-updater"] floating enable
|
|
||||||
for_window [class="Qalculate-gtk"] floating enable
|
|
||||||
for_window [class="Gcolor3"] floating enable
|
|
||||||
#for_window [class="zoom" title="Chat"] floating enable
|
|
||||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
|
||||||
#
|
|
||||||
for_window [window_role=floating] floating enable
|
|
||||||
|
|
||||||
for_window [class="Viewnior"] border normal
|
|
||||||
|
|
||||||
########## Autostart applications ##########
|
|
||||||
exec firefox
|
|
||||||
|
|
||||||
exec --no-startup-id nm-applet
|
|
||||||
exec --no-startup-id blueman-applet
|
|
||||||
exec --no-startup-id xfce4-power-manager
|
|
||||||
exec --no-startup-id nextcloud --background
|
|
||||||
# exec --no-startup-id xfce4-screensaver
|
|
||||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
|
||||||
|
|
||||||
# Authentication agent
|
|
||||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
|
||||||
|
|
||||||
# Notify about software updates
|
|
||||||
exec --no-startup-id pamac-tray
|
|
||||||
exec --no-startup-id clipit
|
|
||||||
# exec --no-startup-id xfce4-clipman
|
|
||||||
|
|
||||||
# Notify about kernel updates
|
|
||||||
exec --no-startup-id msm_notifier
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
exec --no-startup-id start-pulseaudio-x11
|
|
||||||
exec --no-startup-id pa-applet
|
|
||||||
|
|
||||||
# Background
|
|
||||||
exec --no-startup-id nitrogen --restore
|
|
||||||
|
|
||||||
# Adjust display temperature
|
|
||||||
exec --no-startup-id redshift
|
|
||||||
|
|
||||||
# Notifications
|
|
||||||
exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
|
||||||
|
|
||||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
|
||||||
exec_always --no-startup-id ff-theme-util
|
|
||||||
exec_always --no-startup-id fix_xcursor
|
|
||||||
|
|
||||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
|
||||||
|
|
||||||
|
|
||||||
#############################
|
|
||||||
### settings for i3-gaps: ###
|
|
||||||
#############################
|
|
||||||
|
|
||||||
# Set inner/outer gaps
|
|
||||||
gaps inner 8
|
|
||||||
gaps outer -2
|
|
||||||
|
|
||||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
|
||||||
smart_gaps on
|
|
||||||
|
|
||||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
|
||||||
smart_borders on
|
|
@ -1,11 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
xrandr | grep -q "HDMI-1 connected"
|
|
||||||
|
|
||||||
if [ "$?" -eq "0" ]; then
|
|
||||||
echo "Two screens available"
|
|
||||||
~/.screenlayout/twoscreens.sh
|
|
||||||
else
|
|
||||||
echo "Only one screen available"
|
|
||||||
~/.screenlayout/onescreen.sh
|
|
||||||
fi
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
xrandr | grep -q "HDMI-1 connected"
|
|
||||||
|
|
||||||
if [ "$?" -eq "0" ]; then
|
|
||||||
echo "Two screens available"
|
|
||||||
|
|
||||||
MIRROR_FILE=~/.screenlayout/mirror-primary
|
|
||||||
if [ -e "$MIRROR_FILE" ]; then
|
|
||||||
echo "Mode set to mirror"
|
|
||||||
rm "$MIRROR_FILE"
|
|
||||||
~/.screenlayout/twoscreens-mirror.sh
|
|
||||||
else
|
|
||||||
echo "Mode set to left-right"
|
|
||||||
touch "$MIRROR_FILE"
|
|
||||||
~/.screenlayout/twoscreens.sh
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Only one screen available"
|
|
||||||
~/.screenlayout/onescreen.sh
|
|
||||||
fi
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
matlab -desktop -sd ~/dev/bachelor-thesis/simulation
|
|
@ -1,45 +0,0 @@
|
|||||||
// vim:ts=4:sw=4:et
|
|
||||||
{
|
|
||||||
"border": "normal",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 996,
|
|
||||||
"width": 937,
|
|
||||||
"x": 1934,
|
|
||||||
"y": 40
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "nheko",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^nheko$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"border": "none",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1026,
|
|
||||||
"width": 941,
|
|
||||||
"x": 2887,
|
|
||||||
"y": 12
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Telegram",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^TelegramDesktop$"
|
|
||||||
// "instance": "^telegram\\-desktop$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^Telegram\\ \\(71\\)$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
@ -1,96 +0,0 @@
|
|||||||
// vim:ts=4:sw=4:et
|
|
||||||
{
|
|
||||||
"border": "normal",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 996,
|
|
||||||
"width": 937,
|
|
||||||
"x": 1934,
|
|
||||||
"y": 40
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "SchildiChat",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^SchildiChat$"
|
|
||||||
// "instance": "^schildichat$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^SchildiChat\\ \\*\\ \\|\\ Familie$",
|
|
||||||
// "window_role": "^browser\\-window$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
// splitv split container with 2 children
|
|
||||||
"border": "normal",
|
|
||||||
"floating": "auto_off",
|
|
||||||
"layout": "splitv",
|
|
||||||
"marks": [],
|
|
||||||
"percent": 0.5,
|
|
||||||
"type": "con",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
// splith split container with 1 children
|
|
||||||
"border": "normal",
|
|
||||||
"floating": "auto_off",
|
|
||||||
"layout": "splith",
|
|
||||||
"marks": [],
|
|
||||||
"percent": 0.5,
|
|
||||||
"type": "con",
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"border": "none",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1026,
|
|
||||||
"width": 941,
|
|
||||||
"x": 2887,
|
|
||||||
"y": 12
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Telegram",
|
|
||||||
"percent": 1,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^TelegramDesktop$"
|
|
||||||
// "instance": "^telegram\\-desktop$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^Telegram$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"border": "normal",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 485,
|
|
||||||
"width": 1904,
|
|
||||||
"x": 1928,
|
|
||||||
"y": 557
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "RocketChat",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^Rocket\\.Chat$"
|
|
||||||
// "instance": "^rocket\\.chat$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^ifiChat$",
|
|
||||||
// "window_role": "^browser\\-window$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
|||||||
// vim:ts=4:sw=4:et
|
|
||||||
{
|
|
||||||
"border": "normal",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 996,
|
|
||||||
"width": 937,
|
|
||||||
"x": 1934,
|
|
||||||
"y": 40
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "SchildiChat",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^SchildiChat$"
|
|
||||||
// "instance": "^schildichat$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^SchildiChat$",
|
|
||||||
// "window_role": "^browser\\-window$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"border": "none",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1026,
|
|
||||||
"width": 941,
|
|
||||||
"x": 2887,
|
|
||||||
"y": 12
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Telegram",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^TelegramDesktop$"
|
|
||||||
// "instance": "^telegram\\-desktop$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^Telegram\\ \\(71\\)$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
[theme]
|
|
||||||
theme = "dracula"
|
|
||||||
|
|
||||||
[icons]
|
|
||||||
icons = "awesome4"
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "disk_space"
|
|
||||||
path = "~"
|
|
||||||
format = " $icon $available ($percentage) frei "
|
|
||||||
info_type = "available"
|
|
||||||
alert_unit = "GB"
|
|
||||||
interval = 20
|
|
||||||
warning = 20.0
|
|
||||||
alert = 10.0
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "memory"
|
|
||||||
format = " $icon $mem_used_percents "
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "cpu"
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "net"
|
|
||||||
# device = "enp1s0"
|
|
||||||
#format = " $icon $speed_down;K*b $speed_up;K*b"
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "sound"
|
|
||||||
[[block.click]]
|
|
||||||
button = "left"
|
|
||||||
cmd = "pulseaudio-popup"
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "battery"
|
|
||||||
interval = 10
|
|
||||||
format = " $icon $percentage ($time) "
|
|
||||||
not_charging_format = " $icon $percentage "
|
|
||||||
if_command = "test -e /sys/class/power_supply/BAT1"
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "time"
|
|
||||||
interval = 1
|
|
||||||
format = " $icon $timestamp.datetime(f:'%a %d.%m %H:%M:%S') "
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
shellIntegration.enableFishIntegration = true;
|
|
||||||
themeFile = "gruvbox-dark";
|
|
||||||
settings = {
|
|
||||||
enable_audio_bell = false;
|
|
||||||
confirm_os_window_close = 0; # no ask on quit
|
|
||||||
};
|
|
||||||
font = {
|
|
||||||
package = pkgs.dejavu_fonts;
|
|
||||||
name = "DejaVu Sans";
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# home.shellAliases = {
|
|
||||||
# ssh = "kitten ssh"; # Copy kitten terminfo to remote
|
|
||||||
# };
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "kitty") "kitty";
|
|
||||||
}
|
|
@ -1,158 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [inputs.nixvim.homeManagerModules.nixvim];
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
VISUAL = "nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
git
|
|
||||||
gnumake
|
|
||||||
gcc
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
stylua
|
|
||||||
black
|
|
||||||
nixfmt-rfc-style # nixfmt
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.nixvim = {
|
|
||||||
enable = true;
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
|
|
||||||
colorschemes.catppuccin = {
|
|
||||||
enable = true;
|
|
||||||
settings.flavour = "mocha";
|
|
||||||
};
|
|
||||||
|
|
||||||
globals.mapleader = " ";
|
|
||||||
opts = {
|
|
||||||
number = false;
|
|
||||||
relativenumber = false;
|
|
||||||
};
|
|
||||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope live_grep<cr>";
|
|
||||||
key = "<leader>/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope find_files<cr>";
|
|
||||||
key = "<leader><space>";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope file_browser<cr>";
|
|
||||||
key = "<leader>.";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Neogit<cr>";
|
|
||||||
key = "<leader>gg";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-s>";
|
|
||||||
action = "<esc><cmd>lua require('conform').format()<cr><cmd>write<cr>";
|
|
||||||
mode = [
|
|
||||||
"i"
|
|
||||||
"x"
|
|
||||||
"n"
|
|
||||||
"s"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
lualine.enable = true;
|
|
||||||
commentary.enable = true;
|
|
||||||
which-key.enable = true;
|
|
||||||
treesitter.enable = true; # enables all grammar packages
|
|
||||||
neogit.enable = true; # like magit
|
|
||||||
trouble.enable = true;
|
|
||||||
web-devicons.enable = true;
|
|
||||||
|
|
||||||
# Shows file trees
|
|
||||||
oil = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
view_options.show_hidden = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Code formatting
|
|
||||||
conform-nvim = {
|
|
||||||
enable = true;
|
|
||||||
settings.formatters_by_ft = with pkgs; {
|
|
||||||
lua = ["stylua"];
|
|
||||||
python = ["black"];
|
|
||||||
nix = ["nixfmt"];
|
|
||||||
};
|
|
||||||
# extraOptions = {
|
|
||||||
# default_format_opts.lsp_format = "fallback";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
# autocomplete
|
|
||||||
cmp = {
|
|
||||||
enable = true;
|
|
||||||
autoEnableSources = true;
|
|
||||||
settings.sources = [
|
|
||||||
{name = "nvim_lsp";}
|
|
||||||
{name = "path";}
|
|
||||||
{name = "buffer";}
|
|
||||||
];
|
|
||||||
settings.mapping = {
|
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
|
||||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
|
||||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-e>" = "cmp.mapping.abort()";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Fuzzy finder
|
|
||||||
telescope = {
|
|
||||||
enable = true;
|
|
||||||
settings.defaults.mappings = {
|
|
||||||
i = {
|
|
||||||
"<C-j>".__raw = "require('telescope.actions').move_selection_next";
|
|
||||||
"<C-k>".__raw = "require('telescope.actions').move_selection_previous";
|
|
||||||
"<tab>".__raw = "require('telescope.actions').select_default";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extensions = {
|
|
||||||
fzf-native.enable = true;
|
|
||||||
file-browser = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
hidden = true; # show hidden files
|
|
||||||
follow_symlinks = true;
|
|
||||||
no_ignore = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
enable = true;
|
|
||||||
servers = {
|
|
||||||
rust_analyzer = {
|
|
||||||
enable = true;
|
|
||||||
installCargo = true;
|
|
||||||
installRustc = true;
|
|
||||||
};
|
|
||||||
nixd.enable = true;
|
|
||||||
pyright.enable = true;
|
|
||||||
dockerls.enable = true;
|
|
||||||
lua_ls.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.sessionVariables = {
|
|
||||||
NH_FLAKE = "/home/julian/.dotfiles";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
"os" = "nh os switch";
|
|
||||||
"hs" = "nh home switch";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [nh];
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# this would need you to config rofi using home-manager
|
|
||||||
# programs.rofi = { enable = true; };
|
|
||||||
|
|
||||||
home.packages = with pkgs; [rofi];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/rofi/config.rasi".source = ./config.rasi;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
bat
|
|
||||||
du-dust # Like du tree but better
|
|
||||||
fd # better find
|
|
||||||
fdupes # find and delete duplicate files
|
|
||||||
ffmpeg
|
|
||||||
findutils # locate
|
|
||||||
fzf # Fuzzy finder
|
|
||||||
ghostscript # needed for imagemagick with pdfs
|
|
||||||
imagemagick
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
htop
|
|
||||||
jq # Command line JSON processor
|
|
||||||
killall
|
|
||||||
languagetool # Grammar checker
|
|
||||||
lazygit # Git client
|
|
||||||
links2 # Tui web-browser
|
|
||||||
lnav # log analyzing tool
|
|
||||||
mc # Tui file browser
|
|
||||||
# nix-index
|
|
||||||
nmap
|
|
||||||
p7zip # unzip 7zip archives
|
|
||||||
parted
|
|
||||||
pciutils # lspci
|
|
||||||
poppler_utils # Pdf utils including pdfimages
|
|
||||||
libqalculate # Nice tui calculator (qalc)
|
|
||||||
ripgrep # better grep
|
|
||||||
rnr # renaming tool
|
|
||||||
sage # Maths notebooks
|
|
||||||
tealdeer # tldr
|
|
||||||
topgrade # System update
|
|
||||||
tree
|
|
||||||
unetbootin # TODO
|
|
||||||
unixtools.procps # TODO
|
|
||||||
unzip
|
|
||||||
usbutils # lsusb
|
|
||||||
wget
|
|
||||||
wireguard-tools # wg-quick
|
|
||||||
xorg.xkill
|
|
||||||
zip
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.edit-config
|
|
||||||
frajul.lntocp
|
|
||||||
frajul.sos
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
imports = [../../gtk];
|
|
||||||
|
|
||||||
services.blueman-applet.enable = true;
|
|
||||||
services.nextcloud-client.enable = true;
|
|
||||||
services.nextcloud-client.startInBackground = true;
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
services.syncthing.tray.enable = true;
|
|
||||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
|
||||||
|
|
||||||
programs.chromium = {
|
|
||||||
enable = true;
|
|
||||||
extensions = [
|
|
||||||
# Tampermonkey
|
|
||||||
{id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
arandr
|
|
||||||
calibre # ebook manager and viewer
|
|
||||||
# digikam
|
|
||||||
discord
|
|
||||||
# dvdisaster
|
|
||||||
# element-desktop
|
|
||||||
# rocketchat-desktop
|
|
||||||
thunderbird
|
|
||||||
tdesktop # telegram
|
|
||||||
# schildichat-desktop # not updated regularly
|
|
||||||
nheko
|
|
||||||
evince # Simple pdf reader, good for focusing on document content
|
|
||||||
firefox
|
|
||||||
# geogebra
|
|
||||||
cheese
|
|
||||||
handbrake
|
|
||||||
kitty # Terminal
|
|
||||||
libnotify
|
|
||||||
libreoffice
|
|
||||||
mate.engrampa
|
|
||||||
nomacs # Image viewer
|
|
||||||
kdePackages.okular # Pdf reader with many features, good for commenting documents
|
|
||||||
pavucontrol
|
|
||||||
pdfsam-basic # Split, merge, etc for pdfs
|
|
||||||
qalculate-gtk # Nice gui calculator
|
|
||||||
qpdfview
|
|
||||||
# qutebrowser
|
|
||||||
# realvnc-vnc-viewer
|
|
||||||
rpi-imager # make isos
|
|
||||||
# rustdesk
|
|
||||||
tor-browser
|
|
||||||
unstable.path-of-building # Path of Building
|
|
||||||
# frajul.pob-dev-version # Path of Building
|
|
||||||
vlc
|
|
||||||
wineWowPackages.stable # 32-bit and 64-bit wine
|
|
||||||
winetricks
|
|
||||||
xclip # x11 clipboard access from terminal
|
|
||||||
xfce.mousepad # simple text editor
|
|
||||||
xournalpp # Edit pdf files
|
|
||||||
zoom-us # Video conferencing
|
|
||||||
zotero # Manage papers and other sources
|
|
||||||
pdfpc # Present slides in pdf form
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.open-messaging
|
|
||||||
frajul.xwacomcalibrate
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,85 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
watchexec # Run command when any file in current dir changes
|
|
||||||
android-tools # adb
|
|
||||||
# shellcheck # Check bash scripts for common errors
|
|
||||||
sqlite
|
|
||||||
scrcpy # Mirror android screen to pc
|
|
||||||
cargo
|
|
||||||
clippy
|
|
||||||
cntr # nix debugger
|
|
||||||
conda
|
|
||||||
micromamba # a better, faster conda
|
|
||||||
devcontainer # development container
|
|
||||||
devenv # devbox alternative
|
|
||||||
dbeaver-bin
|
|
||||||
devbox # dev environments using nix
|
|
||||||
distrobox # run commands inside docker containers
|
|
||||||
gcc
|
|
||||||
gradle
|
|
||||||
hexedit
|
|
||||||
unstable.zed-editor
|
|
||||||
jdk
|
|
||||||
julia-bin
|
|
||||||
(texlive.combine {
|
|
||||||
# for rendering latex in inkscape
|
|
||||||
inherit
|
|
||||||
(texlive)
|
|
||||||
scheme-medium
|
|
||||||
standalone
|
|
||||||
amsmath
|
|
||||||
preview
|
|
||||||
# needed for org mode export
|
|
||||||
wrapfig
|
|
||||||
capt-of
|
|
||||||
biblatex
|
|
||||||
;
|
|
||||||
})
|
|
||||||
matlab # Using nix-matlab overlay defined in flake
|
|
||||||
maven
|
|
||||||
nodejs
|
|
||||||
pkg-config # Often needed to build something
|
|
||||||
# pwndbg # improved gdb (debugger)
|
|
||||||
python3
|
|
||||||
rust-analyzer
|
|
||||||
rustc
|
|
||||||
rustfmt
|
|
||||||
# (pkgs.inkscape-with-extensions.override {
|
|
||||||
# inkscapeExtensions = [ pkgs.inkscape-extensions.textext ];
|
|
||||||
# })
|
|
||||||
# inkscape-with-extensions
|
|
||||||
# inkscape-extensions.textext
|
|
||||||
inkscape
|
|
||||||
gcolor3 # Color picker
|
|
||||||
gimp
|
|
||||||
drawio
|
|
||||||
audacity
|
|
||||||
|
|
||||||
deploy-rs
|
|
||||||
sops
|
|
||||||
pandoc # markdown preview
|
|
||||||
docker-compose
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.deploy-to-pianopi
|
|
||||||
frajul.rtklib
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
|
||||||
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-paper" ''
|
|
||||||
matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "matlab-robotik" ''
|
|
||||||
matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "matlab-gram" ''
|
|
||||||
export GTK_PATH=/usr/lib/gtk-3.0
|
|
||||||
nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "expenses-tracker" ''
|
|
||||||
java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
programs.topgrade = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
misc.no_self_update = true;
|
|
||||||
misc.pre_sudo = true; # Cache sudo password for 5 more minutes
|
|
||||||
misc.assume_yes = true;
|
|
||||||
misc.no_retry = true;
|
|
||||||
|
|
||||||
# pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
|
|
||||||
|
|
||||||
linux.nix_arguments = "--flake /home/julian/.dotfiles";
|
|
||||||
linux.home_manager_arguments = [
|
|
||||||
"--flake"
|
|
||||||
"/home/julian/.dotfiles"
|
|
||||||
];
|
|
||||||
|
|
||||||
git = {
|
|
||||||
# Additional git repositories to pull
|
|
||||||
repos = [
|
|
||||||
"~/.dotfiles"
|
|
||||||
"~/dev/*"
|
|
||||||
"~/.config/doom"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.wezterm = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
local wezterm = require 'wezterm'
|
|
||||||
local config = {}
|
|
||||||
|
|
||||||
config.color_scheme = 'Catppuccin Mocha'
|
|
||||||
-- config.font = wezterm.font 'JetBrains Mono'
|
|
||||||
-- config.font_size = 12.0
|
|
||||||
config.hide_tab_bar_if_only_one_tab = true
|
|
||||||
config.audible_bell = 'Disabled'
|
|
||||||
config.enable_wayland = false -- Somehow only works for wayland if this is set to false
|
|
||||||
|
|
||||||
config.window_close_confirmation = 'NeverPrompt'
|
|
||||||
|
|
||||||
return config
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "wezterm") "wezterm-start-here";
|
|
||||||
|
|
||||||
# Otherwise wezterm does not start in directory of parent process
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "wezterm-start-here" ''
|
|
||||||
wezterm start --cwd "$PWD"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.zoxide.enable = true;
|
|
||||||
programs.zoxide.enableFishIntegration = true;
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
exiftool
|
|
||||||
unar # extract archives
|
|
||||||
xdragon # dragndrop
|
|
||||||
poppler_utils # pdf preview
|
|
||||||
fd
|
|
||||||
ripgrep
|
|
||||||
fzf
|
|
||||||
jq # json preview
|
|
||||||
ffmpegthumbnailer
|
|
||||||
xclip
|
|
||||||
];
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
y = "yy"; # Yazi shell wrapper (cd on quit)
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.enable = true;
|
|
||||||
programs.yazi.enableFishIntegration = true;
|
|
||||||
programs.yazi.settings.manager = {
|
|
||||||
sort_by = "mtime";
|
|
||||||
sort_reverse = true;
|
|
||||||
show_hidden = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.keymap = {
|
|
||||||
manager.prepend_keymap = [
|
|
||||||
# Override defaults
|
|
||||||
{
|
|
||||||
on = ["e"];
|
|
||||||
run = ''shell --orphan --confirm "pcmanfm &"'';
|
|
||||||
desc = "Open gui file manager";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["<C-o>"];
|
|
||||||
run = ''shell "$SHELL" --block --confirm'';
|
|
||||||
desc = "Open shell here";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["<C-n>"];
|
|
||||||
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
|
|
||||||
desc = "Dragndrop via dragon";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["<Enter>"];
|
|
||||||
run = "plugin --sync smart-enter";
|
|
||||||
desc = "Enter the child directory, or open the file";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
input.prepend_keymap = [
|
|
||||||
{
|
|
||||||
on = ["<Esc>"];
|
|
||||||
run = "close";
|
|
||||||
desc = "Cancel input";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.settings.opener = {
|
|
||||||
play = [
|
|
||||||
{
|
|
||||||
run = ''vlc "$1"'';
|
|
||||||
orphan = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."yazi/flavors" = {
|
|
||||||
source = "${inputs.yazi-flavors}";
|
|
||||||
};
|
|
||||||
xdg.configFile."yazi/plugins/smart-enter.yazi/init.lua".text = ''
|
|
||||||
return {
|
|
||||||
entry = function()
|
|
||||||
local h = cx.active.current.hovered
|
|
||||||
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
programs.yazi.theme = {
|
|
||||||
flavor.use = "catppuccin-mocha";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.file = {
|
|
||||||
".config/starship.toml".source = ./starship.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [starship];
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
initExtra =
|
|
||||||
builtins.readFile ./key-bindings.zsh
|
|
||||||
+ builtins.readFile ./functions.zsh
|
|
||||||
+ builtins.readFile ./last-working-dir.zsh
|
|
||||||
+ builtins.readFile ./dir-navigation.zsh;
|
|
||||||
|
|
||||||
zplug = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
|
|
||||||
{name = "agkozak/zsh-z";}
|
|
||||||
{
|
|
||||||
name = "zsh-users/zsh-completions";
|
|
||||||
}
|
|
||||||
|
|
||||||
# make it behave like fish
|
|
||||||
{name = "zsh-users/zsh-autosuggestions";}
|
|
||||||
{name = "zsh-users/zsh-history-substring-search";}
|
|
||||||
{
|
|
||||||
name = "zsh-users/zsh-syntax-highlighting";
|
|
||||||
} # must be last sourced plugin
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
# Use Alt+Up to go one directory upwards
|
|
||||||
|
|
||||||
function go_dir_up() {
|
|
||||||
cd .. || return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function zle_go_dir_up() {
|
|
||||||
zle .kill-buffer
|
|
||||||
go_dir_up
|
|
||||||
zle .accept-line
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle_go_dir_up
|
|
||||||
|
|
||||||
# Alt+Up
|
|
||||||
bindkey "^[[1;3A" zle_go_dir_up
|
|
@ -1,16 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
# My custom zsh functions
|
|
||||||
|
|
||||||
fzf-z() {
|
|
||||||
dir=$(z | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//')
|
|
||||||
cd $dir
|
|
||||||
}
|
|
||||||
|
|
||||||
mkcd ()
|
|
||||||
{
|
|
||||||
mkdir -p -- "$1" && cd -P -- "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
run() {
|
|
||||||
nix run nixpkgs#"$1" -- ${@:2}
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
# Based on the oh-my-zsh default keybinding config: https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/key-bindings.zsh
|
|
||||||
|
|
||||||
# Make sure that the terminal is in application mode when zle is active, since
|
|
||||||
# only then values from $terminfo are valid
|
|
||||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
|
||||||
function zle-line-init() {
|
|
||||||
echoti smkx
|
|
||||||
}
|
|
||||||
function zle-line-finish() {
|
|
||||||
echoti rmkx
|
|
||||||
}
|
|
||||||
zle -N zle-line-init
|
|
||||||
zle -N zle-line-finish
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Use emacs key bindings
|
|
||||||
bindkey -e
|
|
||||||
|
|
||||||
# [PageUp] - Up a line of history
|
|
||||||
if [[ -n "${terminfo[kpp]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kpp]}" up-line-or-history
|
|
||||||
bindkey -M viins "${terminfo[kpp]}" up-line-or-history
|
|
||||||
bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history
|
|
||||||
fi
|
|
||||||
# [PageDown] - Down a line of history
|
|
||||||
if [[ -n "${terminfo[knp]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[knp]}" down-line-or-history
|
|
||||||
bindkey -M viins "${terminfo[knp]}" down-line-or-history
|
|
||||||
bindkey -M vicmd "${terminfo[knp]}" down-line-or-history
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start typing + [Up-Arrow] - fuzzy find history forward
|
|
||||||
if [[ -n "${terminfo[kcuu1]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kcuu1]}" history-substring-search-up
|
|
||||||
bindkey -M viins "${terminfo[kcuu1]}" history-substring-search-up
|
|
||||||
bindkey -M vicmd "${terminfo[kcuu1]}" history-substring-search-up
|
|
||||||
fi
|
|
||||||
# Start typing + [Down-Arrow] - fuzzy find history backward
|
|
||||||
if [[ -n "${terminfo[kcud1]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kcud1]}" history-substring-search-down
|
|
||||||
bindkey -M viins "${terminfo[kcud1]}" history-substring-search-down
|
|
||||||
bindkey -M vicmd "${terminfo[kcud1]}" history-substring-search-down
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Home] - Go to beginning of line
|
|
||||||
if [[ -n "${terminfo[khome]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[khome]}" beginning-of-line
|
|
||||||
bindkey -M viins "${terminfo[khome]}" beginning-of-line
|
|
||||||
bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
|
|
||||||
fi
|
|
||||||
# [End] - Go to end of line
|
|
||||||
if [[ -n "${terminfo[kend]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kend]}" end-of-line
|
|
||||||
bindkey -M viins "${terminfo[kend]}" end-of-line
|
|
||||||
bindkey -M vicmd "${terminfo[kend]}" end-of-line
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Shift-Tab] - move through the completion menu backwards
|
|
||||||
if [[ -n "${terminfo[kcbt]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
|
|
||||||
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
|
|
||||||
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Backspace] - delete backward
|
|
||||||
bindkey -M emacs '^?' backward-delete-char
|
|
||||||
bindkey -M viins '^?' backward-delete-char
|
|
||||||
bindkey -M vicmd '^?' backward-delete-char
|
|
||||||
# [Delete] - delete forward
|
|
||||||
if [[ -n "${terminfo[kdch1]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kdch1]}" delete-char
|
|
||||||
bindkey -M viins "${terminfo[kdch1]}" delete-char
|
|
||||||
bindkey -M vicmd "${terminfo[kdch1]}" delete-char
|
|
||||||
else
|
|
||||||
bindkey -M emacs "^[[3~" delete-char
|
|
||||||
bindkey -M viins "^[[3~" delete-char
|
|
||||||
bindkey -M vicmd "^[[3~" delete-char
|
|
||||||
|
|
||||||
bindkey -M emacs "^[3;5~" delete-char
|
|
||||||
bindkey -M viins "^[3;5~" delete-char
|
|
||||||
bindkey -M vicmd "^[3;5~" delete-char
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Ctrl-Delete] - delete whole forward-word
|
|
||||||
bindkey -M emacs '^[[3;5~' kill-word
|
|
||||||
bindkey -M viins '^[[3;5~' kill-word
|
|
||||||
bindkey -M vicmd '^[[3;5~' kill-word
|
|
||||||
|
|
||||||
# [Ctrl-RightArrow] - move forward one word
|
|
||||||
bindkey -M emacs '^[[1;5C' forward-word
|
|
||||||
bindkey -M viins '^[[1;5C' forward-word
|
|
||||||
bindkey -M vicmd '^[[1;5C' forward-word
|
|
||||||
# [Ctrl-LeftArrow] - move backward one word
|
|
||||||
bindkey -M emacs '^[[1;5D' backward-word
|
|
||||||
bindkey -M viins '^[[1;5D' backward-word
|
|
||||||
bindkey -M vicmd '^[[1;5D' backward-word
|
|
||||||
|
|
||||||
|
|
||||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
|
||||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
|
||||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
|
||||||
bindkey ' ' magic-space # [Space] - don't do history expansion
|
|
||||||
|
|
||||||
|
|
||||||
# Edit the current command line in $EDITOR
|
|
||||||
autoload -U edit-command-line
|
|
||||||
zle -N edit-command-line
|
|
||||||
bindkey '\C-x\C-e' edit-command-line
|
|
||||||
|
|
||||||
# file rename magick
|
|
||||||
bindkey "^[m" copy-prev-shell-word
|
|
||||||
|
|
||||||
# consider emacs keybindings:
|
|
||||||
|
|
||||||
#bindkey -e ## emacs key bindings
|
|
||||||
#
|
|
||||||
#bindkey '^[[A' up-line-or-search
|
|
||||||
#bindkey '^[[B' down-line-or-search
|
|
||||||
#bindkey '^[^[[C' emacs-forward-word
|
|
||||||
#bindkey '^[^[[D' emacs-backward-word
|
|
||||||
#
|
|
||||||
#bindkey -s '^X^Z' '%-^M'
|
|
||||||
#bindkey '^[e' expand-cmd-path
|
|
||||||
#bindkey '^[^I' reverse-menu-complete
|
|
||||||
#bindkey '^X^N' accept-and-infer-next-history
|
|
||||||
#bindkey '^W' kill-region
|
|
||||||
#bindkey '^I' complete-word
|
|
||||||
## Fix weird sequence that rxvt produces
|
|
||||||
#bindkey -s '^[[Z' '\t'
|
|
||||||
#
|
|
@ -1,14 +0,0 @@
|
|||||||
# newline between shell prompts
|
|
||||||
add_newline = false
|
|
||||||
#format = "$all$directory$character"
|
|
||||||
|
|
||||||
[line_break]
|
|
||||||
disabled = true
|
|
||||||
|
|
||||||
[directory]
|
|
||||||
fish_style_pwd_dir_length = 1
|
|
||||||
|
|
||||||
[status]
|
|
||||||
map_symbol = true
|
|
||||||
format = '[$symbol$status $common_meaning$signal_name$maybe_int]($style) '
|
|
||||||
disabled = false
|
|
@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../features/fonts
|
|
||||||
../features/nix-helper
|
|
||||||
]
|
|
||||||
++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = lib.mkDefault pkgs.nix;
|
|
||||||
settings = {
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
# warn-dirty = false; # TODO: do I want it? also for systems
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
colorscheme.name = "catppuccin-mocha";
|
|
||||||
|
|
||||||
# systemd.user.startServices = "sd-switch"; # TODO: what is this
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = lib.mkDefault "julian";
|
|
||||||
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
|
||||||
stateVersion = lib.mkDefault "23.11";
|
|
||||||
|
|
||||||
sessionPath = ["$HOME/.local/bin"];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: colorscheme
|
|
||||||
# colorscheme.mode = lib.mkOverride 1499 "dark";
|
|
||||||
# specialisation = {
|
|
||||||
# dark.configuration.colorscheme.mode = lib.mkOverride 1498 "dark";
|
|
||||||
# light.configuration.colorscheme.mode = lib.mkOverride 1498 "light";
|
|
||||||
# };
|
|
||||||
# home.file = {
|
|
||||||
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
|
|
||||||
# };
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
# Manage mime-types via home-manager. Sadly the file gets overwritten by some applications and also not all of the desktop file paths are correct
|
|
||||||
# Use from home-manager like this:
|
|
||||||
#
|
|
||||||
# xdg.mimeApps.enable = true;
|
|
||||||
# xdg.mimeApps.defaultApplications = import ./mimeapps.nix {
|
|
||||||
# inherit pkgs;
|
|
||||||
# inherit lib;
|
|
||||||
# };
|
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
package-names = with pkgs; {
|
|
||||||
"x-scheme-handler/tg" = telegram-desktop;
|
|
||||||
"x-scheme-handler/mailto" = thunderbird;
|
|
||||||
"message/rfc822" = thunderbird;
|
|
||||||
"x-scheme-handler/mid" = thunderbird;
|
|
||||||
"x-scheme-handler/webcal" = thunderbird;
|
|
||||||
"text/calendar" = thunderbird;
|
|
||||||
"application/x-extension-ics" = thunderbird;
|
|
||||||
"x-scheme-handler/webcals" = thunderbird;
|
|
||||||
"application/zip" = mate.engrampa;
|
|
||||||
"text/plain" = xfce.mousepad;
|
|
||||||
"image/jpeg" = nomacs;
|
|
||||||
"application/pdf" = evince;
|
|
||||||
"text/html" = firefox;
|
|
||||||
"x-scheme-handler/http" = firefox;
|
|
||||||
"x-scheme-handler/https" = firefox;
|
|
||||||
"x-scheme-handler/chrome" = firefox;
|
|
||||||
"application/x-extension-htm" = firefox;
|
|
||||||
"application/x-extension-html" = firefox;
|
|
||||||
"application/x-extension-shtml" = firefox;
|
|
||||||
"application/xhtml+xml" = firefox;
|
|
||||||
"application/x-extension-xhtml" = firefox;
|
|
||||||
"application/x-extension-xht" = firefox;
|
|
||||||
"image/svg+xml" = inkscape;
|
|
||||||
"image/png" = nomacs;
|
|
||||||
"x-scheme-handler/eclipse+command" = dbeaver-bin;
|
|
||||||
"video/mp4" = vlc;
|
|
||||||
"audio/mpeg" = vlc;
|
|
||||||
"inode/directory" = pcmanfm;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
lib.mapAttrs (mimeType: package: [
|
|
||||||
"${package}/share/applications/${package.pname}.desktop"
|
|
||||||
])
|
|
||||||
package-names
|
|
@ -1,43 +0,0 @@
|
|||||||
# Only apply this to home-manager standalone
|
|
||||||
{outputs, ...}: {
|
|
||||||
# Apply overlays
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
warn-dirty = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"http://binarycache.julian-mutter.de"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
];
|
|
||||||
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
|
|
||||||
# nix.settings. # warn-dirty = false; # TODO: do I want this
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
|
|
||||||
./features/fish
|
|
||||||
./features/direnv
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/kitty
|
|
||||||
./features/wezterm
|
|
||||||
./features/yazi
|
|
||||||
./features/emacs
|
|
||||||
|
|
||||||
# ./features/hyprland
|
|
||||||
./features/i3
|
|
||||||
|
|
||||||
./features/suites/cli
|
|
||||||
./features/suites/desktop
|
|
||||||
./features/suites/development
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "kardorf";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "kitty";
|
|
||||||
|
|
||||||
# --------- ---------
|
|
||||||
# | DVI-D-1 | | DVI-D-2 |
|
|
||||||
# --------- ---------
|
|
||||||
monitors = [
|
|
||||||
{
|
|
||||||
name = "DVI-D-1";
|
|
||||||
width = 1680;
|
|
||||||
height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"1"
|
|
||||||
"2"
|
|
||||||
"3"
|
|
||||||
"4"
|
|
||||||
"5"
|
|
||||||
];
|
|
||||||
primary = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "DVI-D-2";
|
|
||||||
width = 1680;
|
|
||||||
height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"6"
|
|
||||||
"7"
|
|
||||||
"8"
|
|
||||||
"9"
|
|
||||||
"10"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
|
|
||||||
./features/fish
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/wezterm
|
|
||||||
./features/yazi
|
|
||||||
./features/gtk
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "pianonix";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "wezterm";
|
|
||||||
|
|
||||||
services.syncthing.tray.enable = true;
|
|
||||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
music-reader
|
|
||||||
sheet-organizer
|
|
||||||
|
|
||||||
xournalpp
|
|
||||||
musescore
|
|
||||||
|
|
||||||
onboard
|
|
||||||
];
|
|
||||||
|
|
||||||
# Autostart link
|
|
||||||
home.file = {
|
|
||||||
".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
|
|
||||||
".config/sheet-organizer/config.toml".text = ''
|
|
||||||
working_directory = "/home/julian/Klavier"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H
|
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
../global
|
|
||||||
|
|
||||||
../features/fish
|
|
||||||
../features/direnv
|
|
||||||
../features/topgrade
|
|
||||||
../features/neovim
|
|
||||||
../features/yazi
|
|
||||||
../features/emacs
|
|
||||||
../features/nix-helper
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "aspi";
|
|
||||||
is-nixos = false;
|
|
||||||
# terminal = "kitty";
|
|
||||||
|
|
||||||
home.sessionPath = ["/snap/bin"];
|
|
||||||
|
|
||||||
home.packages =
|
|
||||||
lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
|
|
||||||
[
|
|
||||||
./fonts.nix
|
|
||||||
./packages.nix
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
{pkgs, ...}:
|
|
||||||
with pkgs; [
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
font-awesome
|
|
||||||
dejavu_fonts
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-emoji
|
|
||||||
liberation_ttf
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
source-code-pro
|
|
||||||
]
|
|
@ -1,42 +0,0 @@
|
|||||||
{pkgs, ...}:
|
|
||||||
with pkgs; [
|
|
||||||
# Rust setup
|
|
||||||
rustc
|
|
||||||
rustfmt
|
|
||||||
cargo
|
|
||||||
clippy
|
|
||||||
rust-analyzer
|
|
||||||
|
|
||||||
typst
|
|
||||||
tree-sitter-grammars.tree-sitter-typst
|
|
||||||
|
|
||||||
# Further tools
|
|
||||||
cntr # nix debugger
|
|
||||||
|
|
||||||
lazygit
|
|
||||||
shellcheck
|
|
||||||
lazygit
|
|
||||||
git
|
|
||||||
mc
|
|
||||||
tree
|
|
||||||
bat
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
fzf
|
|
||||||
topgrade
|
|
||||||
htop
|
|
||||||
killall
|
|
||||||
findutils
|
|
||||||
jq
|
|
||||||
ffmpeg
|
|
||||||
julia-bin
|
|
||||||
|
|
||||||
poppler_utils # Pdf utils including pdfimages
|
|
||||||
sage
|
|
||||||
|
|
||||||
pkg-config # Often needed to build something
|
|
||||||
|
|
||||||
devbox # reproducible dev envs based on nix
|
|
||||||
|
|
||||||
mysql80
|
|
||||||
]
|
|
@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
../common/global
|
|
||||||
../common/users/julian
|
|
||||||
|
|
||||||
../common/optional/remote-builder.nix
|
|
||||||
../common/optional/boot-efi.nix
|
|
||||||
|
|
||||||
../common/optional/greetd.nix
|
|
||||||
../common/optional/authentication.nix
|
|
||||||
../common/optional/pcmanfm.nix
|
|
||||||
../common/optional/pipewire.nix
|
|
||||||
|
|
||||||
../common/optional/gamemode.nix
|
|
||||||
../common/optional/virtualbox.nix
|
|
||||||
|
|
||||||
../common/optional/podman.nix
|
|
||||||
../common/optional/wireguard.nix
|
|
||||||
../common/optional/flatpak.nix
|
|
||||||
|
|
||||||
../common/optional/avahi.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hostName = "aspi";
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
|
|
||||||
modules = {
|
|
||||||
syncthing = {
|
|
||||||
enable = true;
|
|
||||||
overrideSettings = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.blueman.enable = true;
|
|
||||||
services.upower.enable = true;
|
|
||||||
|
|
||||||
programs.steam.enable = true;
|
|
||||||
|
|
||||||
# TODO: not working
|
|
||||||
services.logind.lidSwitch = "lock";
|
|
||||||
services.logind.lidSwitchDocked = "lock";
|
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support
|
|
||||||
services.libinput.enable = true;
|
|
||||||
}
|
|
@ -1,78 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"vmd"
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = ["dm-snapshot"];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
boot.blacklistedKernelModules = ["pcspkr"]; # Disables "beep"
|
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
|
||||||
|
|
||||||
boot.initrd.luks.devices = {
|
|
||||||
root = {
|
|
||||||
device = "/dev/disk/by-uuid/a4dc9a2c-725b-4252-8fbb-093a271c31ba";
|
|
||||||
preLVM = true;
|
|
||||||
allowDiscards = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=root"
|
|
||||||
"compress=zstd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" = {
|
|
||||||
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=home"
|
|
||||||
"compress=zstd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/nix" = {
|
|
||||||
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=nix"
|
|
||||||
"compress=zstd"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/7040-F37C";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80";}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
hardware.nvidia.open = false;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmZH4AYoERGx5t8gXXmrZetSchwzps8UYwkz8E6SI8D
|
|
@ -1,244 +0,0 @@
|
|||||||
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
|
|
||||||
# or
|
|
||||||
# deploy .#builder
|
|
||||||
{config, ...}: {
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
../common/global
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hostName = "builder";
|
|
||||||
system.stateVersion = "23.11";
|
|
||||||
|
|
||||||
users.users.nix = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Nix";
|
|
||||||
extraGroups = [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
];
|
|
||||||
trusted-public-keys = ["nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="];
|
|
||||||
|
|
||||||
trusted-users = ["nix"];
|
|
||||||
max-jobs = "auto";
|
|
||||||
cores = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
# optimize store by hardlinking store files
|
|
||||||
nix.optimise.automatic = true;
|
|
||||||
nix.optimise.dates = ["03:15"];
|
|
||||||
|
|
||||||
# nix.gc.automatic = true;
|
|
||||||
# nix.gc.dates = "daily";
|
|
||||||
# nix.gc.options = "--delete-old";
|
|
||||||
|
|
||||||
# nix.settings.keep-derivations = false;
|
|
||||||
# nix.settings.keep-outputs = true;
|
|
||||||
|
|
||||||
# Garbage collect up to 100 GiB when only 20 GiB storage left
|
|
||||||
nix.extraOptions = ''
|
|
||||||
min-free = ${toString (20 * 1024 * 1024 * 1024)}
|
|
||||||
max-free = ${toString (100 * 1024 * 1024 * 1024)}
|
|
||||||
'';
|
|
||||||
|
|
||||||
nix.nrBuildUsers = 64;
|
|
||||||
|
|
||||||
# prevent memory to get filled
|
|
||||||
systemd.services.nix-daemon.serviceConfig = {
|
|
||||||
MemoryAccounting = true;
|
|
||||||
MemoryMax = "90%";
|
|
||||||
OOMScoreAdjust = 500;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Ollama used by open-webui as llm backend
|
|
||||||
# services.ollama = {
|
|
||||||
# enable = true;
|
|
||||||
# # acceleration = "rocm";
|
|
||||||
# };
|
|
||||||
# services.open-webui = {
|
|
||||||
# enable = true;
|
|
||||||
# port = 8080;
|
|
||||||
# openFirewall = true;
|
|
||||||
# host = "builder.julian-mutter.de";
|
|
||||||
# };
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
];
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
# require public key authentication for better security
|
|
||||||
settings.PasswordAuthentication = true;
|
|
||||||
settings.KbdInteractiveAuthentication = false;
|
|
||||||
settings.PermitRootLogin = "yes";
|
|
||||||
};
|
|
||||||
users.users."root".openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGFcS+3d1tNgHmYCjueymCV9Bd2LcJcKGhVobrDe3r0s julian@kardorf"
|
|
||||||
];
|
|
||||||
users.users."nix".openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H julian@aspi"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAIQ+qMuXvyoxO1DuCR3/x+IQRfSA2WyMuzuotWZjCye root@aspi"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHnfLJnS2SKUs47J0qpLTkk0LQA5quOuAhnxE6yppUDm root@kardorf"
|
|
||||||
];
|
|
||||||
|
|
||||||
# security.pam.sshAgentAuth.enable = true; # enable sudo via ssh
|
|
||||||
|
|
||||||
services.hydra = {
|
|
||||||
enable = true;
|
|
||||||
hydraURL = "http://hydra.julian-mutter.de"; # externally visible URL
|
|
||||||
port = 3000;
|
|
||||||
notificationSender = "hydra@julian-mutter.de"; # e-mail of hydra service
|
|
||||||
# a standalone hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
|
|
||||||
# buildMachinesFiles = [ ];
|
|
||||||
# you will probably also want, otherwise *everything* will be built from scratch
|
|
||||||
useSubstitutes = true;
|
|
||||||
|
|
||||||
minimumDiskFree = 5; # in GB
|
|
||||||
minimumDiskFreeEvaluator = 4; # in GB
|
|
||||||
};
|
|
||||||
|
|
||||||
# add builder itself as build machine so system emulation is properly supported
|
|
||||||
# nix.distributedBuilds = true;
|
|
||||||
nix.buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "localhost";
|
|
||||||
protocol = null;
|
|
||||||
# sshUser = "nix";
|
|
||||||
systems = [
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-linux"
|
|
||||||
];
|
|
||||||
maxJobs = 4;
|
|
||||||
speedFactor = 3;
|
|
||||||
supportedFeatures = [
|
|
||||||
"nixos-test"
|
|
||||||
"benchmark"
|
|
||||||
"big-parallel"
|
|
||||||
"kvm"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Uris allowed as flake inputs, otherwise hydra does not fetch them
|
|
||||||
nix.settings.allowed-uris = [
|
|
||||||
"github:"
|
|
||||||
"gitlab:"
|
|
||||||
"git+https://github.com/hyprwm/Hyprland"
|
|
||||||
"https://github.com/hyprwm/Hyprland"
|
|
||||||
"https://github"
|
|
||||||
"https://gitlab"
|
|
||||||
"https://gitlab.julian-mutter.de"
|
|
||||||
"git+https://gitlab.julian-mutter.de"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.nginx = {
|
|
||||||
enable = true;
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
# recommendedTlsSettings = true;
|
|
||||||
# other Nginx options
|
|
||||||
virtualHosts."hydra.julian-mutter.de" = {
|
|
||||||
# enableACME = true;
|
|
||||||
# forceSSL = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://127.0.0.1:3000";
|
|
||||||
# proxyWebsockets = true; # needed if you need to use WebSocket
|
|
||||||
# extraConfig =
|
|
||||||
# # required when the target is also TLS server with multiple hosts
|
|
||||||
# "proxy_ssl_server_name on;" +
|
|
||||||
# # required when the server wants to use HTTP Authentication
|
|
||||||
# "proxy_pass_header Authorization;"
|
|
||||||
# ;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualHosts."binarycache.julian-mutter.de" = {
|
|
||||||
locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
|
|
||||||
};
|
|
||||||
|
|
||||||
clientMaxBodySize = "2G";
|
|
||||||
virtualHosts."cache.julian-mutter.de" = {
|
|
||||||
locations."/".proxyPass = "http://127.0.0.1:8080";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# =========== Gitea actions ==========
|
|
||||||
services.gitea-actions-runner.instances."builder" = {
|
|
||||||
enable = true;
|
|
||||||
url = "https://gitlab.julian-mutter.de";
|
|
||||||
name = "builder";
|
|
||||||
tokenFile = config.sops.secrets."gitea_token".path;
|
|
||||||
labels = []; # use default labels
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
# TODO: podman fails with: "cannot resolve hostname"
|
|
||||||
# virtualisation.podman = {
|
|
||||||
# enable = true;
|
|
||||||
# dockerCompat = true;
|
|
||||||
# defaultNetwork.settings.dns_enabled = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
sops.secrets."gitea_token" = {
|
|
||||||
owner = config.users.users.nix.name;
|
|
||||||
sopsFile = ./secrets.yaml;
|
|
||||||
};
|
|
||||||
|
|
||||||
# =========== Binary Cache ==========
|
|
||||||
services.nix-serve = {
|
|
||||||
enable = true;
|
|
||||||
secretKeyFile = "/var/cache-priv-key.pem";
|
|
||||||
};
|
|
||||||
|
|
||||||
# =========== Binary Cache with attic ==========
|
|
||||||
sops.secrets."attic_token".sopsFile = ./secrets.yaml;
|
|
||||||
|
|
||||||
services.atticd = {
|
|
||||||
enable = true;
|
|
||||||
environmentFile = config.sops.secrets."attic_token".path;
|
|
||||||
settings = {
|
|
||||||
listen = "[::]:8080";
|
|
||||||
|
|
||||||
jwt = {};
|
|
||||||
|
|
||||||
# Data chunking
|
|
||||||
#
|
|
||||||
# Warning: If you change any of the values here, it will be
|
|
||||||
# difficult to reuse existing chunks for newly-uploaded NARs
|
|
||||||
# since the cutpoints will be different. As a result, the
|
|
||||||
# deduplication ratio will suffer for a while after the change.
|
|
||||||
chunking = {
|
|
||||||
# The minimum NAR size to trigger chunking
|
|
||||||
#
|
|
||||||
# If 0, chunking is disabled entirely for newly-uploaded NARs.
|
|
||||||
# If 1, all NARs are chunked.
|
|
||||||
nar-size-threshold = 64 * 1024; # 64 KiB
|
|
||||||
|
|
||||||
# The preferred minimum size of a chunk, in bytes
|
|
||||||
min-size = 16 * 1024; # 16 KiB
|
|
||||||
|
|
||||||
# The preferred average size of a chunk, in bytes
|
|
||||||
avg-size = 64 * 1024; # 64 KiB
|
|
||||||
|
|
||||||
# The preferred maximum size of a chunk, in bytes
|
|
||||||
max-size = 256 * 1024; # 256 KiB
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
{lib, ...}: {
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"ata_piix"
|
|
||||||
"uhci_hcd"
|
|
||||||
"virtio_pci"
|
|
||||||
"virtio_scsi"
|
|
||||||
"sd_mod"
|
|
||||||
"sr_mod"
|
|
||||||
];
|
|
||||||
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
|
|
||||||
boot.kernelModules = [];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
|
|
||||||
# hardware.graphics = {
|
|
||||||
# enable = true;
|
|
||||||
# extraPackages = with pkgs; [
|
|
||||||
# rocmPackages.clr.icd
|
|
||||||
# linuxPackages.amdgpu-pro
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# boot.kernelParams = [
|
|
||||||
# "radeon.si_support=0"
|
|
||||||
# "radeon.cik_support=1"
|
|
||||||
# "amdgpu.si_support=0"
|
|
||||||
# "amdgpu.cik_support=1"
|
|
||||||
# ];
|
|
||||||
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
|
|
||||||
# boot.blacklistedKernelModules = [ "radeon" ];
|
|
||||||
|
|
||||||
boot.loader.grub.enable = true;
|
|
||||||
boot.loader.grub.device = "/dev/sda";
|
|
||||||
|
|
||||||
# Emulated systems used as alternative to cross-compiling
|
|
||||||
boot.binfmt.emulatedSystems = ["aarch64-linux"];
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
system.hydraAutoUpgrade = {
|
|
||||||
# Only enable if not dirty
|
|
||||||
enable = inputs.self ? rev;
|
|
||||||
dates = "*:0/10"; # Every 10 minutes
|
|
||||||
instance = "http://hydra.julian-mutter.de";
|
|
||||||
project = "dotfiles";
|
|
||||||
jobset = "main";
|
|
||||||
job = "hosts.${config.networking.hostName}";
|
|
||||||
oldFlakeRef = "self";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
# Common config for all hosts
|
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
./fish.nix # fish for admin
|
|
||||||
./locale.nix
|
|
||||||
./nix.nix
|
|
||||||
./sops.nix
|
|
||||||
./root.nix
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
]
|
|
||||||
++ (builtins.attrValues outputs.nixosModules);
|
|
||||||
|
|
||||||
# Replaces the (modulesPath + "/installer/scan/not-detected.nix") from default hardware-configuration.nix
|
|
||||||
# Enables non-free firmware
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
# Networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
services.resolved.enable = true;
|
|
||||||
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
|
|
||||||
# HM
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
vendor = {
|
|
||||||
completions.enable = true;
|
|
||||||
config.enable = true;
|
|
||||||
functions.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
||||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
||||||
LC_MONETARY = "de_DE.UTF-8";
|
|
||||||
LC_NAME = "de_DE.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
|
||||||
LC_TIME = "de_DE.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Keymap
|
|
||||||
services.xserver.xkb = {
|
|
||||||
layout = "de";
|
|
||||||
variant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
console.keyMap = "de";
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Apply overlays
|
|
||||||
nixpkgs = {
|
|
||||||
# TODO: apply this to hm and nixos without duplicate code
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
nvidia.acceptLicense = true;
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
|
||||||
warn-dirty = false;
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.auto-optimise-store = lib.mkDefault true;
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
# warn-dirty = false;
|
|
||||||
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"http://binarycache.julian-mutter.de"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
]; # needed for devenv to add custom caches
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
# Keep the last 3 generations
|
|
||||||
options = "--delete-older-than +3";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
|
|
||||||
# TODO: is this useful?, what does it do?
|
|
||||||
# nix.settings.flake-registry = ""; # Disable global flake registry
|
|
||||||
# Add each flake input as a registry and nix_path
|
|
||||||
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
|
||||||
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
# Packages needed as root
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
vim
|
|
||||||
htop
|
|
||||||
mc
|
|
||||||
gparted-xhost # needs to be installed as system package so it can be actually opened
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEd25519 = k: k.type == "ed25519";
|
|
||||||
getKeyPath = k: k.path;
|
|
||||||
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
|
|
||||||
in {
|
|
||||||
imports = [inputs.sops-nix.nixosModules.sops];
|
|
||||||
|
|
||||||
sops.age = {
|
|
||||||
sshKeyPaths = map getKeyPath keys;
|
|
||||||
|
|
||||||
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
|
|
||||||
keyFile = "/home/julian/.config/sops/age/keys.txt";
|
|
||||||
# Generate key if none of the above worked. With this, building will still work, just without secrets
|
|
||||||
generateKey = false; # TODO: building should not work without secrets!?
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.defaultSopsFile = ../secrets.yaml;
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Make programs like nextcloud client access saved passwords
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
programs.seahorse.enable = true;
|
|
||||||
programs.ssh.askPassword = lib.mkForce "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; # Solve conflicting definition in seahorse and plasma6
|
|
||||||
|
|
||||||
# Make authentication work for e.g. gparted
|
|
||||||
security.polkit.enable = true;
|
|
||||||
systemd = {
|
|
||||||
user.services.polkit-gnome-authentication-agent-1 = {
|
|
||||||
description = "polkit-gnome-authentication-agent-1";
|
|
||||||
wantedBy = ["graphical-session.target"];
|
|
||||||
wants = ["graphical-session.target"];
|
|
||||||
after = ["graphical-session.target"];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 1;
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
# MDNS on local network
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
publish.enable = true;
|
|
||||||
publish.addresses = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
# Bootloader
|
|
||||||
# Use this for simple nix boot menu, if no dual boot required
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.systemd-boot.configurationLimit = 10;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/c32c39d6f3b1fe6514598fa40ad2cf9ce22c3fb7/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix#L66
|
|
||||||
boot.loader.systemd-boot.editor = false;
|
|
||||||
|
|
||||||
boot.supportedFilesystems = [
|
|
||||||
"btrfs"
|
|
||||||
"ntfs"
|
|
||||||
"nfs"
|
|
||||||
"cifs"
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
virtualisation.docker = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
xdg.portal.enable = true;
|
|
||||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
|
||||||
xdg.portal.config.common.default = "*"; # Use first portal implementation found
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.gamemode = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
softrealtime = "auto";
|
|
||||||
inhibit_screensaver = 1;
|
|
||||||
renice = 5;
|
|
||||||
};
|
|
||||||
# gpu = {
|
|
||||||
# apply_gpu_optimisations = "accept-responsibility";
|
|
||||||
# gpu_device = 1;
|
|
||||||
# amd_performance_level = "high";
|
|
||||||
# };
|
|
||||||
custom = {
|
|
||||||
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
|
|
||||||
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.xserver.displayManager.gdm = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# unlock GPG keyring on login
|
|
||||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
homeCfgs = config.home-manager.users;
|
|
||||||
homeSharePaths = lib.mapAttrsToList (_: v: "${v.home.path}/share") homeCfgs;
|
|
||||||
vars = ''XDG_DATA_DIRS="$XDG_DATA_DIRS:${lib.concatStringsSep ":" homeSharePaths}" GTK_USE_PORTAL=0'';
|
|
||||||
|
|
||||||
julianCfg = homeCfgs.julian;
|
|
||||||
|
|
||||||
sway-kiosk = command: "${lib.getExe pkgs.sway} --unsupported-gpu --config ${pkgs.writeText "kiosk.config" ''
|
|
||||||
output * bg #000000 solid_color
|
|
||||||
xwayland disable
|
|
||||||
input "type:touchpad" {
|
|
||||||
tap enabled
|
|
||||||
}
|
|
||||||
exec '${vars} ${command}; ${pkgs.sway}/bin/swaymsg exit'
|
|
||||||
''}";
|
|
||||||
in {
|
|
||||||
users.extraUsers.greeter = {
|
|
||||||
# For caching and such
|
|
||||||
home = "/tmp/greeter-home";
|
|
||||||
createHome = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.regreet = {
|
|
||||||
enable = true;
|
|
||||||
iconTheme = julianCfg.gtk.iconTheme;
|
|
||||||
theme = julianCfg.gtk.theme;
|
|
||||||
# font = julianCfg.fontProfiles.regular; # TODO: do
|
|
||||||
cursorTheme = {
|
|
||||||
inherit (julianCfg.gtk.cursorTheme) name package;
|
|
||||||
};
|
|
||||||
# settings.background = {
|
|
||||||
# path = julianCfg.wallpaper;
|
|
||||||
# fit = "Cover";
|
|
||||||
# }; # TODO: fix
|
|
||||||
};
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings.default_session.command = sway-kiosk (lib.getExe config.programs.regreet.package);
|
|
||||||
};
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user