Compare commits

...

16 commits

14 changed files with 247 additions and 532 deletions

View file

@ -1,7 +1,6 @@
{ {
config, config,
lib, lib,
pkgs,
... ...
}: }:
{ {
@ -10,33 +9,58 @@
}; };
config = lib.mkIf config.settings.containers.lidarr.enable { config = lib.mkIf config.settings.containers.lidarr.enable {
virtualisation.arion.projects.lidarr = { containers.lidarr = {
settings = { autoStart = true;
project.name = "lidarr"; forwardPorts = [
services.lidarr = { {
service.useHostStore = true; containerPort = 8686;
nixos.useSystemd = true; hostPort = 8686;
nixos.configuration = }
{ lib, ... }: ];
{
boot.isContainer = true;
boot.tmp.useTmpfs = true;
networking.useDHCP = false;
services.nscd.enable = false;
system.nssModules = lib.mkForce [ ];
services.lidarr.enable = true; bindMounts = {
services.lidarr.openFirewall = true; "/data" = {
services.lidarr.dataDir = "/config"; hostPath = "/data";
services.lidarr.user = "root"; };
}; "/var/lib/lidarr/.config/Lidarr" = {
service.ports = [ "8686:8686" ]; hostPath = "/config/lidarr";
service.volumes = [
"/config/lidarr:/config"
"/data:/data"
];
}; };
}; };
config =
{ ... }:
{
services.lidarr.enable = true;
services.lidarr.openFirewall = true;
};
}; };
# virtualisation.arion.projects.lidarr = {
# settings = {
# project.name = "lidarr";
# services.lidarr = {
# service.useHostStore = true;
# nixos.useSystemd = true;
# nixos.configuration =
# { lib, ... }:
# {
# boot.isContainer = true;
# boot.tmp.useTmpfs = true;
# networking.useDHCP = false;
# services.nscd.enable = false;
# system.nssModules = lib.mkForce [ ];
# services.lidarr.enable = true;
# services.lidarr.openFirewall = true;
# services.lidarr.dataDir = "/config";
# services.lidarr.user = "root";
# };
# service.ports = [ "8686:8686" ];
# service.volumes = [
# "/config/lidarr:/config"
# "/data:/data"
# ];
# };
# };
# };
}; };
} }

185
flake.lock generated
View file

@ -9,11 +9,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1745165725, "lastModified": 1759632323,
"narHash": "sha256-OnHV8Us04vRsWM0uL1cQez8DumhRi6yE+4K4VLtH6Ws=", "narHash": "sha256-TzLTfXxhOkR/8oOoVEAYQWb81ADGHdKsQXGicC7kR+M=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "arion", "repo": "arion",
"rev": "4f59059633b14364b994503b179a701f5e6cfb90", "rev": "24658a03be2d1a6e1e02c01524775d960a82309c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -27,11 +27,11 @@
"fromYaml": "fromYaml" "fromYaml": "fromYaml"
}, },
"locked": { "locked": {
"lastModified": 1746562888, "lastModified": 1755819240,
"narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
"owner": "SenchoPens", "owner": "SenchoPens",
"repo": "base16.nix", "repo": "base16.nix",
"rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -43,16 +43,17 @@
"base16-fish": { "base16-fish": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1622559957, "lastModified": 1754405784,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github" "type": "github"
} }
}, },
@ -92,11 +93,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748383148, "lastModified": 1758112371,
"narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -113,11 +114,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1733312601, "lastModified": 1759362264,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "rev": "758cf7296bee11f1706a574c77d072b8a7baa881",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -134,11 +135,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751413152, "lastModified": 1756770412,
"narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", "rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -147,24 +148,6 @@
"type": "github" "type": "github"
} }
}, },
"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"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -184,18 +167,20 @@
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748186689, "host": "gitlab.gnome.org",
"narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=", "lastModified": 1762869044,
"narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0", "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad",
"type": "github" "type": "gitlab"
}, },
"original": { "original": {
"host": "gitlab.gnome.org",
"owner": "GNOME", "owner": "GNOME",
"ref": "48.2", "ref": "gnome-49",
"repo": "gnome-shell", "repo": "gnome-shell",
"type": "github" "type": "gitlab"
} }
}, },
"haskell-flake": { "haskell-flake": {
@ -222,11 +207,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1756305977, "lastModified": 1762973522,
"narHash": "sha256-u3HYKT9vcAKw5mNaARUzmukfS1yjHH+3tTyVgZXob30=", "narHash": "sha256-CFyvvZvKDkTFF7niIQp5hhks5OR1u10H3e89chURCkg=",
"owner": "helix-editor", "owner": "helix-editor",
"repo": "helix", "repo": "helix",
"rev": "7e4e556f84cd657dc99e3e0acfa7442170a01a11", "rev": "948ac05aa0db64e0e5d00710db36eb244076e988",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -242,11 +227,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1756261190, "lastModified": 1763228015,
"narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", "narHash": "sha256-1rYieMVUyZ3kK/cBIr8mOusxrOEJ1/+2MsOg0oJ7b3A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "77f348da3176dc68b20a73dab94852a417daf361", "rev": "96156a9e86281c4bfc451236bc2ddfe4317e6f39",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -267,11 +252,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1756337322, "lastModified": 1763286362,
"narHash": "sha256-FiUw6z+ytxopB8dYc0/LVtc/8F8wnsdUvpzSHNeojb8=", "narHash": "sha256-KPQWFSoObIndZ2jGShk2KL9lEwIMysLwBsHJpiJz55w=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "a0a748911825656657dcffbe16eb58c9d4039a77", "rev": "024550217d69bb1afaf3ae8d808ce767cda1f15f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -283,16 +268,16 @@
"niri-stable": { "niri-stable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748151941, "lastModified": 1756556321,
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "YaLTeR", "owner": "YaLTeR",
"ref": "v25.05.1", "ref": "v25.08",
"repo": "niri", "repo": "niri",
"type": "github" "type": "github"
} }
@ -300,11 +285,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1756304824, "lastModified": 1763280630,
"narHash": "sha256-XOR+SyrASQQ2DnQvK2pcPx67sPyGdG3wwmZGlgpoJu8=", "narHash": "sha256-2nCZp70LNGzfrx9J8D5G9uRHo8YufQ1tVVdbzRbhCIc=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "d9833fc1c3de306f500662471ae001094813dbd5", "rev": "2652efe9dbee60b9172adda37a17c59b069288cb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -315,17 +300,16 @@
}, },
"nix-vscode-extensions": { "nix-vscode-extensions": {
"inputs": { "inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1756346196, "lastModified": 1763258556,
"narHash": "sha256-esNUIJNbG/RZcGRamMqJBIiidNB93xCmEN/hswWDHk0=", "narHash": "sha256-TWgLZJWn0aBAzu8By3y+OUoFsfOvy1AmIduR5G6QpSE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "730c4353591b3c507a6973b75b52e367cde90d52", "rev": "2ad9c9778431846e4d506ced079b638ad4e25806",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -336,11 +320,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1756266583, "lastModified": 1762977756,
"narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -352,11 +336,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1756217674, "lastModified": 1763049705,
"narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=", "narHash": "sha256-A5LS0AJZ1yDPTa2fHxufZN++n8MCmtgrJDtxFxrH4S8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620", "rev": "3acb677ea67d4c6218f33de0db0955f116b7588c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -378,11 +362,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751906969, "lastModified": 1758998580,
"narHash": "sha256-BSQAOdPnzdpOuCdAGSJmefSDlqmStFNScEnrWzSqKPw=", "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "ddb679f4131e819efe3bbc6457ba19d7ad116f25", "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -411,11 +395,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1740623427, "lastModified": 1759631821,
"narHash": "sha256-3SdPQrZoa4odlScFDUHd4CUPQ/R1gtH4Mq9u8CBiK8M=", "narHash": "sha256-V8A1L0FaU/aSXZ1QNJScxC12uP4hANeRBgI4YdhHeRM=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "d342e8b5fd88421ff982f383c853f0fc78a847ab", "rev": "1d7cbdaad90f8a5255a89a6eddd8af24dc89cafe",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -437,7 +421,7 @@
"nixpkgs" "nixpkgs"
], ],
"nur": "nur", "nur": "nur",
"systems": "systems_2", "systems": "systems",
"tinted-foot": "tinted-foot", "tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
@ -445,11 +429,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1755997543, "lastModified": 1763245881,
"narHash": "sha256-/fejmCQ7AWa655YxyPxRDbhdU7c5+wYsFSjmEMXoBCM=", "narHash": "sha256-0q+4x1Gx3AMIRV8MIN2/WOJOAVMtfqnkY1m3k0iIDkI=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "f47c0edcf71e802378b1b7725fa57bb44fe85ee8", "rev": "29dc3dd858c507bfd1038716197f84f40e41f28d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -473,21 +457,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": { "tinted-foot": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -524,11 +493,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1750770351, "lastModified": 1757716333,
"narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=", "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "5a775c6ffd6e6125947b393872cde95867d85a2a", "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -540,11 +509,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1751159871, "lastModified": 1757811970,
"narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=", "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "bded5e24407cec9d01bd47a317d15b9223a1546c", "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -556,11 +525,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1751158968, "lastModified": 1757811247,
"narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=", "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "86a470d94204f7652b906ab0d378e4231a5b3384", "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -576,11 +545,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1755934250, "lastModified": 1762938485,
"narHash": "sha256-CsDojnMgYsfshQw3t4zjRUkmMmUdZGthl16bXVWgRYU=", "narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "74e1a52d5bd9430312f8d1b8b0354c92c17453e5", "rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -609,11 +578,11 @@
"xwayland-satellite-unstable": { "xwayland-satellite-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1756260173, "lastModified": 1762747449,
"narHash": "sha256-wcf04fl5ncbOqAK7OCWIgILERIbMfL/eeM3UThqgErI=", "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
"owner": "Supreeeme", "owner": "Supreeeme",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"rev": "af33f7eb124b51ff6d9cdf9b428643e2246c8cbb", "rev": "6338574bc5c036487486acde264f38f39ea15fad",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -58,7 +58,7 @@
helix, helix,
... ...
}: }:
{ rec {
nixosConfigurations = { nixosConfigurations = {
fedfer-main-laptop-nixos = nixpkgs.lib.nixosSystem { fedfer-main-laptop-nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
@ -88,11 +88,21 @@
modules = [ modules = [
arion.nixosModules.arion arion.nixosModules.arion
{
nixpkgs.overlays = [ ((import ./overlays/soularr.nix) packages.x86_64-linux.soularr) ];
}
./hosts/main-homelab/configuration.nix ./hosts/main-homelab/configuration.nix
]; ];
}; };
}; };
packages.x86_64-linux = rec {
slskd-api = (nixpkgs.legacyPackages.x86_64-linux.callPackage ./packages/slskd-api.nix { });
soularr = (
nixpkgs.legacyPackages.x86_64-linux.callPackage ./packages/soularr.nix { inherit slskd-api; }
);
};
formatter.x86_64-linux = formatter.x86_64-linux =
(treefmt-nix.lib.evalModule nixpkgs.legacyPackages."x86_64-linux" ./treefmt.nix) (treefmt-nix.lib.evalModule nixpkgs.legacyPackages."x86_64-linux" ./treefmt.nix)
.config.build.wrapper; .config.build.wrapper;

View file

@ -43,7 +43,7 @@
name = "FiraCode Nerd Font Mono"; name = "FiraCode Nerd Font Mono";
}; };
emoji = { emoji = {
package = pkgs.noto-fonts-emoji; package = pkgs.noto-fonts-color-emoji;
name = "Noto Color Emoji"; name = "Noto Color Emoji";
}; };
}; };
@ -89,31 +89,16 @@
settings.drivers.gpu.nvidia.enable = lib.mkForce true; settings.drivers.gpu.nvidia.enable = lib.mkForce true;
settings.services.switcheroo.enable = lib.mkForce true; settings.services.switcheroo.enable = lib.mkForce true;
environment.systemPackages = [ (pkgs.blender.override { cudaSupport = true; }) ]; environment.systemPackages = [ (pkgs.blender.override { cudaSupport = true; }) ];
environment.etc."specialisation".text = "nvidia";
}; };
}; };
#enable wayland for electron programs
environment.sessionVariables.NIXOS_OZONE_WL = "1";
#todo look further into networking options #todo look further into networking options
#could be pretty interesting #could be pretty interesting
networking.hostName = "fedfer-main-laptop-nixos"; networking.hostName = "fedfer-main-laptop-nixos";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
#todo need to move this to modules
services = {
libinput = {
enable = true;
touchpad = {
tapping = true;
};
};
};
#remove various bloat
services.xserver.excludePackages = with pkgs; [ xterm ];
hardware = { hardware = {
bluetooth = { bluetooth = {
enable = true; enable = true;
@ -121,9 +106,6 @@
}; };
}; };
#todo modularize!
programs.xwayland.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
nano nano
lshw lshw

View file

@ -16,7 +16,6 @@
programs = { programs = {
firefox.enable = lib.mkForce true; firefox.enable = lib.mkForce true;
amberol.enable = lib.mkForce true; amberol.enable = lib.mkForce true;
vscodium.enable = lib.mkForce true;
kitty.enable = lib.mkForce true; kitty.enable = lib.mkForce true;
ghostty.enable = true; ghostty.enable = true;
@ -52,6 +51,7 @@
wpaperd.enable = true; wpaperd.enable = true;
kitty.enable = false; kitty.enable = false;
waybar.enable = false; waybar.enable = false;
niri.enable = false;
}; };
}; };
@ -85,6 +85,9 @@
bat bat
gitui gitui
wleave wleave
clang-tools
dolphin-emu
steam-run
]; ];
home.stateVersion = "23.11"; # DO NOT CHANGE home.stateVersion = "23.11"; # DO NOT CHANGE

View file

@ -11,12 +11,7 @@
"C_Cpp.clang_format_fallbackStyle": "LLVM", "C_Cpp.clang_format_fallbackStyle": "LLVM",
"nix.enableLanguageServer": true, "nix.enableLanguageServer": true,
"nix.serverPath": "nixd", "nix.serverPath": "nixd",
"nix.formatterPath": [ "nix.formatterPath": ["nix", "fmt", "--", "--"],
"nix",
"fmt",
"--",
"--"
],
"nix.serverSettings": { "nix.serverSettings": {
"nixd": { "nixd": {
"options": { "options": {
@ -29,4 +24,4 @@
} }
} }
} }
} }

View file

@ -1,359 +0,0 @@
input {
keyboard {
xkb {
layout "it"
options "caps:capslock"
}
track-layout "global"
}
touchpad {
tap
natural-scroll
scroll-method "two-finger"
click-method "button-areas"
}
mouse {
accel-speed -0.8
}
focus-follows-mouse max-scroll-amount="5%"
}
output "HDMI-A-1" {
variable-refresh-rate
}
layout {
gaps 16
center-focused-column "never"
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
preset-column-widths {
// Proportion sets the width as a fraction of the output width, taking gaps into account.
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
proportion 0.33333
proportion 0.5
proportion 0.66667
// Fixed sets the width in logical pixels exactly.
// fixed 1920
}
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
// preset-window-heights { }
// You can change the default width of the new windows.
default-column-width { proportion 0.5; }
// If you leave the brackets empty, the windows themselves will decide their initial width.
// default-column-width {}
// By default focus ring and border are rendered as a solid background rectangle
// behind windows. That is, they will show up through semitransparent windows.
// This is because windows using client-side decorations can have an arbitrary shape.
//
// If you don't like that, you should uncomment `prefer-no-csd` below.
// Niri will draw focus ring and border *around* windows that agree to omit their
// client-side decorations.
//
// Alternatively, you can override it with a window rule called
// `draw-border-with-background`.
// You can change how the focus ring looks.
focus-ring {
// How many logical pixels the ring extends out from the windows.
width 4
// Colors can be set in a variety of ways:
// - CSS named colors: "red"
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
// Color of the ring on the active monitor.
active-color "#8d4eef"
// Color of the ring on inactive monitors.
inactive-color "#505050"
// You can also use gradients. They take precedence over solid colors.
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
// The angle is the same as in linear-gradient, and is optional,
// defaulting to 180 (top-to-bottom gradient).
// You can use any CSS linear-gradient tool on the web to set these up.
// Changing the color space is also supported, check the wiki for more info.
//
// active-gradient from="#80c8ff" to="#bbddff" angle=45
// You can also color the gradient relative to the entire view
// of the workspace, rather than relative to just the window itself.
// To do that, set relative-to="workspace-view".
//
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// You can also add a border. It's similar to the focus ring, but always visible.
border {
// The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable the focus ring.
off
width 4
active-color "#ffc87f"
inactive-color "#505050"
// active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
// You can think of them as a kind of outer gaps. They are set in logical pixels.
// Left and right struts will cause the next window to the side to always be visible.
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
// layer-shell panels and regular gaps.
struts {
// left 64
// right 64
// top 64
// bottom 64
}
}
spawn-at-startup "wpaperd"
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
animations {
// Uncomment to turn off all animations.
// off
// Slow down all animations by this factor. Values below 1 speed them up instead.
// slowdown 3.0
}
window-rule {
// This regular expression is intentionally made as specific as possible,
// since this is the default config, and we want no false positives.
// You can get away with just app-id="wezterm" if you want.
match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {}
}
window-rule {
geometry-corner-radius 8
clip-to-geometry true
}
hotkey-overlay {
skip-at-startup
}
binds {
Mod+Shift+Backslash { show-hotkey-overlay; }
Mod+T { spawn "ghostty"; }
Mod+D { spawn "fuzzel"; }
Super+Alt+L { spawn "swaylock"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "swayosd-client" "--output-volume=raise"; }
XF86AudioLowerVolume allow-when-locked=true { spawn "swayosd-client" "--output-volume=lower"; }
XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume=mute-toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn "swayosd-client" "--input-volume=mute-toggle"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "swayosd-client" "--brightness=raise"; }
XF86MonBrightnessDown allow-when-locked=true { spawn "swayosd-client" "--brightness=lower"; }
XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
XF86AudioStop allow-when-locked=true { spawn "playerctl" "stop"; }
XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
Mod+Q { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
Mod+Up { focus-window-up; }
Mod+Right { focus-column-right; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+Left { move-column-left; }
Mod+Ctrl+Down { move-window-down; }
Mod+Ctrl+Up { move-window-up; }
Mod+Ctrl+Right { move-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
Mod+Home { focus-column-first; }
Mod+End { focus-column-last; }
Mod+Ctrl+Home { move-column-to-first; }
Mod+Ctrl+End { move-column-to-last; }
Mod+Shift+Left { focus-monitor-left; }
Mod+Shift+Down { focus-monitor-down; }
Mod+Shift+Up { focus-monitor-up; }
Mod+Shift+Right { focus-monitor-right; }
Mod+Shift+H { focus-monitor-left; }
Mod+Shift+J { focus-monitor-down; }
Mod+Shift+K { focus-monitor-up; }
Mod+Shift+L { focus-monitor-right; }
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
// Alternatively, there are commands to move just a single window:
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
// ...
// And you can also move a whole workspace to another monitor:
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
// ...
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
Mod+Ctrl+U { move-column-to-workspace-down; }
Mod+Ctrl+I { move-column-to-workspace-up; }
// Alternatively, there are commands to move just a single window:
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
// ...
Mod+Shift+Page_Down { move-workspace-down; }
Mod+Shift+Page_Up { move-workspace-up; }
Mod+Shift+U { move-workspace-down; }
Mod+Shift+I { move-workspace-up; }
// You can bind mouse wheel scroll ticks using the following syntax.
// These binds will change direction based on the natural-scroll setting.
//
// To avoid scrolling through workspaces really fast, you can use
// the cooldown-ms property. The bind will be rate-limited to this value.
// You can set a cooldown on any bind, but it's most useful for the wheel.
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
// Usually scrolling up and down with Shift in applications results in
// horizontal scrolling; these binds replicate that.
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
// Similarly, you can bind touchpad scroll "ticks".
// Touchpad scrolling is continuous, so for these binds it is split into
// discrete intervals.
// These binds are also affected by touchpad's natural-scroll, so these
// example binds are "inverted", since we have natural-scroll enabled for
// touchpads by default.
// Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
// Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
// You can refer to workspaces by index. However, keep in mind that
// niri is a dynamic workspace system, so these commands are kind of
// "best effort". Trying to refer to a workspace index bigger than
// the current workspace count will instead refer to the bottommost
// (empty) workspace.
//
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
// will all refer to the 3rd workspace.
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+1 { move-column-to-workspace 1; }
Mod+Ctrl+2 { move-column-to-workspace 2; }
Mod+Ctrl+3 { move-column-to-workspace 3; }
Mod+Ctrl+4 { move-column-to-workspace 4; }
Mod+Ctrl+5 { move-column-to-workspace 5; }
Mod+Ctrl+6 { move-column-to-workspace 6; }
Mod+Ctrl+7 { move-column-to-workspace 7; }
Mod+Ctrl+8 { move-column-to-workspace 8; }
Mod+Ctrl+9 { move-column-to-workspace 9; }
// Alternatively, there are commands to move just a single window:
// Mod+Ctrl+1 { move-window-to-workspace 1; }
// Switches focus between the current and the previous workspace.
// Mod+Tab { focus-workspace-previous; }
// Consume one window from the right into the focused column.
Mod+Comma { consume-window-into-column; }
// Expel one window from the focused column to the right.
Mod+Period { expel-window-from-column; }
// There are also commands that consume or expel a single window to the side.
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; }
Mod+C { center-column; }
// Finer width adjustments.
// This command can also:
// * set width in pixels: "1000"
// * adjust width in pixels: "-5" or "+5"
// * set width as a percentage of screen width: "25%"
// * adjust width as a percentage of screen width: "-10%" or "+10%"
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
// set-column-width "100" will make the column occupy 200 physical screen pixels.
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
// Finer height adjustments when in column with other windows.
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
// Actions to switch layouts.
// Note: if you uncomment these, make sure you do NOT have
// a matching layout switch hotkey configured in xkb options above.
// Having both at once on the same hotkey will break the switching,
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
// Mod+Space { switch-layout "next"; }
// Mod+Shift+Space { switch-layout "prev"; }
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
// The quit action will show a confirmation dialog to avoid accidental exits.
Mod+Shift+E { quit; }
Mod+V { toggle-window-floating; }
// Powers off the monitors. To turn them back on, do any input like
// moving the mouse or pressing any other key.
Mod+Shift+P { power-off-monitors; }
}

View file

@ -15,11 +15,6 @@
pwvucontrol pwvucontrol
]; ];
programs.swaylock = {
enable = true;
settings = builtins.fromJSON (builtins.readFile ./swaylock.json);
};
programs.quickshell = { programs.quickshell = {
enable = true; enable = true;
configs = { configs = {
@ -64,9 +59,15 @@
}; };
programs.fuzzel.enable = true; programs.fuzzel.enable = true;
programs.fuzzel.settings = {
border.width = 2;
main.dpi-aware = "yes";
};
stylix.targets.fuzzel.colors.override = {
base0D-hex = config.lib.stylix.colors.base0E-hex;
};
services.wpaperd.enable = true; services.wpaperd.enable = true;
# programs.niri.config = builtins.readFile ./config.kdl;
programs.niri.settings = { programs.niri.settings = {
cursor = lib.mkIf (config.stylix.cursor != null) { cursor = lib.mkIf (config.stylix.cursor != null) {
@ -107,6 +108,7 @@
natural-scroll = true; natural-scroll = true;
scroll-method = "two-finger"; scroll-method = "two-finger";
click-method = "button-areas"; click-method = "button-areas";
tap = true;
}; };
mouse = { mouse = {
accel-speed = -0.8; accel-speed = -0.8;
@ -115,6 +117,8 @@
focus-follows-mouse.max-scroll-amount = "5%"; focus-follows-mouse.max-scroll-amount = "5%";
}; };
outputs."Samsung Electric Company LF24T35 HNAT902308".scale = 1.2;
layout = { layout = {
preset-column-widths = [ preset-column-widths = [
{ proportion = 1.0 / 3.0; } { proportion = 1.0 / 3.0; }
@ -123,6 +127,13 @@
]; ];
default-column-width.proportion = 1.0 / 2.0; default-column-width.proportion = 1.0 / 2.0;
focus-ring = { focus-ring = {
enable = false;
active.color = "#8d4eef";
inactive.color = "#505050";
};
border = {
enable = true;
width = 3;
active.color = "#8d4eef"; active.color = "#8d4eef";
inactive.color = "#505050"; inactive.color = "#505050";
}; };
@ -250,7 +261,7 @@
"Mod+C".action = center-column; "Mod+C".action = center-column;
"Mod+V".action = toggle-window-floating; "Mod+V".action = toggle-window-floating;
"Print".action = screenshot; "Print".action.screenshot = [ ];
}; };
}; };
} }

View file

@ -6,7 +6,6 @@
}; };
config = lib.mkIf config.settings.drivers.gpu.amd.enable { config = lib.mkIf config.settings.drivers.gpu.amd.enable {
boot.initrd.kernelModules = [ "amdgpu" ];
services.xserver.videoDrivers = [ "amdgpu" ]; services.xserver.videoDrivers = [ "amdgpu" ];
}; };
} }

View file

@ -14,8 +14,6 @@
programs.niri.enable = true; programs.niri.enable = true;
programs.niri.package = pkgs.niri-unstable; programs.niri.package = pkgs.niri-unstable;
security.pam.services.swaylock = { };
gtk.iconCache.enable = true; gtk.iconCache.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

4
overlays/soularr.nix Normal file
View file

@ -0,0 +1,4 @@
{ soularr, ... }:
(final: prev: {
soularr = soularr;
})

32
packages/slskd-api.nix Normal file
View file

@ -0,0 +1,32 @@
{
lib,
python3Packages,
fetchFromGitHub,
}:
python3Packages.buildPythonPackage rec {
pname = "slskd-api";
version = "0.1.5";
pyproject = true;
src = fetchFromGitHub {
owner = "bigoulours";
repo = "slskd-python-api";
tag = "v${version}";
hash = "sha256-Kyzbd8y92VFzjIp9xVbhkK9rHA/6KCCJh7kNS/MtixI=";
};
nativeBuildInputs = with python3Packages; [ setuptools-git-versioning ];
dependencies = with python3Packages; [ requests ];
pythonImportsCheck = [ "slskd_api" ];
meta = {
description = "API Wrapper to interact with slskd";
homepage = "https://slskd-api.readthedocs.io/";
changelog = "https://github.com/bigoulours/slskd-python-api/releases/tag/${src.tag}";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ getchoo ];
};
}

48
packages/soularr.nix Normal file
View file

@ -0,0 +1,48 @@
{
lib,
fetchFromGitHub,
installShellFiles,
python3Packages,
slskd-api,
}:
python3Packages.buildPythonApplication {
pname = "soularr";
version = "0-unstable-2025-02-05";
pyproject = false;
src = fetchFromGitHub {
owner = "mrusse";
repo = "soularr";
rev = "dc23f6d11fb2148c35168028b6b2fdfd0c502957";
hash = "sha256-znEubXeQmEmE8swmgDSliTh/v/k3t55jzchWCAd9bGc=";
};
nativeBuildInputs = [ installShellFiles ];
dependencies = with python3Packages; [
music-tag
pyarr
slskd-api
];
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mv soularr{.py,}
installBin soularr
runHook postInstall
'';
meta = {
description = "Python script that connects Lidarr with Soulseek";
homepage = "https://soularr.net/";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ getchoo ];
mainProgram = "soularr";
};
}

View file

@ -3,7 +3,6 @@
projectRootFile = "flake.nix"; projectRootFile = "flake.nix";
programs.nixfmt.enable = true; programs.nixfmt.enable = true;
programs.biome.enable = true;
programs.stylua.enable = true; programs.stylua.enable = true;
programs.taplo.enable = true; programs.taplo.enable = true;
programs.mdformat.enable = true; programs.mdformat.enable = true;