Initial commit
This commit is contained in:
commit
b0a95003b7
57 changed files with 1561 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
result
|
||||||
|
result/
|
||||||
|
.direnv/
|
||||||
|
.DS_Store
|
||||||
|
.pre-commit-config.yaml
|
||||||
|
logs/
|
18
README.md
Normal file
18
README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Nix Configuration
|
||||||
|
|
||||||
|
This repository is home to the nix code that builds my systems.
|
||||||
|
|
||||||
|
|
||||||
|
## Why Nix?
|
||||||
|
|
||||||
|
Nix allows for easy to manage, collaborative, reproducible deployments. This means that once something is setup and configured once, it works forever. If someone else shares their configuration, anyone can make use of it.
|
||||||
|
|
||||||
|
|
||||||
|
## How to install Nix and Deploy this Flake?
|
||||||
|
|
||||||
|
After installed NixOS with `nix-command` & `flake` enabled, you can deploy this flake with the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch .#nixos-test
|
||||||
|
```
|
||||||
|
|
64
devshells/java17-maven/flake.lock
Normal file
64
devshells/java17-maven/flake.lock
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736684107,
|
||||||
|
"narHash": "sha256-vH5mXxEvZeoGNkqKoCluhTGfoeXCZ1seYhC2pbMN0sg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "635e887b48521e912a516625eee7df6cf0eba9c1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"systems": "systems"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
21
devshells/java17-maven/flake.nix
Normal file
21
devshells/java17-maven/flake.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
description = "A basic flake with a shell";
|
||||||
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
inputs.systems.url = "github:nix-systems/default";
|
||||||
|
inputs.flake-utils = {
|
||||||
|
url = "github:numtide/flake-utils";
|
||||||
|
inputs.systems.follows = "systems";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ nixpkgs, flake-utils, ... }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell { packages = with pkgs; [ maven jdk17 ]; };
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
64
devshells/java21-maven/flake.lock
Normal file
64
devshells/java21-maven/flake.lock
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1734435836,
|
||||||
|
"narHash": "sha256-kMBQ5PRiFLagltK0sH+08aiNt3zGERC2297iB6vrvlU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "4989a246d7a390a859852baddb1013f825435cee",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"systems": "systems"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
21
devshells/java21-maven/flake.nix
Normal file
21
devshells/java21-maven/flake.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
description = "A basic flake with a shell";
|
||||||
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
inputs.systems.url = "github:nix-systems/default";
|
||||||
|
inputs.flake-utils = {
|
||||||
|
url = "github:numtide/flake-utils";
|
||||||
|
inputs.systems.follows = "systems";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ nixpkgs, flake-utils, ... }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell { packages = with pkgs; [ maven jdk21 ]; };
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
64
devshells/php8/flake.lock
Normal file
64
devshells/php8/flake.lock
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736684107,
|
||||||
|
"narHash": "sha256-vH5mXxEvZeoGNkqKoCluhTGfoeXCZ1seYhC2pbMN0sg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "635e887b48521e912a516625eee7df6cf0eba9c1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"systems": "systems"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
30
devshells/php8/flake.nix
Normal file
30
devshells/php8/flake.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
description = "A basic flake with a shell";
|
||||||
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
inputs.systems.url = "github:nix-systems/default";
|
||||||
|
inputs.flake-utils = {
|
||||||
|
url = "github:numtide/flake-utils";
|
||||||
|
inputs.systems.follows = "systems";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ nixpkgs, flake-utils, ... }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell { packages = with pkgs; [ (php81.buildEnv {
|
||||||
|
extensions = ({ enabled, all }: enabled ++ (with all; [
|
||||||
|
xdebug
|
||||||
|
]));
|
||||||
|
extraConfig = ''
|
||||||
|
xdebug.mode=debug
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
php81Packages.composer
|
||||||
|
]; };
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
120
flake.lock
Normal file
120
flake.lock
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"auto-cpufreq": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736492828,
|
||||||
|
"narHash": "sha256-iDvgL5dQerQnu2ERKAWGvWppG7cQ/0uKEfVY93ItvO4=",
|
||||||
|
"owner": "AdnanHodzic",
|
||||||
|
"repo": "auto-cpufreq",
|
||||||
|
"rev": "c0d9ec565a4c78247a4f70beb1c1ae74279673e2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "AdnanHodzic",
|
||||||
|
"repo": "auto-cpufreq",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736373539,
|
||||||
|
"narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "bd65bc3cde04c16755955630b344bc9e35272c56",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-24.11",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-hardware": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736441705,
|
||||||
|
"narHash": "sha256-OL7leZ6KBhcDF3nEKe4aZVfIm6xQpb1Kb+mxySIP93o=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"rev": "8870dcaff63dfc6647fb10648b827e9d40b0a337",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixos-hardware",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736549401,
|
||||||
|
"narHash": "sha256-ibkQrMHxF/7TqAYcQE+tOnIsSEzXmMegzyBWza6uHKM=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1dab772dd4a68a7bba5d9460685547ff8e17d899",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736523798,
|
||||||
|
"narHash": "sha256-Xb8mke6UCYjge9kPR9o4P1nVrhk7QBbKv3xQ9cj7h2s=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "130595eba61081acde9001f43de3248d8888ac4a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"auto-cpufreq": "auto-cpufreq",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"systems": "systems"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
79
flake.nix
Normal file
79
flake.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
description = "NixOS configuration of Julius Freudenberger";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager/release-24.11";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
auto-cpufreq = {
|
||||||
|
url = "github:AdnanHodzic/auto-cpufreq";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
systems.url = "github:nix-systems/default-linux";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
|
nixos-hardware,
|
||||||
|
home-manager,
|
||||||
|
auto-cpufreq,
|
||||||
|
systems,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
|
inherit (self) outputs;
|
||||||
|
lib = nixpkgs.lib;
|
||||||
|
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
||||||
|
pkgsFor = lib.genAttrs (import systems) (
|
||||||
|
system:
|
||||||
|
import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
in {
|
||||||
|
|
||||||
|
overlays = import ./overlays {inherit inputs outputs;};
|
||||||
|
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
|
||||||
|
|
||||||
|
nixosConfigurations = {
|
||||||
|
julius-framework = let
|
||||||
|
username = "julius";
|
||||||
|
in
|
||||||
|
nixpkgs.lib.nixosSystem rec {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
|
||||||
|
specialArgs = {
|
||||||
|
pkgs-unstable = import nixpkgs-unstable {
|
||||||
|
inherit system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
inherit inputs outputs username;
|
||||||
|
};
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
nixos-hardware.nixosModules.framework-11th-gen-intel
|
||||||
|
auto-cpufreq.nixosModules.default
|
||||||
|
./hosts/julius-framework
|
||||||
|
./users/julius/nixos.nix
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
|
||||||
|
home-manager.extraSpecialArgs = inputs // specialArgs;
|
||||||
|
home-manager.users.${username} = import ./users/${username}/home.nix;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
12
home/core.nix
Normal file
12
home/core.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{username, ...}: {
|
||||||
|
home = {
|
||||||
|
inherit username;
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
|
preferXdgDirectories = true;
|
||||||
|
|
||||||
|
stateVersion = "24.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
7
home/direnv/default.nix
Normal file
7
home/direnv/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{config, pkgs, ...}: {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
}
|
10
home/gtk/default.nix
Normal file
10
home/gtk/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{config, pkgs, ...}: {
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme.name = "Adwaita-dark";
|
||||||
|
iconTheme = {
|
||||||
|
name = "Arc";
|
||||||
|
package = pkgs.arc-icon-theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
40
home/neovim/default.nix
Normal file
40
home/neovim/default.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{config, pkgs, ...}: {
|
||||||
|
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
vimAlias = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimdiffAlias = true;
|
||||||
|
withNodeJs = true;
|
||||||
|
coc.enable = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
vim-gitgutter
|
||||||
|
markdown-preview-nvim
|
||||||
|
tabular
|
||||||
|
vim-markdown
|
||||||
|
vimtex
|
||||||
|
nvim-lspconfig
|
||||||
|
typst-vim
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
set number
|
||||||
|
set relativenumber
|
||||||
|
set termguicolors
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=2
|
||||||
|
set linebreak
|
||||||
|
|
||||||
|
:augroup numbertoggle
|
||||||
|
: autocmd!
|
||||||
|
: autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
|
||||||
|
: autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
|
||||||
|
:augroup END
|
||||||
|
|
||||||
|
let g:vimtex_view_method = 'zathura'
|
||||||
|
let g:coc_filetype_map = {'tex': 'latex'}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
17
home/xdg/default.nix
Normal file
17
home/xdg/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{config, pkgs, ...}: {
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = {
|
||||||
|
"application/pdf" = ["org.gnome.Evince.desktop"];
|
||||||
|
"image/svg+xml" = ["viewnior.desktop"];
|
||||||
|
"image/jpeg" = ["viewnior.desktop"];
|
||||||
|
"image/png" = ["viewnior.desktop"];
|
||||||
|
"application/yaml" = ["org.x.editor.desktop"];
|
||||||
|
"text/plain" = ["org.x.editor.desktop"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
userDirs.enable = true;
|
||||||
|
};
|
||||||
|
}
|
33
home/zsh/default.nix
Normal file
33
home/zsh/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{config, pkgs, pkgs-unstable, ...}: {
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
defaultKeymap = "viins";
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
Gst = "git status";
|
||||||
|
Gco = "git checkout";
|
||||||
|
Gd = "git diff";
|
||||||
|
Gds = "git diff --staged";
|
||||||
|
Gc = "git commit";
|
||||||
|
};
|
||||||
|
|
||||||
|
history.size = 10000;
|
||||||
|
history.path = "$HOME/.zsh_history";
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
setopt promptsubst
|
||||||
|
export PROMPT='%F{12}[%f%F{10}%n%f%F{12}@%f%F{white}%m%f%F{12}]%f%F{white}:%f %F{white}%~%f%F{12}>%b$(${pkgs-unstable.gitprompt-rs}/bin/gitprompt-rs)%f%F{10}%(!.#.$)%f '
|
||||||
|
unsetopt beep
|
||||||
|
bindkey '^R' history-incremental-search-backward
|
||||||
|
'';
|
||||||
|
|
||||||
|
initExtraBeforeCompInit = "zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=* r:|=*'";
|
||||||
|
};
|
||||||
|
}
|
86
hosts/julius-framework/default.nix
Normal file
86
hosts/julius-framework/default.nix
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
|
{ outputs, config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
../../modules/nix.nix
|
||||||
|
../../modules/system.nix
|
||||||
|
../../modules/firmware.nix
|
||||||
|
../../modules/laptop.nix
|
||||||
|
../../modules/network.nix
|
||||||
|
../../modules/locale.nix
|
||||||
|
../../modules/boot-login.nix
|
||||||
|
../../modules/fonts.nix
|
||||||
|
../../modules/cli-essentials.nix
|
||||||
|
../../modules/i3.nix
|
||||||
|
../../modules/fingerprint.nix
|
||||||
|
../../modules/logitech.nix
|
||||||
|
../../modules/connectivity.nix
|
||||||
|
../../modules/video-and-sound.nix
|
||||||
|
../../modules/bluetooth.nix
|
||||||
|
../../modules/desktop-essentials.nix
|
||||||
|
../../modules/internet.nix
|
||||||
|
../../modules/sync-clients.nix
|
||||||
|
../../modules/office.nix
|
||||||
|
../../modules/administration.nix
|
||||||
|
../../modules/creativity.nix
|
||||||
|
../../modules/security.nix
|
||||||
|
../../modules/typesetting.nix
|
||||||
|
../../modules/docker.nix
|
||||||
|
../../modules/distrobox.nix
|
||||||
|
../../modules/gui-coding.nix
|
||||||
|
../../modules/optical-media.nix
|
||||||
|
../../modules/flatpak.nix
|
||||||
|
../../modules/gaming.nix
|
||||||
|
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
overlays = [
|
||||||
|
outputs.overlays.additions
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
editor = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
systemd.enable = true;
|
||||||
|
luks.devices = {
|
||||||
|
cryptlvm = {
|
||||||
|
device = "/dev/disk/by-uuid/45a8e584-409d-4627-8679-b8cdb837afc4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
tmp.useTmpfs = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "julius-framework"; # Define your hostname.
|
||||||
|
|
||||||
|
location = {
|
||||||
|
latitude = 48.740556;
|
||||||
|
longitude = 9.310833;
|
||||||
|
};
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "24.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
45
hosts/julius-framework/hardware-configuration.nix
Normal file
45
hosts/julius-framework/hardware-configuration.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/4e3c6669-42f3-4ebb-aec1-f09999739e38";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/D676-1631";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{ device = "/dev/disk/by-uuid/592e90f1-e42b-4059-ab03-eb834c05091d";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/0cd2bd1b-90b3-432c-82a0-5335900f3ba3"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp170s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
12
modules/administration.nix
Normal file
12
modules/administration.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
remmina
|
||||||
|
|
||||||
|
teleport_16
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
12
modules/android.nix
Normal file
12
modules/android.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
android-studio-full
|
||||||
|
android-tools
|
||||||
|
android-udev
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
11
modules/bluetooth.nix
Normal file
11
modules/bluetooth.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
services.blueman.enable = true;
|
||||||
|
|
||||||
|
}
|
32
modules/boot-login.nix
Normal file
32
modules/boot-login.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot = {
|
||||||
|
initrd.systemd.enable = true;
|
||||||
|
kernelParams = ["quiet"];
|
||||||
|
plymouth = {
|
||||||
|
enable = true;
|
||||||
|
theme = "bgrt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
xserver.displayManager = {
|
||||||
|
lightdm = {
|
||||||
|
enable = true;
|
||||||
|
greeters.gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = "Adwaita-dark";
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
name = "Arc";
|
||||||
|
package = pkgs.arc-icon-theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
23
modules/cli-essentials.nix
Normal file
23
modules/cli-essentials.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
neofetch
|
||||||
|
bat
|
||||||
|
tealdeer
|
||||||
|
|
||||||
|
pdfgrep
|
||||||
|
pdftk
|
||||||
|
p7zip
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
htop.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
}
|
12
modules/connectivity.nix
Normal file
12
modules/connectivity.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
programs.kdeconnect = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.valent;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
19
modules/creativity.nix
Normal file
19
modules/creativity.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
#gimp-with-plugins
|
||||||
|
inkscape-with-extensions
|
||||||
|
darktable
|
||||||
|
hugin
|
||||||
|
audacity
|
||||||
|
handbrake
|
||||||
|
musescore
|
||||||
|
obs-studio
|
||||||
|
|
||||||
|
xcolor
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
30
modules/desktop-essentials.nix
Normal file
30
modules/desktop-essentials.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
nemo-with-nextcloud-extensions = pkgs.nemo-with-extensions.override { extensions = [pkgs.nextcloud-client];};
|
||||||
|
in {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
sakura
|
||||||
|
alacritty
|
||||||
|
|
||||||
|
evince
|
||||||
|
zathura
|
||||||
|
viewnior
|
||||||
|
pavucontrol
|
||||||
|
|
||||||
|
xed-editor
|
||||||
|
mate.mate-calc
|
||||||
|
|
||||||
|
xarchiver
|
||||||
|
mate.engrampa
|
||||||
|
nemo-with-nextcloud-extensions
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
nm-applet.enable = true;
|
||||||
|
dconf.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
11
modules/distrobox.nix
Normal file
11
modules/distrobox.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
distrobox
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
11
modules/docker.nix
Normal file
11
modules/docker.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
9
modules/fingerprint.nix
Normal file
9
modules/fingerprint.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.fprintd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
12
modules/firmware.nix
Normal file
12
modules/firmware.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
services = {
|
||||||
|
fwupd.enable = true;
|
||||||
|
fstrim.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
22
modules/flatpak.nix
Normal file
22
modules/flatpak.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
services = {
|
||||||
|
flatpak.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||||
|
config = {
|
||||||
|
common = {
|
||||||
|
default = ["gtk"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xdgOpenUsePortal = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
13
modules/fonts.nix
Normal file
13
modules/fonts.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
noto-fonts
|
||||||
|
font-awesome
|
||||||
|
terminus_font
|
||||||
|
dlrg-fonts
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
14
modules/gaming.nix
Normal file
14
modules/gaming.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
steam.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
17
modules/gui-coding.nix
Normal file
17
modules/gui-coding.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
jetbrains.idea-ultimate
|
||||||
|
jetbrains.pycharm-professional
|
||||||
|
jetbrains.phpstorm
|
||||||
|
|
||||||
|
vscodium-fhs
|
||||||
|
zed-editor.fhs
|
||||||
|
|
||||||
|
k6
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
58
modules/i3.nix
Normal file
58
modules/i3.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
# i3 related options
|
||||||
|
environment.pathsToLink = ["/libexec"]; # links /libexec from derivations to /run/current-system/sw
|
||||||
|
services.displayManager.defaultSession = "none+i3";
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
desktopManager = {
|
||||||
|
xterm.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
rofi # application launcher, the same as dmenu
|
||||||
|
dunst # notification daemon
|
||||||
|
i3blocks # status bar
|
||||||
|
lightlocker
|
||||||
|
xautolock # lock screen after some time
|
||||||
|
i3status # provide information to i3bar
|
||||||
|
i3-gaps # i3 with gaps
|
||||||
|
nitrogen # set wallpaper
|
||||||
|
acpi # battery information
|
||||||
|
arandr # screen layout manager
|
||||||
|
alsa-utils
|
||||||
|
dex # autostart applications
|
||||||
|
xbindkeys # bind keys to commands
|
||||||
|
xclip
|
||||||
|
xorg.xbacklight # control screen brightness
|
||||||
|
brightnessctl
|
||||||
|
numlockx
|
||||||
|
xorg.xdpyinfo # get screen information
|
||||||
|
sysstat # get system information
|
||||||
|
|
||||||
|
scrot
|
||||||
|
i3-scrot
|
||||||
|
rofirefox
|
||||||
|
rofi-rbw
|
||||||
|
rbw
|
||||||
|
pinentry-gnome3
|
||||||
|
xdotool
|
||||||
|
playerctl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
xkb.layout = "eu";
|
||||||
|
xkb.variant = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
libinput.touchpad.naturalScrolling = true;
|
||||||
|
gvfs.enable = true; # Mount, trash, and other functionalities
|
||||||
|
udisks2.enable = true;
|
||||||
|
autorandr.enable = true;
|
||||||
|
redshift.enable = true;
|
||||||
|
};
|
||||||
|
}
|
28
modules/internet.nix
Normal file
28
modules/internet.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
transmission_4
|
||||||
|
filezilla
|
||||||
|
|
||||||
|
pkgs-unstable.element-desktop
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
firefox.enable = true;
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.thunderbird-latest;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
21
modules/laptop.nix
Normal file
21
modules/laptop.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen;
|
||||||
|
|
||||||
|
services.logind = {
|
||||||
|
lidSwitch = "suspend-then-hibernate";
|
||||||
|
lidSwitchDocked = "suspend-then-hibernate";
|
||||||
|
powerKey = "ignore";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.auto-cpufreq.enable = true;
|
||||||
|
services.tlp.enable = false;
|
||||||
|
services.thermald.enable = true;
|
||||||
|
|
||||||
|
virtualisation.docker.enableOnBoot = false;
|
||||||
|
|
||||||
|
}
|
12
modules/locale.nix
Normal file
12
modules/locale.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
}
|
12
modules/logitech.nix
Normal file
12
modules/logitech.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
|
||||||
|
hardware.logitech.wireless = {
|
||||||
|
enable = true;
|
||||||
|
enableGraphical = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
31
modules/network.nix
Normal file
31
modules/network.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
networking = {
|
||||||
|
networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
wifi.powersave = true;
|
||||||
|
# logLevel = "INFO";
|
||||||
|
};
|
||||||
|
wireguard.enable = true;
|
||||||
|
firewall = {
|
||||||
|
# if packets are still dropped, they will show up in dmesg
|
||||||
|
logReversePathDrops = true;
|
||||||
|
# wireguard trips rpfilter up
|
||||||
|
extraCommands = ''
|
||||||
|
iptables -t mangle -I nixos-fw-rpfilter -p udp -m udp --sport 1194 -j RETURN
|
||||||
|
ip6tables -t mangle -I nixos-fw-rpfilter -p udp -m udp --sport 1194 -j RETURN
|
||||||
|
iptables -t mangle -I nixos-fw-rpfilter -p udp -m udp --dport 1194 -j RETURN
|
||||||
|
ip6tables -t mangle -I nixos-fw-rpfilter -p udp -m udp --dport 1194 -j RETURN
|
||||||
|
'';
|
||||||
|
extraStopCommands = ''
|
||||||
|
iptables -t mangle -D nixos-fw-rpfilter -p udp -m udp --sport 1194 -j RETURN || true
|
||||||
|
ip6tables -t mangle -D nixos-fw-rpfilter -p udp -m udp --sport 1194 -j RETURN || true
|
||||||
|
iptables -t mangle -D nixos-fw-rpfilter -p udp -m udp --dport 1194 -j RETURN || true
|
||||||
|
ip6tables -t mangle -D nixos-fw-rpfilter -p udp -m udp --dport 1194 -j RETURN || true
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
modules/nix.nix
Normal file
22
modules/nix.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# do garbage collection weekly to keep disk usage low
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
|
||||||
|
gc = {
|
||||||
|
automatic = lib.mkDefault true;
|
||||||
|
dates = lib.mkDefault "weekly";
|
||||||
|
options = lib.mkDefault "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
}
|
28
modules/office.nix
Normal file
28
modules/office.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
libreoffice-fresh
|
||||||
|
xournalpp
|
||||||
|
|
||||||
|
system-config-printer
|
||||||
|
|
||||||
|
simple-scan
|
||||||
|
#naps2
|
||||||
|
|
||||||
|
baobab
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
services.printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = with pkgs; [
|
||||||
|
gutenprint
|
||||||
|
#epson-escpr
|
||||||
|
epson-escpr2
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
12
modules/optical-media.nix
Normal file
12
modules/optical-media.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
brasero
|
||||||
|
makemkv
|
||||||
|
usbimager
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
28
modules/security.nix
Normal file
28
modules/security.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
pkgs-unstable,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
pkgs-unstable.cryptomator
|
||||||
|
|
||||||
|
keepassxc
|
||||||
|
];
|
||||||
|
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
seahorse.enable = true;
|
||||||
|
ausweisapp = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security = {
|
||||||
|
polkit.enable = true;
|
||||||
|
soteria.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
11
modules/sync-clients.nix
Normal file
11
modules/sync-clients.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nextcloud-client
|
||||||
|
pcloud
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
23
modules/system.nix
Normal file
23
modules/system.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
username,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# do garbage collection weekly to keep disk usage low
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
|
||||||
|
gc = {
|
||||||
|
automatic = lib.mkDefault true;
|
||||||
|
dates = lib.mkDefault "weekly";
|
||||||
|
options = lib.mkDefault "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
}
|
18
modules/typesetting.nix
Normal file
18
modules/typesetting.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
typst
|
||||||
|
typst-lsp
|
||||||
|
typstfmt
|
||||||
|
|
||||||
|
texliveFull
|
||||||
|
|
||||||
|
pandoc
|
||||||
|
|
||||||
|
zotero
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
22
modules/video-and-sound.nix
Normal file
22
modules/video-and-sound.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
#shotcut
|
||||||
|
];
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
droidcam.enable = true;
|
||||||
|
};
|
||||||
|
}
|
22
overlays/default.nix
Normal file
22
overlays/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{inputs, ...}: {
|
||||||
|
|
||||||
|
flake-inputs = final: _: {
|
||||||
|
inputs =
|
||||||
|
builtins.mapAttrs (
|
||||||
|
_: flake: let
|
||||||
|
legacyPackages = (flake.legacyPackages or {}).${final.system} or {};
|
||||||
|
packages = (flake.packages or {}).${final.system} or {};
|
||||||
|
in
|
||||||
|
if legacyPackages != {}
|
||||||
|
then legacyPackages
|
||||||
|
else packages
|
||||||
|
)
|
||||||
|
inputs;
|
||||||
|
};
|
||||||
|
|
||||||
|
additions = final: _prev: import ../pkgs final.pkgs;
|
||||||
|
|
||||||
|
modifications = final: prev: {
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
6
pkgs/default.nix
Normal file
6
pkgs/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
pkgs: rec {
|
||||||
|
rofirefox = pkgs.callPackage ./rofirefox {};
|
||||||
|
nemo-nextcloud = pkgs.callPackage ./nemo-nextcloud {};
|
||||||
|
dlrg-fonts = pkgs.callPackage ./dlrg-fonts {};
|
||||||
|
i3-scrot = pkgs.callPackage ./i3-scrot {};
|
||||||
|
}
|
31
pkgs/dlrg-fonts/default.nix
Normal file
31
pkgs/dlrg-fonts/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ stdenv, lib, requireFile, pkgs }: let
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "dlrg-fonts";
|
||||||
|
version = "0-unstable-2019-11-19";
|
||||||
|
src = requireFile {
|
||||||
|
name = "DLRG-Schriftart.zip";
|
||||||
|
hash = "sha256-z+VH8rIeAsJhbqfRh57ryXj+RYU0kWbLcpIivbXA0sk=";
|
||||||
|
url = "https://dlrg.net/apps/dokumente?page=assetService&noheader=1&aid=1709&v=o&file=DLRG%20Schriftart.zip";
|
||||||
|
};
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
runHook preUnpack
|
||||||
|
${pkgs.unzip}/bin/unzip $src
|
||||||
|
|
||||||
|
runHook postUnpack
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -Dm644 *.TTF -t $out/share/fonts/truetype
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
40
pkgs/i3-scrot/default.nix
Normal file
40
pkgs/i3-scrot/default.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{ stdenv
|
||||||
|
, lib
|
||||||
|
, fetchFromGitLab
|
||||||
|
, bash
|
||||||
|
, scrot
|
||||||
|
, xdg-user-dirs
|
||||||
|
, libnotify
|
||||||
|
, xclip
|
||||||
|
, makeWrapper
|
||||||
|
}: let
|
||||||
|
pname = "i3-scrot";
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = pname;
|
||||||
|
version = "1-unstable-a6f3fa1c";
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "packages/extra";
|
||||||
|
repo = pname;
|
||||||
|
domain = "gitlab.manjaro.org";
|
||||||
|
rev = "a6f3fa1cb127b0ae8c08cfd1fccd55c9ac07abd4";
|
||||||
|
sha256 = "sha256-1tbZnMLrMYV3IJa9LLve3kdZ+dxXiSyN0orgvIm1sR0=";
|
||||||
|
};
|
||||||
|
buildInputs = [ bash scrot libnotify xclip ];
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp i3-scrot $out/bin/i3-scrot
|
||||||
|
chmod +x $out/bin/i3-scrot
|
||||||
|
wrapProgram $out/bin/i3-scrot \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ bash scrot xdg-user-dirs libnotify xclip ]}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
57
pkgs/nemo-nextcloud/default.nix
Normal file
57
pkgs/nemo-nextcloud/default.nix
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
symlinkJoin,
|
||||||
|
lib,
|
||||||
|
makeWrapper,
|
||||||
|
nemo,
|
||||||
|
nemo-python,
|
||||||
|
nextcloud-client,
|
||||||
|
python3,
|
||||||
|
extensions ? [ ],
|
||||||
|
useDefaultExtensions ? true,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
selectedExtensions =
|
||||||
|
extensions
|
||||||
|
++ lib.optionals useDefaultExtensions [
|
||||||
|
# We keep this in sync with a default Mint installation
|
||||||
|
# Right now (only) nemo-share is missing
|
||||||
|
nemo-python
|
||||||
|
];
|
||||||
|
nemoPythonExtensionsDeps = lib.concatMap (x: x.nemoPythonExtensionDeps or [ ]) selectedExtensions;
|
||||||
|
in
|
||||||
|
symlinkJoin {
|
||||||
|
name = "nemo-with-extensions-${nemo.version}";
|
||||||
|
|
||||||
|
paths = [ nemo ] ++ selectedExtensions;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
for f in $(find $out/bin/ $out/libexec/ -type l -not -path "*/.*"); do
|
||||||
|
wrapProgram "$f" \
|
||||||
|
--set "NEMO_EXTENSION_DIR" "$out/${nemo.extensiondir}" \
|
||||||
|
--set "NEMO_PYTHON_EXTENSION_DIR" "${nextcloud-client}/share/nemo-python/extensions" \
|
||||||
|
--set "NEMO_PYTHON_SEARCH_PATH" "${python3.pkgs.makePythonPath nemoPythonExtensionsDeps}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Don't populate the same nemo actions twice when having this globally installed
|
||||||
|
# https://github.com/NixOS/nixpkgs/issues/190781#issuecomment-1365601853
|
||||||
|
rm -r $out/share/nemo/actions
|
||||||
|
|
||||||
|
# Point to wrapped binary in all service files
|
||||||
|
for file in "share/dbus-1/services/nemo.FileManager1.service" \
|
||||||
|
"share/dbus-1/services/nemo.service"
|
||||||
|
do
|
||||||
|
rm "$out/$file"
|
||||||
|
substitute "${nemo}/$file" "$out/$file" \
|
||||||
|
--replace "${nemo}" "$out"
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = builtins.removeAttrs nemo.meta [
|
||||||
|
"name"
|
||||||
|
"outputsToInstall"
|
||||||
|
"position"
|
||||||
|
];
|
||||||
|
}
|
14
pkgs/rofirefox/case-sensitivity.patch
Normal file
14
pkgs/rofirefox/case-sensitivity.patch
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git a/rofirefox.sh b/rofirefox.sh
|
||||||
|
index e217a30..85068c1 100644
|
||||||
|
--- a/rofirefox.sh
|
||||||
|
+++ b/rofirefox.sh
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
|
||||||
|
CONFIG_PATH=~/.mozilla/firefox/profiles.ini
|
||||||
|
|
||||||
|
-choice=$(awk -F "=" '/Name/ { print $2 }' $CONFIG_PATH | sort | rofi -dmenu -p "Select a profile...")
|
||||||
|
+choice=$(awk -F "=" '/Name/ { print $2 }' $CONFIG_PATH | sort | rofi -dmenu -p "Select a profile... " -i)
|
||||||
|
if [ "$choice" != "" ]; then
|
||||||
|
firefox -P $choice &
|
||||||
|
else
|
||||||
|
|
42
pkgs/rofirefox/default.nix
Normal file
42
pkgs/rofirefox/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ stdenv
|
||||||
|
, lib
|
||||||
|
, fetchFromGitHub
|
||||||
|
, bash
|
||||||
|
, gawk
|
||||||
|
, firefox
|
||||||
|
, rofi
|
||||||
|
, makeWrapper
|
||||||
|
}: let
|
||||||
|
pname = "rofirefox";
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = pname;
|
||||||
|
version = "cc14b76";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ethmtrgt";
|
||||||
|
repo = pname;
|
||||||
|
rev = "cc14b76c4cea3263bd8c421f479089503271847b";
|
||||||
|
sha256 = "ngtK31X9XyLKoHBfI8SOYbzyvW/LQBE9kq0wNhnxnP0=";
|
||||||
|
};
|
||||||
|
buildInputs = [ bash gawk firefox rofi ];
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./case-sensitivity.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp rofirefox.sh $out/bin/rofirefox
|
||||||
|
chmod +x $out/bin/rofirefox
|
||||||
|
wrapProgram $out/bin/rofirefox \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ bash gawk firefox rofi ]}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
14
users/julius/home.nix
Normal file
14
users/julius/home.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{pkgs, username, ...}: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
../../home/core.nix
|
||||||
|
|
||||||
|
../../home/zsh
|
||||||
|
../../home/neovim
|
||||||
|
../../home/gtk
|
||||||
|
../../home/xdg
|
||||||
|
|
||||||
|
../../home/direnv
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
12
users/julius/nixos.nix
Normal file
12
users/julius/nixos.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
users.users.julius = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" "networkmanager" "docker"];
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue