mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 00:57:22 +01:00
refactor: consolidate Nix.org and Emacs.org
The configuration options that used to be stored in Emacs.org and Nix.org are now no longer split into two files. Instead, there now is a single file SwarselSystems.org that holds both these configs.
This commit is contained in:
parent
bc8c52554d
commit
0e7daf0d13
24 changed files with 17061 additions and 8348 deletions
8
.github/README.md
vendored
8
.github/README.md
vendored
|
|
@ -23,10 +23,10 @@ That being said, there is a lot of general configuration that you *probably* can
|
|||
|
||||
The files that are possibly of biggest interest are found here:
|
||||
|
||||
- [SwarselSystems.org](../SwarselSystems.org)
|
||||
- [flake.nix](../flake.nix)
|
||||
- [Nix.org](../Nix.org)
|
||||
- [early-init.el](../programs/emacs/early-init.el)
|
||||
- [Emacs.org](../Emacs.org)
|
||||
- [init](../programs/emacs/init.el)
|
||||
|
||||
This is a nix flakes based setup that manages multiple hosts, including mixed (NixOS with home-manager as a submodule) as well as standalone home-manager machines, also using some overlays etc. There even is a configuration for an Android build. It is all wrapped in literal configuration .org files, because that allows me to have easy access without actually having to remember where the specific configuration files are all located. early-init.el is not tangled for the reason that adding it would break the emacs-overlay parsing.
|
||||
|
||||
|
|
@ -52,9 +52,9 @@ Below is a rough general guide to setup this system on a new NixOS host. **Again
|
|||
For a pure Home-Manager configuration, you need a few different steps. The biggest change is that you then want to call `home-manager --flake .#<your-username>@<your-hostname> switch` as the last step instead of `nixos-rebuild [...]`. A complete general guide for that case cannot really be given since you are most likely setting up the flake on a existing machine that already has a lot of configuration. If you are setting up a new system, I would recommend to use NixOS unless circumstances force you to use something else.
|
||||
|
||||
###### To do that:
|
||||
1) adapt [Nix.org](../Nix.org)
|
||||
1) adapt [SwarselSystems.org](../SwarselSystems.org)
|
||||
1) adapt system specific options:
|
||||
- Make a copy of "System Specific Configurations/TEMPLATE".
|
||||
- Make a copy of "System/System Specific Configurations/TEMPLATE".
|
||||
- Adapt all references to TEMPLATE to your host- and usernames etc - pay special attention to the header lines in each nix source block, i.e. the "#+begin_src nix [...] :tangle profiles/TEMPLATE/[...]" lines.
|
||||
|
||||
- Add the settings needed for your specific machine.
|
||||
|
|
|
|||
4076
Emacs.html
4076
Emacs.html
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
28
Wiki.org
28
Wiki.org
|
|
@ -62,6 +62,9 @@ This requires changes in multiple locations. As an example we will use an early
|
|||
|
||||
* Build a firefox addon
|
||||
|
||||
1) app id can be found in the manifest.json file of the .xpi (.xpi is just a normal archive)
|
||||
2) url can be found by copy url of the "add extension" button on the addon page
|
||||
3) the rest of the information is also found in the manifest.json, but might not be needed
|
||||
|
||||
#+begin_src nix configuration.nix
|
||||
programs.firefox = {
|
||||
|
|
@ -159,3 +162,28 @@ This requires changes in multiple locations. As an example we will use an early
|
|||
|
||||
* Patch a utilty for nix paths:
|
||||
See https://drakerossman.com/blog/how-to-patch-a-package-source-on-nixos
|
||||
* let-block for overriding a package in nixpkgs (here: replacing airsonic with airsonic-advanced)
|
||||
|
||||
This can be useful if a module does not let you use your own package yourself.
|
||||
|
||||
#+begin_src nix :tangle no
|
||||
|
||||
pkgs = import nixpkgs { inherit system;
|
||||
overlays = [ emacs-overlay.overlay
|
||||
nur.overlay
|
||||
nixgl.overlay
|
||||
(self: super: {
|
||||
airsonic = super.airsonic.overrideAttrs (_: rec {
|
||||
version = "11.0.2-kagemomiji";
|
||||
name = "airsonic-advanced-${version}";
|
||||
src = super.fetchurl {
|
||||
url = "https://github.com/kagemomiji/airsonic-advanced/releases/download/11.0.2/airsonic.war";
|
||||
sha256 = "PgErtEizHraZgoWHs5jYJJ5NsliDd9VulQfS64ackFo=";
|
||||
};
|
||||
});
|
||||
})
|
||||
];
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
|
||||
#+end_src
|
||||
|
|
|
|||
22
flake.lock
generated
22
flake.lock
generated
|
|
@ -917,27 +917,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pia": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1687263775,
|
||||
"narHash": "sha256-sSVNT3o+4RcdnUqdVloPc3UvM3LancTY6htyzAHrC0w=",
|
||||
"ref": "development",
|
||||
"rev": "190f8040cc4837fb6b3c43032711e1536ef2270b",
|
||||
"revCount": 10,
|
||||
"type": "git",
|
||||
"url": "https://git.sr.ht/~rprospero/nixos-pia"
|
||||
},
|
||||
"original": {
|
||||
"ref": "development",
|
||||
"type": "git",
|
||||
"url": "https://git.sr.ht/~rprospero/nixos-pia"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
|
|
@ -983,7 +962,6 @@
|
|||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs-mautrix-signal": "nixpkgs-mautrix-signal",
|
||||
"nur": "nur",
|
||||
"pia": "pia",
|
||||
"sops-nix": "sops-nix",
|
||||
"stylix": "stylix"
|
||||
}
|
||||
|
|
|
|||
18
flake.nix
18
flake.nix
|
|
@ -26,7 +26,7 @@
|
|||
# provides GL to non-NixOS hosts
|
||||
nixgl.url = github:guibou/nixGL;
|
||||
|
||||
# manages all themeing using Home-Manager
|
||||
# manages all theming using Home-Manager
|
||||
stylix.url = github:danth/stylix;
|
||||
|
||||
# nix secrets management
|
||||
|
|
@ -47,12 +47,6 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# privateinternetaccess nixos integration - not sure if I will keep using
|
||||
pia = {
|
||||
url = "git+https://git.sr.ht/~rprospero/nixos-pia?ref=development";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# provides expressions for mautrix-signal
|
||||
nixpkgs-mautrix-signal ={
|
||||
url = github:niklaskorz/nixpkgs/nixos-23.11-mautrix-signal;
|
||||
|
|
@ -88,7 +82,6 @@
|
|||
stylix,
|
||||
sops-nix,
|
||||
lanzaboote,
|
||||
pia,
|
||||
nixpkgs-mautrix-signal,
|
||||
nix-gaming,
|
||||
nixos-hardware,
|
||||
|
|
@ -255,7 +248,6 @@
|
|||
specialArgs = {inherit inputs pkgs; };
|
||||
modules = [
|
||||
sops-nix.nixosModules.sops
|
||||
pia.nixosModule
|
||||
./profiles/server1/transmission/nixos.nix
|
||||
];
|
||||
};
|
||||
|
|
@ -345,14 +337,6 @@
|
|||
|
||||
packages.x86_64-linux = {
|
||||
|
||||
proxmox-lxc = nixos-generators.nixosGenerate {
|
||||
inherit system;
|
||||
modules = [
|
||||
./profiles/server1/TEMPLATE/nixos.nix
|
||||
];
|
||||
format = "proxmox-lxc";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
|||
12574
index.html
Normal file
12574
index.html
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -126,14 +126,11 @@
|
|||
startup = [
|
||||
|
||||
{ command = "nextcloud --background";}
|
||||
# { command = "spotify";}
|
||||
{ command = "discord --start-minimized";}
|
||||
# { command = "element-desktop --hidden";}
|
||||
{ command = "element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds";}
|
||||
{ command = "ANKI_WAYLAND=1 anki";}
|
||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
|
||||
{ command = "nm-applet";}
|
||||
# { command = "sleep 60 && syncthingtray --wait"; }
|
||||
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/TEMPLATEwp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@
|
|||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
|
||||
# cura
|
||||
# cura
|
||||
(let cura5 = appimageTools.wrapType2 rec {
|
||||
name = "cura5";
|
||||
version = "5.4.0";
|
||||
|
|
@ -291,17 +291,6 @@
|
|||
'';
|
||||
})
|
||||
|
||||
# (pkgs.writeShellApplication {
|
||||
# name = "cdr";
|
||||
# runtimeInputs = [ pkgs.fzf ];
|
||||
# text = ''
|
||||
# cdr () {
|
||||
# cd "$( (find /home/swarsel/Documents/GitHub -maxdepth 1 && echo /home/swarsel/.dotfiles) | fzf )"
|
||||
# }
|
||||
# cdr
|
||||
# '';
|
||||
# })
|
||||
|
||||
(pkgs.writeShellApplication {
|
||||
name = "bak";
|
||||
text = ''
|
||||
|
|
@ -311,26 +300,15 @@
|
|||
|
||||
];
|
||||
|
||||
|
||||
# MIGHT NEED TO ENABLE THIS ON SURFACE!!
|
||||
|
||||
sops.defaultSopsFile = "${config.home.homeDirectory}/.dotfiles/secrets/general/secrets.yaml";
|
||||
sops.validateSopsFiles = false;
|
||||
|
||||
# sops.age.keyFile = "${config.home.homeDirectory}/.ssh/key.txt";
|
||||
# This will generate a new key if the key specified above does not exist
|
||||
# sops.age.generateKey = true;
|
||||
|
||||
# sops.gnupg.home = "/home/swarsel/.dotfiles/secrets/keys";
|
||||
# since we are using the home-manager implementation, we need to specify the runtime path for each secret
|
||||
sops.secrets.mrswarsel = {path = "/run/user/1000/secrets/mrswarsel";};
|
||||
sops.secrets.nautilus = {path = "/run/user/1000/secrets/nautilus";};
|
||||
sops.secrets.leon = {path = "/run/user/1000/secrets/leon";};
|
||||
sops.secrets.swarselmail = {path = "/run/user/1000/secrets/swarselmail";};
|
||||
sops.secrets.caldav = {path = "${config.home.homeDirectory}/.emacs.d/.caldav";};
|
||||
# sops.secrets.leon = { };
|
||||
# sops.secrets.nautilus = { };
|
||||
# sops.secrets.mrswarsel = { };
|
||||
|
||||
programs.ssh= {
|
||||
enable = true;
|
||||
|
|
@ -465,33 +443,6 @@ programs.ssh= {
|
|||
|
||||
stylix.targets.emacs.enable = false;
|
||||
|
||||
# fonts.fontconfig.enable = true;
|
||||
# gtk = {
|
||||
# enable = true;
|
||||
|
||||
# theme = {
|
||||
# name = "Arc-Dark";
|
||||
# package = pkgs.arc-theme;
|
||||
# };
|
||||
|
||||
# cursorTheme = {
|
||||
# name = "capitaine-cursors";
|
||||
# package = pkgs.capitaine-cursors;
|
||||
# };
|
||||
|
||||
# gtk3.extraConfig = {
|
||||
# Settings = ''
|
||||
# gtk-application-prefer-dark-theme=1
|
||||
# '';
|
||||
# };
|
||||
|
||||
# gtk4.extraConfig = {
|
||||
# Settings = ''
|
||||
# gtk-application-prefer-dark-theme=1
|
||||
# '';
|
||||
# };
|
||||
# };
|
||||
|
||||
xdg.desktopEntries = {
|
||||
|
||||
cura = {
|
||||
|
|
@ -518,8 +469,6 @@ xdg.desktopEntries = {
|
|||
# categories = [ "Application"];
|
||||
# };
|
||||
|
||||
# currently unused but kept for possible future use-case
|
||||
# not needed as long as schildichat is working properly
|
||||
element = {
|
||||
name = "Element Matrix Client";
|
||||
genericName = "Element";
|
||||
|
|
@ -552,14 +501,8 @@ home.file = {
|
|||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "bash ~/.dotfiles/scripts/editor.sh";
|
||||
EDITORBAK = "bash ~/.dotfiles/scripts/editor.sh";
|
||||
# GTK_THEME = "Arc-Dark";
|
||||
};
|
||||
|
||||
programs.password-store = {
|
||||
enable = true;
|
||||
package = pkgs.pass.withExtensions (exts: [exts.pass-otp]);
|
||||
};
|
||||
# zsh Integration is enabled by default for these
|
||||
programs.bottom.enable = true;
|
||||
programs.imv.enable = true;
|
||||
|
|
@ -575,11 +518,18 @@ programs.nix-index.enable = true;
|
|||
programs.ripgrep.enable = true;
|
||||
programs.pandoc.enable = true;
|
||||
programs.fzf.enable = true;
|
||||
programs.zoxide.enable = true;
|
||||
|
||||
programs.password-store = {
|
||||
enable = true;
|
||||
package = pkgs.pass.withExtensions (exts: [exts.pass-otp]);
|
||||
};
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
programs.zoxide.enable = true;
|
||||
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
icons = true;
|
||||
|
|
@ -589,6 +539,7 @@ programs.eza = {
|
|||
"--group-directories-first"
|
||||
];
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
aliases = {
|
||||
|
|
@ -631,19 +582,9 @@ programs.fuzzel = {
|
|||
settings = {
|
||||
main = {
|
||||
layer = "overlay";
|
||||
# font = "Monospace:size=8";
|
||||
lines = "10";
|
||||
width = "40";
|
||||
};
|
||||
colors = {
|
||||
# background="293744dd";
|
||||
# text="f8f8f2ff";
|
||||
# match="8be9fdff";
|
||||
# selection-match="8be9fdff";
|
||||
# selection="44475add";
|
||||
# selection-text="f8f8f2ff";
|
||||
# border="ffd700ff";
|
||||
};
|
||||
border.radius = "0";
|
||||
};
|
||||
};
|
||||
|
|
@ -760,7 +701,6 @@ programs.kitty = {
|
|||
"ctrl+shift+home" = "no_op";
|
||||
"ctrl+shift+end" = "no_op";
|
||||
};
|
||||
# theme = "citylights";
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
|
|
@ -945,7 +885,7 @@ accounts.email = {
|
|||
programs.emacs = {
|
||||
enable = true;
|
||||
package = (pkgs.emacsWithPackagesFromUsePackage {
|
||||
config = ../../Emacs.org; # tangling my Emacs.org file here instead of directly putting init.el allows avoidance of automatically installing packages in blocks using UTF-8 characters, which would break the nix evaluation happening in this line. This line is also the reason why (for now) the Emacs configuration lives in a different .org file
|
||||
config = ../../programs/emacs/init.el;
|
||||
package = pkgs.emacs-pgtk;
|
||||
alwaysEnsure = true;
|
||||
alwaysTangle = true;
|
||||
|
|
@ -1451,13 +1391,6 @@ programs.firefox = {
|
|||
don-t-fuck-with-paste
|
||||
plasma-integration
|
||||
|
||||
# build the rest of my firefox addons myself
|
||||
# app id can be found in the manifest.json file of the .xpi
|
||||
# (.xpi is just a normal archive)
|
||||
# url can be found by copy url of the "add extension" button on the addon page
|
||||
# the rest of the information is also found in the manifest.json, but might not be
|
||||
# needed
|
||||
|
||||
# (let version = "3.4.5.0";
|
||||
# in buildFirefoxXpiAddon {
|
||||
# pname = "bypass-paywalls-clean";
|
||||
|
|
@ -1475,7 +1408,6 @@ programs.firefox = {
|
|||
# };
|
||||
# })
|
||||
|
||||
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = ":emoji:";
|
||||
version = "0.1.3";
|
||||
|
|
@ -1542,13 +1474,6 @@ programs.firefox = {
|
|||
};
|
||||
};
|
||||
|
||||
# programs.browserpass = {
|
||||
# enable = true;
|
||||
# browsers = [
|
||||
# "firefox"
|
||||
# ];
|
||||
# };
|
||||
|
||||
services.gnome-keyring = {
|
||||
enable = true;
|
||||
};
|
||||
|
|
@ -1557,7 +1482,6 @@ services.mbsync = {
|
|||
enable = true;
|
||||
};
|
||||
|
||||
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
|
|
@ -1570,7 +1494,6 @@ services.syncthing = {
|
|||
};
|
||||
};
|
||||
|
||||
# this enables the emacs server
|
||||
services.emacs = {
|
||||
enable = true;
|
||||
# socketActivation.enable = false;
|
||||
|
|
@ -1763,12 +1686,6 @@ wayland.windowManager.sway = {
|
|||
class = ".*";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "opacity 0.95";
|
||||
criteria = {
|
||||
app_id = ".*";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "opacity 1";
|
||||
criteria = {
|
||||
|
|
@ -1790,13 +1707,13 @@ wayland.windowManager.sway = {
|
|||
{
|
||||
command = "opacity 0.8, sticky enable, border normal, move container to scratchpad";
|
||||
criteria = {
|
||||
title="kittyterm";
|
||||
title="^kittyterm$";
|
||||
};
|
||||
}
|
||||
{
|
||||
command = "opacity 0.95, sticky enable, border normal, move container to scratchpad";
|
||||
criteria = {
|
||||
title="spotifytui";
|
||||
title="^spotifytui$";
|
||||
};
|
||||
}
|
||||
# {
|
||||
|
|
|
|||
|
|
@ -5,25 +5,14 @@
|
|||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
|
||||
# login keymap
|
||||
services.xserver = {
|
||||
xkb.layout = "us";
|
||||
xkb.variant = "altgr-intl";
|
||||
};
|
||||
services.xserver = {
|
||||
xkb.layout = "us";
|
||||
xkb.variant = "altgr-intl";
|
||||
};
|
||||
|
||||
# mount NAS drive
|
||||
# works only at home, but w/e
|
||||
# fileSystems."/mnt/smb" = {
|
||||
# device = "//192.168.1.3/Eternor";
|
||||
# fsType = "cifs";
|
||||
# options = let
|
||||
# # this line prevents hanging on network split
|
||||
# automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
|
||||
# in ["${automount_opts},credentials=/etc/nixos/smb-secrets,uid=1000,gid=100"];
|
||||
# };
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
|
||||
# # enable flakes - urgent line!!
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
# use ozone for wayland - chromium apps
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
# wordlist for look
|
||||
|
|
@ -36,121 +25,107 @@
|
|||
gst-libav
|
||||
]);
|
||||
|
||||
# correct time between linux and windows
|
||||
time.hardwareClockInLocalTime = true;
|
||||
time.hardwareClockInLocalTime = true;
|
||||
|
||||
# dont style GRUB with stylix
|
||||
stylix.targets.grub.enable = false; # the styling makes grub more ugly
|
||||
# dont style GRUB with stylix
|
||||
stylix.targets.grub.enable = false; # the styling makes grub more ugly
|
||||
|
||||
# cura fix
|
||||
# xdg.portal = {
|
||||
# enable = true;
|
||||
# extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
# wlr.enable = true;
|
||||
# config = {
|
||||
# common = {
|
||||
# default = [
|
||||
# "*"
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# wayland-related
|
||||
security.polkit.enable = true;
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
security.polkit.enable = true;
|
||||
|
||||
# systemd
|
||||
# systemd
|
||||
systemd.extraConfig = ''
|
||||
DefaultTimeoutStartSec=60s
|
||||
DefaultTimeoutStopSec=15s
|
||||
'';
|
||||
|
||||
# audio
|
||||
sound.enable = true;
|
||||
# nixpkgs.config.pulseaudio = true;
|
||||
hardware.pulseaudio= {
|
||||
enable = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
hardware.enableAllFirmware = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
hardware.bluetooth.settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
};
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking.networkmanager.enable = true;
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
|
||||
time.timeZone = "Europe/Vienna";
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio= {
|
||||
enable = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_AT.UTF-8";
|
||||
LC_IDENTIFICATION = "de_AT.UTF-8";
|
||||
LC_MEASUREMENT = "de_AT.UTF-8";
|
||||
LC_MONETARY = "de_AT.UTF-8";
|
||||
LC_NAME = "de_AT.UTF-8";
|
||||
LC_NUMERIC = "de_AT.UTF-8";
|
||||
LC_PAPER = "de_AT.UTF-8";
|
||||
LC_TELEPHONE = "de_AT.UTF-8";
|
||||
LC_TIME = "de_AT.UTF-8";
|
||||
hardware.enableAllFirmware = true;
|
||||
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
hardware.bluetooth.settings = {
|
||||
General = {
|
||||
Enable = "Source,Sink,Media,Socket";
|
||||
};
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
time.timeZone = "Europe/Vienna";
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_AT.UTF-8";
|
||||
LC_IDENTIFICATION = "de_AT.UTF-8";
|
||||
LC_MEASUREMENT = "de_AT.UTF-8";
|
||||
LC_MONETARY = "de_AT.UTF-8";
|
||||
LC_NAME = "de_AT.UTF-8";
|
||||
LC_NUMERIC = "de_AT.UTF-8";
|
||||
LC_PAPER = "de_AT.UTF-8";
|
||||
LC_TELEPHONE = "de_AT.UTF-8";
|
||||
LC_TIME = "de_AT.UTF-8";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# yubikey packages
|
||||
gnupg
|
||||
yubikey-personalization
|
||||
yubikey-personalization-gui
|
||||
yubico-pam
|
||||
# yubioath-flutter
|
||||
# yubikey-manager
|
||||
# yubikey-manager-qt
|
||||
yubico-piv-tool
|
||||
# pinentry
|
||||
# yubikey packages
|
||||
gnupg
|
||||
yubikey-personalization
|
||||
yubikey-personalization-gui
|
||||
yubico-pam
|
||||
# yubioath-flutter
|
||||
# yubikey-manager
|
||||
# yubikey-manager-qt
|
||||
yubico-piv-tool
|
||||
# pinentry
|
||||
|
||||
# theme related
|
||||
gnome.adwaita-icon-theme
|
||||
# theme related
|
||||
gnome.adwaita-icon-theme
|
||||
|
||||
# kde-connect
|
||||
xdg-desktop-portal
|
||||
# kde-connect
|
||||
xdg-desktop-portal
|
||||
|
||||
# bluetooth
|
||||
bluez
|
||||
# bluetooth
|
||||
bluez
|
||||
|
||||
# lsp-related -------------------------------
|
||||
# nix
|
||||
# latex
|
||||
texlab
|
||||
ghostscript_headless
|
||||
# wireguard
|
||||
wireguard-tools
|
||||
# rust
|
||||
rust-analyzer
|
||||
clippy
|
||||
rustfmt
|
||||
# cpp
|
||||
clang-tools
|
||||
# + cuda
|
||||
cudatoolkit
|
||||
#lsp-bridge / python
|
||||
gcc
|
||||
gdb
|
||||
(python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
|
||||
# (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
|
||||
# --------------------------------------------
|
||||
# lsp-related -------------------------------
|
||||
# nix
|
||||
# latex
|
||||
texlab
|
||||
ghostscript_headless
|
||||
# wireguard
|
||||
wireguard-tools
|
||||
# rust
|
||||
rust-analyzer
|
||||
clippy
|
||||
rustfmt
|
||||
# cpp
|
||||
clang-tools
|
||||
# + cuda
|
||||
cudatoolkit
|
||||
#lsp-bridge / python
|
||||
gcc
|
||||
gdb
|
||||
(python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
|
||||
# (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
|
||||
# --------------------------------------------
|
||||
|
||||
(stdenv.mkDerivation {
|
||||
(stdenv.mkDerivation {
|
||||
name = "oama";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
name = "oama";
|
||||
url = "https://github.com/pdobsan/oama/releases/download/0.13.1/oama-0.13.1-Linux-x86_64-static.tgz";
|
||||
sha256 = "sha256-OTdCObVfnMPhgZxVtZqehgUXtKT1iyqozdkPIV+i3Gc=";
|
||||
name = "oama";
|
||||
url = "https://github.com/pdobsan/oama/releases/download/0.13.1/oama-0.13.1-Linux-x86_64-static.tgz";
|
||||
sha256 = "sha256-OTdCObVfnMPhgZxVtZqehgUXtKT1iyqozdkPIV+i3Gc=";
|
||||
};
|
||||
|
||||
phases = [
|
||||
|
|
@ -163,12 +138,9 @@ environment.systemPackages = with pkgs; [
|
|||
mv $out/oama-0.13.1-Linux-x86_64-static/oama $out/bin/
|
||||
'';
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
];
|
||||
];
|
||||
|
||||
programs.dconf.enable = true;
|
||||
programs.evince.enable = true;
|
||||
|
|
@ -184,13 +156,13 @@ environment.pathsToLink = [ "/share/zsh" ];
|
|||
|
||||
services.blueman.enable = true;
|
||||
|
||||
# enable scanners over network
|
||||
hardware.sane = {
|
||||
enable = true;
|
||||
extraBackends = [ pkgs.sane-airscan ];
|
||||
};
|
||||
# enable scanners over network
|
||||
hardware.sane = {
|
||||
enable = true;
|
||||
extraBackends = [ pkgs.sane-airscan ];
|
||||
};
|
||||
|
||||
# enable discovery and usage of network devices (esp. printers)
|
||||
# enable discovery and usage of network devices (esp. printers)
|
||||
services.printing.enable = true;
|
||||
services.printing.drivers = [
|
||||
pkgs.gutenprint
|
||||
|
|
@ -210,33 +182,32 @@ BrowseProtocols all
|
|||
openFirewall = true;
|
||||
};
|
||||
|
||||
# nautilus file manager
|
||||
services.gvfs.enable = true;
|
||||
services.gvfs.enable = true;
|
||||
|
||||
# Make CAPS work as a dual function ESC/CTRL key
|
||||
services.interception-tools = {
|
||||
enable = true;
|
||||
udevmonConfig = let
|
||||
dualFunctionKeysConfig = builtins.toFile "dual-function-keys.yaml" ''
|
||||
TIMING:
|
||||
TAP_MILLISEC: 200
|
||||
DOUBLE_TAP_MILLISEC: 0
|
||||
# Make CAPS work as a dual function ESC/CTRL key
|
||||
services.interception-tools = {
|
||||
enable = true;
|
||||
udevmonConfig = let
|
||||
dualFunctionKeysConfig = builtins.toFile "dual-function-keys.yaml" ''
|
||||
TIMING:
|
||||
TAP_MILLISEC: 200
|
||||
DOUBLE_TAP_MILLISEC: 0
|
||||
|
||||
MAPPINGS:
|
||||
- KEY: KEY_CAPSLOCK
|
||||
TAP: KEY_ESC
|
||||
HOLD: KEY_LEFTCTRL
|
||||
'';
|
||||
in ''
|
||||
- JOB: |
|
||||
${pkgs.interception-tools}/bin/intercept -g $DEVNODE \
|
||||
| ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dualFunctionKeysConfig} \
|
||||
| ${pkgs.interception-tools}/bin/uinput -d $DEVNODE
|
||||
DEVICE:
|
||||
EVENTS:
|
||||
EV_KEY: [KEY_CAPSLOCK]
|
||||
MAPPINGS:
|
||||
- KEY: KEY_CAPSLOCK
|
||||
TAP: KEY_ESC
|
||||
HOLD: KEY_LEFTCTRL
|
||||
'';
|
||||
};
|
||||
in ''
|
||||
- JOB: |
|
||||
${pkgs.interception-tools}/bin/intercept -g $DEVNODE \
|
||||
| ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dualFunctionKeysConfig} \
|
||||
| ${pkgs.interception-tools}/bin/uinput -d $DEVNODE
|
||||
DEVICE:
|
||||
EVENTS:
|
||||
EV_KEY: [KEY_CAPSLOCK]
|
||||
'';
|
||||
};
|
||||
|
||||
programs.ssh.startAgent = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -102,14 +102,11 @@
|
|||
startup = [
|
||||
|
||||
{ command = "nextcloud --background";}
|
||||
# { command = "spotify";}
|
||||
{ command = "discord --start-minimized";}
|
||||
# { command = "element-desktop --hidden";}
|
||||
{ command = "element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds";}
|
||||
{ command = "ANKI_WAYLAND=1 anki";}
|
||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
|
||||
{ command = "nm-applet";}
|
||||
# { command = "sleep 60 && syncthingtray --wait"; }
|
||||
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/lenovowp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -115,14 +115,11 @@
|
|||
startup = [
|
||||
|
||||
{ command = "nextcloud --background";}
|
||||
# { command = "spotify";}
|
||||
{ command = "discord --start-minimized";}
|
||||
# { command = "element-desktop --hidden";}
|
||||
{ command = "element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds";}
|
||||
{ command = "ANKI_WAYLAND=1 anki";}
|
||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
|
||||
{ command = "nm-applet";}
|
||||
# { command = "sleep 60 && syncthingtray --wait"; }
|
||||
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/lenovowp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -82,14 +82,11 @@
|
|||
startup = [
|
||||
|
||||
{ command = "nextcloud --background";}
|
||||
# { command = "spotify";}
|
||||
{ command = "discord --start-minimized";}
|
||||
# { command = "element-desktop --hidden";}
|
||||
{ command = "element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds";}
|
||||
{ command = "ANKI_WAYLAND=1 anki";}
|
||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
|
||||
{ command = "nm-applet";}
|
||||
# { command = "sleep 60 && syncthingtray --wait"; }
|
||||
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/standwp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/surfacewp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -89,14 +89,11 @@
|
|||
startup = [
|
||||
|
||||
{ command = "nextcloud --background";}
|
||||
# { command = "spotify";}
|
||||
{ command = "discord --start-minimized";}
|
||||
# { command = "element-desktop --hidden";}
|
||||
{ command = "element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds";}
|
||||
{ command = "ANKI_WAYLAND=1 anki";}
|
||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
|
||||
{ command = "nm-applet";}
|
||||
# { command = "sleep 60 && syncthingtray --wait"; }
|
||||
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/surfacewp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -115,14 +115,11 @@
|
|||
startup = [
|
||||
|
||||
{ command = "nextcloud --background";}
|
||||
# { command = "spotify";}
|
||||
{ command = "discord --start-minimized";}
|
||||
# { command = "element-desktop --hidden";}
|
||||
{ command = "element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds";}
|
||||
{ command = "ANKI_WAYLAND=1 anki";}
|
||||
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
|
||||
{ command = "nm-applet";}
|
||||
# { command = "sleep 60 && syncthingtray --wait"; }
|
||||
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
|
||||
stylix.image = ../../wallpaper/t14swp.png;
|
||||
|
||||
|
||||
stylix = {
|
||||
base16Scheme = ../../wallpaper/swarsel.yaml;
|
||||
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
|
||||
|
|
|
|||
|
|
@ -172,6 +172,12 @@ create a new one."
|
|||
(visual-fill-column-mode 1))
|
||||
|
||||
(defun swarsel/org-babel-tangle-config ()
|
||||
(when (string-equal (buffer-file-name)
|
||||
swarsel-swarsel-org-filepath)
|
||||
;; Dynamic scoping to the rescue
|
||||
(let ((org-confirm-babel-evaluate nil))
|
||||
(org-html-export-to-html)
|
||||
(org-babel-tangle)))
|
||||
(when (string-equal (buffer-file-name)
|
||||
swarsel-emacs-org-filepath)
|
||||
;; Dynamic scoping to the rescue
|
||||
|
|
@ -280,11 +286,13 @@ create a new one."
|
|||
;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal")
|
||||
;; "cs" '(markdown-download-screenshot :which-key "screenshot")
|
||||
"l" '(:ignore l :which-key "links")
|
||||
"le" '((lambda () (interactive) (find-file swarsel-emacs-org-filepath)) :which-key "Emacs.org")
|
||||
"lc" '((lambda () (interactive) (progn (find-file swarsel-swarsel-org-filepath) (org-overview) )) :which-key "SwarselSystems.org")
|
||||
"le" '((lambda () (interactive) (progn (find-file swarsel-swarsel-org-filepath) (goto-char (org-find-exact-headline-in-buffer "Emacs") ) (org-overview) (org-cycle) )) :which-key "Emacs.org")
|
||||
"ln" '((lambda () (interactive) (progn (find-file swarsel-swarsel-org-filepath) (goto-char (org-find-exact-headline-in-buffer "System") ) (org-overview) (org-cycle))) :which-key "Nixos.org")
|
||||
"ls" '((lambda () (interactive) (find-file "/smb:Swarsel@192.168.1.3:")) :which-key "Server")
|
||||
"lo" '(dired swarsel-obsidian-vault-directory :which-key "obsidian")
|
||||
;; "la" '((lambda () (interactive) (find-file swarsel-org-anki-filepath)) :which-key "anki")
|
||||
"ln" '((lambda () (interactive) (find-file swarsel-nix-org-filepath)) :which-key "Nix.org")
|
||||
;; "ln" '((lambda () (interactive) (find-file swarsel-nix-org-filepath)) :which-key "Nix.org")
|
||||
"lp" '((lambda () (interactive) (projectile-switch-project)) :which-key "switch project")
|
||||
"lg" '((lambda () (interactive) (magit-list-repositories)) :which-key "list git repos")
|
||||
;; "a" '(:ignore a :which-key "anki")
|
||||
|
|
@ -343,7 +351,9 @@ create a new one."
|
|||
swarsel-projects-directory "~/Documents/GitHub")
|
||||
|
||||
(setq swarsel-emacs-org-filepath (expand-file-name "Emacs.org" swarsel-dotfiles-directory)
|
||||
swarsel-nix-org-filepath (expand-file-name "Nix.org" swarsel-dotfiles-directory))
|
||||
swarsel-nix-org-filepath (expand-file-name "Nix.org" swarsel-dotfiles-directory)
|
||||
swarsel-swarsel-org-filepath (expand-file-name "SwarselSystems.org" swarsel-dotfiles-directory)
|
||||
)
|
||||
|
||||
|
||||
;; set Emacs main configuration .org names
|
||||
|
|
@ -368,11 +378,6 @@ create a new one."
|
|||
swarsel-org-tasks-filepath (expand-file-name swarsel-tasks-org-file swarsel-org-directory)
|
||||
swarsel-org-archive-filepath (expand-file-name swarsel-archive-org-file swarsel-org-directory))
|
||||
|
||||
;; set paths to authentication files (forge)
|
||||
;; (setq auth-source-pass-filename "~/.local/share/password-store"
|
||||
(setq auth-sources '( "~/.emacs.d/.caldav" "~/.emacs.d/.authinfo.gpg")
|
||||
auth-source-cache-expiry nil) ; default is 2h
|
||||
|
||||
;; Change the user-emacs-directory to keep unwanted things out of ~/.emacs.d
|
||||
(setq user-emacs-directory (expand-file-name "~/.cache/emacs/")
|
||||
url-history-file (expand-file-name "url/history" user-emacs-directory))
|
||||
|
|
@ -740,6 +745,9 @@ create a new one."
|
|||
|
||||
(setq-default indicate-buffer-boundaries t)
|
||||
|
||||
(setq auth-sources '( "~/.emacs.d/.caldav" "~/.emacs.d/.authinfo.gpg")
|
||||
auth-source-cache-expiry nil) ; default is 2h
|
||||
|
||||
(use-package org
|
||||
;;:diminish (org-indent-mode)
|
||||
:hook (org-mode . swarsel/org-mode-setup)
|
||||
|
|
@ -873,6 +881,7 @@ create a new one."
|
|||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(python . t)
|
||||
(js . t)
|
||||
(shell . t)
|
||||
))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue