feat: add startup commands as module

This commit is contained in:
Swarsel 2024-07-25 14:26:28 +02:00
parent 956c260268
commit 5e2aae9558
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
7 changed files with 156 additions and 78 deletions

View file

@ -2312,9 +2312,6 @@ This is basically just adjusted to the core count, path to the =hwmon= (this was
"XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle"; "XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle";
}; };
startup = [
<<startupnixos>>
];
}; };
}; };
} }
@ -4471,6 +4468,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
input = import ./input.nix; input = import ./input.nix;
nixos = import ./nixos.nix; nixos = import ./nixos.nix;
waybar = import ./waybar.nix; waybar = import ./waybar.nix;
startup = import ./startup.nix;
} }
#+end_src #+end_src
@ -4575,11 +4573,44 @@ in
#+begin_src nix :noweb yes :tangle modules/home/nixos.nix #+begin_src nix :noweb yes :tangle modules/home/nixos.nix
{ lib, config, ... }:
{
options.swarselsystems.isNixos = lib.mkEnableOption "nixos host";
config.swarselsystems.startup = lib.mkIf (!config.swarselsystems.isNixos) [
{ command = "sleep 60 && nixGL nextcloud --background";
}
{ command = "sleep 60 && nixGL discord --start-minimized -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
{ command = "sleep 60 && nixGL syncthingtray --wait"; }
{ command = "sleep 60 && ANKI_WAYLAND=1 nixGL anki"; }
{ command = "nm-applet --indicator"; }
{ command = "sleep 60 && OBSIDIAN_USE_WAYLAND=1 nixGL obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
{ command = "sleep 60 && element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
];
{ lib, config, ... }: }
{ #+end_src
options.swarselsystems.isNixos = lib.mkEnableOption "nixos host";
} ***** System startup
#+begin_src nix :tangle modules/home/startup.nix
{ lib, config, ... }:
let
inherit (lib) mkIf mkOption types;
in
{
options.swarselsystems.startup = mkOption {
type = types.listOf (types.attrsOf types.str);
default = [
{ command = "nextcloud --background"; }
{ command = "discord --start-minimized"; }
{ 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"; }
];
};
}
#+end_src #+end_src
** Common NixOS ** Common NixOS
@ -7331,7 +7362,7 @@ Currently, I am too lazy to explain every option here, but most of it is very se
output = (mapAttrs' eachMonitor monitors); output = (mapAttrs' eachMonitor monitors);
input = config.swarselsystems.standardinputs; input = config.swarselsystems.standardinputs;
workspaceOutputAssign = workplaceOutputs; workspaceOutputAssign = workplaceOutputs;
startup = [ startup = config.swarselsystems.startup ++ [
{ command = "kitty -T kittyterm"; } { command = "kitty -T kittyterm"; }
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; } { command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
]; ];

View file

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2024-07-24 Mi 19:48 --> <!-- 2024-07-24 Mi 20:15 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SwarselSystems: NixOS + Emacs Configuration</title> <title>SwarselSystems: NixOS + Emacs Configuration</title>
@ -223,7 +223,7 @@
<ul> <ul>
<li><a href="#h:8a411ee2-a58e-4b5b-99bd-4ba772f8f0a2">2.3.1. Inputs</a></li> <li><a href="#h:8a411ee2-a58e-4b5b-99bd-4ba772f8f0a2">2.3.1. Inputs</a></li>
<li><a href="#h:df0072bc-853f-438f-bd85-bfc869501015">2.3.2. let</a></li> <li><a href="#h:df0072bc-853f-438f-bd85-bfc869501015">2.3.2. let</a></li>
<li><a href="#org3ae2fbd">2.3.3. General (outputs)</a></li> <li><a href="#org013dc00">2.3.3. General (outputs)</a></li>
<li><a href="#h:9c9b9e3b-8771-44fa-ba9e-5056ae809655">2.3.4. nixosConfigurations</a></li> <li><a href="#h:9c9b9e3b-8771-44fa-ba9e-5056ae809655">2.3.4. nixosConfigurations</a></li>
<li><a href="#h:f881aa05-a670-48dd-a57b-2916abdcb692">2.3.5. homeConfigurations</a></li> <li><a href="#h:f881aa05-a670-48dd-a57b-2916abdcb692">2.3.5. homeConfigurations</a></li>
<li><a href="#h:5f6ef553-59f9-4239-b6f3-63d33b57f335">2.3.6. nixOnDroidConfigurations</a></li> <li><a href="#h:5f6ef553-59f9-4239-b6f3-63d33b57f335">2.3.6. nixOnDroidConfigurations</a></li>
@ -241,11 +241,11 @@
<li><a href="#h:4dc59747-9598-4029-aa7d-92bf186d6c06">3.1.3. Virtual hosts</a></li> <li><a href="#h:4dc59747-9598-4029-aa7d-92bf186d6c06">3.1.3. Virtual hosts</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org15986c9">3.2. Overlays, packages, and modules</a> <li><a href="#orgb2fc641">3.2. Overlays, packages, and modules</a>
<ul> <ul>
<li><a href="#orgdc2a12f">3.2.1. Packages</a></li> <li><a href="#org4fa151b">3.2.1. Packages</a></li>
<li><a href="#orgb9be189">3.2.2. Overlays</a></li> <li><a href="#org50d51a5">3.2.2. Overlays</a></li>
<li><a href="#org3b39c29">3.2.3. Modules</a></li> <li><a href="#orgd5ae4b9">3.2.3. Modules</a></li>
</ul> </ul>
</li> </li>
<li><a href="#h:1c1250cd-e9b4-4715-8d9f-eb09e64bfc7f">3.3. Common NixOS</a> <li><a href="#h:1c1250cd-e9b4-4715-8d9f-eb09e64bfc7f">3.3. Common NixOS</a>
@ -253,7 +253,7 @@
<li><a href="#h:45e4315b-0929-4c47-b65a-c8f0a685f4df">3.3.1. Imports, enable home-manager module</a></li> <li><a href="#h:45e4315b-0929-4c47-b65a-c8f0a685f4df">3.3.1. Imports, enable home-manager module</a></li>
<li><a href="#h:5a114da6-ef8d-404d-b31b-b51472908e77">3.3.2. General</a></li> <li><a href="#h:5a114da6-ef8d-404d-b31b-b51472908e77">3.3.2. General</a></li>
<li><a href="#h:d87d80fd-2ac7-4f29-b338-0518d06b4deb">3.3.3. sops</a></li> <li><a href="#h:d87d80fd-2ac7-4f29-b338-0518d06b4deb">3.3.3. sops</a></li>
<li><a href="#org3183835">3.3.4. Theme (stylix)</a></li> <li><a href="#orga4d670b">3.3.4. Theme (stylix)</a></li>
<li><a href="#h:0e7e8bea-ec58-499c-9731-09dddfc39532">3.3.5. System Packages</a></li> <li><a href="#h:0e7e8bea-ec58-499c-9731-09dddfc39532">3.3.5. System Packages</a></li>
<li><a href="#h:2bbf5f31-246d-4738-925f-eca40681f7b6">3.3.6. Programs (including zsh setup)</a></li> <li><a href="#h:2bbf5f31-246d-4738-925f-eca40681f7b6">3.3.6. Programs (including zsh setup)</a></li>
<li><a href="#h:79f3258f-ed9d-434d-b50a-e58d57ade2a7">3.3.7. Services</a></li> <li><a href="#h:79f3258f-ed9d-434d-b50a-e58d57ade2a7">3.3.7. Services</a></li>
@ -263,7 +263,7 @@
</li> </li>
<li><a href="#h:f0a6b5e0-2157-4522-b5e1-3f0abd91c05e">3.4. Common Home-Manager</a> <li><a href="#h:f0a6b5e0-2157-4522-b5e1-3f0abd91c05e">3.4. Common Home-Manager</a>
<ul> <ul>
<li><a href="#org9ffbdac">3.4.1. Imports</a></li> <li><a href="#orgd53e977">3.4.1. Imports</a></li>
<li><a href="#h:893a7f33-7715-415b-a895-2687ded31c18">3.4.2. Installed packages</a></li> <li><a href="#h:893a7f33-7715-415b-a895-2687ded31c18">3.4.2. Installed packages</a></li>
<li><a href="#h:d87d80fd-2ac7-4f29-b338-0518d06b4deb">3.4.3. sops</a></li> <li><a href="#h:d87d80fd-2ac7-4f29-b338-0518d06b4deb">3.4.3. sops</a></li>
<li><a href="#h:edd6720e-1f90-40bf-b6f9-30a19d4cae08">3.4.4. SSH Machines</a></li> <li><a href="#h:edd6720e-1f90-40bf-b6f9-30a19d4cae08">3.4.4. SSH Machines</a></li>
@ -272,7 +272,7 @@
<li><a href="#h:5ef03803-e150-41bc-b603-e80d60d96efc">3.4.7. Linking dotfiles</a></li> <li><a href="#h:5ef03803-e150-41bc-b603-e80d60d96efc">3.4.7. Linking dotfiles</a></li>
<li><a href="#h:4486b02f-4fb8-432b-bfa2-2e786206341d">3.4.8. Sourcing environment variables</a></li> <li><a href="#h:4486b02f-4fb8-432b-bfa2-2e786206341d">3.4.8. Sourcing environment variables</a></li>
<li><a href="#h:070a75ce-e209-4cda-aa25-e979bbf75d47">3.4.9. Programs</a></li> <li><a href="#h:070a75ce-e209-4cda-aa25-e979bbf75d47">3.4.9. Programs</a></li>
<li><a href="#org445cf6d">3.4.10. nix-index</a></li> <li><a href="#orgfa5fcac">3.4.10. nix-index</a></li>
<li><a href="#h:ac0e5e62-0dbf-4782-9a96-9e558eae86ae">3.4.11. password-store</a></li> <li><a href="#h:ac0e5e62-0dbf-4782-9a96-9e558eae86ae">3.4.11. password-store</a></li>
<li><a href="#h:1ab84307-b3fb-4c32-9def-4b89a53a8547">3.4.12. direnv</a></li> <li><a href="#h:1ab84307-b3fb-4c32-9def-4b89a53a8547">3.4.12. direnv</a></li>
<li><a href="#h:1bd6b0c7-f201-43e2-9624-6c50de00a1f6">3.4.13. eza</a></li> <li><a href="#h:1bd6b0c7-f201-43e2-9624-6c50de00a1f6">3.4.13. eza</a></li>
@ -339,7 +339,7 @@
<ul> <ul>
<li><a href="#h:99544398-72af-4382-b8e1-01b2221baff4">4.4.1. Org Mode</a></li> <li><a href="#h:99544398-72af-4382-b8e1-01b2221baff4">4.4.1. Org Mode</a></li>
<li><a href="#h:406c2ecc-0e3e-4d9f-9ae3-3eb1f8b87d1b">4.4.2. Nix Mode</a></li> <li><a href="#h:406c2ecc-0e3e-4d9f-9ae3-3eb1f8b87d1b">4.4.2. Nix Mode</a></li>
<li><a href="#orgf97ee02">4.4.3. nixpkgs-fmt</a></li> <li><a href="#org3ad700c">4.4.3. nixpkgs-fmt</a></li>
<li><a href="#h:50327461-a11b-4e81-830a-90febc720cfa">4.4.4. Markdown Mode</a></li> <li><a href="#h:50327461-a11b-4e81-830a-90febc720cfa">4.4.4. Markdown Mode</a></li>
<li><a href="#h:65e69741-9860-4ed0-bbed-7b7be9a2a9d6">4.4.5. Olivetti</a></li> <li><a href="#h:65e69741-9860-4ed0-bbed-7b7be9a2a9d6">4.4.5. Olivetti</a></li>
<li><a href="#h:94d4a0dc-b0d7-4702-b760-beeaa6da2b8f">4.4.6. darkroom</a></li> <li><a href="#h:94d4a0dc-b0d7-4702-b760-beeaa6da2b8f">4.4.6. darkroom</a></li>
@ -399,7 +399,7 @@
</div> </div>
</div> </div>
<p> <p>
<b>This file has 42328 words spanning 11435 lines and was last revised on 2024-07-24 19:48:15 +0200.</b> <b>This file has 42479 words spanning 11466 lines and was last revised on 2024-07-24 20:15:51 +0200.</b>
</p> </p>
<p> <p>
@ -449,7 +449,7 @@ This section defines my Emacs configuration. For a while, I considered to use ry
</p> </p>
<p> <p>
My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2024-07-24 19:48:15 +0200) My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2024-07-24 20:15:51 +0200)
</p></li> </p></li>
</ul> </ul>
@ -1071,8 +1071,8 @@ mixedModules = [
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org3ae2fbd" class="outline-4"> <div id="outline-container-org013dc00" class="outline-4">
<h4 id="org3ae2fbd"><span class="section-number-4">2.3.3.</span> General (outputs)</h4> <h4 id="org013dc00"><span class="section-number-4">2.3.3.</span> General (outputs)</h4>
<div class="outline-text-4" id="text-2-3-3"> <div class="outline-text-4" id="text-2-3-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix"> <pre class="src src-nix">
@ -2463,7 +2463,7 @@ in
</li> </li>
</ol> </ol>
</li> </li>
<li><a id="org2b06229"></a>Home-manager only<br /> <li><a id="org675821e"></a>Home-manager only<br />
<ol class="org-ol"> <ol class="org-ol">
<li><a id="h:483a26b5-5a40-4417-9ffb-67cc2cf07161"></a>Home manager<br /> <li><a id="h:483a26b5-5a40-4417-9ffb-67cc2cf07161"></a>Home manager<br />
<div class="outline-text-6" id="text-h:483a26b5-5a40-4417-9ffb-67cc2cf07161"> <div class="outline-text-6" id="text-h:483a26b5-5a40-4417-9ffb-67cc2cf07161">
@ -3137,16 +3137,6 @@ This is basically just adjusted to the core count, path to the <code>hwmon</code
"XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle"; "XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle";
}; };
startup = [
{ command = "nextcloud --background"; }
{ command = "discord --start-minimized"; }
{ 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"; }
];
}; };
}; };
} }
@ -5546,8 +5536,8 @@ in
</ol> </ol>
</div> </div>
</div> </div>
<div id="outline-container-org15986c9" class="outline-3"> <div id="outline-container-orgb2fc641" class="outline-3">
<h3 id="org15986c9"><span class="section-number-3">3.2.</span> Overlays, packages, and modules</h3> <h3 id="orgb2fc641"><span class="section-number-3">3.2.</span> Overlays, packages, and modules</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-3-2">
<p> <p>
In this section I define packages that I manually want to nixpkgs. This can be useful for packages that are currently awaiting a PR or public packages that I do not want to maintain. In this section I define packages that I manually want to nixpkgs. This can be useful for packages that are currently awaiting a PR or public packages that I do not want to maintain.
@ -5566,8 +5556,8 @@ These are for packages that are on nixpkgs, but do not fit my usecase, meaning I
This is simply a mirror of the most recent stable branch of nixpkgs. Useful for packages that are broken on nixpkgs, but do not need to be on bleeding edge anyways.</li> This is simply a mirror of the most recent stable branch of nixpkgs. Useful for packages that are broken on nixpkgs, but do not need to be on bleeding edge anyways.</li>
</ol> </ol>
</div> </div>
<div id="outline-container-orgdc2a12f" class="outline-4"> <div id="outline-container-org4fa151b" class="outline-4">
<h4 id="orgdc2a12f"><span class="section-number-4">3.2.1.</span> Packages</h4> <h4 id="org4fa151b"><span class="section-number-4">3.2.1.</span> Packages</h4>
<div class="outline-text-4" id="text-3-2-1"> <div class="outline-text-4" id="text-3-2-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix"> <pre class="src src-nix">
@ -5577,8 +5567,8 @@ _ : rec { }
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgb9be189" class="outline-4"> <div id="outline-container-org50d51a5" class="outline-4">
<h4 id="orgb9be189"><span class="section-number-4">3.2.2.</span> Overlays</h4> <h4 id="org50d51a5"><span class="section-number-4">3.2.2.</span> Overlays</h4>
<div class="outline-text-4" id="text-3-2-2"> <div class="outline-text-4" id="text-3-2-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix"> <pre class="src src-nix">
@ -5611,15 +5601,15 @@ _ : rec { }
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org3b39c29" class="outline-4"> <div id="outline-container-orgd5ae4b9" class="outline-4">
<h4 id="org3b39c29"><span class="section-number-4">3.2.3.</span> Modules</h4> <h4 id="orgd5ae4b9"><span class="section-number-4">3.2.3.</span> Modules</h4>
<div class="outline-text-4" id="text-3-2-3"> <div class="outline-text-4" id="text-3-2-3">
<p> <p>
In this section I define custom modules under the <code>swarsel</code> attribute. These are mostly used to define settings specific to a host. I keep these settings confined to either home-manager or nixos to maintain compatibility with non-NixOS machines. In this section I define custom modules under the <code>swarsel</code> attribute. These are mostly used to define settings specific to a host. I keep these settings confined to either home-manager or nixos to maintain compatibility with non-NixOS machines.
</p> </p>
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org65881fd"></a>NixOS<br /> <li><a id="orgfd4a627"></a>NixOS<br />
<div class="outline-text-5" id="text-3-2-3-1"> <div class="outline-text-5" id="text-3-2-3-1">
<p> <p>
Modules that need to be loaded on the NixOS level. Note that these will not be available on systems that are not running NixOS Modules that need to be loaded on the NixOS level. Note that these will not be available on systems that are not running NixOS
@ -5633,7 +5623,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
</div> </div>
</div> </div>
</li> </li>
<li><a id="org41424f3"></a>home-manager<br /> <li><a id="org9fff1fc"></a>home-manager<br />
<div class="outline-text-5" id="text-3-2-3-2"> <div class="outline-text-5" id="text-3-2-3-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix">{ <pre class="src src-nix">{
@ -5643,12 +5633,13 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
input = import ./input.nix; input = import ./input.nix;
nixos = import ./nixos.nix; nixos = import ./nixos.nix;
waybar = import ./waybar.nix; waybar = import ./waybar.nix;
startup = import ./startup.nix;
} }
</pre> </pre>
</div> </div>
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="org372363b"></a>Laptop<br /> <li><a id="orgee6c692"></a>Laptop<br />
<div class="outline-text-6" id="text-3-2-3-2-1"> <div class="outline-text-6" id="text-3-2-3-2-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }: <pre class="src src-nix">{ lib, config, ... }:
@ -5667,7 +5658,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
</div> </div>
</div> </div>
</li> </li>
<li><a id="org1a43836"></a>Hardware<br /> <li><a id="orgab64810"></a>Hardware<br />
<div class="outline-text-6" id="text-3-2-3-2-2"> <div class="outline-text-6" id="text-3-2-3-2-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix">{ lib, ... }: <pre class="src src-nix">{ lib, ... }:
@ -5682,7 +5673,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
</div> </div>
</div> </div>
</li> </li>
<li><a id="orga3e535a"></a>Waybar<br /> <li><a id="org51a27e6"></a>Waybar<br />
<div class="outline-text-6" id="text-3-2-3-2-3"> <div class="outline-text-6" id="text-3-2-3-2-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix"> { lib, config, ... }: <pre class="src src-nix"> { lib, config, ... }:
@ -5702,7 +5693,7 @@ in
</div> </div>
</div> </div>
</li> </li>
<li><a id="org089282a"></a>Monitors<br /> <li><a id="orgfa63069"></a>Monitors<br />
<div class="outline-text-6" id="text-3-2-3-2-4"> <div class="outline-text-6" id="text-3-2-3-2-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }: <pre class="src src-nix">{ lib, config, ... }:
@ -5719,7 +5710,7 @@ in
</div> </div>
</div> </div>
</li> </li>
<li><a id="org2e08e81"></a>Input<br /> <li><a id="org4cc013e"></a>Input<br />
<div class="outline-text-6" id="text-3-2-3-2-5"> <div class="outline-text-6" id="text-3-2-3-2-5">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }: <pre class="src src-nix">{ lib, config, ... }:
@ -5755,13 +5746,48 @@ in
</div> </div>
</div> </div>
</li> </li>
<li><a id="orgdef4498"></a>Nixos<br /> <li><a id="orgbc312da"></a>Nixos<br />
<div class="outline-text-6" id="text-3-2-3-2-6"> <div class="outline-text-6" id="text-3-2-3-2-6">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix"> <pre class="src src-nix">{ lib, config, ... }:
{ lib, config, ... }:
{ {
options.swarselsystems.isNixos = lib.mkEnableOption "nixos host"; options.swarselsystems.isNixos = lib.mkEnableOption "nixos host";
config.swarselsystems.startup = lib.mkIf (!config.swarselsystems.isNixos) [
{ command = "sleep 60 &amp;&amp; nixGL nextcloud --background";
}
{ command = "sleep 60 &amp;&amp; nixGL discord --start-minimized -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
{ command = "sleep 60 &amp;&amp; nixGL syncthingtray --wait"; }
{ command = "sleep 60 &amp;&amp; ANKI_WAYLAND=1 nixGL anki"; }
{ command = "nm-applet --indicator"; }
{ command = "sleep 60 &amp;&amp; OBSIDIAN_USE_WAYLAND=1 nixGL obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
{ command = "sleep 60 &amp;&amp; element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
];
}
</pre>
</div>
</div>
</li>
<li><a id="orgaf02f27"></a>System startup<br />
<div class="outline-text-6" id="text-3-2-3-2-7">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
let
inherit (lib) mkIf mkOption types;
in
{
options.swarselsystems.startup = mkOption {
type = types.listOf (types.attrsOf types.str);
default = [
{ command = "nextcloud --background"; }
{ command = "discord --start-minimized"; }
{ 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"; }
];
};
} }
</pre> </pre>
</div> </div>
@ -6317,8 +6343,8 @@ I use sops-nix to handle secrets that I want to have available on my machines at
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org3183835" class="outline-4"> <div id="outline-container-orga4d670b" class="outline-4">
<h4 id="org3183835"><span class="section-number-4">3.3.4.</span> Theme (stylix)</h4> <h4 id="orga4d670b"><span class="section-number-4">3.3.4.</span> Theme (stylix)</h4>
<div class="outline-text-4" id="text-3-3-4"> <div class="outline-text-4" id="text-3-3-4">
<p> <p>
By default, <a href="https://github.com/danth/stylix">stylix</a> wants to style GRUB as well. However, I think that looks horrible. By default, <a href="https://github.com/danth/stylix">stylix</a> wants to style GRUB as well. However, I think that looks horrible.
@ -6500,7 +6526,7 @@ Some programs profit from being installed through dedicated NixOS settings on sy
</div> </div>
</div> </div>
<ol class="org-ol"> <ol class="org-ol">
<li><a id="orgc391c14"></a>zsh<br /> <li><a id="org5acfafd"></a>zsh<br />
<div class="outline-text-5" id="text-3-3-6-1"> <div class="outline-text-5" id="text-3-3-6-1">
<p> <p>
Do not touch this. Do not touch this.
@ -6518,7 +6544,7 @@ Do not touch this.
</div> </div>
</div> </div>
</li> </li>
<li><a id="org7f4fe09"></a>syncthing<br /> <li><a id="org0cffac2"></a>syncthing<br />
<div class="outline-text-5" id="text-3-3-6-2"> <div class="outline-text-5" id="text-3-3-6-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-nix"> <pre class="src src-nix">
@ -6596,7 +6622,7 @@ Enables the blueman service including the nice system tray icon.
</div> </div>
</div> </div>
</li> </li>
<li><a id="orgc6e7436"></a>Network devices<br /> <li><a id="orgb2c4f50"></a>Network devices<br />
<div class="outline-text-5" id="text-3-3-7-2"> <div class="outline-text-5" id="text-3-3-7-2">
<p> <p>
In this section we enable compatibility with several network devices I have at home, mainly printers and scanners. In this section we enable compatibility with several network devices I have at home, mainly printers and scanners.
@ -6648,7 +6674,7 @@ services.printing = {
</div> </div>
</div> </div>
</li> </li>
<li><a id="org592de33"></a>Avahi (device discovery)<br /> <li><a id="org11c528f"></a>Avahi (device discovery)<br />
<div class="outline-text-6" id="text-3-3-7-2-3"> <div class="outline-text-6" id="text-3-3-7-2-3">
<p> <p>
Avahi is the service used for the network discovery. Avahi is the service used for the network discovery.
@ -6802,8 +6828,8 @@ This section houses the greetd related settings. I do not really want to use a d
<h3 id="h:f0a6b5e0-2157-4522-b5e1-3f0abd91c05e"><span class="section-number-3">3.4.</span> Common Home-Manager</h3> <h3 id="h:f0a6b5e0-2157-4522-b5e1-3f0abd91c05e"><span class="section-number-3">3.4.</span> Common Home-Manager</h3>
<div class="outline-text-3" id="text-h:f0a6b5e0-2157-4522-b5e1-3f0abd91c05e"> <div class="outline-text-3" id="text-h:f0a6b5e0-2157-4522-b5e1-3f0abd91c05e">
</div> </div>
<div id="outline-container-org9ffbdac" class="outline-4"> <div id="outline-container-orgd53e977" class="outline-4">
<h4 id="org9ffbdac"><span class="section-number-4">3.4.1.</span> Imports</h4> <h4 id="orgd53e977"><span class="section-number-4">3.4.1.</span> Imports</h4>
<div class="outline-text-4" id="text-3-4-1"> <div class="outline-text-4" id="text-3-4-1">
<p> <p>
This section sets up all the imports that are used in the home-manager section. This section sets up all the imports that are used in the home-manager section.
@ -7611,8 +7637,8 @@ This section is for programs that require no further configuration. zsh Integrat
</li> </li>
</ol> </ol>
</div> </div>
<div id="outline-container-org445cf6d" class="outline-4"> <div id="outline-container-orgfa5fcac" class="outline-4">
<h4 id="org445cf6d"><span class="section-number-4">3.4.10.</span> nix-index</h4> <h4 id="orgfa5fcac"><span class="section-number-4">3.4.10.</span> nix-index</h4>
<div class="outline-text-4" id="text-3-4-10"> <div class="outline-text-4" id="text-3-4-10">
<p> <p>
nix-index provides a way to find out which packages are provided by which derivations. By default it also comes with a replacement for <code>command-not-found.sh</code>, however, the implementation is based on a channel based setup. I like consistency, so I replace the command with one that provides a flakes-based output. nix-index provides a way to find out which packages are provided by which derivations. By default it also comes with a replacement for <code>command-not-found.sh</code>, however, the implementation is based on a channel based setup. I like consistency, so I replace the command with one that provides a flakes-based output.
@ -8771,7 +8797,7 @@ Currently, I am too lazy to explain every option here, but most of it is very se
output = (mapAttrs' eachMonitor monitors); output = (mapAttrs' eachMonitor monitors);
input = config.swarselsystems.standardinputs; input = config.swarselsystems.standardinputs;
workspaceOutputAssign = workplaceOutputs; workspaceOutputAssign = workplaceOutputs;
startup = [ startup = config.swarselsystems.startup ++ [
{ command = "kitty -T kittyterm"; } { command = "kitty -T kittyterm"; }
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; } { command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
]; ];
@ -9956,7 +9982,7 @@ The standard Emacs behaviour for the Python process shell is a bit annoying. Thi
</div> </div>
</div> </div>
</li> </li>
<li><a id="org368b69d"></a>Nix common prefix bracketer<br /> <li><a id="orgaf8afe3"></a>Nix common prefix bracketer<br />
<div class="outline-text-5" id="text-4-2-1-15"> <div class="outline-text-5" id="text-4-2-1-15">
<p> <p>
This function searches for common delimiters in region and removes them, summarizing all captured lines by it. This function searches for common delimiters in region and removes them, summarizing all captured lines by it.
@ -9989,7 +10015,7 @@ This function searches for common delimiters in region and removes them, summari
</div> </div>
</div> </div>
</li> </li>
<li><a id="org83549cd"></a>Nix formatters<br /> <li><a id="org46226b9"></a>Nix formatters<br />
<div class="outline-text-5" id="text-4-2-1-16"> <div class="outline-text-5" id="text-4-2-1-16">
<p> <p>
This formats the org code block at <code>point</code> in accordance to the <code>nixpkgs-fmt</code> formatter This formats the org code block at <code>point</code> in accordance to the <code>nixpkgs-fmt</code> formatter
@ -11562,8 +11588,8 @@ This adds a rudimentary nix-mode to Emacs. I have not really tried this out, as
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgf97ee02" class="outline-4"> <div id="outline-container-org3ad700c" class="outline-4">
<h4 id="orgf97ee02"><span class="section-number-4">4.4.3.</span> nixpkgs-fmt</h4> <h4 id="org3ad700c"><span class="section-number-4">4.4.3.</span> nixpkgs-fmt</h4>
<div class="outline-text-4" id="text-4-4-3"> <div class="outline-text-4" id="text-4-4-3">
<p> <p>
Adds functions for formatting nix code. Adds functions for formatting nix code.
@ -13578,7 +13604,7 @@ My laptop, sadly soon to be replaced by a new one, since most basic functions ar
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Leon Schwarzäugl</p> <p class="author">Author: Leon Schwarzäugl</p>
<p class="date">Created: 2024-07-24 Mi 19:48</p> <p class="date">Created: 2024-07-24 Mi 20:15</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p> <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div> </div>
</body> </body>

View file

@ -5,4 +5,5 @@
input = import ./input.nix; input = import ./input.nix;
nixos = import ./nixos.nix; nixos = import ./nixos.nix;
waybar = import ./waybar.nix; waybar = import ./waybar.nix;
startup = import ./startup.nix;
} }

View file

@ -1,4 +1,16 @@
{ lib, config, ... }: { lib, config, ... }:
{ {
options.swarselsystems.isNixos = lib.mkEnableOption "nixos host"; options.swarselsystems.isNixos = lib.mkEnableOption "nixos host";
config.swarselsystems.startup = lib.mkIf (!config.swarselsystems.isNixos) [
{
command = "sleep 60 && nixGL nextcloud --background";
}
{ command = "sleep 60 && nixGL discord --start-minimized -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
{ command = "sleep 60 && nixGL syncthingtray --wait"; }
{ command = "sleep 60 && ANKI_WAYLAND=1 nixGL anki"; }
{ command = "nm-applet --indicator"; }
{ command = "sleep 60 && OBSIDIAN_USE_WAYLAND=1 nixGL obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland"; }
{ command = "sleep 60 && element-desktop --hidden -enable-features=UseOzonePlatform -ozone-platform=wayland --disable-gpu-driver-bug-workarounds"; }
];
} }

18
modules/home/startup.nix Normal file
View file

@ -0,0 +1,18 @@
{ lib, config, ... }:
let
inherit (lib) mkIf mkOption types;
in
{
options.swarselsystems.startup = mkOption {
type = types.listOf (types.attrsOf types.str);
default = [
{ command = "nextcloud --background"; }
{ command = "discord --start-minimized"; }
{ 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"; }
];
};
}

View file

@ -114,7 +114,7 @@ in
output = (mapAttrs' eachMonitor monitors); output = (mapAttrs' eachMonitor monitors);
input = config.swarselsystems.standardinputs; input = config.swarselsystems.standardinputs;
workspaceOutputAssign = workplaceOutputs; workspaceOutputAssign = workplaceOutputs;
startup = [ startup = config.swarselsystems.startup ++ [
{ command = "kitty -T kittyterm"; } { command = "kitty -T kittyterm"; }
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; } { command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
]; ];

View file

@ -74,16 +74,6 @@
"XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle"; "XF86AudioMute" = "pactl set-sink-mute alsa_output.pci-0000_08_00.6.HiFi__hw_Generic_1__sink toggle";
}; };
startup = [
{ command = "nextcloud --background"; }
{ command = "discord --start-minimized"; }
{ 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"; }
];
}; };
}; };
} }