Compare commits

..

10 Commits

Author SHA1 Message Date
da7e352e8d Espanso for ..date expansion etc. 2024-12-27 00:47:54 +01:00
0d37c9fe95 Simplify caps-lock remapping
It turns out that all other methods I have tried overrides disabling the
touchpad while typing. Only interception-tools seems to work.
2024-12-27 00:47:54 +01:00
1483a5c46a Add nixos configuration and build script 2024-12-27 00:47:54 +01:00
c828dfc2e6 Various small fixes 2024-12-27 00:47:42 +01:00
feb789c989 EXPERIMENTAL - installer changes for other systems 2024-12-24 23:47:24 +01:00
67ffb18e03 Fix for graphical uis 2024-12-18 22:06:43 +01:00
019e8708d3 Add some git plugins 2024-12-09 12:26:50 +01:00
ee10125402 Fix right prompt error redirection 2024-02-21 08:48:39 +01:00
19857722b4 Fix typo 2023-11-13 09:59:32 +01:00
00c1b647ea Remove fish vi-mode. Refactor dependency installation 2023-11-13 09:54:59 +01:00
13 changed files with 334 additions and 40 deletions

5
.gitignore vendored
View File

@@ -1,2 +1,3 @@
fish/fish_variables fish/*
fish/local.fish !fish/config.fish
!fish/functions/*

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# The MIT License (MIT) # The MIT License (MIT)

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
HASH="%C(yellow)%h%C(reset)" HASH="%C(yellow)%h%C(reset)"
RELATIVE_TIME="%C(green)%ar%C(reset)" RELATIVE_TIME="%C(green)%ar%C(reset)"

View File

@@ -21,14 +21,11 @@ if type -q pyenv
end end
# pyenv virtualenv-init - | source # pyenv virtualenv-init - | source
alias dc="docker-compose" alias dc="docker compose"
alias dce="docker-compose exec" alias dce="docker compose exec"
alias drh="docker run -it --rm -v (pwd):/usr/(pwd) -w /usr/(pwd)" alias drh="docker run -it --rm -v (pwd):/usr/(pwd) -w /usr/(pwd)"
fish_vi_key_bindings
# Include local config if present # Include local config if present
if test -r $DOTFILES/fish/local.fish if test -r $DOTFILES/fish/local.fish

View File

@@ -1,13 +1,13 @@
function fish_right_prompt function fish_right_prompt
set -l ref (git symbolic-ref HEAD ^/dev/null) set -l ref (git symbolic-ref HEAD 2>/dev/null)
if test -z $ref if test -z $ref
return return
end end
git diff --no-ext-diff --quiet --exit-code ^/dev/null git diff --no-ext-diff --quiet --exit-code 2>/dev/null
or set -l dirty 'yes' or set -l dirty 'yes'
git diff-index --cached --quiet HEAD -- ^/dev/null git diff-index --cached --quiet HEAD -- 2>/dev/null
or set -l staged 'yes' or set -l staged 'yes'
set_color normal set_color normal

View File

@@ -36,6 +36,8 @@ xmap Å [
xmap å ] xmap å ]
noremap ÅÅ [[ noremap ÅÅ [[
noremap åå ]] noremap åå ]]
nnoremap <space>, <c-^>
nnoremap <tab> %
" Some searching options " Some searching options
set ignorecase set ignorecase
@@ -52,3 +54,5 @@ set hidden
" Uppercase last word on c-^ " Uppercase last word on c-^
inoremap <C-]> <Esc>gUiw`]a inoremap <C-]> <Esc>gUiw`]a
nnoremap <silent> § :NERDTreeToggle<CR>

View File

@@ -1,44 +1,69 @@
#!/bin/bash #!/usr/bin/env bash
function install_dependencies() { function install_pkg() {
sudo -n apt-get update if hash apt-get 2>/dev/null; then
sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ sudo -n apt-get update
fish \ sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ${@}
neovim \ return
tmux fi
if hash nix 2>/dev/null; then
echo "INSTALL ${@} yourself with nix"
return
fi
} }
function setup_ssh() { function setup_ssh() {
configfile=~/.ssh/config
if grep -Fxq "# dotfiles installed" ${configfile}; then
return
fi
mkdir -p ~/.ssh mkdir -p ~/.ssh
touch ~/.ssh/config touch ${configfile}
chmod 644 ~/.ssh/config chmod 644 ${configfile}
cat << EOF >> ~/.ssh/config cat << EOF >> ${configfile}
Include ${HOME}/dotfiles/ssh.config Include ${HOME}/dotfiles/ssh.config
# dotfiles installed
EOF EOF
} }
function setup_git() { function setup_git() {
cat << EOF > ~/.gitconfig configfile=~/.gitconfig
if grep -Fxq "# dotfiles installed" ${configfile}; then
return
fi
cat << EOF > ${configfile}
[include] [include]
path = ${HOME}/dotfiles/git/gitconfig path = ${HOME}/dotfiles/git/gitconfig
[core] [core]
excludesfile = ${HOME}/dotfiles/git/gitignore_global excludesfile = ${HOME}/dotfiles/git/gitignore_global
# dotfiles installed
EOF EOF
setup_ssh setup_ssh
} }
function setup_tmux() { function setup_tmux() {
cat << EOF > ~/.tmux.conf configfile=~/.tmux.conf
if grep -Fxq "# dotfiles installed" ${configfile}; then
return
fi
install_pkg tmux
cat << EOF > ${configfile}
source ${HOME}/dotfiles/tmux/tmux.conf source ${HOME}/dotfiles/tmux/tmux.conf
# dotfiles.installed
EOF EOF
} }
function setup_fish() { function setup_fish() {
install_pkg fish
USER=`whoami` USER=`whoami`
sudo -n chsh $USER -s $(which fish) sudo -n chsh $USER -s $(which fish)
# Force fish shell for devcontainers # Force fish shell for devcontainers
echo "exec $(which fish) -l" >> ~/.profile
echo "exec $(which fish) -l" >> ~/.bashrc echo "exec $(which fish) -l" >> ~/.bashrc
echo "exec $(which fish) -l" >> ~/.zshrc echo "exec $(which fish) -l" >> ~/.zshrc
@@ -47,29 +72,41 @@ function setup_fish() {
} }
function setup_nvim() { function setup_nvim() {
install_pkg neovim
mkdir -p ~/.config/nvim/ mkdir -p ~/.config/nvim/
ln -s ~/dotfiles/init.vim ~/.config/nvim/init.vim ln -s ~/dotfiles/init.vim ~/.config/nvim/init.vim
# Install NERDtree plugin
git clone --single-branch https://github.com/preservim/nerdtree.git ~/.config/nvim/pack/vendor/start/nerdtree
git clone --single-branch https://tpope.io/vim/commentary.git ~/.config/nvim/pack/vendor/start/commentary
nvim -u NONE -c "helptags ~/.config/nvim/pack/vendor/start/nerdtree/doc" -c q
nvim -u NONE -c "helptags ~/.config/nvim/pack/vendor/start/commentary/doc" -c q
} }
function main() { function main() {
install_pkg locales less
if [[ ${REMOTE_CONTAINERS} || ${DEVCONTAINER} ]]; then
echo "sv_SE.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen
sudo locale-gen
fi
setup_fish
setup_ssh
setup_git
if [[ ${REMOTE_CONTAINERS} || ${DEVCONTAINER} ]]; then if [[ ${REMOTE_CONTAINERS} || ${DEVCONTAINER} ]]; then
echo "INSTALLING IN DEVCONTAINER" echo "INSTALLING IN DEVCONTAINER"
echo "set -x EDITOR code" >> ~/.config/fish/local.fish
else
setup_tmux
setup_nvim
fi fi
install_dependencies
echo "sv_SE.UTF-8 UTF-8" | sudo tee -a /etc/locale.gen
sudo locale-gen
setup_fish
setup_ssh
setup_git
setup_tmux
setup_nvim
} }
main $@ main $@

44
nixos/flake.lock generated Normal file
View File

@@ -0,0 +1,44 @@
{
"nodes": {
"espanso-fix": {
"locked": {
"lastModified": 1733174540,
"narHash": "sha256-Yv72ufzlbccsUgjnDtLfybPS4HJ7v3lN+pjmcH3/l+I=",
"owner": "pitkling",
"repo": "nixpkgs",
"rev": "2c39301457f9b5cb18a042a1f5643b15de551c79",
"type": "github"
},
"original": {
"owner": "pitkling",
"ref": "espanso-fix-capabilities-export",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1734875076,
"narHash": "sha256-Pzyb+YNG5u3zP79zoi8HXYMs15Q5dfjDgwCdUI5B0nY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1807c2b91223227ad5599d7067a61665c52d1295",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"espanso-fix": "espanso-fix",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

25
nixos/flake.nix Normal file
View File

@@ -0,0 +1,25 @@
{
description = "My nixos config";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
espanso-fix.url = "github:pitkling/nixpkgs/espanso-fix-capabilities-export";
};
outputs = { self, nixpkgs, espanso-fix, ... } @ inputs:
let
inherit (self) outputs;
system = "x86_64-linux";
in
{
nixosConfigurations = {
macbook = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs outputs; };
modules = [
./nixos/configuration.nix
espanso-fix.nixosModules.espanso-capdacoverride
];
};
};
};
}

View File

@@ -0,0 +1,181 @@
{ inputs, lib, config, pkgs, ... }:
{
imports =
[
"/etc/nixos/hardware-configuration.nix"
];
nix = {
settings = {
experimental-features = [ "nix-command" "flakes" ];
};
};
time.timeZone = "Europe/Stockholm";
i18n = {
defaultLocale = "sv_SE.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "sv_SE.UTF-8";
LC_IDENTIFICATION = "sv_SE.UTF-8";
LC_MEASUREMENT = "sv_SE.UTF-8";
LC_MONETARY = "sv_SE.UTF-8";
LC_NAME = "sv_SE.UTF-8";
LC_NUMERIC = "sv_SE.UTF-8";
LC_PAPER = "sv_SE.UTF-8";
LC_TELEPHONE = "sv_SE.UTF-8";
LC_TIME = "sv_SE.UTF-8";
};
};
users.users = {
thomas = {
isNormalUser = true;
description = "Thomas";
extraGroups = [ "networkmanager" "wheel" "docker" ];
# Also groups "uinput" and "input" for xremap to work with home-manager?
packages = with pkgs; [ ];
shell = pkgs.fish;
};
};
# Enable automatic login for the user.
services.displayManager.autoLogin = {
enable = true;
user = "thomas";
};
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
# xpra, sx, lightdm, gdm
# xterm, xfce, surf-display, retroarch, plasma5, phosh, pantheon, mate, lxqt, lumina, kodi, gnome, enlightenment, deepin, cinnamon, cde, budgie
# services.xserver.displayManager.lightdm.enable = true;
# services.xserver.desktopManager.lumina.enable = true;
# services.xserver.displayManager.lightdm.enable = true;
# services.xserver.desktopManager.budgie.enable = true;
# services.displayManager.sddm.enable = true;
# services.xserver.desktopManager.plasma5.enable = true;
# Switch aps with alt+tab
# services.xserver.displayManager.lightdm.enable = true;
# services.xserver.desktopManager.mate.enable = true;
# Switch aps with alt+tab
# services.xserver.displayManager.lightdm.enable = true;
# services.xserver.desktopManager.cinnamon.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
programs.dconf = {
enable = true;
profiles.user.databases = [
{
settings = {
"org/gnome/desktop/input-sources".xkb-options = [
"terminate:ctrl_alt_bksp"
"lv3:lalt_switch"
];
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
"org/gnome/desktop/interface".clock-show-date = true;
"org/gnome/desktop/interface".clock-show-weekday = true;
"org/gnome/desktop/calendar".show-weekdate = true;
};
}
];
};
# Remap capslock to esc and ctrl
services.interception-tools =
let
itools = pkgs.interception-tools;
itools-caps = pkgs.interception-tools-plugins.caps2esc;
in
{
enable = true;
plugins = [ itools-caps ];
udevmonConfig = ''
- JOB: "${itools}/bin/intercept -g $DEVNODE | ${itools-caps}/bin/caps2esc -m 1 | ${itools}/bin/uinput -d $DEVNODE"
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK, KEY_ESC]
'';
};
# Remap right alt to left alt so both can be used for special characters
# services.xserver.displayManager.sessionCommands = "sleep 5 && ${pkgs.xorg.xmodmap}/bin/xmodmap -e 'keycode 100 = keycode 65' &";
services.xserver.xkb = {
layout = "se";
variant = "mac";
};
console.keyMap = "sv-latin1";
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
services.syncthing = {
enable = true;
user = "thomas";
openDefaultPorts = true;
dataDir = "/home/thomas";
};
services.espanso = {
enable = true;
package = pkgs.espanso-wayland;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
virtualisation.docker.enable = true;
programs = {
firefox.enable = true;
neovim = {
enable = true;
defaultEditor = true;
vimAlias = true;
};
fish.enable = true;
git.enable = true;
tmux.enable = true;
};
environment.systemPackages = with pkgs; [
vscode
neovim
xorg.xmodmap
docker-compose
kitty
obsidian
python3Full
];
# Enable the OpenSSH daemon.
services.openssh.enable = true;
system.stateVersion = "24.11"; # Did you read the comment?
}

3
nixos/rebuild.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
sudo nixos-rebuild switch --impure --flake ".#"
# sudo nixos-rebuild boot --impure --flake ".#"

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
set -e set -e
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."

2
xprofile Normal file
View File

@@ -0,0 +1,2 @@
setxkbmap -option "ctrl:nocaps"
xcape -e 'Control_L=Escape'