Compare commits

..

No commits in common. "d74afee854642961d7187250b354acdedf4fe665" and "86fbd7649b4be284b2b088ba6c44b81d9664c52b" have entirely different histories.

11 changed files with 77 additions and 115 deletions

View file

@ -1,9 +1,7 @@
// Check the wiki for a full description of the configuration: // Check the wiki for a full description of the configuration:
// https://niri-wm.github.io/niri/Configuration:-Introduction // https://niri-wm.github.io/niri/Configuration:-Introduction
// TODO: Fix hardcoded path spawn-at-startup "swaybg --image ./wallpapers/3_hypno_chimmie_firefly_videorelaxant6025.png"
spawn-at-startup "swaybg --image /home/cobertos/dotfiles/.config/niri/wallpapers/3_hypno_chimmie_firefly_videorelaxant6025.png"
spawn-at-startup "waybar"
input { input {
keyboard { keyboard {

View file

@ -15,9 +15,10 @@ Package Control.user-ca-bundle
Package Control.cache/ Package Control.cache/
Package Control.ca-certs/ Package Control.ca-certs/
nix-installer
# Other old shit # Other old shit
bepis-old-fix.sh
.gitconfig # We use nix now..., but old systems still need the symlink, so just dont put in the container
desktop/
krita/ krita/
# Anything else with ignore. prefix in the name # Anything else with ignore. prefix in the name
@ -36,4 +37,4 @@ README.md
# Ignore things that docker will have to fill itself when building (and dont # Ignore things that docker will have to fill itself when building (and dont
# come by default) # come by default)
config.nix username.nix

3
.gitignore vendored
View file

@ -15,7 +15,8 @@ Package Control.user-ca-bundle
Package Control.cache/ Package Control.cache/
Package Control.ca-certs/ Package Control.ca-certs/
nix-installer # Other old shit
bepis-old-fix.sh
# Anything else with ignore. prefix in the name # Anything else with ignore. prefix in the name
ignore.* ignore.*

106
README.md
View file

@ -1,98 +1,84 @@
# Dot Files # Dot Files
systemctl --user start activitywatch.target
This repo contains: This repo contains:
* My home-manager configuration as a nix flake
* My dotfiles and various configs * My dotfiles and various configs
* Nix-flake-based home-manager configurations for installing it all (multiple flavors) * A [dockerfile](./dev.Dockerfile) that builds an isolated development container with home-manager, nix, and my dotfiles in various flavors
* A [Dockerfile](./dev.Dockerfile) that builds a few flavors of development containers based on the above
It's not really just dotfiles anymore but... Are these really just dotfiles anymore...?
### Guiding Principles ## Guiding Principles
* **Linking** - Symlinks over copying * **Linking** - Symlinks over copying
* **Public** - Private keys and licenses are separate. * **Public** - Private keys and licenses are separate.
* **Reproducible** - `home-manager` does 97% of the heavy lifting * **Reproducible** - `home-manager` does so much heavy lifting and there's only a few manual tweaks.
* **Multi-environment** - There are multiple `home-manager` profiles that can be used * **Multi-environment** - There are multiple `home-manager` profiles that can be used
## Flavors ## Software
### `bare` Deep configurations for:
* [micro-editor](https://micro-editor.github.io/) (instead of Sublime Text)
* [git](https://git-scm.com/)
* bash
* [firefox](https://firefox.com)
* [fd](https://github.com/sharkdp/fd)
Bare essentials for servers Other installed software:
* [flameshot](https://flameshot.org/)
* [fd](https://github.com/sharkdp/fd) - for file searching * [ffmpeg](https://www.ffmpeg.org/)
* [micro-editor](https://micro-editor.github.io/) + [many customizations](./nix/hm-micro-editor.nix) - for terminal IDE * [activitywatch](https://activitywatch.net/)
* [other small, expected utilities](./bare.nix)
### `desktop-niri`
Main desktop, using the Niri window manager
* [firefox](https://firefox.com) + [configuration](./nix/hm-firefox.nix)
* [niri](https://niri-wm.github.io/niri/index.html) - window manager
* + [waybar](https://github.com/alexays/waybar) - for taskbar
* + [niri_window_buttons](https://github.com/adelmonte/niri_window_buttons) - for taskbar windows _in sort order_
* + [nirimon](https://github.com/stepbrobd/nirimon) - to configure displays
* + fuzzel - for launcher
* + swaybg - for backdrops
* + grim + slurp + satty - for screenshot editing, replaces Flameshot for me <!-- [see this configuration]() -->
*
* [activitywatch](https://activitywatch.net/) + watchers
* [kmonad](https://github.com/kmonad/kmonad) + [configuration](./kmonad.kbd) for custom macro pad inputs
* [sublime text](https://www.sublimetext.com/) + [packages configured through Nix](./nix/hm-sublime-text.nix)
* [other utilities](./desktop-niri.nix)
### ~~`desktop-x11-generic`~~
legacy, might use again, who knows
### ~~`claude`~~
legacy
## Usage (from a bare system) ## Usage (from a bare system)
```bash ```bash
cd ~ cd ~
sudo apt update && sudo apt install git sudo apt update && sudo apt install git
git clone https://gitdab.com/cobertos/dotfiles.git git clone https://github.com/Cobertos/dotfiles.git
cd dotfiles cd dotfiles
# Installs nix # Installs nix
./dev.sh ./dev.sh
# Run home-manager (replace <flavor> with one of "bare","desktop-niri", etc...) # Run home-manager (replace <flavor> with one of "bare","home", etc...)
nix run home-manager/master -- switch -b backup --flake .#<flavor> nix run home-manager/master -- switch -b backup --flake .#<flavor>
# Run activitywatch target if not relogging # Run activitywatch target if not relogging
systemctl --user start activitywatch.target systemctl --user start activitywatch.target
``` ```
and then there are some manual steps: ## Manual steps
* Firefox * Firefox
* Install extensions * Install extensions
### TODO: Future Support
* Loose ends: Need to install nemo (file manager), gtk (+gtk configs)
* Blender
* OBS (and prefs to record into Seafile?)
* Voicemeeter Banana (Linux / Ubuntu equivalent?)
* Setup correct file associations (for .xml, .html, etc...)
* VLC Plugins
* Audacity and configurations
* /etc/hosts and C:\Windows\System32\drivers\etc\hosts or wherever it is in Windows
* Seafile notifications disabling?
* Configure keybindings (like for flameshot)
* Make `findcode` better/nicer. Can we have some sort of indexing search?
* Put Userscripts for Tampermonkey in here (or maybe submodule? would be nice to use their WebDAV interface)
* Migrate from old computer * Migrate from old computer
* Insomnia configs (all the sqlite databases in Insomnia's home directory) * Insomnia configs (all the sqlite databases in Insomnia's home directory)
* .ssh keys * .ssh keys
* Any environment variables holding keys * Any environment variables holding keys
* Firefox/Chrome/wherever history * Firefox/Chrome/wherever history
* Setup filesystem favorites * Setup filesystem favorites
* Add all my wallpapers
* Make wallpapers rotate
### Linux specific manually
* Configure Linux Mint Desktop
* Change the theme to Dark (for Window borders, controls, and desktop)
* Change wallpapers/backgrouns to the folder that has them all in it
* Add a panel to every monitor, without grouped list applet merging and with window titles
* Change the Linux Mint start menu icon
### Historical versions of the dotfiles ## TODO: Future Support
* [when they worked using a custom Python library](https://gitdab.com/Cobertos/dotfiles/tree/departing-python) * Blender
* [when they were all Ansible](https://gitdab.com/Cobertos/dotfiles/tree/ansible) * OBS (and prefs to record into Seafile?)
* [when they were mainly Windows-based dotfiles](https://gitdab.com/Cobertos/dotfiles/tree/windows-df-old) * Voicemeeter Banana (Linux / Ubuntu equivalent?)
* Setup correct file associations (for .xml, .html, etc...)
* VLC Plugins
* Audacity and configurations
* Make sure that Chrome/Firefox syncs settings for refined GitHub (looks like it worked)
* /etc/hosts and C:\Windows\System32\drivers\etc\hosts or wherever it is in Windows
* Seafile notifications disabling?
* Configure keybindings (like for flameshot)
* Add a little indicator to PS1 when dotfiles is out of date
* Make `findcode` better/nicer. Can we have some sort of indexing search?
* Put Userscripts for Tampermonkey in here (or maybe submodule? would be nice to use their WebDAV interface)
* Switch pip over to use the --user flag, or make it an option? Not sure what pipx needs?
## Historical versions of the dotfiles
* My dotfiles [when they worked using a custom Python library](https://github.com/Cobertos/dotfiles/tree/departing-python)
* My dotfiles [when they were all Ansible](https://github.com/Cobertos/dotfiles/tree/ansible)
* My dotfiles [when they were mainly Windows-based dotfiles](https://github.com/Cobertos/dotfiles/tree/windows-df-old)

View file

@ -78,7 +78,7 @@
settings = { settings = {
user.name = identity.git.name; user.name = identity.git.name;
user.email = identity.git.email; user.email = identity.git.email;
core.excludesfile = "${dotfilesPath}/.config/git/.gitignore"; core.excludesfile = "${dotfilesPath}/.gitignore";
core.editor = "micro"; core.editor = "micro";
init.defaultBranch = identity.git.defaultBranch; init.defaultBranch = identity.git.defaultBranch;
}; };

View file

@ -32,9 +32,6 @@
niri niri
ycwd # For keybind to open new terminal in the same cwd as focused one ycwd # For keybind to open new terminal in the same cwd as focused one
alacritty
fuzzel
# Statusbar # Statusbar
waybar waybar
font-awesome # for waybar font-awesome # for waybar
@ -66,62 +63,21 @@
#dejavu_fonts #dejavu_fonts
]; ];
# TODO: Document this
targets.genericLinux.enable = true;
home.file.".config/waybar/config.jsonc".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/config.jsonc"; home.file.".config/waybar/config.jsonc".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/config.jsonc";
home.file.".config/waybar/style.css".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/style.css"; home.file.".config/waybar/style.css".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/style.css";
home.file.".config/waybar/power_menu.xml".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/power_menu.xml"; home.file.".config/waybar/power_menu.xml".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/waybar/power_menu.xml";
home.file.".config/flameshot/flameshot.ini".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/flameshot/flameshot.ini";
home.file.".config/niri/config.kdl".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/niri/config.kdl"; home.file.".config/niri/config.kdl".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/niri/config.kdl";
# enable gtk
gtk = {
enable = true;
colorScheme = "dark";
theme = {
name = "Mint-X-Dark";
package = pkgs.mint-themes;
};
iconTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
font = {
name = "DejaVu Sans";
package = pkgs.dejavu_fonts;
size = 9;
};
# cursorTheme = {
# name = "Vanilla-DMZ";
# package = pkgs.vanilla-dmz;
# };
};
# Register with systemd
#systemd.user.enable = true;
#systemd.user.packages = [ pkgs.niri ];
systemd.user.services.niri.Service = {
ExecStart = "${pkgs.niri}/bin/niri --session";
Type = "notify";
Environment = [
''PATH=/home/%u/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/bin''
];
};
home.file.".config/nirimon/profiles".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/nirimon/profiles"; home.file.".config/nirimon/profiles".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/nirimon/profiles";
services.activitywatch = { services.activitywatch = {
enable = true; enable = true;
watchers = { watchers = {
# Only work on X11
# aw-watcher-window = {};
#aw-watcher-afk = {}; #aw-watcher-afk = {};
# This one adds an afk watcher too! But it has issues if Wayland is inhibited from #aw-watcher-window = {};
# being idle (which happens if you leave music running and walk away, but I rarely do
# this)
aw-watcher-window-wayland = { aw-watcher-window-wayland = {
package = pkgs.aw-watcher-window-wayland; package = pkgs.aw-watcher-window-wayland;
}; };

View file

@ -22,6 +22,4 @@
aw-watcher-window = {}; aw-watcher-window = {};
}; };
}; };
home.file.".config/flameshot/flameshot.ini".source = config.lib.file.mkOutOfStoreSymlink "${dotfilesPath}/.config/flameshot/flameshot.ini";
} }

12
desktop/krita.desktop Normal file
View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=Krita
Icon=krita
Exec=/home/cobertos/bin/krita-5.1.5-x86_64.appimage %F
StartupNotify=true
Terminal=false
Type=Application
StartupWMClass=krita
X-AppImage-Version=5.1.5
Comment=Digital Painting
Categories=Qt;KDE;Office;Graphics;
MimeType=application/x-krita;image/openraster;application/x-krita-paintoppreset;

11
desktop/obsidian.desktop Normal file
View file

@ -0,0 +1,11 @@
[Desktop Entry]
Name=Obsidian
Icon=obsidian
Exec=/home/cobertos/bin/Obsidian-1.4.16.AppImage %u
Terminal=false
Type=Application
StartupWMClass=obsidian
X-AppImage-Version=1.4.16
Comment=Obsidian
Categories=Office;
MimeType=text/html;x-scheme-handler/obsidian;

View file

@ -44,7 +44,6 @@
# return youtube dislike # return youtube dislike
# facebook container # facebook container
# firefox multi account containers (MAC) # firefox multi account containers (MAC)
# activity watch
# #
# #
# deferred on these ones for now: # deferred on these ones for now: