1
Fork 0

A billion changes, but I'm finally on this new config!

This commit is contained in:
Matei Adriel 2023-01-12 20:49:08 +01:00
parent 8b12288df6
commit c211604042
No known key found for this signature in database
29 changed files with 338 additions and 163 deletions

View file

@ -28,3 +28,26 @@ Here's some things you might want to check out:
- My [neovim config](./dotfiles/neovim)
- The [flake](./flake.nix) entrypoint for this repository
### Links to everything used here:
> Well, this does not include links to every plugin I used for every proram here, you can see more details in the respective configurations
- [nixos](http://nixos.org/) - nix based operating system
- [home-manager](https://github.com/nix-community/home-manager) - manager user configuration using nix
- [base16-nix](https://github.com/SenchoPens/base16.nix) - base16 module for nix
- [Base16 templates](https://github.com/chriskempson/base16-templates-source) - list of base16 template themes
- [Catpuccin](https://github.com/catppuccin/catppuccin) - base16 theme I use
- [Agenix](https://github.com/ryantm/agenix) & [homeage](https://github.com/jordanisaacs/homeage) - secret management
- [Xmonad](https://xmonad.org/) - window manager
- [Polybar](https://github.com/polybar/polybar) - desktop bar
- [Rofi](https://github.com/davatorium/rofi) - program launcher
- [Neovim](https://neovim.io/) - my editor
- [Neovide](https://neovide.dev/index.html) - neovide gui client
- [Vimclip](https://github.com/hrantzsch/vimclip) - vim anywhere!
- [Tmux](https://github.com/tmux/tmux/wiki) - terminal multiplexer
- [Alacritty](https://github.com/alacritty/alacritty) - terminal emulator
- [Fish](https://fishshell.com/) - user friendly shell
- [Starship](https://starship.rs/) - shell prompt
- [Zathura](https://pwmt.org/projects/zathura/) - pdf viewer
- [Ranger](https://github.com/ranger/ranger) - file manager

View file

@ -5,7 +5,7 @@ local M = {
function M.config()
local catppuccin = require("catppuccin")
vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR")
vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR") or "latte"
catppuccin.setup({ transparent_background = false, integrations = { nvimtree = true } })

View file

@ -12,6 +12,12 @@ return {
cond = env.vscode.not_active(),
},
{
"Fymyte/rasi.vim",
ft = "rasi",
cond = env.vscode.not_active(),
},
{
"teal-language/vim-teal",
ft = "teal",

View file

@ -85,6 +85,7 @@
home-manager.extraSpecialArgs = specialArgs;
home-manager.useUserPackages = true;
}
./hosts/nixos/tethys
];
};
@ -102,4 +103,16 @@
};
};
};
# {{{ Caching and whatnot
nixConfig = {
extra-substituters = [
"https://nix-community.cachix.org" # I think I need this for neovim-nightly?
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
# }}}
}

View file

@ -23,5 +23,6 @@
neofetch # Display system information
unzip # For working with .zip files
unrar # For extracting shit from rars
sloc # Useless but fun line of code counter
];
}

View file

@ -0,0 +1,28 @@
{ config, pkgs, ... }:
let base16-alacritty = pkgs.fetchFromGitHub {
owner = "aarowill";
repo = "base16-alacritty";
sha256 = "0zibl9kzazckkyzb6j0iabrl82r1kgwg8ndqpy7dz0kwmj42wfx0";
rev = "914727e48ebf3eab1574e23ca0db0ecd0e5fe9d0";
};
in
{
programs.alacritty = {
enable = true;
settings = {
import = [ (config.scheme base16-alacritty) ];
window.decorations = "none";
window.padding = {
x = 4;
y = 4;
};
fonts.normal.family = config.fontProfiles.monospace.family;
env = { TERM = "xterm-256color"; };
working_directory = "${config.home.homeDirectory}/Projects/";
};
};
}

View file

@ -0,0 +1,107 @@
{ pkgs, ... }:
let
mkBasicSearchEngine = { aliases, url, param }: {
urls = [{
template = url;
params = [
{ name = param; value = "{searchTerms}"; }
];
}];
definedAliases = aliases;
};
mkNixPackagesEngine = { aliases, type }:
let basicEngine = mkBasicSearchEngine
{
aliases = aliases;
url = "https://search.nixos.org/${type}";
param = "query";
};
in
basicEngine // {
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
};
in
{
programs.firefox = {
enable = true;
profiles.adrielus = {
# Unique user id
id = 0;
# Make this the default user
isDefault = true;
# Forcefully replace the search configuration
search.force = true;
# Set default search engine
search.default = "Google";
# Specify custom search engines
search.engines = {
"Nix Packages" = mkNixPackagesEngine {
aliases = [ "@np" "@nix-packages" ];
type = "packages";
};
"Nix options" = mkNixPackagesEngine {
aliases = [ "@no" "@nix-options" ];
type = "options";
};
# Purescript packages
"Pursuit" = mkBasicSearchEngine {
url = "https://pursuit.purescript.org/search";
param = "s";
aliases = [ "@ps" "@pursuit" ];
};
"Wikipedia" = mkBasicSearchEngine {
url = "https://en.wikipedia.org/wiki/Special:Search";
param = "search";
aliases = [ "@wk" "@wikipedia" ];
};
"Github" = mkBasicSearchEngine {
url = "https://github.com/search";
param = "q";
aliases = [ "@gh" "@github" ];
};
"Youtube" = mkBasicSearchEngine {
url = "https://www.youtube.com/results";
param = "search_query";
aliases = [ "@yt" "@youtube" ];
};
"Noita wiki" = mkBasicSearchEngine {
url = "https://noita.wiki.gg/index.php";
param = "search";
aliases = [ "@noita" ];
};
"Rain world wiki" = mkBasicSearchEngine {
url = "https://rainworld.miraheze.org/w/index.php";
param = "search";
aliases = [ "@rw" "@rain-world" ];
};
"Factorio wiki" = mkBasicSearchEngine {
url = "https://wiki.factorio.com/index.php";
param = "search";
aliases = [ "@fw" "@factorio-wiki" ];
};
"Factorio mod portal" = mkBasicSearchEngine {
url = "https://mods.factorio.com/";
param = "query";
aliases = [ "@fm" "@factorio-mods" ];
};
"Google".metaData.alias = "@g";
};
};
};
}

View file

@ -17,15 +17,15 @@ in
enable = true;
extraConfig = ''
; Generated theme
include-file = ${config.scheme base16-polybar}
${builtins.readFile (config.scheme base16-polybar)}
; Consistent fonts
[fonts]
regular = ${config.fontProfiles.regular.family}
monospace = ${config.fontProfiles.monospace.family}
regular = "${config.fontProfiles.regular.family}"
monospace = "${config.fontProfiles.monospace.family}"
; Actual config
include-file = ${./polybar.ini}
${builtins.readFile ./polybar.ini}
'';
};

View file

@ -73,13 +73,13 @@ icon-default = 
format = <label-state>
label-active = %icon%
label-active-background = ${color.base05}
label-active-foreground = ${color.base00}
label-active-background = ${colors.base05}
label-active-foreground = ${colors.base00}
label-active-padding = 2
label-urgent = %icon%
label-urgent-background = ${color.base09}
label-urgent-foreground = ${color.base00}
label-urgent-background = ${colors.base09}
label-urgent-foreground = ${colors.base00}
label-urgent-padding = 2
label-occupied = %icon%
@ -88,7 +88,7 @@ label-occupied-padding = 2
label-empty =
[bar/main]
font-0 = ${fonts.monospace}:style=Regular
font-0 = ${fonts.monospace}
modules-left = date battery
modules-center = ewmh
@ -102,9 +102,9 @@ module-margin = 2
height=4%
border-top-size = 1
border-top-color = ${color.base05}
border-top-color= ${colors.base05}
background = ${color.base00}
foreground = ${color.base05}
background = ${colors.base00}
foreground = ${colors.base05}
bottom = true

View file

@ -12,84 +12,10 @@ configuration {
display-run: "  Run ";
display-window: " 﩯 Window";
display-Network: " 󰤨 Network";
sidebar-mode: true;
}
listview {
columns: 1;
}
* {
width: 600;
}
element-text, element-icon , mode-switcher {
background-color: inherit;
text-color: inherit;
}
window {
border: 3px;
height: 50%;
width: 50%;
}
inputbar {
children: [prompt,entry];
border-radius: 5px;
padding: 2px;
}
prompt {
padding: 6px;
border-radius: 3px;
margin: 20px 0px 0px 20px;
}
textbox-prompt-colon {
expand: false;
str: ":";
}
entry {
padding: 6px;
margin: 20px 0px 0px 10px;
}
listview {
border: 0px 0px 0px;
padding: 6px 0px 0px;
margin: 10px 0px 0px 20px;
columns: 2;
lines: 5;
}
element {
padding: 5px;
}
element-icon {
size: 25px;
}
mode-switcher {
spacing: 0;
}
button {
padding: 10px;
vertical-align: 0.5;
horizontal-align: 0.5;
}
message {
margin: 2px;
padding: 2px;
border-radius: 5px;
}
textbox {
padding: 6px;
margin: 20px 0px 0px 20px;
}

View file

@ -16,7 +16,7 @@ in
// Inject font
configuration {
font = ${config.fontProfiles.monospace.family};
font: "${config.fontProfiles.monospace.family}";
}
// Theme

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

View file

@ -0,0 +1,11 @@
{ config, pkgs, ... }:
let base16-xresources = pkgs.fetchFromGitHub {
owner = "tinted-theming";
repo = "base16-xresources";
sha256 = "151zahx18vfrmbll7lwwnb17rn4z0di8n0fi2yr10hg14azddb2r";
rev = "6711cf4fa61e903e52ef6eac186b83e04a0397d8";
};
in
{
xresources.extraConfig = builtins.readFile (config.scheme base16-xresources);
}

View file

@ -0,0 +1,3 @@
{
home.file.".background-image".source = ./wallpapers/wall.png;
}

View file

@ -1,3 +1,17 @@
{
imports = [ ./common/rofi ./common/polybar ./common/fonts.nix ];
{ pkgs, ... }: {
imports = [
./common/rofi
./common/polybar
./common/fonts.nix
./common/xresources.nix
./common/xwallpaper.nix
./common/alacritty.nix
];
# Other packages I want to install:
home.packages = with pkgs; [
vimclip # Vim anywhere!
xclip # Clipboard stuff
spectacle # Take screenshots
];
}

View file

@ -43,8 +43,8 @@ let
extraRuntime = [
(if devMode
then symlink "${paths.dotfiles}/vscode-snippets"
else ../../../../dotfiles/vscode-snippets)
then symlink "${paths.dotfiles}/vscode-snippets"
else ../../../../dotfiles/vscode-snippets)
];
# Wraps a neovim client, providing the dependencies
@ -57,7 +57,7 @@ let
# - NVIM_EXTRA_RUNTIME provides extra directories to add to the runtimepath.
# I cannot just install those dirs using the builtin package support because
# my package manager (lazy.nvim) disables those.
wrapClient = { base, name }:
wrapClient = { base, name, extraArgs ? "" }:
pkgs.symlinkJoin {
inherit (base) name meta;
paths = [ base ];
@ -66,12 +66,17 @@ let
wrapProgram $out/bin/${name} \
--prefix PATH : ${lib.makeBinPath extraPackages} \
--set INSIDE_NEOVIDE ${if name == "neovide" then "1" else "0"} \
--set NVIM_EXTRA_RUNTIME ${lib.strings.concatStringsSep "," extraRuntime}
--set NVIM_EXTRA_RUNTIME ${lib.strings.concatStringsSep "," extraRuntime} \
${extraArgs}
'';
};
neovim = wrapClient { base = pkgs.neovim-nightly; name = "nvim"; };
neovide = wrapClient { base = pkgs.neovide; name = "neovide"; };
neovide = wrapClient {
base = pkgs.neovide;
name = "neovide";
extraArgs = "--set NEOVIDE_MULTIGRID true";
};
in
{
# Do not manage neovim via nix
@ -82,6 +87,8 @@ in
symlink "${paths.dotfiles}/neovim" else
../../../../dotfiles/neovim;
home.sessionVariables.EDITOR = "nvim";
home.packages = [
neovim
neovide

View file

@ -4,5 +4,19 @@
./features/desktop/xmonad.nix
./features/desktop/common/discord.nix
./features/desktop/common/zathura.nix
./features/desktop/common/firefox.nix
];
home.packages = with pkgs; [
signal-desktop # Signal client
zoom-us # Zoom client 🤮
obsidian # Notes
peek # GIF recorder
vlc # Video player
gimp # Image editing
libreoffice # Free office suite
# obs-studio # video recorder
# lmms # music software
];
}

View file

@ -11,6 +11,10 @@
./wireless
];
age.identityPaths = [
"/etc/ssh/ssh_host_ed25519_key"
];
nixpkgs = {
# Add all overlays defined in the overlays directory
overlays = builtins.attrValues outputs.overlays ++ [

View file

@ -40,20 +40,6 @@
# TODO: what is a trusted user?
trusted-users = [ "root" "@wheel" ];
# {{{ Caching and whatnot
substituters = [
"https://cache.nixos.org" # Default nixos cache
"https://nix-community.cachix.org" # I think I need this for neovim-nightly?
"https://cm-idris2-pkgs.cachix.org" # Idris packages
"https://danth.cachix.org" # stylix
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cm-idris2-pkgs.cachix.org-1:YB2oJSEsD5oMJjAESxolC2GQtE6B5I6jkWhte2gtXjk="
"danth.cachix.org-1:wpodfSL7suXRc/rJDZZUptMa1t4MJ795hemRN0q84vI="
];
# }}}
};
};
}

View file

@ -19,19 +19,11 @@
enable = true;
group = "network";
};
# TODO: look into what this does
extraConfig = ''
update_config=1
'';
};
# Ensure group exists
users.groups.network = { };
# Convenient alias for connecting to wifi
environment.shellAliases.wifi = "sudo nmcli con up id";
# Persist imperative config
# environment.persistence = {
# "/persist".files = [

View file

@ -1,7 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 UUF9JQ Qc1AgNo+N/kjGhMVHa/QDPt5nRCtuC8BvNdxuwHHKRA
ZnOW8dIH2Sd5WDlvVA27hpp5AVHieJXIpwCmtg+dcp0
-> rD3(ZZw-grease ZvlDZ7| G|:Xj NsbyfDh L\'
hZeXb1QaqOPfJKTKYdB60pMyHt6G42sIEmfzNqRI/w
--- RFPqwBq0YPAoxa/g0gEmJmWTiYH6c77ZYR0snUIx0vE
æÀµÞêS©_!…º™s¥_i?·><3E>ËÉry <0C>V|ŽÞ^­ò:…ó>¯ÍúLˉQÃ~æð€<19>3W® O9eÛ(•æ<ÈyŒC JòÇRqrù
-> ssh-ed25519 UUF9JQ q9tidRTxf+4VeDopyrO7y970Qm94iwUPsQTVK+/YGjQ
YvjmIkVFwkIUk7OhQ1MglvcNGgXna2SgRSfMJtfOAkE
-> ssh-ed25519 qgVaDQ REcJWqJalQylWOSOVJT1jAJtQp6qnbztcyxo/2BDdE8
nnbnzYKKE99thYzXzODD/rSQggJgOV5Cl8ZniDfCsGY
-> L>-grease #efvc '0l?X`-h
F5xodFT3Tp+VpLJvE2R5PVkb43tm4VfbvTKLVIW0AuZ/wZWIedDinZx9i+gfWUsk
5U8rU6Ki3DdbOICZ
--- Cwoa81XsipVdO0hj9QeV60dYjHwEoS9FoDRSQ8/56oQ
èý£¯föÖ<EFBFBD>LoYs5ià¥L;”³ñÆ”=íú^.ôü»ŠÄ§˜Ö ˆ9ÅZΤøÓu¼</¶U¦ý5«X~±DíØ \moG

View file

@ -44,7 +44,7 @@ main =
("M-w", spawn "rofi -show window"),
("M-g", spawn myBrowser),
("M-d", spawn "Discord"),
("M-v", spawn "alacritty -e vimclip"),
("M-v", spawn "alacritty -e 'vimclip'"),
("M-s", spawn "spectacle -rcb"),
("M-S-s", spawn "spectacle -mcb"),
("M-C-s", spawn "spectacle -ucb"),
@ -61,11 +61,11 @@ main =
layouts = tall ||| Full
myLayoutHook = spacingHook layouts
startupApps =
[ (0, "alacritty"),
(1, "google-chrome-stable"),
(2, "Discord")
]
startupApps = []
-- [ (0, "alacritty"),
-- (1, "google-chrome-stable"),
-- (2, "Discord")
-- ]
startup :: X ()
startup = do

View file

@ -1,14 +1,4 @@
{ pkgs, ... }:
let
catpuccin-sddm = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "sddm";
sha256 = "1lg10dyxgz080qfcp6k3zk6374jlj067s6p5fgx5r135ivy8mrki";
rev = "bde6932e1ae0f8fdda76eff5c81ea8d3b7d653c0";
};
sddm-theme = "${catpuccin-sddm}/src/caputccin-latte";
in
{
services.xserver = {
enable = true;
@ -20,18 +10,17 @@ in
config = ./Main.hs;
};
# Proper wallpaper zooming
desktopManager.wallpaper.mode = "fill";
displayManager = {
# make xmonad session the default
defaultSession = "none+xmonad";
# enable sddm
# sddm = {
# enable = true;
# theme = sddm-theme;
# };
# enable startx
startx.enable = true;
# startx.enable = true;
sddm.enable = true;
# autoLogin = {
# enable = true;

View file

@ -1,4 +1,4 @@
{ pkgs, config, ... }:
{ pkgs, outputs, config, ... }:
let
# Record containing all the hosts
hosts = outputs.nixosConfigurations;
@ -10,12 +10,23 @@ in
# Password file stored through agenix
age.secrets.adrielusPassword.file = ./adrielus_password.age;
# Temporary stuff until I package my keyboard script
users.groups.uinput = { };
services.udev.extraRules =
''
# Access to /dev/uinput
KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
'';
users = {
# Configure users through nix only
mutableUsers = false;
# Create an user named adrielus
users.adrielus = {
# Make fish the default shell
shell = pkgs.fish;
# File containing my password, managed by agenix
passwordFile = config.age.secrets.adrielusPassword.path;
@ -28,21 +39,22 @@ in
"docker" # Allows me to use docker (?)
"audio" # Allows me to use audio devices
"video" # Allows me to use a webcam
"uinput" # I think this let's me write to virtual devices
"input" # Does this let me use evdev (?)
# TODO: find out why I added these here a long time ago
"sound"
"input"
"tty"
];
# Adds me to some default groups, and creates the home dir
isNormalUser = true;
};
openssh.authorizedKeys.keyFiles =
builtins.attrValues # attrsetof path -> path[]
(builtins.mapAttrs # ... -> attrsetof host -> attrsetof path
(name: _: idKey name) # string -> host -> path
hosts);
openssh.authorizedKeys.keyFiles =
builtins.attrValues # attrsetof path -> path[]
(builtins.mapAttrs # ... -> attrsetof host -> attrsetof path
(name: _: idKey name) # string -> host -> path
hosts);
};
};
}

View file

@ -1,8 +1,12 @@
age-encryption.org/v1
-> ssh-ed25519 UUF9JQ AWyd+vbllVT7QeD8xfu8D4NhxEA1RxwYCKwxGIrkIEw
m7/XC6vhyhHW5vY+48bxmBsb6Zfhof+mavhq1fdpd+U
-> E-grease s%$ F5jZ"f E(>8 x|#B"9
dilxxi2WlTIReh+uvkscDubze9MyfGaW7Tn22L6p8X8YZ40muPOtVaWkgQBv1OLo
SkccszU/cr1NEJm62YOPZGnmK96MwxA/ZWnlG5Ls/my47MqymDq7/1ySWKU5xA
--- wOqvODKflq/JZT0/Qssb8FEl/IDNou+yKMGPn/nI81Q
m>W¨u!ĚNą@˝ĎĎyB"űGÉłĆL'A)+)áĆE zQü$Ł"Z;w-
-> ssh-ed25519 UUF9JQ BIl9Xb3n31DCiJiEVdgSrS9Q8mV+QKHIz9pbaskbZkY
umx6izgXtyrI7x15bAB+NtpezVWuI1ohtV3N9g7KSDU
-> ssh-ed25519 qgVaDQ kYRngT8940XS/6SACGO86KxNlwOLx7iZFewv+6rGRF0
+a5xQXtda8sSBCyKPGNugfozqANpVmCzXowfC6JmleA
-> UpxQQ-grease $( d6} t4iN^
ovdi6zgEwERhuIeRtKdKn1FPOXIovnHzueGofkQ5kbIAQRH+RSBv3L5767h+YD5m
fKThMcdEvfwr92NHHCzPPJmigMbRUtQonDu4TGnB/XrNF8xEYiri+6S41e9CMQcQ
/F7W
--- bc2aF9M+2m+ZXrGsObUCYvZEvFhVEZnKTu/T81Lka0s
€Sï±ÙbÅ
ÔÚÐc•|$ô}Óˆ<CB86>Á&VÄ ·,RÜ™»Èˆˆ·Þ¡à_0Y Ä1÷pœ(„òÄz‡˜œ¦$`;P#JXÿŠPÆ0£¬ºŒï!Šè8mN}B#½ÅÓô|ÚoönsŒh

View file

@ -3,4 +3,5 @@
{ pkgs ? (import ../nixpkgs.nix) { } }: {
# example = pkgs.callPackage (import ./example.nix) {};
vimclip = pkgs.callPackage (import ./vimclip.nix) {};
}

27
pkgs/vimclip.nix Normal file
View file

@ -0,0 +1,27 @@
{ pkgs, ... }:
pkgs.stdenv.mkDerivation rec {
name = "vimclip";
rev = "7f53433";
src = pkgs.fetchFromGitHub {
inherit rev;
owner = "hrantzsch";
repo = "vimclip";
sha256 = "cl5y7Lli5frwx823hoN17B2aQLNY7+njmKEDdIbhc4Y=";
};
buildInputs = [
pkgs.makeWrapper
];
installPhase = ''
mkdir -p $out/bin
cp ./vimclip $out/bin/vimclip
chmod +x $out/bin/vimclip
'';
postFixup = ''
wrapProgram $out/bin/vimclip \
--prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.xsel ]} \
'';
}

View file

@ -1,8 +1,12 @@
let
adrielus = builtins.readFile ./hosts/nixos/tethys/id_ed25519.pub;
tethys = builtins.readFile ./hosts/nixos/tethys/ssh_host_ed25519_key.pub;
in
{
"./hosts/nixos/common/global/wireless/wifi_passwords.age".publicKeys = [ adrielus ];
"./hosts/nixos/common/users/adrielus_password.age".publicKeys = [ adrielus ];
# Scoped for entire systems
"./hosts/nixos/common/global/wireless/wifi_passwords.age".publicKeys = [ adrielus tethys ];
"./hosts/nixos/common/users/adrielus_password.age".publicKeys = [ adrielus tethys ];
# Scoped for the user
"./home/adrielus/features/desktop/common/wakatime/wakatime_config.age".publicKeys = [ adrielus ];
}