mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
refactor: dynamically manage most imports
This commit is contained in:
parent
6279713ab5
commit
c8089780d7
17 changed files with 171 additions and 225 deletions
|
|
@ -304,8 +304,6 @@ When setting this option normally, the password would normally be written world-
|
||||||
|
|
||||||
Here I define a few variables that I need for my system specifications. First and foremost, =pkgs=, which gets passed the emacs-overlay, nur, and nixgl modules to it. With this, I can grab all these packages by referencing =pkgs.<name>= instead of having to put e.g. =nixgl.auto.nixGLDefault=.
|
Here I define a few variables that I need for my system specifications. First and foremost, =pkgs=, which gets passed the emacs-overlay, nur, and nixgl modules to it. With this, I can grab all these packages by referencing =pkgs.<name>= instead of having to put e.g. =nixgl.auto.nixGLDefault=.
|
||||||
|
|
||||||
I also define some common module lists that I can simply load depending on the fundamental system (NixOS vs. non-NixOS) - =nixModules=, =homeModules=, and =mixedModules=.
|
|
||||||
|
|
||||||
The interesting part is in the start:
|
The interesting part is in the start:
|
||||||
- first, I define =pkgsFor=. This function reads all available systems from nixpkgs and generates pkgs for them.
|
- first, I define =pkgsFor=. This function reads all available systems from nixpkgs and generates pkgs for them.
|
||||||
- next, =forEachSystem= is a function that can be called to declare an output for each such defined system.
|
- next, =forEachSystem= is a function that can be called to declare an output for each such defined system.
|
||||||
|
|
@ -319,29 +317,10 @@ The interesting part is in the start:
|
||||||
lib = (nixpkgs.lib // home-manager.lib).extend (_: _: { swarselsystems = import ./lib { inherit self lib inputs outputs systems; }; });
|
lib = (nixpkgs.lib // home-manager.lib).extend (_: _: { swarselsystems = import ./lib { inherit self lib inputs outputs systems; }; });
|
||||||
|
|
||||||
|
|
||||||
# NixOS modules that can only be used on NixOS systems
|
|
||||||
nixModules = [
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.nswitch-rcm-nix.nixosModules.nswitch-rcm
|
|
||||||
inputs.nix-topology.nixosModules.default
|
|
||||||
./profiles/nixos/common
|
|
||||||
];
|
|
||||||
|
|
||||||
# Home-Manager modules wanted on non-NixOS systems
|
# Home-Manager modules wanted on non-NixOS systems
|
||||||
homeModules = [
|
|
||||||
inputs.stylix.homeManagerModules.stylix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Home-Manager modules wanted on both NixOS and non-NixOS systems
|
# Home-Manager modules wanted on both NixOS and non-NixOS systems
|
||||||
mixedModules = [
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
|
||||||
./profiles/home/common
|
|
||||||
];
|
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
** General (outputs)
|
** General (outputs)
|
||||||
|
|
@ -366,7 +345,7 @@ In this section I am creating some attributes that define general concepts of my
|
||||||
|
|
||||||
#+begin_src nix :tangle no :noweb-ref flakeoutputgeneral
|
#+begin_src nix :tangle no :noweb-ref flakeoutputgeneral
|
||||||
|
|
||||||
inherit lib nixModules mixedModules homeModules;
|
inherit lib;
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos { inherit lib; };
|
nixosModules = import ./modules/nixos { inherit lib; };
|
||||||
homeManagerModules = import ./modules/home { inherit lib; };
|
homeManagerModules = import ./modules/home { inherit lib; };
|
||||||
|
|
@ -611,7 +590,7 @@ This is the template that I use for new deployments of personal machines. Server
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+begin_src nix :tangle templates/hosts/nixos/default.nix
|
#+begin_src nix :tangle templates/hosts/nixos/default.nix
|
||||||
{ self, inputs, outputs, config, pkgs, lib, ... }:
|
{ self, inputs, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
sharedOptions = {
|
sharedOptions = {
|
||||||
|
|
@ -620,7 +599,7 @@ This is the template that I use for new deployments of personal machines. Server
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.nixModules ++ [
|
imports = [
|
||||||
# ---- nixos-hardware here ----
|
# ---- nixos-hardware here ----
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
@ -634,19 +613,11 @@ This is the template that I use for new deployments of personal machines. Server
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = outputs.mixedModules ++ [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/optional/gaming.nix"
|
"${profilesPath}/home/optional/gaming.nix"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules);
|
];
|
||||||
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = [ outputs.overlays.default ];
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
||||||
|
|
@ -840,7 +811,7 @@ My work machine. Built for more security, this is the gold standard of my config
|
||||||
:CUSTOM_ID: h:567c0055-f5f7-4e53-8f13-d767d7166e9d
|
:CUSTOM_ID: h:567c0055-f5f7-4e53-8f13-d767d7166e9d
|
||||||
:END:
|
:END:
|
||||||
#+begin_src nix :tangle hosts/nixos/nbl-imba-2/default.nix
|
#+begin_src nix :tangle hosts/nixos/nbl-imba-2/default.nix
|
||||||
{ self, inputs, outputs, pkgs, lib, ... }:
|
{ self, inputs, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
sharedOptions = {
|
sharedOptions = {
|
||||||
|
|
@ -850,12 +821,12 @@ My work machine. Built for more security, this is the gold standard of my config
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.nixModules ++ [
|
imports = [
|
||||||
inputs.nixos-hardware.nixosModules.framework-16-7040-amd
|
inputs.nixos-hardware.nixosModules.framework-16-7040-amd
|
||||||
inputs.fw-fanctrl.nixosModules.default
|
inputs.fw-fanctrl.nixosModules.default
|
||||||
|
|
||||||
./hardware-configuration.nix
|
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/virtualbox.nix"
|
"${profilesPath}/nixos/optional/virtualbox.nix"
|
||||||
# "${profilesPath}/nixos/optional/vmware.nix"
|
# "${profilesPath}/nixos/optional/vmware.nix"
|
||||||
|
|
@ -866,12 +837,12 @@ My work machine. Built for more security, this is the gold standard of my config
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = outputs.mixedModules ++ [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/optional/gaming.nix"
|
"${profilesPath}/home/optional/gaming.nix"
|
||||||
"${profilesPath}/home/optional/work.nix"
|
"${profilesPath}/home/optional/work.nix"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1203,15 +1174,13 @@ This is my main server that I run at home. It handles most tasks that require bi
|
||||||
:CUSTOM_ID: h:8ad68406-4a75-45ba-97ad-4c310b921124
|
:CUSTOM_ID: h:8ad68406-4a75-45ba-97ad-4c310b921124
|
||||||
:END:
|
:END:
|
||||||
#+begin_src nix :tangle hosts/nixos/winters/default.nix
|
#+begin_src nix :tangle hosts/nixos/winters/default.nix
|
||||||
{ self, inputs, outputs, ... }:
|
{ self, inputs, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
|
|
@ -1221,10 +1190,9 @@ This is my main server that I run at home. It handles most tasks that require bi
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/server"
|
"${profilesPath}/home/server"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
|
];
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader.systemd-boot.enable = true;
|
loader.systemd-boot.enable = true;
|
||||||
|
|
@ -1324,22 +1292,8 @@ This is my main server that I run at home. It handles most tasks that require bi
|
||||||
A Mac notebook that I have received from work. I use this machine for getting accustomed to the Apple ecosystem as well as as a sandbox for nix-darwin configurations.
|
A Mac notebook that I have received from work. I use this machine for getting accustomed to the Apple ecosystem as well as as a sandbox for nix-darwin configurations.
|
||||||
|
|
||||||
#+begin_src nix :tangle hosts/darwin/nbm-imba-166/default.nix
|
#+begin_src nix :tangle hosts/darwin/nbm-imba-166/default.nix
|
||||||
{ self, inputs, outputs, ... }:
|
{ lib, ... }:
|
||||||
let
|
|
||||||
profilesPath = "${self}/profiles";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
|
||||||
"${profilesPath}/darwin/nixos/common"
|
|
||||||
|
|
||||||
inputs.home-manager.darwinModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.users."leon.schwarzaeugl".imports = [
|
|
||||||
"${profilesPath}/darwin/home"
|
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
}
|
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
|
|
||||||
# Auto upgrade nix package and the daemon service.
|
# Auto upgrade nix package and the daemon service.
|
||||||
services.nix-daemon.enable = true;
|
services.nix-daemon.enable = true;
|
||||||
|
|
@ -1437,13 +1391,12 @@ This machine mainly acts as an external sync helper. It manages the following th
|
||||||
All of these are processes that use little cpu but can take a lot of storage. For this I use a free Ampere instance from OCI with 50G of space. In case my account gets terminated, all of this data is easily replaceable or backed up regularly anyways.
|
All of these are processes that use little cpu but can take a lot of storage. For this I use a free Ampere instance from OCI with 50G of space. In case my account gets terminated, all of this data is easily replaceable or backed up regularly anyways.
|
||||||
|
|
||||||
#+begin_src nix :tangle hosts/nixos/sync/default.nix
|
#+begin_src nix :tangle hosts/nixos/sync/default.nix
|
||||||
{ self, inputs, outputs, lib, ... }:
|
{ self, inputs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
|
|
||||||
"${profilesPath}/nixos/server"
|
"${profilesPath}/nixos/server"
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
@ -1452,16 +1405,14 @@ This machine mainly acts as an external sync helper. It manages the following th
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/server"
|
"${profilesPath}/home/server"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
|
];
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
defaultSopsFile = lib.mkForce "/root/.dotfiles/secrets/sync/secrets.yaml";
|
defaultSopsFile = lib.mkForce "/root/.dotfiles/secrets/sync/secrets.yaml";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
"sync.swarsel.win" = {
|
"sync.swarsel.win" = {
|
||||||
|
|
@ -1560,14 +1511,9 @@ This is a slim setup for developing base configuration. I do not track the hardw
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
"${self}/hosts/nixos/toto/disk-config.nix"
|
"${self}/hosts/nixos/toto/disk-config.nix"
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
"${profilesPath}/nixos/common/settings.nix"
|
"${profilesPath}/nixos/common/settings.nix"
|
||||||
"${profilesPath}/nixos/common/home-manager.nix"
|
"${profilesPath}/nixos/common/home-manager.nix"
|
||||||
|
|
@ -1585,7 +1531,6 @@ This is a slim setup for developing base configuration. I do not track the hardw
|
||||||
"${profilesPath}/home/common/settings.nix"
|
"${profilesPath}/home/common/settings.nix"
|
||||||
"${profilesPath}/home/common/sops.nix"
|
"${profilesPath}/home/common/sops.nix"
|
||||||
"${profilesPath}/home/common/ssh.nix"
|
"${profilesPath}/home/common/ssh.nix"
|
||||||
|
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
|
@ -1812,11 +1757,6 @@ Also, an initial bash history is provided to allow for a very quick local deploy
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
||||||
"${modulesPath}/installer/cd-dvd/channel.nix"
|
"${modulesPath}/installer/cd-dvd/channel.nix"
|
||||||
|
|
||||||
|
|
@ -1934,7 +1874,12 @@ This is the "reference implementation" of a setup that runs without NixOS, only
|
||||||
{ self, outputs, config, ... }:
|
{ self, outputs, config, ... }:
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.homeModules ++ outputs.mixedModules ++ (builtins.attrValues outputs.homeManagerModules);
|
imports = [
|
||||||
|
inputs.stylix.homeManagerModules.stylix
|
||||||
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
|
./profiles/home/common
|
||||||
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
overlays = [ outputs.overlays.default ];
|
overlays = [ outputs.overlays.default ];
|
||||||
|
|
@ -1978,31 +1923,16 @@ I also set the =WLR_RENDERER_ALLOW_SOFTWARE=1= to allow this configuration to ru
|
||||||
|
|
||||||
|
|
||||||
#+begin_src nix :tangle hosts/nixos/chaostheatre/default.nix
|
#+begin_src nix :tangle hosts/nixos/chaostheatre/default.nix
|
||||||
{ self, inputs, outputs, pkgs, lib, ... }:
|
{ self, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.nixModules ++ [
|
imports = [
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
|
];
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.users.swarsel.imports = outputs.mixedModules ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
}
|
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = [ outputs.overlays.default ];
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
||||||
|
|
@ -4193,11 +4123,11 @@ Do not that =syncthingtray= is also not mentioned here. It is installed as a hom
|
||||||
Again, I set the wallpaper here for =stylix=.
|
Again, I set the wallpaper here for =stylix=.
|
||||||
|
|
||||||
#+begin_src nix :tangle modules/home/wallpaper.nix
|
#+begin_src nix :tangle modules/home/wallpaper.nix
|
||||||
{ lib, ... }:
|
{ self, lib, ... }:
|
||||||
{
|
{
|
||||||
options.swarselsystems.wallpaper = lib.mkOption {
|
options.swarselsystems.wallpaper = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.path;
|
||||||
default = "";
|
default = self + /wallpaper/lenovowp.png;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4448,6 +4378,12 @@ This section defines all functions of my own that I add to =lib=. These are used
|
||||||
|
|
||||||
A breakdown of each function:
|
A breakdown of each function:
|
||||||
|
|
||||||
|
TODO
|
||||||
|
- =mkFullHost=:
|
||||||
|
This function is used in mkFullHostConfigs. It basically dynamically creates a nixosConfiguration host, setting its =speciaArgs= and =modules= attributes. The modules are populated based on whether this is a NixOS or darwin host. For the latter, I will only ever use machines that I get for testing from work, and for these my username is different, so I implemented an if-condition for it. This could be done more cleanly using variables, but some care needs to be taken with the home-manager imports and this approach works, so for now this is fine. Thanks to this function, the import sections of the host configs are pretty clean for most hosts.
|
||||||
|
=lib.optionals= evaluates to an empty list (=[]=) in case that the conditional is not met.
|
||||||
|
TODO
|
||||||
|
|
||||||
#+begin_src nix :tangle lib/default.nix
|
#+begin_src nix :tangle lib/default.nix
|
||||||
{ self, lib, systems, inputs, outputs, ... }:
|
{ self, lib, systems, inputs, outputs, ... }:
|
||||||
{
|
{
|
||||||
|
|
@ -4482,7 +4418,45 @@ A breakdown of each function:
|
||||||
in
|
in
|
||||||
systemFunc {
|
systemFunc {
|
||||||
specialArgs = { inherit inputs outputs lib self; };
|
specialArgs = { inherit inputs outputs lib self; };
|
||||||
modules = [ "${self}/hosts/${type}/${host}" ];
|
modules = [
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.lanzaboote.nixosModules.lanzaboote
|
||||||
|
"${self}/hosts/${type}/${host}"
|
||||||
|
] ++
|
||||||
|
# toto (deployment sandbox) & iso should never receive general configuration
|
||||||
|
(if (host == "toto" || host == "iso") then [ ] else
|
||||||
|
(
|
||||||
|
# sync & winters (servers) should not receive common non-server config
|
||||||
|
(if (host == "winters" || host == "sync") then [ ] else [
|
||||||
|
"${self}/profiles/${type}/common"
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
inputs.nswitch-rcm-nix.nixosModules.nswitch-rcm
|
||||||
|
inputs.nix-topology.nixosModules.default
|
||||||
|
]) ++ (if (type == "nixos") then [
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users.swarsel.imports = (
|
||||||
|
# sync & winters (servers) should not receive common non-server config
|
||||||
|
if (host == "winters" || host == "sync") then [ ] else [
|
||||||
|
"${self}/profiles/home/common"
|
||||||
|
]
|
||||||
|
) ++ [
|
||||||
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
}
|
||||||
|
] else [
|
||||||
|
"${self}/profiles/darwin/nixos/common"
|
||||||
|
inputs.home-manager.darwinModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users."leon.schwarzaeugl".imports = [
|
||||||
|
"${self}/profiles/darwin/home"
|
||||||
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
}
|
||||||
|
]) ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules)
|
||||||
|
));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4491,7 +4465,8 @@ A breakdown of each function:
|
||||||
let
|
let
|
||||||
systemFunc = if (type == "home") then inputs.home-manager.lib.homeManagerConfiguration else inputs.nix-on-droid.lib.nixOnDroidConfiguration;
|
systemFunc = if (type == "home") then inputs.home-manager.lib.homeManagerConfiguration else inputs.nix-on-droid.lib.nixOnDroidConfiguration;
|
||||||
in
|
in
|
||||||
systemFunc {
|
systemFunc
|
||||||
|
{
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
extraSpecialArgs = { inherit inputs outputs lib self; };
|
extraSpecialArgs = { inherit inputs outputs lib self; };
|
||||||
modules = [ "${self}/hosts/${type}/${host}" ];
|
modules = [ "${self}/hosts/${type}/${host}" ];
|
||||||
|
|
@ -5482,7 +5457,7 @@ Do not touch this.
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+begin_src nix :tangle profiles/nixos/common/syncthing.nix
|
#+begin_src nix :tangle profiles/nixos/common/syncthing.nix
|
||||||
_:
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -5503,7 +5478,7 @@ Do not touch this.
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
"Default Folder" = {
|
"Default Folder" = lib.mkDefault {
|
||||||
path = "/home/swarsel/Sync";
|
path = "/home/swarsel/Sync";
|
||||||
devices = [ "sync (@oracle)" "magicant" "winters" ];
|
devices = [ "sync (@oracle)" "magicant" "winters" ];
|
||||||
id = "default";
|
id = "default";
|
||||||
|
|
@ -7421,7 +7396,7 @@ Here we just define some aliases for rebuilding the system, and we allow some in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
"Default Folder" = {
|
"Default Folder" = lib.mkForce {
|
||||||
path = "/Vault/data/syncthing/Sync";
|
path = "/Vault/data/syncthing/Sync";
|
||||||
type = "receiveonly";
|
type = "receiveonly";
|
||||||
versioning = null;
|
versioning = null;
|
||||||
|
|
@ -8841,10 +8816,10 @@ Also, we link some files to the users XDG configuration home:
|
||||||
Also in firefox `about:config > toolkit.legacyUserProfileCustomizations.stylesheets` to true.
|
Also in firefox `about:config > toolkit.legacyUserProfileCustomizations.stylesheets` to true.
|
||||||
|
|
||||||
#+begin_src nix :tangle profiles/home/common/symlink.nix
|
#+begin_src nix :tangle profiles/home/common/symlink.nix
|
||||||
{ self, ... }:
|
{ self, lib, ... }:
|
||||||
{
|
{
|
||||||
home.file = {
|
home.file = {
|
||||||
"init.el" = {
|
"init.el" = lib.mkDefault {
|
||||||
source = self + /programs/emacs/init.el;
|
source = self + /programs/emacs/init.el;
|
||||||
target = ".emacs.d/init.el";
|
target = ".emacs.d/init.el";
|
||||||
};
|
};
|
||||||
|
|
@ -10810,7 +10785,7 @@ This section sets up all the imports that are used in the home-manager section.
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
**** Linking dotfiles
|
**** Symlinking dotfiles
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: h:9fac0904-b615-4d9d-9bae-54a6691999c3
|
:CUSTOM_ID: h:9fac0904-b615-4d9d-9bae-54a6691999c3
|
||||||
:END:
|
:END:
|
||||||
|
|
@ -10820,10 +10795,10 @@ This section should be used in order to symlink already existing configuration f
|
||||||
As for the `home.sessionVariables`, it should be noted that environment variables that are needed at system start should NOT be loaded here, but instead in `programs.zsh.config.extraSessionCommands` (in the home-manager programs section). This is also where all the wayland related variables are stored.
|
As for the `home.sessionVariables`, it should be noted that environment variables that are needed at system start should NOT be loaded here, but instead in `programs.zsh.config.extraSessionCommands` (in the home-manager programs section). This is also where all the wayland related variables are stored.
|
||||||
|
|
||||||
#+begin_src nix :tangle profiles/home/server/symlink.nix
|
#+begin_src nix :tangle profiles/home/server/symlink.nix
|
||||||
{ self, ... }:
|
{ self, lib, ... }:
|
||||||
{
|
{
|
||||||
home.file = {
|
home.file = {
|
||||||
"init.el" = {
|
"init.el" = lib.mkForce {
|
||||||
source = self + /programs/emacs/server.el;
|
source = self + /programs/emacs/server.el;
|
||||||
target = ".emacs.d/init.el";
|
target = ".emacs.d/init.el";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
21
flake.nix
21
flake.nix
|
|
@ -91,34 +91,15 @@
|
||||||
lib = (nixpkgs.lib // home-manager.lib).extend (_: _: { swarselsystems = import ./lib { inherit self lib inputs outputs systems; }; });
|
lib = (nixpkgs.lib // home-manager.lib).extend (_: _: { swarselsystems = import ./lib { inherit self lib inputs outputs systems; }; });
|
||||||
|
|
||||||
|
|
||||||
# NixOS modules that can only be used on NixOS systems
|
|
||||||
nixModules = [
|
|
||||||
inputs.stylix.nixosModules.stylix
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.nswitch-rcm-nix.nixosModules.nswitch-rcm
|
|
||||||
inputs.nix-topology.nixosModules.default
|
|
||||||
./profiles/nixos/common
|
|
||||||
];
|
|
||||||
|
|
||||||
# Home-Manager modules wanted on non-NixOS systems
|
# Home-Manager modules wanted on non-NixOS systems
|
||||||
homeModules = [
|
|
||||||
inputs.stylix.homeManagerModules.stylix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Home-Manager modules wanted on both NixOS and non-NixOS systems
|
# Home-Manager modules wanted on both NixOS and non-NixOS systems
|
||||||
mixedModules = [
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
|
||||||
./profiles/home/common
|
|
||||||
];
|
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
inherit lib nixModules mixedModules homeModules;
|
inherit lib;
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos { inherit lib; };
|
nixosModules = import ./modules/nixos { inherit lib; };
|
||||||
homeManagerModules = import ./modules/home { inherit lib; };
|
homeManagerModules = import ./modules/home { inherit lib; };
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,5 @@
|
||||||
{ self, inputs, outputs, ... }:
|
{ lib, ... }:
|
||||||
let
|
|
||||||
profilesPath = "${self}/profiles";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
|
||||||
"${profilesPath}/darwin/nixos/common"
|
|
||||||
|
|
||||||
inputs.home-manager.darwinModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.users."leon.schwarzaeugl".imports = [
|
|
||||||
"${profilesPath}/darwin/home"
|
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
}
|
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
|
|
||||||
# Auto upgrade nix package and the daemon service.
|
# Auto upgrade nix package and the daemon service.
|
||||||
services.nix-daemon.enable = true;
|
services.nix-daemon.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
{ self, outputs, config, ... }:
|
{ self, outputs, config, ... }:
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.homeModules ++ outputs.mixedModules ++ (builtins.attrValues outputs.homeManagerModules);
|
imports = [
|
||||||
|
inputs.stylix.homeManagerModules.stylix
|
||||||
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
|
./profiles/home/common
|
||||||
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
overlays = [ outputs.overlays.default ];
|
overlays = [ outputs.overlays.default ];
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,13 @@
|
||||||
{ self, inputs, outputs, pkgs, lib, ... }:
|
{ self, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.nixModules ++ [
|
imports = [
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
|
];
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.users.swarsel.imports = outputs.mixedModules ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
}
|
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = [ outputs.overlays.default ];
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
WLR_RENDERER_ALLOW_SOFTWARE = 1;
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,6 @@ in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
||||||
"${modulesPath}/installer/cd-dvd/channel.nix"
|
"${modulesPath}/installer/cd-dvd/channel.nix"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, inputs, outputs, pkgs, lib, ... }:
|
{ self, inputs, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
sharedOptions = {
|
sharedOptions = {
|
||||||
|
|
@ -8,12 +8,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.nixModules ++ [
|
imports = [
|
||||||
inputs.nixos-hardware.nixosModules.framework-16-7040-amd
|
inputs.nixos-hardware.nixosModules.framework-16-7040-amd
|
||||||
inputs.fw-fanctrl.nixosModules.default
|
inputs.fw-fanctrl.nixosModules.default
|
||||||
|
|
||||||
./hardware-configuration.nix
|
|
||||||
./disk-config.nix
|
./disk-config.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/virtualbox.nix"
|
"${profilesPath}/nixos/optional/virtualbox.nix"
|
||||||
# "${profilesPath}/nixos/optional/vmware.nix"
|
# "${profilesPath}/nixos/optional/vmware.nix"
|
||||||
|
|
@ -24,12 +24,12 @@ in
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = outputs.mixedModules ++ [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/optional/gaming.nix"
|
"${profilesPath}/home/optional/gaming.nix"
|
||||||
"${profilesPath}/home/optional/work.nix"
|
"${profilesPath}/home/optional/work.nix"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
{ self, inputs, outputs, lib, ... }:
|
{ self, inputs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
|
|
||||||
"${profilesPath}/nixos/server"
|
"${profilesPath}/nixos/server"
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
@ -13,16 +12,14 @@ in
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/server"
|
"${profilesPath}/home/server"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
|
];
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
defaultSopsFile = lib.mkForce "/root/.dotfiles/secrets/sync/secrets.yaml";
|
defaultSopsFile = lib.mkForce "/root/.dotfiles/secrets/sync/secrets.yaml";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
"sync.swarsel.win" = {
|
"sync.swarsel.win" = {
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,9 @@ in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
"${self}/hosts/nixos/toto/disk-config.nix"
|
"${self}/hosts/nixos/toto/disk-config.nix"
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
inputs.impermanence.nixosModules.impermanence
|
|
||||||
inputs.lanzaboote.nixosModules.lanzaboote
|
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
"${profilesPath}/nixos/common/settings.nix"
|
"${profilesPath}/nixos/common/settings.nix"
|
||||||
"${profilesPath}/nixos/common/home-manager.nix"
|
"${profilesPath}/nixos/common/home-manager.nix"
|
||||||
|
|
@ -34,7 +29,6 @@ in
|
||||||
"${profilesPath}/home/common/settings.nix"
|
"${profilesPath}/home/common/settings.nix"
|
||||||
"${profilesPath}/home/common/sops.nix"
|
"${profilesPath}/home/common/sops.nix"
|
||||||
"${profilesPath}/home/common/ssh.nix"
|
"${profilesPath}/home/common/ssh.nix"
|
||||||
|
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
{ self, inputs, outputs, ... }:
|
{ self, inputs, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
"${profilesPath}/nixos/optional/autologin.nix"
|
"${profilesPath}/nixos/optional/autologin.nix"
|
||||||
|
|
@ -16,10 +14,9 @@ in
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/server"
|
"${profilesPath}/home/server"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
|
];
|
||||||
] ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader.systemd-boot.enable = true;
|
loader.systemd-boot.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,45 @@
|
||||||
in
|
in
|
||||||
systemFunc {
|
systemFunc {
|
||||||
specialArgs = { inherit inputs outputs lib self; };
|
specialArgs = { inherit inputs outputs lib self; };
|
||||||
modules = [ "${self}/hosts/${type}/${host}" ];
|
modules = [
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
inputs.impermanence.nixosModules.impermanence
|
||||||
|
inputs.lanzaboote.nixosModules.lanzaboote
|
||||||
|
"${self}/hosts/${type}/${host}"
|
||||||
|
] ++
|
||||||
|
# toto (deployment sandbox) & iso should never receive general configuration
|
||||||
|
(if (host == "toto" || host == "iso") then [ ] else
|
||||||
|
(
|
||||||
|
# sync & winters (servers) should not receive common non-server config
|
||||||
|
(if (host == "winters" || host == "sync") then [ ] else [
|
||||||
|
"${self}/profiles/${type}/common"
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
inputs.nswitch-rcm-nix.nixosModules.nswitch-rcm
|
||||||
|
inputs.nix-topology.nixosModules.default
|
||||||
|
]) ++ (if (type == "nixos") then [
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users.swarsel.imports = (
|
||||||
|
# sync & winters (servers) should not receive common non-server config
|
||||||
|
if (host == "winters" || host == "sync") then [ ] else [
|
||||||
|
"${self}/profiles/home/common"
|
||||||
|
]
|
||||||
|
) ++ [
|
||||||
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
}
|
||||||
|
] else [
|
||||||
|
"${self}/profiles/darwin/nixos/common"
|
||||||
|
inputs.home-manager.darwinModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users."leon.schwarzaeugl".imports = [
|
||||||
|
"${self}/profiles/darwin/home"
|
||||||
|
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||||
|
}
|
||||||
|
]) ++ (builtins.attrValues outputs.nixosModules) ++ (builtins.attrValues outputs.homeManagerModules)
|
||||||
|
));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -40,7 +78,8 @@
|
||||||
let
|
let
|
||||||
systemFunc = if (type == "home") then inputs.home-manager.lib.homeManagerConfiguration else inputs.nix-on-droid.lib.nixOnDroidConfiguration;
|
systemFunc = if (type == "home") then inputs.home-manager.lib.homeManagerConfiguration else inputs.nix-on-droid.lib.nixOnDroidConfiguration;
|
||||||
in
|
in
|
||||||
systemFunc {
|
systemFunc
|
||||||
|
{
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
extraSpecialArgs = { inherit inputs outputs lib self; };
|
extraSpecialArgs = { inherit inputs outputs lib self; };
|
||||||
modules = [ "${self}/hosts/${type}/${host}" ];
|
modules = [ "${self}/hosts/${type}/${host}" ];
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ lib, ... }:
|
{ self, lib, ... }:
|
||||||
{
|
{
|
||||||
options.swarselsystems.wallpaper = lib.mkOption {
|
options.swarselsystems.wallpaper = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.path;
|
||||||
default = "";
|
default = self + /wallpaper/lenovowp.png;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ self, ... }:
|
{ self, lib, ... }:
|
||||||
{
|
{
|
||||||
home.file = {
|
home.file = {
|
||||||
"init.el" = {
|
"init.el" = lib.mkDefault {
|
||||||
source = self + /programs/emacs/init.el;
|
source = self + /programs/emacs/init.el;
|
||||||
target = ".emacs.d/init.el";
|
target = ".emacs.d/init.el";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{ self, ... }:
|
{ self, lib, ... }:
|
||||||
{
|
{
|
||||||
home.file = {
|
home.file = {
|
||||||
"init.el" = {
|
"init.el" = lib.mkForce {
|
||||||
source = self + /programs/emacs/server.el;
|
source = self + /programs/emacs/server.el;
|
||||||
target = ".emacs.d/init.el";
|
target = ".emacs.d/init.el";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
_:
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
services.syncthing = {
|
services.syncthing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -19,7 +19,7 @@ _:
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
"Default Folder" = {
|
"Default Folder" = lib.mkDefault {
|
||||||
path = "/home/swarsel/Sync";
|
path = "/home/swarsel/Sync";
|
||||||
devices = [ "sync (@oracle)" "magicant" "winters" ];
|
devices = [ "sync (@oracle)" "magicant" "winters" ];
|
||||||
id = "default";
|
id = "default";
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
folders = {
|
folders = {
|
||||||
"Default Folder" = {
|
"Default Folder" = lib.mkForce {
|
||||||
path = "/Vault/data/syncthing/Sync";
|
path = "/Vault/data/syncthing/Sync";
|
||||||
type = "receiveonly";
|
type = "receiveonly";
|
||||||
versioning = null;
|
versioning = null;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, inputs, outputs, config, pkgs, lib, ... }:
|
{ self, inputs, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
profilesPath = "${self}/profiles";
|
profilesPath = "${self}/profiles";
|
||||||
sharedOptions = {
|
sharedOptions = {
|
||||||
|
|
@ -7,7 +7,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = outputs.nixModules ++ [
|
imports = [
|
||||||
# ---- nixos-hardware here ----
|
# ---- nixos-hardware here ----
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
@ -21,19 +21,11 @@ in
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.users.swarsel.imports = outputs.mixedModules ++ [
|
home-manager.users.swarsel.imports = [
|
||||||
"${profilesPath}/home/optional/gaming.nix"
|
"${profilesPath}/home/optional/gaming.nix"
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
];
|
||||||
}
|
}
|
||||||
] ++ (builtins.attrValues outputs.nixosModules);
|
];
|
||||||
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = [ outputs.overlays.default ];
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue